init static method

Future<String?> init(
  1. String appId,
  2. String clientId,
  3. String secretKey,
  4. String externalId,
  5. String fullName,
)

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();
  }
}