From 71d5d95f1b6f5dcb4a1d66e234a889c30fa02e3f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sun, 17 Nov 2024 00:20:01 -0800 Subject: handle blank offers --- src/components/Numpad.svelte | 2 +- src/lib/parse.ts | 5 +++-- .../(app)/send/lightning/[payreq]/+page.server.ts | 18 +++++++++++++++-- .../(app)/send/lightning/[payreq]/+page.svelte | 23 ++++++++-------------- 4 files changed, 28 insertions(+), 20 deletions(-) (limited to 'src') 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} {:else} -
+ - - + + {/if} -- cgit v1.2.3