mergeLocalCloudControlConfig method

dynamic mergeLocalCloudControlConfig(
  1. Map<String, dynamic> localCloudControlConfigMap
)

Implementation

mergeLocalCloudControlConfig(
  Map<String, dynamic> localCloudControlConfigMap,
) {
  try {
    final classId = getConfig().classId;
    final userId = getConfig().userId;
    final classcloudControlConfig = localCloudControlConfigMap[classId];
    final userCloudControlConfig = localCloudControlConfigMap[userId];
    final globalCloudControlConfig = localCloudControlConfigMap["global"];
    // 优先用user维度,其次class维度,最后才是全局维度
    final basicConfig = getConfig().basicConfig;
    if (basicConfig != null) {
      final basicConfigCopy = basicConfig.copy();
      if (globalCloudControlConfig != null) {
        basicConfigCopy.mergeFromJson(globalCloudControlConfig);
      }
      if (classcloudControlConfig != null) {
        basicConfigCopy.mergeFromJson(classcloudControlConfig);
      }
      if (userCloudControlConfig != null) {
        basicConfigCopy.mergeFromJson(userCloudControlConfig);
      }
      TCICLog.info(
        'basicConfigCopy: ${basicConfigCopy.toJson()}',
        actionModule: ActionModule.tcicController.name,
        actionName: ActionName.mergeLocalCloudControlConfig.name,
      );
      if (!basicConfig.isEqual(basicConfigCopy)) {
        final config = getConfig();
        config.basicConfig = basicConfigCopy;
        updateConfig(config);
      } else {
        TCICLog.info(
          'basicConfig is equal to basicConfigCopy',
          actionModule: ActionModule.tcicController.name,
          actionName: ActionName.mergeLocalCloudControlConfig.name,
        );
      }
    }
  } catch (e) {
    TCICLog.error(
      'mergeLocalCloudControlConfig failed: $e',
      actionModule: ActionModule.tcicController.name,
      actionName: ActionName.mergeLocalCloudControlConfig.name,
    );
  }
}