import { PAYMENT_ANALYTICS_ENTRY_PARAM, PAYMENT_ANALYTICS_REASON_PARAM, parsePaymentAnalyticsContext, } from "@/lib/analytics/payment_analytics_context"; import { getFirstPaymentSearchParam, parsePaymentReturnSearchParams, parseSubscriptionReturnTo, type PaymentSearchParams, } from "@/lib/payment/payment_search_params"; import { DEFAULT_CHARACTER_SLUG, getCharacterBySlug, } from "@/data/constants/character"; import { SubscriptionScreen, type SubscriptionType, } from "./subscription-screen"; export default async function SubscriptionPage({ searchParams, }: { searchParams: Promise; }) { const query = await searchParams; const paymentReturn = parsePaymentReturnSearchParams(query); const subscriptionType = toSubscriptionType( getFirstPaymentSearchParam(query.type), ); const sourceCharacterSlug = getCharacterBySlug(getFirstPaymentSearchParam(query.character))?.slug ?? DEFAULT_CHARACTER_SLUG; const analyticsContext = parsePaymentAnalyticsContext({ entryPoint: getFirstPaymentSearchParam( query[PAYMENT_ANALYTICS_ENTRY_PARAM], ), triggerReason: getFirstPaymentSearchParam( query[PAYMENT_ANALYTICS_REASON_PARAM], ), subscriptionType, }); return ( ); } function toSubscriptionType(value: string | null): SubscriptionType { return value === "topup" ? "topup" : "vip"; }