From fd137d961392ebd8f6da9f86e57a1d7dfe07eef1 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 20 Dec 2023 14:41:19 -0800 Subject: new on-chain send ui --- .../(app)/send/bitcoin/[address]/+page.svelte | 56 +++++++ .../bitcoin/[address]/[...amount]/+page.server.js | 40 ----- .../bitcoin/[address]/[...amount]/+page.svelte | 162 --------------------- .../[amount]/[...feeRate]/+page.server.js | 36 +++++ .../[address]/[amount]/[...feeRate]/+page.svelte | 134 +++++++++++++++++ 5 files changed, 226 insertions(+), 202 deletions(-) create mode 100644 src/routes/(app)/send/bitcoin/[address]/+page.svelte delete mode 100644 src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js delete mode 100644 src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte create mode 100644 src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.js create mode 100644 src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte (limited to 'src/routes/(app)/send') diff --git a/src/routes/(app)/send/bitcoin/[address]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/+page.svelte new file mode 100644 index 00000000..7648d41f --- /dev/null +++ b/src/routes/(app)/send/bitcoin/[address]/+page.svelte @@ -0,0 +1,56 @@ + + + + +
+

{$t("payments.send")}

+ +
{address}
+ + + +
+ + +
+ +
+
+
diff --git a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js deleted file mode 100644 index 2998f22a..00000000 --- a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js +++ /dev/null @@ -1,40 +0,0 @@ -import { fail, redirect } from "@sveltejs/kit"; -import { auth, post, fd } from "$lib/utils"; - -let seen = {}; -export const actions = { - default: async ({ cookies, request }) => { - try { - let { - address, - amount, - confirmed, - feeRate, - subtract, - pin, - stale, - ts, - } = await await fd(request); - if (seen[ts]) return fail(400, { message: "Duplicate form submission" }); - - let estimate = await post( - "/bitcoin/fee", - { address, amount, feeRate, subtract }, - auth(cookies) - ); - - let { tx } = estimate; - - if (stale || !confirmed) return fail(400, estimate); - - seen[ts] = 1; - setTimeout(() => delete seen[ts], 30000); - - await post("/bitcoin/send", { pin, subtract, tx }, auth(cookies)); - } catch (e) { - return fail(400, { message: e.message }); - } - - redirect(307, "/sent"); - }, -}; diff --git a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte deleted file mode 100644 index a8b86718..00000000 --- a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.svelte +++ /dev/null @@ -1,162 +0,0 @@ - - - - -{#if form?.message} -
- {form.message} -
-{/if} - -
-

{$t("payments.send")}

- -
{address}
- - {#if confirmed} -
-

- {f(toFiat(amount, rate), currency)} -

-

⚡️{s(amount)}

-
- -
-

with fee

- -
-

- {f(toFiat(fee + ourfee, rate), currency)} -

-

⚡️{s(fee + ourfee)}

- -
-
- {:else} - - {/if} - -
- - - - - - - - - - {#if confirmed && adjusting} -
-
- Slower (~40 blocks) -
-
- Faster (~1 block) -
- -
-
-
- -
- -
- {/if} - -
- {#if !confirmed} - - {/if} - - -
-
-
diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.js b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.js new file mode 100644 index 00000000..08741296 --- /dev/null +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.js @@ -0,0 +1,36 @@ +import { fail, redirect } from "@sveltejs/kit"; +import { auth, post, fd } from "$lib/utils"; + +let seen = {}; + +export async function load({ params: { address, amount, feeRate }, cookies }) { + try { + let fees = await fetch( + `https://mempool.space/api/v1/fees/recommended` + ).then((r) => r.json()); + + if (!feeRate) feeRate = fees.halfHourFee; + + let { fee, ourfee, hex } = await post( + "/bitcoin/fee", + { address, amount, feeRate: feeRate }, + auth(cookies) + ); + + return { amount, address, fee, fees, feeRate, ourfee, hex }; + } catch (e) { + throw redirect(307, `/send/bitcoin/${address}`); + } +} + +export const actions = { + default: async ({ cookies, request }) => { + try { + let r = await post("/bitcoin/send", await fd(request), auth(cookies)); + } catch (e) { + return fail(400, { message: e.message }); + } + + redirect(307, "/sent"); + }, +}; diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte new file mode 100644 index 00000000..d583024c --- /dev/null +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte @@ -0,0 +1,134 @@ + + + + +
+ {#if form?.message} +
+
{form.message}
+
+ {/if} + +

{$t("payments.send")}

+ +
{address}
+ +
+

+ {f(toFiat(amount, $rate), currency)} +

+

⚡️{s(amount)}

+
+ +
+

{$t("payments.networkFee")}

+ +
+ +
+

+ {f(toFiat(fee, $rate), currency)} +

+

⚡️{s(fee)}

+
+
+
+ +
+

{$t("payments.ourFee")}

+ +
+
+

+ {f(toFiat(ourfee, $rate), currency)} +

+

⚡️{s(ourfee)}

+
+
+
+ +
(submitting = true)}> + + + + +
+ +
+
+
+ + -- cgit v1.2.3