UNPKG

@braze/web-sdk

Version:

Braze SDK for web sites and other JS platforms.

240 lines (239 loc) 4.29 kB
import r from "../managers/braze-instance.js"; import { MAX_PURCHASE_QUANTITY as or } from "../common/constants.js"; import { logger as E, EventTypes as m } from "../../shared-lib/index.js"; import ot from "../triggers/models/trigger-events.js"; import { TriggersProviderFactory as rt } from "../triggers/triggers-provider-factory.js"; import { validateCustomProperties as nt, validateCustomString as mt, } from "../util/validation-utils.js"; import c from "../common/event-logger.js"; export function logPurchase(e, o, i, n, t) { if (!r.rr()) return !1; if ( (null == i && (i = "USD"), null == n && (n = 1), null == e || e.length <= 0) ) return ( E.error( `logPurchase requires a non-empty productId, got "${e}", ignoring.`, ), !1 ); if (!mt(e, "log purchase", "the purchase name")) return !1; if (null == o || isNaN(parseFloat(o.toString()))) return ( E.error(`logPurchase requires a numeric price, got ${o}, ignoring.`), !1 ); const s = parseFloat(o.toString()).toFixed(2); if (null == n || isNaN(parseInt(n.toString()))) return ( E.error(`logPurchase requires an integer quantity, got ${n}, ignoring.`), !1 ); const D = parseInt(n.toString()); if (D < 1 || D > or) return ( E.error( `logPurchase requires a quantity >1 and <${or}, got ${D}, ignoring.`, ), !1 ); i = null != i ? i.toUpperCase() : i; if ( -1 === [ "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTC", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EEK", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MTL", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XAG", "XAU", "XCD", "XDR", "XOF", "XPD", "XPF", "XPT", "YER", "ZAR", "ZMK", "ZMW", "ZWL", ].indexOf(i) ) return ( E.error(`logPurchase requires a valid currencyCode, got ${i}, ignoring.`), !1 ); const [u, a] = nt( t, "logPurchase", "purchaseProperties", `log purchase "${e}"`, "purchase", ); if (!u) return !1; const g = r.l(); if (g && g.Dr(e)) return E.info(`Purchase "${e}" is blocklisted, ignoring.`), !1; const P = c.rt(m.Pr, { pid: e, c: i, p: s, q: D, pr: a }); if (P.W) { E.info(`Logged ${D} purchase${D > 1 ? "s" : ""} of "${e}" for ${i} ${s}.`); for (const r of P.ue) rt.o().ve(ot.Rr, [e, t], r); } return P.W; }