From 0f35462ebdde3701e8fe927b3debace9abf79305 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 14 Nov 2024 13:32:52 -0800 Subject: payment amount helpers --- src/components/InvoiceTypes.svelte | 4 +- src/components/Success.svelte | 59 +++++++++++++++++ src/lib/invoice.ts | 1 + src/lib/socket.ts | 17 +++-- src/routes/(app)/+layout.svelte | 10 +-- src/routes/(app)/[username]/(profile)/+page.svelte | 8 +-- src/routes/(app)/[username]/receive/+page.svelte | 2 - src/routes/(app)/invoice/[id]/+layout@.svelte | 27 ++------ src/routes/(app)/invoice/[id]/paid/+page.svelte | 74 +++++----------------- src/routes/(app)/payment/[id]/+page.svelte | 40 ++---------- src/routes/(app)/payments/[...page]/+page.svelte | 33 +++++----- .../(app)/send/lightning/[payreq]/+page.svelte | 25 +------- src/routes/(app)/sent/[id]/+page.svelte | 18 +----- src/routes/(app)/settings/preferences/+page.svelte | 6 +- src/routes/(static)/login/+page.server.ts | 1 - 15 files changed, 127 insertions(+), 198 deletions(-) create mode 100644 src/components/Success.svelte (limited to 'src') diff --git a/src/components/InvoiceTypes.svelte b/src/components/InvoiceTypes.svelte index 4dae235a..4e1e5b20 100644 --- a/src/components/InvoiceTypes.svelte +++ b/src/components/InvoiceTypes.svelte @@ -30,9 +30,9 @@ class:text-secondary={type === types.lightning} onclick={() => setType(types.lightning)} > -
+
-
diff --git a/src/components/Success.svelte b/src/components/Success.svelte new file mode 100644 index 00000000..f82a4dcb --- /dev/null +++ b/src/components/Success.svelte @@ -0,0 +1,59 @@ + + +
+ {#if loaded} +
+
+ + +
+
+ + + {/if} +

{title}

+ +
diff --git a/src/lib/invoice.ts b/src/lib/invoice.ts index a48e02a4..9563d924 100644 --- a/src/lib/invoice.ts +++ b/src/lib/invoice.ts @@ -2,6 +2,7 @@ import { auth, get, post } from "$lib/utils"; import { redirect } from "@sveltejs/kit"; export default async ({ cookies, request }) => { + console.log("LOADING"); const form = await request.formData(); const aid = form.get("aid") || cookies.get("aid"); diff --git a/src/lib/socket.ts b/src/lib/socket.ts index 02d441bf..566e989d 100644 --- a/src/lib/socket.ts +++ b/src/lib/socket.ts @@ -1,8 +1,8 @@ -import { invalidate } from "$app/navigation"; -import { navigating } from "$app/stores"; +import { goto, invalidate } from "$app/navigation"; +import { navigating, page } from "$app/stores"; import { PUBLIC_SOCKET } from "$env/static/public"; import { event, invoice, last, request } from "$lib/store"; -import { sat, sleep, success, wait } from "$lib/utils"; +import { s, sleep, success, wait } from "$lib/utils"; import { get } from "svelte/store"; let socket; @@ -38,13 +38,20 @@ export const messages = (data) => ({ }, async payment() { - const { amount, confirmed } = data; + const { amount, confirmed, iid } = data; invalidate("app:user"); invalidate("app:invoice"); invalidate("app:payments"); + const { + url: { pathname }, + } = get(page); + if (amount > 0) { - success(`${confirmed ? "Received" : "Detected"} ${sat(amount)}!`); + if (pathname.includes("receive")) { + await wait(() => !get(navigating)); + await goto(`/invoice/${iid}`); + } else success(`${confirmed ? "Received" : "Detected"} ⚡️${s(amount)}!`); } }, diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index ba1eb49a..aaaf543f 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -1,6 +1,4 @@ {#if browser && user && $passwordPrompt} @@ -115,13 +102,9 @@ -
+
{#if !$loading} {@render children?.()} {/if}
- -{#if $invoice} - -{/if} diff --git a/src/routes/(app)/invoice/[id]/paid/+page.svelte b/src/routes/(app)/invoice/[id]/paid/+page.svelte index d6cfaa46..b031dd8c 100644 --- a/src/routes/(app)/invoice/[id]/paid/+page.svelte +++ b/src/routes/(app)/invoice/[id]/paid/+page.svelte @@ -1,70 +1,26 @@
- {#if received} -
- -
- -

- {$t("invoice.paymentSuccessful")} -

- -

- {f(toFiat(received - tip, rate), currency)} - {#if tip} - - + {f(toFiat(tip, rate), currency)} - - {/if} -

-

- ⚡️{s(received - tip)} - - {#if tip} - - + ⚡️{s(tip)} - - {/if} -

- {/if} + {#if pending} -
+
@@ -88,9 +44,9 @@
-
+
-
+
{$t("payments.tapAnywhere")}
diff --git a/src/routes/(app)/payment/[id]/+page.svelte b/src/routes/(app)/payment/[id]/+page.svelte index 45dc8642..94226931 100644 --- a/src/routes/(app)/payment/[id]/+page.svelte +++ b/src/routes/(app)/payment/[id]/+page.svelte @@ -25,31 +25,6 @@ let { user, payment: p } = $state(data); let locale = locales[user.language]; - let refresh = (d) => { - ({ user, payment: p } = d); - ({ - id, - hash, - amount, - created, - confirmed, - memo, - rate, - type, - ref, - path, - tip, - ourfee, - fee, - currency, - } = p); - - if (amount > 0) [txid, vout] = ref.split(":"); - else txid = hash; - - if (!fee) fee = 0; - }; - let { username } = user; let { id, @@ -64,9 +39,10 @@ path, tip, ourfee, - fee, + fee = 0, currency, - } = $state(p); + } = $derived(p); + let [txid, vout] = $derived(amount > 0 ? ref.split(":") : [hash]); let a = Math.abs(amount); let expl = { @@ -87,11 +63,6 @@ } }; - let txid = $state(), - vout = $state(); - if (amount > 0) [txid, vout] = ref.split(":"); - else txid = hash; - let direction = $state(""); onMount(() => { direction = amount > 0 ? $t("payments.from") : $t("payments.to"); @@ -100,9 +71,6 @@ direction = direction[0].toUpperCase() + direction.substr(1, direction.length); }); - run(() => { - refresh(data); - }); {#snippet field(title, amount)} @@ -111,7 +79,7 @@
{amount} + >{s(amount)}
{f(toFiat(amount, rate), currency)} diff --git a/src/routes/(app)/payments/[...page]/+page.svelte b/src/routes/(app)/payments/[...page]/+page.svelte index d2f9782b..e651ba90 100644 --- a/src/routes/(app)/payments/[...page]/+page.svelte +++ b/src/routes/(app)/payments/[...page]/+page.svelte @@ -214,12 +214,14 @@ class="font-bold flex items-center" class:text-red-800={p.amount < 0} > - - {si(Math.abs(p.amount) + (p.tip || 0), 0, 1)} +
+ +
{si(Math.abs(p.amount), 0, 1)}
+
{#if p.tip} @@ -256,28 +258,25 @@
{:else} -
+
{#if p.type === types.lightning} -
+ {:else if p.type === types.ecash} {:else if p.type === types.reconcile} {:else if p.type === types.bitcoin} -
- Bitcoin -
+ {:else if p.type === types.liquid}
Liquid
diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.svelte b/src/routes/(app)/send/lightning/[payreq]/+page.svelte index af3e09f4..d8bd5f8c 100644 --- a/src/routes/(app)/send/lightning/[payreq]/+page.svelte +++ b/src/routes/(app)/send/lightning/[payreq]/+page.svelte @@ -1,9 +1,7 @@
diff --git a/src/routes/(app)/sent/[id]/+page.svelte b/src/routes/(app)/sent/[id]/+page.svelte index f2f14fef..2eb1f18b 100644 --- a/src/routes/(app)/sent/[id]/+page.svelte +++ b/src/routes/(app)/sent/[id]/+page.svelte @@ -1,27 +1,15 @@ -
-
- -
-

{$t("payments.sent")}!

- -
- +
diff --git a/src/routes/(app)/settings/preferences/+page.svelte b/src/routes/(app)/settings/preferences/+page.svelte index 1f761ecb..a08eb952 100644 --- a/src/routes/(app)/settings/preferences/+page.svelte +++ b/src/routes/(app)/settings/preferences/+page.svelte @@ -179,7 +179,8 @@ >