aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-03-03 14:39:08 -0800
committerAdam Soltys <[email protected]>2026-03-03 14:39:08 -0800
commit6624b19b1d954dc69afbf1a9f6072e791771aff5 (patch)
treeb558d6673be563ee1038abf9c55b7b509097f1b7 /src/routes
parent41c6636efee032a29c380ef0ee7ef73a99f64cd5 (diff)
downloadcoinos-ui-6624b19b1d954dc69afbf1a9f6072e791771aff5.tar.gz
coinos-ui-6624b19b1d954dc69afbf1a9f6072e791771aff5.zip
static page loads
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/(app)/+layout.server.ts38
-rw-r--r--src/routes/(app)/invoice/[id]/paid/+page.svelte2
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte59
-rw-r--r--src/routes/(static)/+layout.server.ts4
-rw-r--r--src/routes/(static)/login/+page.server.ts7
-rw-r--r--src/routes/(static)/register/+page.server.ts7
-rw-r--r--src/routes/(static)/register/auth/+page.server.ts7
-rw-r--r--src/routes/+layout.server.ts29
-rw-r--r--src/routes/+page.ts1
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;