getDeviceInfoContext static method

Future<SelfDescribing?> getDeviceInfoContext()

Implementation

static Future<SelfDescribing?> getDeviceInfoContext() async {
  final deviceFCM =
      await cacheInstance.getValue(KeyConfig.gkNotificationToken);
  final deviceInfoJson = await cacheInstance.getValue(KeyConfig.gkDeviceInfo);
  final deviceInfo = deviceInfoJson != null ? jsonDecode(deviceInfoJson) : {};

  // If no device id then dont pass the deviceInfoSchema
  final deviceId = deviceInfo[KeyConfig.gkDeviceUniqueId];
  if (deviceId == null || deviceId.toString().isEmpty) {
    return null;
  }

  // ADD META TO THE USER DEVICE SCHEMA
  final metaItems = <Map<String, dynamic>>[];

  final isVersionAddedInMeta = metaItems.any((item) => item['property'] == 'sdk_version');

  if (!isVersionAddedInMeta) {
    metaItems.add({
      'property': 'sdk_version',
      'value': KPSdkVersion.version,
    });
    metaItems.add({
      'property': 'platform',
      'value': 'flutter',
    });
  }

  return _createContext(
    'user_device/jsonschema/1-0-0',
    {
      'device_id': deviceId,
      'android_ad_id':
          Platform.isAndroid ? deviceInfo[KeyConfig.gkGoogleAdId] : '',
      'ios_ad_id': Platform.isIOS ? deviceInfo[KeyConfig.gkGoogleAdId] : '',
      'fcm_token': deviceFCM ?? '',
      'app_domain': deviceInfo[KeyConfig.gkAppDomain],
      'device_type': Platform.operatingSystem.toLowerCase(),
      'app_version': deviceInfo[KeyConfig.gkAppVersion],
      'meta': metaItems,
    },
  );
}