diff options
| author | Adam Soltys <[email protected]> | 2024-11-17 00:20:01 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-11-17 00:20:01 -0800 |
| commit | 71d5d95f1b6f5dcb4a1d66e234a889c30fa02e3f (patch) | |
| tree | 152e5309f3dc8992cc906a172e28f7357fc36eb7 | |
| parent | dfd9cc38f013239f681a369eaf9396c6e16ceef0 (diff) | |
| download | coinos-ui-71d5d95f1b6f5dcb4a1d66e234a889c30fa02e3f.tar.gz coinos-ui-71d5d95f1b6f5dcb4a1d66e234a889c30fa02e3f.zip | |
handle blank offers
| -rw-r--r-- | src/components/Numpad.svelte | 2 | ||||
| -rw-r--r-- | src/lib/parse.ts | 5 | ||||
| -rw-r--r-- | src/routes/(app)/send/lightning/[payreq]/+page.server.ts | 18 | ||||
| -rw-r--r-- | src/routes/(app)/send/lightning/[payreq]/+page.svelte | 23 |
4 files changed, 28 insertions, 20 deletions
diff --git a/src/components/Numpad.svelte b/src/components/Numpad.svelte index bbafc196..990fc025 100644 --- a/src/components/Numpad.svelte +++ b/src/components/Numpad.svelte @@ -19,7 +19,7 @@ $: update(amount, amountFiat); let update = (a, f) => { if ($fiat) { - amount = Math.round(f / (rate / sats)); + amount = f ? Math.round(f / (rate / sats)) : 0; } else { amountFiat = ((a * rate) / sats).toFixed(2); } diff --git a/src/lib/parse.ts b/src/lib/parse.ts index cdfa4d62..23759311 100644 --- a/src/lib/parse.ts +++ b/src/lib/parse.ts @@ -44,8 +44,9 @@ export default async (s, host) => { if (t.includes(":")) t = t.split(":")[1]; if (t.toLowerCase().startsWith("lno")) { - const { invoice } = await get(`/offer/${t}`); - redirect(307, `/send/lightning/${invoice}`); + const { offer_amount_msat: a } = await get(`/decode/${t}`); + if (a) ({ invoice: t } = await post("/fetchinvoice", { offer: t })); + redirect(307, `/send/lightning/${t}`); } if (t.toLowerCase().startsWith("lno")) { diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.server.ts b/src/routes/(app)/send/lightning/[payreq]/+page.server.ts index a101b803..87c9cef5 100644 --- a/src/routes/(app)/send/lightning/[payreq]/+page.server.ts +++ b/src/routes/(app)/send/lightning/[payreq]/+page.server.ts @@ -2,11 +2,25 @@ import { auth, fd, post } from "$lib/utils"; import { fail, redirect } from "@sveltejs/kit"; export async function load({ cookies, params }) { - return post("/parse", params, auth(cookies)); + if (params.payreq.startsWith("lno")) return params; + const data = await post("/parse", params, auth(cookies)); + data.payreq = params.payreq; + return data; } export const actions = { - setAmount: async ({ request }) => fd(request), + setAmount: async ({ params, request }) => { + const data = await fd(request); + const { payreq } = params; + const { amount } = data; + if (payreq.startsWith("lno")) { + data.payreq = ( + await post("/fetchinvoice", { amount, offer: payreq }) + ).invoice; + } + + return data; + }, send: async ({ cookies, request }) => { let p; diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.svelte b/src/routes/(app)/send/lightning/[payreq]/+page.svelte index d8bd5f8c..58508809 100644 --- a/src/routes/(app)/send/lightning/[payreq]/+page.svelte +++ b/src/routes/(app)/send/lightning/[payreq]/+page.svelte @@ -10,13 +10,13 @@ let { data, form } = $props(); - let { payreq } = $page.params; let { alias, + payreq, ourfee, rates, user: { currency }, - } = $state(data); + } = $derived({ ...data, ...form }); let a = $state(); $effect(() => ($rate ||= rates[currency])); @@ -25,12 +25,8 @@ let loading = $state(); let submit = () => (loading = true); - let update = () => { - if (form?.message?.includes("pin")) $pin = undefined; - loading = false; - }; - let show; + let next = $state(); let toggle = () => (show = !show); let amount = $derived(form?.amount || data.amount); let maxfee = $state(Math.max(5, Math.round(amount * 0.005))); @@ -128,17 +124,14 @@ {/if} </form> {:else} - <form - method="POST" - action="?/setAmount" - class="w-[300px] mx-auto" - use:enhance - > + <form method="POST" action="?/setAmount" class="space-y-2" use:enhance> <input type="hidden" value={a} name="amount" /> <input name="rate" value={$rate} type="hidden" /> - <Numpad bind:amount={a} {currency} bind:rate={$rate} /> - <button type="submit" class="btn"> Next </button> + <Numpad bind:amount={a} {currency} bind:rate={$rate} submit={next} /> + <button type="submit" class="btn" bind:this={next} + >{$t("payments.next")}</button + > </form> {/if} </div> |
