@coursebuilder/core
Version:
Core package for Course Builder
1 lines • 16.2 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/lib/pricing/pricing-state-machine.ts"],"sourcesContent":["import { and, assign, fromPromise, setup } from 'xstate'\n\nimport { MerchantCoupon, Product, type Purchase } from '../../schemas'\nimport { FormattedPrice, PricingData, PricingOptions } from '../../types'\n\nexport type PricingContextType = {\n\tproduct: Product\n\tformattedPrice: FormattedPrice | null\n\tquantity: number\n\tisPPPActive: boolean\n\tisTeamPurchaseActive: boolean\n\tisCohort: boolean\n\tcouponId: string | null | undefined\n\tactiveMerchantCoupon: MerchantCoupon | null | undefined\n\tautoApplyPPP: boolean\n\tisBuyingMoreSeats: boolean\n\toptions: PricingOptions\n\tuserId: string | undefined\n\tisPreviouslyPurchased: boolean\n\tpurchases?: Purchase[] | null\n\tallowPurchase: boolean\n\tpricingData: PricingData\n\torganizationId?: string | undefined\n}\n\nexport type PricingMachineInput = {\n\tproduct: Product\n\tquantity?: number\n\tcouponId?: string | null\n\tautoApplyPPP?: boolean\n\toptions?: Partial<PricingOptions>\n\tuserId?: string | undefined\n\tpricingDataLoader: Promise<PricingData>\n\tallowPurchase?: boolean\n\tquantityAvailable?: number\n\tpricingData?: PricingData\n\torganizationId?: string | undefined\n}\n\nexport const defaultPricingOptions = {\n\twithImage: true,\n\twithTitle: true,\n\twithGuaranteeBadge: true,\n\tisLiveEvent: false,\n\tisCohort: false,\n\tisPPPEnabled: true,\n\tteamQuantityLimit: 100,\n\tallowTeamPurchase: true,\n\tcancelUrl: `${process.env.NEXT_PUBLIC_URL}/`,\n}\n\nexport const pricingMachine = setup({\n\ttypes: {\n\t\tcontext: {} as PricingContextType,\n\t\tinput: {} as PricingMachineInput,\n\t\tevents: {} as\n\t\t\t| { type: 'UPDATE_QUANTITY'; quantity: number }\n\t\t\t| { type: 'TOGGLE_TEAM_PURCHASE' }\n\t\t\t| { type: 'TOGGLE_BUYING_MORE_SEATS' }\n\t\t\t| { type: 'PURCHASE_INITIATED' }\n\t\t\t| { type: 'SET_MERCHANT_COUPON'; merchantCoupon?: MerchantCoupon },\n\t},\n\tactors: {\n\t\tloadFormattedPrices: fromPromise<\n\t\t\tFormattedPrice | null,\n\t\t\t{\n\t\t\t\tproductId: string\n\t\t\t\tquantity?: number\n\t\t\t\tcouponId?: string\n\t\t\t\tmerchantCoupon?: MerchantCoupon\n\t\t\t\tautoApplyPPP?: boolean\n\t\t\t}\n\t\t>(async ({ input }) => {\n\t\t\tif (!input) return Promise.resolve(null)\n\t\t\treturn await fetch(\n\t\t\t\t`${process.env.NEXT_PUBLIC_URL}/api/coursebuilder/prices-formatted`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\tproductId: input.productId,\n\t\t\t\t\t\tquantity: input.quantity || 1,\n\t\t\t\t\t\tcouponId: input.couponId,\n\t\t\t\t\t\tmerchantCoupon: input.merchantCoupon,\n\t\t\t\t\t\tautoApplyPPP: input.autoApplyPPP || false,\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t).then(async (res) => {\n\t\t\t\treturn ((await res.json()) as FormattedPrice) || null\n\t\t\t})\n\t\t}),\n\t\tloadPurchases: fromPromise<\n\t\t\t{\n\t\t\t\tisPreviouslyPurchased: boolean\n\t\t\t\tpurchases?: Purchase[]\n\t\t\t},\n\t\t\t{ userId: string; productId: string }\n\t\t>(async ({ input }) => {\n\t\t\tif (!input.userId) {\n\t\t\t\treturn Promise.resolve({\n\t\t\t\t\tisPreviouslyPurchased: false,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn await fetch(\n\t\t\t\t`${process.env.NEXT_PUBLIC_URL}/api/coursebuilder/purchases?userId=${input.userId}`,\n\t\t\t)\n\t\t\t\t.then(async (res) => {\n\t\t\t\t\tconst userPurchases = (await res.json()) as Purchase[] | null\n\n\t\t\t\t\tif (userPurchases?.length === 0)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tisPreviouslyPurchased: false,\n\t\t\t\t\t\t}\n\n\t\t\t\t\tconst purchasesForProduct = userPurchases?.filter(\n\t\t\t\t\t\t(purchase) =>\n\t\t\t\t\t\t\tpurchase?.product?.id === input.productId &&\n\t\t\t\t\t\t\tpurchase?.status === 'Valid',\n\t\t\t\t\t)\n\n\t\t\t\t\tif (purchasesForProduct && purchasesForProduct.length > 0) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tisPreviouslyPurchased: true,\n\t\t\t\t\t\t\tpurchases: purchasesForProduct,\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tisPreviouslyPurchased: false,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tconsole.error('Error loading purchases', e)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisPreviouslyPurchased: false,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}),\n\t},\n\tguards: {\n\t\tcanToggleTeamPurchase: function ({ context, event }) {\n\t\t\tconsole.log('GUARD!', context.isPPPActive)\n\t\t\treturn !context.isPPPActive\n\t\t},\n\t\tisPPPAvailable: function ({ context, event }) {\n\t\t\treturn Boolean(\n\t\t\t\tcontext.formattedPrice?.availableCoupons.some(\n\t\t\t\t\t(coupon) => coupon?.type === 'ppp',\n\t\t\t\t),\n\t\t\t)\n\t\t},\n\t\tcanUpdateQuantity: and([\n\t\t\t({ context, event }) => {\n\t\t\t\treturn (\n\t\t\t\t\t(context.isTeamPurchaseActive && !context.isPPPActive) ||\n\t\t\t\t\tcontext.isBuyingMoreSeats\n\t\t\t\t)\n\t\t\t},\n\t\t]),\n\t},\n}).createMachine({\n\tcontext: ({ input }) => ({\n\t\tproduct: input.product,\n\t\tformattedPrice: null,\n\t\tquantity: input.quantity || 1,\n\t\tisPPPActive: false,\n\t\tisTeamPurchaseActive: false,\n\t\tisCohort: input.product.type === 'cohort',\n\t\tcouponId: input.couponId || null,\n\t\tactiveMerchantCoupon: null,\n\t\tautoApplyPPP: input.autoApplyPPP || false,\n\t\tisBuyingMoreSeats: false,\n\t\toptions: input.options\n\t\t\t? { ...defaultPricingOptions, ...input.options }\n\t\t\t: defaultPricingOptions,\n\t\tuserId: input.userId,\n\t\tisPreviouslyPurchased: false,\n\t\tallowPurchase: true,\n\t\tpricingData: input.pricingData || {\n\t\t\tformattedPrice: null,\n\t\t\tpurchaseToUpgrade: null,\n\t\t\tquantityAvailable: -1,\n\t\t},\n\t\tpurchases: null,\n\t\torganizationId: input.organizationId,\n\t}),\n\tid: 'Pricing Display',\n\tinitial: 'Loading Pricing Data',\n\tstates: {\n\t\t'Loading Pricing Data': {\n\t\t\tinvoke: [\n\t\t\t\t{\n\t\t\t\t\tid: 'load-purchases',\n\t\t\t\t\tsrc: 'loadPurchases',\n\t\t\t\t\tinput: ({ context }: any) => ({\n\t\t\t\t\t\tuserId: context.userId,\n\t\t\t\t\t\tproductId: context.product.id,\n\t\t\t\t\t}),\n\t\t\t\t\tonDone: {\n\t\t\t\t\t\tactions: assign({\n\t\t\t\t\t\t\tisPreviouslyPurchased: ({ event }) =>\n\t\t\t\t\t\t\t\tevent.output.isPreviouslyPurchased,\n\t\t\t\t\t\t\tpurchases: ({ event }) => event.output.purchases,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'load-prices',\n\t\t\t\t\tinput: ({\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\tproduct,\n\t\t\t\t\t\t\tquantity,\n\t\t\t\t\t\t\tcouponId,\n\t\t\t\t\t\t\tcountry,\n\t\t\t\t\t\t\tactiveMerchantCoupon,\n\t\t\t\t\t\t\tautoApplyPPP,\n\t\t\t\t\t\t},\n\t\t\t\t\t}: any) => ({\n\t\t\t\t\t\tproductId: product.id,\n\t\t\t\t\t\tquantity,\n\t\t\t\t\t\tcouponId,\n\t\t\t\t\t\tcountry,\n\t\t\t\t\t\tmerchantCoupon: activeMerchantCoupon,\n\t\t\t\t\t\tautoApplyPPP,\n\t\t\t\t\t}),\n\t\t\t\t\tsrc: 'loadFormattedPrices',\n\t\t\t\t\tonDone: {\n\t\t\t\t\t\ttarget: 'Ready To Buy',\n\t\t\t\t\t\tactions: assign({\n\t\t\t\t\t\t\tformattedPrice: ({ event }) => event.output,\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\ton: {\n\t\t\t\tUPDATE_QUANTITY: {\n\t\t\t\t\ttarget: 'Debouncing Quantity',\n\t\t\t\t\tactions: assign({\n\t\t\t\t\t\tquantity: ({ event }) => Math.max(event.quantity, 1),\n\t\t\t\t\t}),\n\t\t\t\t\tguard: {\n\t\t\t\t\t\ttype: 'canUpdateQuantity',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t'Debouncing Quantity': {\n\t\t\tafter: {\n\t\t\t\t350: {\n\t\t\t\t\ttarget: 'Loading Pricing Data',\n\t\t\t\t},\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tUPDATE_QUANTITY: {\n\t\t\t\t\ttarget: 'Debouncing Quantity',\n\t\t\t\t\tactions: assign({\n\t\t\t\t\t\tquantity: ({ event }) => Math.max(event.quantity, 1),\n\t\t\t\t\t}),\n\t\t\t\t\tguard: {\n\t\t\t\t\t\ttype: 'canUpdateQuantity',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t'Ready To Buy': {\n\t\t\ton: {\n\t\t\t\tTOGGLE_TEAM_PURCHASE: {\n\t\t\t\t\ttarget: 'Loading Pricing Data',\n\t\t\t\t\tactions: [\n\t\t\t\t\t\tassign({\n\t\t\t\t\t\t\tactiveMerchantCoupon: undefined,\n\t\t\t\t\t\t\tisPPPActive: false,\n\t\t\t\t\t\t\tisTeamPurchaseActive: ({ context }) =>\n\t\t\t\t\t\t\t\t!context.isTeamPurchaseActive,\n\t\t\t\t\t\t\tquantity: ({ context }) => {\n\t\t\t\t\t\t\t\tif (context.isTeamPurchaseActive) {\n\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst defaultTeamSize = 5\n\n\t\t\t\t\t\t\t\t\tif (context.options.isLiveEvent) {\n\t\t\t\t\t\t\t\t\t\tif (context.pricingData.quantityAvailable === -1) {\n\t\t\t\t\t\t\t\t\t\t\treturn defaultTeamSize\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.pricingData.quantityAvailable,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefaultTeamSize,\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn Math.min(\n\t\t\t\t\t\t\t\t\t\t\tcontext.options.teamQuantityLimit,\n\t\t\t\t\t\t\t\t\t\t\tdefaultTeamSize,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t\tguard: {\n\t\t\t\t\t\ttype: 'canToggleTeamPurchase',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTOGGLE_BUYING_MORE_SEATS: {\n\t\t\t\t\tactions: assign({\n\t\t\t\t\t\tisBuyingMoreSeats: ({ context }) => !context.isBuyingMoreSeats,\n\t\t\t\t\t\tisTeamPurchaseActive: () => true,\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t\tSET_MERCHANT_COUPON: {\n\t\t\t\t\ttarget: 'Loading Pricing Data',\n\t\t\t\t\tactions: assign({\n\t\t\t\t\t\tactiveMerchantCoupon: ({ event }) => event.merchantCoupon,\n\t\t\t\t\t\tautoApplyPPP: false,\n\t\t\t\t\t\tisPPPActive: ({ event }) => event.merchantCoupon?.type === 'ppp',\n\t\t\t\t\t\tisTeamPurchaseActive: ({ event, context }) =>\n\t\t\t\t\t\t\tevent.merchantCoupon?.type === 'ppp'\n\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t: context.isTeamPurchaseActive,\n\t\t\t\t\t\tquantity: ({ context, event }) =>\n\t\t\t\t\t\t\tevent.merchantCoupon?.type === 'ppp' ? 1 : context.quantity,\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t\tUPDATE_QUANTITY: {\n\t\t\t\t\ttarget: 'Debouncing Quantity',\n\t\t\t\t\tactions: assign({\n\t\t\t\t\t\tquantity: ({ event }) => Math.max(event.quantity, 1),\n\t\t\t\t\t}),\n\t\t\t\t\tguard: {\n\t\t\t\t\t\ttype: 'canUpdateQuantity',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPURCHASE_INITIATED: {\n\t\t\t\t\ttarget: 'Purchasing',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tPurchasing: {\n\t\t\ttype: 'final',\n\t\t},\n\t},\n})\n"],"mappings":"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","names":["defaultPricingOptions","withImage","withTitle","withGuaranteeBadge","isLiveEvent","isCohort","isPPPEnabled","teamQuantityLimit","allowTeamPurchase","cancelUrl","process","env","NEXT_PUBLIC_URL","pricingMachine","setup","types","context","input","events","actors","loadFormattedPrices","fromPromise","Promise","resolve","fetch","method","headers","body","JSON","stringify","productId","quantity","couponId","merchantCoupon","autoApplyPPP","then","res","json","loadPurchases","userId","isPreviouslyPurchased","userPurchases","length","purchasesForProduct","filter","purchase","product","id","status","purchases","catch","e","console","error","guards","canToggleTeamPurchase","event","log","isPPPActive","isPPPAvailable","Boolean","formattedPrice","availableCoupons","some","coupon","type","canUpdateQuantity","and","isTeamPurchaseActive","isBuyingMoreSeats","createMachine","activeMerchantCoupon","options","allowPurchase","pricingData","purchaseToUpgrade","quantityAvailable","organizationId","initial","states","invoke","src","onDone","actions","assign","output","country","target","on","UPDATE_QUANTITY","Math","max","guard","after","TOGGLE_TEAM_PURCHASE","undefined","defaultTeamSize","min","TOGGLE_BUYING_MORE_SEATS","SET_MERCHANT_COUPON","PURCHASE_INITIATED","Purchasing"]}