init static method
Implement this init function after your app logged in successfully
Implementation
static Future<String?> init(String appId, String clientId, String secretKey,
String externalId, String fullName) async {
try {
StaticData.appId = appId;
StaticData.clientId = clientId;
StaticData.clientSecret = secretKey;
StaticData.externalId = externalId;
StaticData.fullName = fullName;
//is client app re-login?
final currentExternalId = await LocalData.getString('externalId');
if (currentExternalId != externalId) {
StaticData.accessToken = '';
StaticData.contactId = '';
StaticData.bundleIdValidation = '';
StaticData.encryptedUrlParams = '';
StaticData.initMobileChatResult = '';
StaticData.mobileChatTheme['bgColorTheme'] = '#808080';
StaticData.mobileChatTheme['fontColor'] = 'white';
StaticData.mobileChatTheme['textHeader'] = '';
StaticData.mobileChatTheme['textDescription'] = '';
StaticData.fcmToken = '';
await LocalData.putString('accessToken', 'default_value');
await LocalData.putString('fcmToken', 'default_value');
await LocalData.putString('contactId', 'default_value');
}
final accessToken = StaticData.accessToken == ''
? await _updateAccessToken(clientId, secretKey)
: StaticData.accessToken;
final contactId = StaticData.contactId == ''
? await _updateContactId(externalId, fullName)
: StaticData.contactId;
final bundleIdValidation = StaticData.bundleIdValidation == ''
? await validateBundleIdOrPackageName()
: StaticData.bundleIdValidation;
StaticData.mobileChatTheme['isAnyEmpty']()
? await updateAppChatTheme()
: StaticData.mobileChatTheme;
final encryptedUrlParams = StaticData.encryptedUrlParams == ''
? updateEncryptedUrlParams()
: StaticData.encryptedUrlParams;
if (StaticData.fcmToken != '') {
final response = await RemoteData.registerFcmToken(StaticData.fcmToken);
if (response.statusCode == 200 || response.statusCode == 201) {
await LocalData.putString('fcmToken init', StaticData.fcmToken);
print(
"FCM token registration success, user can receive notification");
} else {
print(
"FCM token registration failed, user can't receive notification");
}
}
//Save result- initAppChatResult
if (accessToken != '' &&
contactId != '' &&
bundleIdValidation != '' &&
encryptedUrlParams != '') {
StaticData.initMobileChatResult = 'SUCCESS';
} else {
StaticData.initMobileChatResult = 'FAILED';
}
if (StaticData.initMobileChatResult == 'SUCCESS') {
await LocalData.putString('externalId', externalId);
}
return StaticData.initMobileChatResult;
} catch (e) {
return e.toString();
}
}