diff --git a/subs-mock/src/index.ts b/subs-mock/src/index.ts index 4c681c5a8a..9801d6ea07 100644 --- a/subs-mock/src/index.ts +++ b/subs-mock/src/index.ts @@ -6,6 +6,7 @@ import Stripe from 'stripe' import { getMainSubscriptionProducts, + normalizeEntitlements, RevenueCatProduct, RevenueCatSubscription, } from './util' @@ -156,9 +157,14 @@ export default new Hono<{Bindings: Bindings; Variables: Variables}>() const rc = c.get('rcv2') const user = c.req.query('user') - const {items} = await rc.get(`customers/${user}/subscriptions`).json() + const {items} = await rc + .get<{items: RevenueCatSubscription[]}>(`customers/${user}/subscriptions`) + .json() + const entitlements = normalizeEntitlements( + items.flatMap(sub => sub.entitlements.items), + ) - return c.json(items) + return c.json({entitlements}) }) /** diff --git a/subs-mock/src/util.ts b/subs-mock/src/util.ts index 8f5e43d6cd..c38a678d86 100644 --- a/subs-mock/src/util.ts +++ b/subs-mock/src/util.ts @@ -455,3 +455,36 @@ export function normalizeMainSubscriptionProduct({ } } } + +export enum EntitlementId { + Main0 = 'main:0', + Main1 = 'main:1', + Main2 = 'main:2', +} + +export function normalizeEntitlements( + entitlements: RevenueCatSubscription['entitlements']['items'], +) { + return entitlements.map(entitlement => { + let id = EntitlementId.Main0 + + switch (entitlement.lookup_key) { + case 'main:0': { + id = EntitlementId.Main0 + break + } + case 'main:1': { + id = EntitlementId.Main1 + break + } + case 'main:2': { + id = EntitlementId.Main2 + break + } + } + + return { + id, + } + }) +}