login method
Future
login(
- dynamic kmUser
)
Implementation
Future<dynamic> login(dynamic kmUser) async {
Map<String, dynamic> user = jsonDecode(kmUser);
Completer completer = Completer();
String appId = user["appId"];
String userId = user['userId'];
Map<String, dynamic> registerUserObjc = {
"appId": "$appId",
"automaticChatOpenOnNavigation": true,
"popupWidget": true,
"userId": "$userId"
};
if (user['password'] != null) {
registerUserObjc['password'] = user['password'];
}
if (user['email'] != null) {
registerUserObjc['email'] = user['email'];
}
if (user['authenticationTypeId'] != null) {
registerUserObjc['authenticationTypeId'] = user['authenticationTypeId'];
}
void loginCallBackFunction(js.JsObject response) {
completer.complete(response);
}
js.context['loginCallBack'] = loginCallBackFunction;
if (appId.isNotEmpty && userId.isNotEmpty) {
String jsCode = '''
try {
(function(d, m) {
var kommunicateSettings = ${jsonEncode(registerUserObjc)};
kommunicateSettings["onInit"] = function (){
Kommunicate.displayKommunicateWidget(false);
loginCallBack(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);
loginCallBack(error);
}
''';
await js.context.callMethod('eval', [jsCode]);
}
return completer.future;
}