trackProductEvent static method
Implementation
static Future<void> trackProductEvent(TrackProductEventArgs args) async {
final isTrackingEnabled =
await cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.isSnowplowTrackingEnabled)!);
if (isTrackingEnabled == 'false') return;
String cartId = args.cartId;
if (cartId.contains('gid://shopify/Cart/')) {
cartId = _trimCartId(cartId);
}
final params = {
'page_url': args.pageUrl,
'page_title': args.name ?? '',
'product_id': args.productId.toString(),
'variant_id': args.variantId.toString(),
};
if (cartId.isNotEmpty) {
params['cart_id'] = cartId;
}
final contextDetails = TrackProductEventContext(
productId: args.productId.toString(),
imgUrl: args.imgUrl ?? '',
variantId: args.variantId.toString(),
productName: args.name ?? '',
productPrice: args.price?.toString() ?? '',
productHandle: args.handle?.toString() ?? '',
type: 'product',
);
final contexts = (await Future.wait([
getProductContext(contextDetails),
getCartContext(cartId),
getUserContext(),
getDeviceInfoContext(),
])).where((context) => context != null).cast<SelfDescribing>().toList();
await _trackEvent(params, contexts);
}