loginAsVisitor method

Future loginAsVisitor(
  1. String appId
)

Implementation

Future<dynamic> loginAsVisitor(String appId) async {
  Map<String, dynamic> registerUserObjc = {
    "appId": "$appId",
    "automaticChatOpenOnNavigation": true,
    "popupWidget": true,
  };
  Completer completer = Completer();
  void loginAsVisitorCallBackFunction(js.JsObject response) {
    completer.complete(response);
  }
  js.context['loginAsVisitorCallback'] = loginAsVisitorCallBackFunction;

  if (appId.isNotEmpty) {
    String jsCode = '''
            try {
                (function(d, m) {
                      var kommunicateSettings = ${jsonEncode(registerUserObjc)};
                      kommunicateSettings["onInit"] = function (){
                                    Kommunicate.displayKommunicateWidget(false);
                                    loginAsVisitorCallback(JSON.stringify(window.kommunicate._globals));};

                      var s = document.createElement("script");
                      s.type = "text/javascript";
                      s.async = true;
                      s.src = "https://widget.kommunicate.io/v2/kommunicate.app";
                      var h = document.getElementsByTagName("head")[0];
                      h.appendChild(s);
                      window.kommunicate = m;
                      m._globals = kommunicateSettings;
                })(document, window.kommunicate || {});
              } catch (error) {
                      console.error("An error occurred while executing the code:", error);
                      loginAsVisitorCallback(error);
                    }
              ''';
    await js.context.callMethod('eval', [jsCode]);
  }
  return completer.future;
}