From f884ffabc9afab2d6051379062434fc9e7f61176 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 30 Jul 2026 08:51:45 -0700 Subject: bolt12 zaps: accept offers in send flow, show/publish user offer - parse lno= from BIP-321 bitcoin: URIs; send page parses offers for preview now that /parse handles them - settings/nostr shows the user's standing lno1 offer with copy/QR and a button to publish it as a kind 10058 offer list for NIP-177 zaps - new locale strings translated Co-Authored-By: Claude Fable 5 --- .../lightning/[payreq]/[...memo]/+page.server.ts | 4 +- src/routes/(app)/settings/nostr/+page.server.ts | 8 ++- src/routes/(app)/settings/nostr/+page.svelte | 78 +++++++++++++++++++++- 3 files changed, 84 insertions(+), 6 deletions(-) (limited to 'src/routes/(app)') diff --git a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts index eb324775..2a30defa 100644 --- a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts +++ b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts @@ -6,9 +6,7 @@ export async function load({ cookies, params, parent }) { const { user } = await parent(); let data = { ...params }; const rates = await getRates(); - if (!params.payreq.startsWith("lno")) { - data = { ...data, ...(await post("/parse", params, auth(cookies))) }; - } + data = { ...data, ...(await post("/parse", params, auth(cookies))) }; data.rate = rates[user.currency]; return data; diff --git a/src/routes/(app)/settings/nostr/+page.server.ts b/src/routes/(app)/settings/nostr/+page.server.ts index 1767ebaf..84b3fa27 100644 --- a/src/routes/(app)/settings/nostr/+page.server.ts +++ b/src/routes/(app)/settings/nostr/+page.server.ts @@ -4,7 +4,13 @@ import { auth, get } from "$lib/utils"; export const load = async ({ cookies }) => { const { challenge } = await get("/challenge"); const apps = await get("/apps", auth(cookies)); - return { apps, challenge }; + + let offer; + try { + ({ hash: offer } = await get("/offer", auth(cookies))); + } catch (e) {} + + return { apps, challenge, offer }; }; export const actions = { diff --git a/src/routes/(app)/settings/nostr/+page.svelte b/src/routes/(app)/settings/nostr/+page.svelte index 7168f4f7..5ba5f636 100644 --- a/src/routes/(app)/settings/nostr/+page.svelte +++ b/src/routes/(app)/settings/nostr/+page.svelte @@ -1,7 +1,7 @@ @@ -145,6 +172,53 @@ +{#if offer} +
+

+ {$t("user.settings.bolt12Offer")} +

+

+ {$t("user.settings.bolt12OfferDescription")} +

+ +
{offer}
+ +
+ + + + + {$t("accounts.qr")} + + + +
+
+{/if} + {#if revealNwc}
{nwc} -- cgit v1.2.3