create method

Future<void> create({
  1. required int appID,
  2. required String signOrToken,
  3. Map<String, Object> params = const {},
})

Implementation

Future<void> create({
  required int appID,
  required String signOrToken,
  Map<String, Object> params = const {},
}) async {
  ZegoLoggerService.logInfo(
    'appID:$appID, params:$params',
    tag: 'uikit-reporter',
    subTag: 'create',
  );

  assert(appID != -1);

  if (hadCreated) {
    ZegoLoggerService.logInfo(
      'had created before',
      tag: 'uikit-reporter',
      subTag: 'create',
    );

    if (this.appID != appID) {
      ZegoLoggerService.logInfo(
        'app id is not equal, old:${this.appID}, now:$appID, '
        're-create...',
        tag: 'uikit-reporter',
        subTag: 'create',
      );

      return destroy().then((_) {
        ZegoLoggerService.logInfo(
          're-create, destroyed, create now..',
          tag: 'uikit-reporter',
          subTag: 'create',
        );

        create(
          appID: appID,
          signOrToken: signOrToken,
          params: params,
        );
      });
    }

    if (params.isNotEmpty) {
      ZegoLoggerService.logInfo(
        'update common params',
        tag: 'uikit-reporter',
        subTag: 'create',
      );

      final uikitVersion = await ZegoUIKit().getZegoUIKitVersion();
      params.addAll({
        eventKeyPlatform: 'flutter',
        eventKeyUIKitVersion: uikitVersion,
      });
      updateCommonParams(params);
    }

    return;
  }

  ZegoLoggerService.logInfo(
    'create',
    tag: 'uikit-reporter',
    subTag: 'create',
  );
  hadCreated = true;
  this.appID = appID;

  final uikitVersion = await ZegoUIKit().getZegoUIKitVersion();
  if (params.isEmpty) {
    params = {
      eventKeyPlatform: 'flutter',
      eventKeyUIKitVersion: uikitVersion,
    };
  } else {
    params.addAll({
      eventKeyPlatform: 'flutter',
      eventKeyUIKitVersion: uikitVersion,
    });
  }
  await ZegoUIKitPluginPlatform.instance.reporterCreate(
    appID: appID,
    signOrToken: signOrToken,
    params: params,
  );
}