aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-10-23 10:32:57 -0700
committerAdam Soltys <[email protected]>2024-10-23 10:32:57 -0700
commit53c1198f0ccfad1c1ea95ab87be7244b8a61b2a6 (patch)
tree05dfd147b48d6a95f00beb01a128e187eb05cc18 /src
parentb21b2c01b0294427fd799249a4670415c256df3f (diff)
downloadcoinos-ui-53c1198f0ccfad1c1ea95ab87be7244b8a61b2a6.tar.gz
coinos-ui-53c1198f0ccfad1c1ea95ab87be7244b8a61b2a6.zip
no more slow fee rate
Diffstat (limited to 'src')
-rw-r--r--src/routes/(app)/+layout.server.ts91
-rw-r--r--src/routes/(app)/[username]/(profile)/+page.svelte48
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts76
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte11
-rw-r--r--src/routes/+layout.server.ts7
5 files changed, 118 insertions, 115 deletions
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 };
+ 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) {}
- }
+ 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");
- }
- }
+ 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?.needsMigration) {
+ redirect(307, "/migrate");
+ }
- if (
- user &&
- ["/login", "/register"].includes(pathname) &&
- request.method === "GET"
- ) {
- redirect(307, `/${user.username}`);
- }
+ 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 (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`);
- }
+ 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);
- }
+ try {
+ rate = await get("/rate");
+ rates = await get("/rates");
+ } catch (e) {
+ console.log(e);
+ }
- return { user, token, rate, rates, subject };
+ 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}
</div>
- <div class="flex justify-center gap-2">
- <a href={`/account/savings`} class="contents">
- <button
- class="rounded-2xl py-5 px-6 hover:opacity-80 flex w-full justify-center bg-primary"
- >
- <div class="mx-auto flex gap-2">
- <Icon icon="plus" style="w-8 mx-auto" />
- <div class="my-auto text-xl whitespace-nowrap">
- {$t("accounts.addAccount")}
- </div>
+ <a href={`/account/savings`} class="contents">
+ <button
+ class="rounded-2xl py-5 px-6 hover:opacity-80 flex w-full justify-center bg-primary"
+ >
+ <div class="mx-auto flex gap-2">
+ <Icon icon="plus" style="w-8 mx-auto" />
+ <div class="my-auto text-xl whitespace-nowrap">
+ {$t("accounts.addAccount")}
</div>
- </button>
- </a>
+ </div>
+ </button>
+ </a>
- {#if $installPrompt}
- <button
- class="rounded-2xl border py-5 px-6 font-bold hover:opacity-80 flex bg-black text-white xl:hidden w-full justify-center"
- on:click={install}
- >
- <div class="mx-auto flex gap-2">
- <Icon icon="save" style="w-8 mx-auto invert" />
- <div class="my-auto text-xl whitespace-nowrap">
- {$t("user.install")}
- </div>
+ {#if $installPrompt}
+ <button
+ class="rounded-2xl border py-5 px-6 font-bold hover:opacity-80 flex bg-black text-white xl:hidden w-full justify-center"
+ on:click={install}
+ >
+ <div class="mx-auto flex gap-2">
+ <Icon icon="save" style="w-8 mx-auto invert" />
+ <div class="my-auto text-xl whitespace-nowrap">
+ {$t("user.install")}
</div>
- </button>
- {/if}
- </div>
+ </div>
+ </button>
+ {/if}
{/if}
<Items {items} {subject} {user} {total} {currency} {rate} />
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}
<option value={fees[feeName]}
>{feeNames[feeName]} &mdash; ⚡️{fees[feeName]}/vb</option
>
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