Untitled

 avatar
unknown
typescript
a month ago
1.8 kB
5
Indexable
/**
 * Logs a purchase event to Facebook Analytics.
 *
 * @param purchaseAmount - The amount of the purchase.
 * @param currencyCode - The currency code of the purchase.
 * @param parameters - Additional parameters associated with the event.
 */
export const LogFBPurchase = (
  pkg: PurchasesPackage,
  transaction: PurchasesStoreTransaction,
  parameters?: Params | undefined,
) => {
  const metaLoggingOption = getMetaLoggingOption()

  // If the meta logging option is set to "auto-setup", we don't need to manually log the purchase event.
  if (metaLoggingOption === MetaLoggingOptionExperimentVariant.AutoSetup) return

  const purchaseAmount = pkg.product.price
  const currencyCode = pkg.product.currencyCode
  const isSubscription = pkg.product.productCategory === "SUBSCRIPTION"
  const eventName =
    metaLoggingOption === MetaLoggingOptionExperimentVariant.ManualSetupOnlyPurchase
      ? FBEventName.Purchased
      : isSubscription
      ? FBEventName.Subscribe
      : FBEventName.Purchased

  let params: Params = {
    [FBEventParams.NumItems]: 1,
    [FBEventParams.ContentID]: transaction.productIdentifier,
    fb_iap_product_type: isSubscription ? "subs" : "inapp",
    fb_transaction_id: transaction.transactionIdentifier,
    fb_transaction_date: formatTransactionDate(transaction.purchaseDate),
    ...parameters,
  }

  if (isSubscription) {
    params = {
      ...params,
      fb_iap_subs_period: pkg.product.subscriptionPeriod ?? "",
    }
  }

  if (eventName === FBEventName.Purchased) {
    AppEventsLogger.logPurchase(purchaseAmount, currencyCode, params)
  } else {
    AppEventsLogger.logEvent(eventName, purchaseAmount, { currencyCode, ...params })
  }

  AEMReporterIOS.logAEMEvent(eventName, purchaseAmount, currencyCode, params)
}
Leave a Comment