logCommerceEvent method

Future<void> logCommerceEvent(
  1. CommerceEvent commerceEvent
)

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});
}