trackCollectionsEvent static method

Future<void> trackCollectionsEvent(
  1. TrackCollectionsEventArgs args
)

Implementation

static Future<void> trackCollectionsEvent(
    TrackCollectionsEventArgs args) async {
  final merchantUrl =
      (await cacheInstance.getValue(KeyConfig.gkMerchantUrlKey)) ?? '';

  String pageUrl = args.pageUrl ?? '';
  if (args.handle != null && merchantUrl.isNotEmpty && pageUrl.isEmpty) {
    pageUrl = 'https://$merchantUrl/collections/${args.handle}';
  }

  String cartId = args.cartId;
  if (cartId.contains('gid://shopify/Cart/')) {
    cartId = _trimCartId(cartId);
  }

  final params = {
    'pageUrl': pageUrl,
    'cart_id': cartId,
    'collection_id': args.collectionId.toString(),
    'name': args.name,
    'image_url': args.imageUrl ?? '',
    'handle': args.handle?.toString() ?? '',
  };

  final contextDetails = TrackCollectionEventContext(
    collection_id: args.collectionId.toString(),
    img_url: args.imageUrl,
    collection_name: args.name,
    collection_handle: args.handle ?? '',
    type: 'collection',
  );

  final contexts = (await Future.wait([
    getCollectionsContext(contextDetails),
    getUserContext(),
    getCartContext(cartId),
    getDeviceInfoContext(),
  ])).where((context) => context != null).cast<SelfDescribing>().toList();

  await _trackEvent(params, contexts);
}