enh: add new product SKUs to LS hook

This commit is contained in:
Ben Allfree 2025-01-10 11:47:57 +00:00
parent 286ff5f93e
commit f7bc130c54

View File

@ -14,13 +14,13 @@ type LemonSqueezyDebugContext = PartialDeep<{
product_id: number product_id: number
product_name: string product_name: string
variant_id: number variant_id: number
variant_name: string
first_order_item: { first_order_item: {
product_id: number product_id: number
product_name: string product_name: string
variant_id: number variant_id: number
} variant_name: string
first_subscription_item: { quantity: number
subscription_id: number
} }
} }
type: string type: string
@ -37,8 +37,9 @@ type LemonSqueezyDebugContext = PartialDeep<{
user_id: string user_id: string
product_id: number product_id: number
variant_id: number variant_id: number
subscription_id: number
product_name: string product_name: string
quantity: number
variant_name: string
}> }>
export const HandleLemonSqueezySale = (c: echo.Context) => { export const HandleLemonSqueezySale = (c: echo.Context) => {
@ -111,23 +112,37 @@ export const HandleLemonSqueezySale = (c: echo.Context) => {
context.data?.data?.attributes?.first_order_item?.product_name || context.data?.data?.attributes?.first_order_item?.product_name ||
context.data?.data?.attributes?.product_name || context.data?.data?.attributes?.product_name ||
'' ''
log(`product name ok`, context.product_name)
context.variant_id = context.variant_id =
context.data?.data?.attributes?.first_order_item?.variant_id || context.data?.data?.attributes?.first_order_item?.variant_id ||
context.data?.data?.attributes?.variant_id || context.data?.data?.attributes?.variant_id ||
0 0
if (!context.variant_id) { if (!context.variant_id) {
throw new Error(`No variant ID`) throw new Error(`No variant ID`)
} else { } else {
log(`variant ID ok`, context.variant_id) log(`variant ID ok`, context.variant_id)
} }
context.variant_name =
context.data?.data?.attributes?.first_order_item?.variant_name ||
context.data?.data?.attributes?.variant_name ||
''
log(`variant name ok`, context.variant_name)
context.quantity =
context.data?.data?.attributes?.first_order_item?.quantity || 0
log(`quantity ok`, context.quantity)
const FLOUNDER_ANNUAL_PV_ID = `367781-200790` const FLOUNDER_ANNUAL_PV_ID = `367781-200790`
const FLOUNDER_LIFETIME_PV_ID = `306534-441845` const FLOUNDER_LIFETIME_PV_ID = `306534-441845`
const PRO_MONTHLY_PV_ID = `159790-200788` const PRO_MONTHLY_PV_ID = `159790-200788`
const PRO_ANNUAL_PV_ID = `159791-200789` const PRO_ANNUAL_PV_ID = `159791-200789`
const FOUNDER_ANNUAL_PV_ID = `159792-200790` const FOUNDER_ANNUAL_PV_ID = `159792-200790`
const PAYWALL_INSTANCE_MONTHLY_PV_ID = `424532-651625`
const PAYWALL_PRO_MONTHLY_PV_ID = `424532-651629`
const PAYWALL_PRO_ANNUAL_PV_ID = `424532-651634`
const PAYWALL_FLOUNDER_PV_ID = `424532-651627`
const pv_id = `${context.product_id}-${context.variant_id}` const pv_id = `${context.product_id}-${context.variant_id}`
@ -138,16 +153,15 @@ export const HandleLemonSqueezySale = (c: echo.Context) => {
PRO_MONTHLY_PV_ID, PRO_MONTHLY_PV_ID,
PRO_ANNUAL_PV_ID, PRO_ANNUAL_PV_ID,
FOUNDER_ANNUAL_PV_ID, FOUNDER_ANNUAL_PV_ID,
PAYWALL_INSTANCE_MONTHLY_PV_ID,
PAYWALL_PRO_MONTHLY_PV_ID,
PAYWALL_PRO_ANNUAL_PV_ID,
PAYWALL_FLOUNDER_PV_ID,
].includes(pv_id) ].includes(pv_id)
) { ) {
throw new Error(`Product and variant not found: ${pv_id}`) throw new Error(`Product and variant not found: ${pv_id}`)
} }
context.subscription_id =
context.data?.data?.attributes?.first_subscription_item
?.subscription_id || 0
log(`subscription ID`, context.subscription_id)
const userRec = (() => { const userRec = (() => {
try { try {
return dao.findFirstRecordByData('users', 'id', context.user_id) return dao.findFirstRecordByData('users', 'id', context.user_id)
@ -206,6 +220,30 @@ export const HandleLemonSqueezySale = (c: echo.Context) => {
userRec.set(`subscription`, `flounder`) userRec.set(`subscription`, `flounder`)
userRec.set(`subscription_interval`, `year`) userRec.set(`subscription_interval`, `year`)
}, },
// Paywall instance
[PAYWALL_INSTANCE_MONTHLY_PV_ID]: () => {
userRec.set(`subscription`, `premium`)
userRec.set(`subscription_interval`, `month`)
userRec.set(`subscription_quantity`, context.quantity)
},
// Paywall pro monthly
[PAYWALL_PRO_MONTHLY_PV_ID]: () => {
userRec.set(`subscription`, `premium`)
userRec.set(`subscription_interval`, `month`)
userRec.set(`subscription_quantity`, 250)
},
// Paywall pro annual
[PAYWALL_PRO_ANNUAL_PV_ID]: () => {
userRec.set(`subscription`, `premium`)
userRec.set(`subscription_interval`, `year`)
userRec.set(`subscription_quantity`, 250)
},
// Paywall flounder
[PAYWALL_FLOUNDER_PV_ID]: () => {
userRec.set(`subscription`, `flounder`)
userRec.set(`subscription_interval`, `life`)
userRec.set(`subscription_quantity`, 250)
},
} as const } as const
const product_handler = const product_handler =