@braze/web-sdk
Version:
Braze SDK for web sites and other JS platforms.
240 lines (239 loc) • 4.29 kB
JavaScript
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;
}