logCommerceEvent method
Logs a product commerce event with an productActionType
, a promotion commerce event with a eventType
, and an impression commerce event if neither of the prior are implemented.
Implementation
Future<void> logCommerceEvent(CommerceEvent commerceEvent) async {
var commerceEventMessage = {
'products': commerceEvent.products.map((e) => e.toJson()).toList(),
'promotions': commerceEvent.promotions.map((e) => e.toJson()).toList(),
'impressions': commerceEvent.impressions.map((e) => e.toJson()).toList(),
'transactionAttributes': commerceEvent.transactionAttributes?.toJson(),
'checkoutOptions': commerceEvent.checkoutOptions,
'currency': commerceEvent.currency,
'productListName': commerceEvent.productListName,
'productListSource': commerceEvent.productListSource,
'screenName': commerceEvent.screenName,
'checkoutStep': commerceEvent.checkoutStep,
'nonInteractive': commerceEvent.nonInteractive,
'shouldUploadEvent': commerceEvent.shouldUploadEvent,
'customAttributes': commerceEvent.customAttributes,
'customFlags': commerceEvent.customFlags
};
ProductActionType? productActionType = commerceEvent.productActionType;
PromotionActionType? promotionActionType =
commerceEvent.promotionActionType;
if (productActionType != null) {
commerceEventMessage['productActionType'] =
ProductActionType.values.indexOf(productActionType);
commerceEventMessage['androidProductActionType'] =
getAndroidSDKProductActionTypeString(productActionType);
commerceEventMessage['jsProductActionType'] =
getWebSDKProductActionType(productActionType);
} else if (promotionActionType != null) {
commerceEventMessage['promotionActionType'] =
PromotionActionType.values.indexOf(promotionActionType);
commerceEventMessage['androidPromotionActionType'] =
getAndroidSDKPromotionActionTypeString(promotionActionType);
commerceEventMessage['jsPromotionActionType'] =
getWebSDKPromotionActionType(promotionActionType);
}
return await _channel.invokeMethod(
'logCommerceEvent', {"commerceEvent": commerceEventMessage});
}