From 6624b19b1d954dc69afbf1a9f6072e791771aff5 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 3 Mar 2026 14:39:08 -0800 Subject: static page loads --- src/routes/(app)/+layout.server.ts | 38 ++++++++++---- src/routes/(app)/invoice/[id]/paid/+page.svelte | 2 +- .../[address]/[amount]/[...feeRate]/+page.svelte | 59 +++++++++------------- src/routes/(static)/+layout.server.ts | 4 -- src/routes/(static)/login/+page.server.ts | 7 +-- src/routes/(static)/register/+page.server.ts | 7 +-- src/routes/(static)/register/auth/+page.server.ts | 7 +-- src/routes/+layout.server.ts | 29 +---------- src/routes/+page.ts | 1 + 9 files changed, 65 insertions(+), 89 deletions(-) delete mode 100644 src/routes/(static)/+layout.server.ts create mode 100644 src/routes/+page.ts (limited to 'src/routes') diff --git a/src/routes/(app)/+layout.server.ts b/src/routes/(app)/+layout.server.ts index 249c0451..f1cb4d24 100644 --- a/src/routes/(app)/+layout.server.ts +++ b/src/routes/(app)/+layout.server.ts @@ -1,18 +1,38 @@ -import { auth, get } from "$lib/utils"; +import { auth, get, isInvalidTokenError, sleep } from "$lib/utils"; import { error, redirect } from "@sveltejs/kit"; -export async function load({ cookies, request, url, params, parent }) { +export async function load({ cookies, url, params }) { const { pathname } = url; const { id, username } = params; const token = cookies.get("token"); - const { user } = await parent(); - const hasArk = token - ? (await get("/accounts", auth(cookies))).some((a: any) => a.type === "ark") - : false; + if (!token) redirect(307, "/login"); + + let user; + try { + user = await get("/me", auth(cookies)); + } catch (e) { + const { message } = e as Error; + if (message.startsWith("Rate")) { + await sleep(3000); + try { + user = await get("/me", auth(cookies)); + } catch (retryError) { + if (isInvalidTokenError(retryError) && pathname !== "/logout") { + redirect(307, "/logout"); + } + throw retryError; + } + } else if (isInvalidTokenError(e) && pathname !== "/logout") { + redirect(307, "/logout"); + } else { + throw e; + } + } - let subject; + const hasArk = (await get("/accounts", auth(cookies))).some((a: any) => a.type === "ark"); + let subject; if (url.pathname.includes("/invoice") && id) { try { ({ user: subject } = await get(`/invoice/${id}`)); @@ -31,10 +51,6 @@ export async function load({ cookies, request, url, params, parent }) { redirect(307, "/migrate"); } - if (user && ["/login", "/register"].includes(pathname) && request.method === "GET") { - redirect(307, `/${user.username}`); - } - const theme = cookies.get("theme") || "light"; return { user, token, subject, theme, hasArk }; diff --git a/src/routes/(app)/invoice/[id]/paid/+page.svelte b/src/routes/(app)/invoice/[id]/paid/+page.svelte index d4a82652..0b49c146 100644 --- a/src/routes/(app)/invoice/[id]/paid/+page.svelte +++ b/src/routes/(app)/invoice/[id]/paid/+page.svelte @@ -15,7 +15,7 @@
{#if pending} - +

Payment detected

diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte index fcae8598..d5eb0293 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte @@ -152,14 +152,10 @@ submit: any = $state(), showSettings = $state(); - let customRate = $state(""); - let showCustom = $state(false); - let presets = $derived(fees ? [ - { label: $t("payments.economy"), rate: 0.1 }, + { label: $t("payments.low"), rate: 0.1 }, { label: $t("payments.medium"), rate: fees.hourFee }, - { label: $t("payments.fast"), rate: fees.halfHourFee }, - { label: $t("payments.fastest"), rate: fees.fastestFee }, + { label: $t("payments.high"), rate: fees.fastestFee }, ] : []); let toggleSettings = () => (showSettings = !showSettings); @@ -169,12 +165,11 @@ let pickRate = (r: number) => { feeRate = r; - showCustom = false; setFee(); }; let applyCustom = () => { - const r = parseFloat(customRate); + const r = parseFloat(String(feeRate)); if (r >= 0.1) { feeRate = r; setFee(); @@ -203,43 +198,35 @@ {#if fees}
-

{$t("payments.networkFee")}

- -
+

{$t("payments.priority")}

+
{#each presets as preset} {/each} -
- {#if showCustom} -
- e.key === 'Enter' && applyCustom()} - /> - sat/vB -
- {/if} +
+ { + const r = parseFloat(e.currentTarget.value); + if (r >= 0.1) { feeRate = r; setFee(); } + }} + onkeydown={(e) => e.key === 'Enter' && applyCustom()} + /> + sat/vB +
diff --git a/src/routes/(static)/+layout.server.ts b/src/routes/(static)/+layout.server.ts deleted file mode 100644 index a6c5a722..00000000 --- a/src/routes/(static)/+layout.server.ts +++ /dev/null @@ -1,4 +0,0 @@ -export async function load({ parent }) { - const { user } = await parent(); - return { user }; -} diff --git a/src/routes/(static)/login/+page.server.ts b/src/routes/(static)/login/+page.server.ts index 480116b5..a59aa78c 100644 --- a/src/routes/(static)/login/+page.server.ts +++ b/src/routes/(static)/login/+page.server.ts @@ -2,9 +2,10 @@ import { PUBLIC_COINOS_URL } from "$env/static/public"; import { fd, get, login } from "$lib/utils"; import { fail, redirect } from "@sveltejs/kit"; -export const load = async ({ parent }) => { - const { user } = await parent(); - if (user?.pubkey) redirect(307, `/${user.username}`); +export const load = async ({ cookies }) => { + const token = cookies.get("token"); + const username = cookies.get("username"); + if (token && username) redirect(307, `/${username}`); const { challenge } = await get("/challenge"); return { challenge }; }; diff --git a/src/routes/(static)/register/+page.server.ts b/src/routes/(static)/register/+page.server.ts index e56f4e14..2a70517a 100644 --- a/src/routes/(static)/register/+page.server.ts +++ b/src/routes/(static)/register/+page.server.ts @@ -1,8 +1,9 @@ import { redirect } from "@sveltejs/kit"; -export const load = async ({ parent }) => { - const { user } = await parent(); - if (user) redirect(307, `/${user.username}`); +export const load = async ({ cookies }) => { + const token = cookies.get("token"); + const username = cookies.get("username"); + if (token && username) redirect(307, `/${username}`); const index = Math.floor(Math.random() * 64) + 1; diff --git a/src/routes/(static)/register/auth/+page.server.ts b/src/routes/(static)/register/auth/+page.server.ts index 29e9a3f8..282081f9 100644 --- a/src/routes/(static)/register/auth/+page.server.ts +++ b/src/routes/(static)/register/auth/+page.server.ts @@ -1,9 +1,10 @@ import { fd, get, login, post } from "$lib/utils"; import { fail, redirect } from "@sveltejs/kit"; -export const load = async ({ parent, url }) => { - const { user } = await parent(); - if (user) redirect(307, `/${user.username}`); +export const load = async ({ cookies, url }) => { + const token = cookies.get("token"); + const cookieUser = cookies.get("username"); + if (token && cookieUser) redirect(307, `/${cookieUser}`); const username = url.searchParams.get("username"); if (!username) redirect(307, "/register"); diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index 9f0c584d..61c46ea6 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -1,36 +1,10 @@ import { defaultLocale, loadTranslations, locales } from "$lib/translations/index"; -import { auth, get, isInvalidTokenError, sleep } from "$lib/utils"; -import { redirect } from "@sveltejs/kit"; export const load = async ({ cookies, request, url }) => { const { pathname } = url; - let user; - const token = cookies.get("token"); - if (token) { - try { - user = await get("/me", auth(cookies)); - } catch (e) { - const { message } = e as Error; - if (message.startsWith("Rate")) { - await sleep(3000); - try { - user = await get("/me", auth(cookies)); - } catch (retryError) { - if (isInvalidTokenError(retryError) && pathname !== "/logout") { - redirect(307, "/logout"); - } - throw retryError; - } - } else if (isInvalidTokenError(e) && pathname !== "/logout") { - redirect(307, "/logout"); - } else { - throw e; - } - } - } // Try to get the locale from cookie - let locale = user?.language || (cookies.get("lang") || "").toLowerCase(); + let locale = (cookies.get("lang") || "").toLowerCase(); // Get user preferred locale if (!locale) { @@ -55,6 +29,5 @@ export const load = async ({ cookies, request, url }) => { theme, pathname, i18n: { locale, route: pathname }, - user, }; }; diff --git a/src/routes/+page.ts b/src/routes/+page.ts new file mode 100644 index 00000000..189f71e2 --- /dev/null +++ b/src/routes/+page.ts @@ -0,0 +1 @@ +export const prerender = true; -- cgit v1.2.3