diff --git a/apps/web/src/routes/dashboard.ts b/apps/web/src/routes/dashboard.ts index bf68a1c..0a2e5aa 100644 --- a/apps/web/src/routes/dashboard.ts +++ b/apps/web/src/routes/dashboard.ts @@ -213,7 +213,15 @@ export const dashboard = new Elysia() if (!resolved?.accountId) return redirect("/dashboard"); const [acc] = await sql`SELECT plan, plan_expires_at FROM accounts WHERE id = ${resolved.accountId}`; if (acc.plan === "lifetime") return redirect("/dashboard/settings"); - return html("checkout", { nav: "settings", account: acc, payApi: process.env.PAY_API || "https://pay.pingql.com" }); + return html("checkout", { nav: "settings", account: acc, payApi: process.env.PAY_API || "https://pay.pingql.com", invoiceId: null }); + }) + + // Existing invoice by ID — survives refreshes + .get("/dashboard/checkout/:id", async ({ cookie, headers, params }) => { + const resolved = await getAccountId(cookie, headers); + if (!resolved?.accountId) return redirect("/dashboard"); + const [acc] = await sql`SELECT plan, plan_expires_at FROM accounts WHERE id = ${resolved.accountId}`; + return html("checkout", { nav: "settings", account: acc, payApi: process.env.PAY_API || "https://pay.pingql.com", invoiceId: params.id }); }) // New monitor