From 53c1198f0ccfad1c1ea95ab87be7244b8a61b2a6 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 23 Oct 2024 10:32:57 -0700 Subject: no more slow fee rate --- src/routes/(app)/+layout.server.ts | 107 +++++++++++---------- src/routes/(app)/[username]/(profile)/+page.svelte | 48 +++++---- .../[amount]/[...feeRate]/+page.server.ts | 76 +++++++-------- .../[address]/[amount]/[...feeRate]/+page.svelte | 11 +-- src/routes/+layout.server.ts | 7 +- 5 files changed, 126 insertions(+), 123 deletions(-) (limited to 'src') diff --git a/src/routes/(app)/+layout.server.ts b/src/routes/(app)/+layout.server.ts index 5824d36a..b5a279f2 100644 --- a/src/routes/(app)/+layout.server.ts +++ b/src/routes/(app)/+layout.server.ts @@ -1,56 +1,59 @@ +import { auth, get, protectedRoutes, sleep } from "$lib/utils"; import { error, redirect } from "@sveltejs/kit"; -import { get, auth, protectedRoutes } from "$lib/utils"; export async function load({ cookies, request, url, params }) { - let { pathname } = url; - let { username } = params; - let token = cookies.get("token"); - let rate, - rates = { USD: 1 }; - - let user; - if (token) { - try { - user = await get("/me", auth(cookies)); - } catch (e) {} - } - - let subject; - if (username) { - try { - subject = await get(`/users/${username}`); - } catch (e) { - error(500, "Unable to retrieve user account data"); - } - } - - if (user?.needsMigration) { - redirect(307, `/migrate`); - } - - if ( - user && - ["/login", "/register"].includes(pathname) && - request.method === "GET" - ) { - redirect(307, `/${user.username}`); - } - - if (protectedRoutes.find((p) => pathname.match(p)) && !user) { - redirect(307, "/login"); - } - - if (user && !user.pubkey && !pathname.includes("generate")) { - console.log("user missing pubkey", user); - redirect(303, `/generate`); - } - - try { - rate = await get("/rate"); - rates = await get("/rates"); - } catch (e) { - console.log(e); - } - - return { user, token, rate, rates, subject }; + const { pathname } = url; + const { username } = params; + const token = cookies.get("token"); + let rate; + let rates = { USD: 1 }; + + let user; + if (token) { + try { + user = await get("/me", auth(cookies)); + } catch (e) { + if (e.message.startsWith("Rate")) await sleep(3000); + user = await get("/me", auth(cookies)); + } + } + + let subject; + if (username) { + try { + subject = await get(`/users/${username}`); + } catch (e) { + error(500, "Unable to retrieve user account data"); + } + } + + if (user?.needsMigration) { + redirect(307, "/migrate"); + } + + if ( + user && + ["/login", "/register"].includes(pathname) && + request.method === "GET" + ) { + redirect(307, `/${user.username}`); + } + + if (protectedRoutes.find((p) => pathname.match(p)) && !user) { + redirect(307, "/login"); + } + + if (user && !user.pubkey && !pathname.includes("generate")) { + console.log("user missing pubkey", user); + redirect(303, "/generate"); + } + + try { + rate = await get("/rate"); + rates = await get("/rates"); + } catch (e) { + console.log(e); + } + + return { user, token, rate, rates, subject }; } diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index bd9537b1..7de6ec37 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -40,34 +40,32 @@ {/each} -
- - - +
+ + - {#if $installPrompt} - - {/if} - + + + {/if} {/if} diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts index 77fd8a4d..1122e689 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts @@ -1,49 +1,49 @@ +import { auth, fd, get, post } from "$lib/utils"; import { fail, redirect } from "@sveltejs/kit"; -import { auth, get, post, fd } from "$lib/utils"; export async function load({ params: { address, amount, feeRate }, cookies }) { - let aid = cookies.get("aid"); + const aid = cookies.get("aid"); - try { - let { fee, fees, inputs, ourfee, hex } = await post( - "/bitcoin/fee", - { address, amount, feeRate, aid }, - auth(cookies), - ); + try { + const { fee, fees, inputs, ourfee, hex } = await post( + "/bitcoin/fee", + { address, amount, feeRate, aid }, + auth(cookies), + ); - let account = await get(`/account/${aid}`, auth(cookies)); + const account = await get(`/account/${aid}`, auth(cookies)); - return { - account, - amount, - address, - fee, - fees, - feeRate, - ourfee, - hex, - inputs, - }; - } catch (e: any) { - return { amount, address, feeRate, message: e.message }; - } + return { + account, + amount, + address, + fee, + fees, + feeRate, + ourfee, + hex, + inputs, + }; + } catch (e: any) { + return { amount, address, feeRate, message: e.message }; + } } export const actions = { - default: async ({ - cookies, - params: { address, amount, feeRate }, - request, - }) => { - let p; - try { - let body = await fd(request); - p = await post("/bitcoin/send", body, auth(cookies)); - } catch (e: any) { - console.log("problem sending bitcoin", e); - return fail(400, { address, amount, feeRate, message: e.message }); - } + default: async ({ + cookies, + params: { address, amount, feeRate }, + request, + }) => { + let p; + try { + const body = await fd(request); + p = await post("/bitcoin/send", body, auth(cookies)); + } catch (e: any) { + console.log("problem sending bitcoin", e); + return fail(400, { address, amount, feeRate, message: e.message }); + } - redirect(307, `/sent/${p.id}`); - }, + redirect(307, `/sent/${p.id}`); + }, }; 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 ba87436f..903bd372 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte @@ -98,7 +98,7 @@ data); if (!fees) return; delete fees.minimumFee; - feeRate = closest(Object.values(fees), feeRate); + feeRate = feeRate ? closest(Object.values(fees), feeRate) : fees.halfHourFee; if (!$rate) $rate = rates[currency]; }; @@ -106,10 +106,9 @@ let submitting, submit, showSettings; let feeNames = { - fastestFee: "Fastest", - halfHourFee: "Fast", - hourFee: "Medium", - economyFee: "Slow", + fastestFee: $t("payments.fastest"), + halfHourFee: $t("payments.fast"), + hourFee: $t("payments.medium"), }; let toggleSettings = () => (showSettings = !showSettings); @@ -152,7 +151,7 @@ on:change={setFee} class="border text-lg bg-white p-4 rounded-2xl text-center my-auto" > - {#each Object.keys(fees) as feeName} + {#each Object.keys(feeNames) as feeName} diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index a18ba506..b4022e69 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -3,7 +3,7 @@ import { loadTranslations, locales, } from "$lib/translations/index"; -import { auth, get } from "$lib/utils"; +import { auth, get, sleep } from "$lib/utils"; export const load = async ({ cookies, request, url }) => { const { host, pathname } = url; @@ -12,7 +12,10 @@ export const load = async ({ cookies, request, url }) => { if (token) { try { user = await get("/me", auth(cookies)); - } catch (e) {} + } catch (e) { + if (e.message.startsWith("Rate")) await sleep(3000); + user = await get("/me", auth(cookies)); + } } // Try to get the locale from cookie -- cgit v1.2.3