diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/routes/(app)/invoice/[id]/tip/+page.svelte | 1 | ||||
| -rw-r--r-- | src/routes/(app)/pay/[username]/[...amount]/+page.server.ts | 30 | ||||
| -rw-r--r-- | src/routes/(app)/pay/[username]/[...amount]/+page.svelte | 92 |
3 files changed, 31 insertions, 92 deletions
diff --git a/src/routes/(app)/invoice/[id]/tip/+page.svelte b/src/routes/(app)/invoice/[id]/tip/+page.svelte index 29516c61..4431b17d 100644 --- a/src/routes/(app)/invoice/[id]/tip/+page.svelte +++ b/src/routes/(app)/invoice/[id]/tip/+page.svelte @@ -98,7 +98,6 @@ <form method="POST" use:enhance - class:invisible={submitting} class="space-y-5" > <input type="hidden" name="aid" value={aid} /> diff --git a/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts b/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts index 4dc077ca..7b439dcd 100644 --- a/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts +++ b/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts @@ -10,11 +10,10 @@ export async function load({ cookies, params, parent }) { let [amount, currency] = params.amount.split("/"); - let rate; + const rate = rates[currency ? currency.toUpperCase() : subject.currency]; + if (!rate) error(500, "Invalid currency symbol"); if (amount) { - rate = rates[currency ? currency.toUpperCase() : subject.currency]; - if (!rate) error(500, "Invalid currency symbol"); if (currency) amount = (amount * sats) / rate; const { id } = await post( @@ -40,15 +39,30 @@ export async function load({ cookies, params, parent }) { export const actions = { default: async ({ cookies, request }) => { - let p; + let id; try { const body = await fd(request); - p = await post("/payments", body, auth(cookies)); - } catch (e: any) { + const { amount, rate, prompt, type, username } = body; + + ({ id } = await post( + "/invoice", + { + invoice: { + amount, + rate, + prompt, + type, + }, + user: { username }, + }, + auth(cookies), + )); + } catch (e) { console.log(e); - return fail(400, { message: e.message }); + const { message } = e as Error; + return fail(400, { message }); } - redirect(307, `/sent/${p.id}`); + redirect(307, `/invoice/${id}`); }, }; diff --git a/src/routes/(app)/pay/[username]/[...amount]/+page.svelte b/src/routes/(app)/pay/[username]/[...amount]/+page.svelte index 4fbd0b64..478d2529 100644 --- a/src/routes/(app)/pay/[username]/[...amount]/+page.svelte +++ b/src/routes/(app)/pay/[username]/[...amount]/+page.svelte @@ -3,12 +3,8 @@ import { t } from "$lib/translations"; import { goto } from "$app/navigation"; - import { pin } from "$lib/store"; import { enhance } from "$app/forms"; - import Avatar from "$comp/Avatar.svelte"; - import Icon from "$comp/Icon.svelte"; import Numpad from "$comp/Numpad.svelte"; - import Spinner from "$comp/Spinner.svelte"; import { page } from "$app/stores"; import { f, fail, post, s, sat, sats } from "$lib/utils"; @@ -18,50 +14,9 @@ let currency = subject?.currency || "USD"; let next = $state(); - let amount = $state(form?.amount || data.amount); - let a = $state(), - af = $state(0), - fiat = $state(!amount), - hash = $state(), - amountFiat = 0; - - let setAmount = async () => { - amount = a; - amountFiat = parseFloat(af).toFixed(2); - rate = fiat ? (sats * amountFiat) / amount : r; - - let id; - try { - ({ id, hash } = await post(`/invoice`, { - invoice: { - amount, - rate: rates[subject.currency], - prompt: subject.prompt, - type: "lightning", - }, - user: subject, - })); - } catch (e) { - fail(e.message); - } - - goto(`/send/invoice/${id}`); - }; - - let loading = $state(); - let submit = () => (loading = true); - - let update = () => { - if (form?.message?.includes("pin")) $pin = undefined; - loading = false; - }; - let r; - run(() => { - r = rate || rates[subject?.currency]; - }); - run(() => { - update(form); - }); + let initialAmount = form?.amount || data.amount; + let amount = $state(initialAmount); + let fiat = $state(!initialAmount); </script> {#if form?.message} @@ -71,44 +26,15 @@ {/if} <div class="container px-4 mt-20 max-w-xl mx-auto space-y-2"> - <Numpad - bind:amount={a} - bind:amountFiat={af} - {currency} - bind:fiat - bind:rate={r} - submit={next} - /> + <Numpad bind:amount bind:fiat {currency} {rate} submit={next} /> - <form method="POST" use:enhance onsubmit={submit}> + <form method="POST" use:enhance> <input name="amount" value={amount} type="hidden" /> + <input name="rate" value={rate} type="hidden" /> <input name="username" value={subject.username} type="hidden" /> - <input name="pin" value={$pin} type="hidden" /> - <input name="hash" value={hash} type="hidden" /> - <div class="flex w-full text-xl"> - {#if amount} - <button - type="submit" - class="opacity-100 hover:opacity-80'} rounded-2xl border py-5 font-bold mx-auto mt-2 bg-black text-white px-6 w-40" - > - {#if loading} - <Spinner /> - {:else} - {$t("payments.send")} - {/if} - </button> - {:else} - <button - type="button" - bind:this={next} - class="btn btn-accent" - onclick={setAmount} - onkeydown={setAmount} - > - {$t("payments.next")}</button - > - {/if} - </div> + <button type="submit" bind:this={next} class="btn btn-accent"> + {$t("payments.next")}</button + > </form> </div> |
