initializeSnowplowClient static method

Future<void> initializeSnowplowClient({
  1. required String mid,
  2. required Environment environment,
  3. String merchantType = 'shopify',
})

Implementation

static Future<void> initializeSnowplowClient({
  required String mid,
  required Environment environment,
  String merchantType = 'shopify',
}) async {

  final collectorUrl = SdkConfig.getSnowplowUrl(environment.name);

  String appId = mid;

  final integrationType =
      cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.integrationType)!);

  final platformHeaderKey =
      cdnConfigInstance.getHeader(APIHeaderKeys.gkPlatform) ?? 'gk-platform';
  final integrationTypeHeaderKey =
      cdnConfigInstance.getHeader(APIHeaderKeys.kpIntegrationType) ??
          'kp-integration-type';

  // Initialize Snowplow tracker
  _snowplowClient = await Snowplow.createTracker(
    namespace: 'appTracker',
    endpoint: collectorUrl,
    method: Method.get,
    requestHeaders: {
      platformHeaderKey: merchantType,
      integrationTypeHeaderKey: integrationType.toString(),
    },
    trackerConfig: TrackerConfiguration(
      appId: appId,
      screenEngagementAutotracking: false,
      applicationContext: true,
      platformContext: true,
      geoLocationContext: false,
      sessionContext: true,
    ),
  );

  // Get or create user ID
  _snowplowUserId = await cacheInstance.getStoredSnowplowUserId();
  if (_snowplowUserId == null) {
    final uuid = _generateUUID();
    _snowplowUserId = uuid;
    await cacheInstance.setSnowplowUserId(uuid);
  }

  // Set user ID for tracking
  _snowplowClient?.setUserId(_snowplowUserId!);
}