diff options
| author | Adam Soltys <[email protected]> | 2026-03-03 14:39:08 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-03-03 14:39:08 -0800 |
| commit | 6624b19b1d954dc69afbf1a9f6072e791771aff5 (patch) | |
| tree | b558d6673be563ee1038abf9c55b7b509097f1b7 /src/routes | |
| parent | 41c6636efee032a29c380ef0ee7ef73a99f64cd5 (diff) | |
| download | coinos-ui-6624b19b1d954dc69afbf1a9f6072e791771aff5.tar.gz coinos-ui-6624b19b1d954dc69afbf1a9f6072e791771aff5.zip | |
static page loads
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/(app)/+layout.server.ts | 38 | ||||
| -rw-r--r-- | src/routes/(app)/invoice/[id]/paid/+page.svelte | 2 | ||||
| -rw-r--r-- | src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte | 59 | ||||
| -rw-r--r-- | src/routes/(static)/+layout.server.ts | 4 | ||||
| -rw-r--r-- | src/routes/(static)/login/+page.server.ts | 7 | ||||
| -rw-r--r-- | src/routes/(static)/register/+page.server.ts | 7 | ||||
| -rw-r--r-- | src/routes/(static)/register/auth/+page.server.ts | 7 | ||||
| -rw-r--r-- | src/routes/+layout.server.ts | 29 | ||||
| -rw-r--r-- | src/routes/+page.ts | 1 |
9 files changed, 65 insertions, 89 deletions
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 subject; + 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; + } + } + + 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 @@ <div class="container px-4 text-center mx-auto"> {#if pending} - <PhClockBold width="160" class="text-warning" /> + <PhClockBold width="160" class="text-warning mx-auto" /> <h1 class="text-3xl md:text-4xl font-bold mb-6">Payment detected</h1> 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} <div class="text-center"> - <h2 class="text-secondary text-lg">{$t("payments.networkFee")}</h2> - - <div class="flex flex-wrap gap-2 justify-center mb-2"> + <h2 class="text-secondary text-lg">{$t("payments.priority")}</h2> + <div class="flex gap-2 justify-center mb-2"> {#each presets as preset} <button type="button" - class="btn btn-sm" - class:btn-accent={feeRate == preset.rate && !showCustom} + class="btn btn-sm !w-auto" + class:btn-accent={feeRate == preset.rate} onclick={() => pickRate(preset.rate)} > - {preset.label} ({preset.rate}) + {preset.label} </button> {/each} - <button - type="button" - class="btn btn-sm" - class:btn-accent={showCustom} - onclick={() => { showCustom = true; customRate = String(feeRate); }} - > - Custom - </button> </div> - {#if showCustom} - <div class="flex items-center justify-center gap-2 mb-2"> - <input - type="number" - min="0.1" - step="0.1" - class="input input-bordered w-24 text-center" - bind:value={customRate} - onblur={applyCustom} - onkeydown={(e) => e.key === 'Enter' && applyCustom()} - /> - <span class="text-secondary text-sm">sat/vB</span> - </div> - {/if} + <div class="flex items-center justify-center gap-2 mb-2"> + <input + type="number" + min="0.1" + step="0.1" + class="input input-bordered w-24 text-center" + value={feeRate} + oninput={(e) => { + const r = parseFloat(e.currentTarget.value); + if (r >= 0.1) { feeRate = r; setFee(); } + }} + onkeydown={(e) => e.key === 'Enter' && applyCustom()} + /> + <span class="text-secondary text-sm">sat/vB</span> + </div> <Amount amount={fee} rate={$rate} {currency} {locale} /> </div> 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; |
