| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| export const CHECKOUT_PRODUCT_PARAM = 'wm_checkout_product'; |
| export const CHECKOUT_REF_PARAM = 'wm_checkout_ref'; |
| export const CHECKOUT_DISCOUNT_PARAM = 'wm_checkout_discount'; |
|
|
| export interface CheckoutIntentFromUrl { |
| productId: string; |
| referralCode?: string; |
| discountCode?: string; |
| } |
|
|
| |
| |
| |
| |
| |
| export function parseCheckoutIntentFromSearch(search: string): CheckoutIntentFromUrl | null { |
| const params = new URLSearchParams(search); |
| const productId = params.get(CHECKOUT_PRODUCT_PARAM); |
| if (!productId) return null; |
| return { |
| productId, |
| referralCode: params.get(CHECKOUT_REF_PARAM) ?? undefined, |
| discountCode: params.get(CHECKOUT_DISCOUNT_PARAM) ?? undefined, |
| }; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| export function stripCheckoutIntentFromSearch(search: string): string { |
| const params = new URLSearchParams(search); |
| params.delete(CHECKOUT_PRODUCT_PARAM); |
| params.delete(CHECKOUT_REF_PARAM); |
| params.delete(CHECKOUT_DISCOUNT_PARAM); |
| const remaining = params.toString(); |
| return remaining ? `?${remaining}` : ''; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| export function buildCheckoutReturnUrl( |
| currentHref: string, |
| productId: string, |
| options?: { referralCode?: string; discountCode?: string }, |
| ): string { |
| const url = new URL(currentHref); |
| url.searchParams.delete(CHECKOUT_PRODUCT_PARAM); |
| url.searchParams.delete(CHECKOUT_REF_PARAM); |
| url.searchParams.delete(CHECKOUT_DISCOUNT_PARAM); |
| url.searchParams.set(CHECKOUT_PRODUCT_PARAM, productId); |
| if (options?.referralCode) url.searchParams.set(CHECKOUT_REF_PARAM, options.referralCode); |
| if (options?.discountCode) url.searchParams.set(CHECKOUT_DISCOUNT_PARAM, options.discountCode); |
| return url.toString(); |
| } |
|
|