From 4e529bc5e5e378c1d215fd99504b231aa48b006c Mon Sep 17 00:00:00 2001 From: codytseng Date: Mon, 27 Oct 2025 16:26:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/tiptap.ts | 9 ++++++--- src/services/lightning.service.ts | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib/tiptap.ts b/src/lib/tiptap.ts index 327b0bd9..61d5f555 100644 --- a/src/lib/tiptap.ts +++ b/src/lib/tiptap.ts @@ -5,11 +5,14 @@ import { nip19 } from 'nostr-tools' export function parseEditorJsonToText(node?: JSONContent) { const text = _parseEditorJsonToText(node).trim() - const regex = /(?:@|nostr:)?(nevent|naddr|nprofile|npub)1[a-zA-Z0-9]+/g + const regex = /(?:^|\s|@)(nostr:)?(nevent|naddr|nprofile|npub)1[a-zA-Z0-9]+/g return text.replace(regex, (match) => { let bech32 = match.trim() - if (bech32.startsWith('@')) { + const leadingSpace = match.startsWith(' ') ? ' ' : '' + if (bech32.startsWith('@nostr:')) { + bech32 = bech32.slice(7) + } else if (bech32.startsWith('@')) { bech32 = bech32.slice(1) } else if (bech32.startsWith('nostr:')) { bech32 = bech32.slice(6) @@ -17,7 +20,7 @@ export function parseEditorJsonToText(node?: JSONContent) { try { nip19.decode(bech32) - return `nostr:${bech32}` + return `${leadingSpace}nostr:${bech32}` } catch { return match } diff --git a/src/services/lightning.service.ts b/src/services/lightning.service.ts index 924b1518..f3965593 100644 --- a/src/services/lightning.service.ts +++ b/src/services/lightning.service.ts @@ -227,7 +227,7 @@ class LightningService { const res = await fetch(lnurl) const body = await res.json() - if (body.allowsNostr && body.nostrPubkey) { + if (body.allowsNostr !== false && body.callback) { return { callback: body.callback, lnurl