aboutsummaryrefslogtreecommitdiffstats
path: root/src/app.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-09-05 00:14:09 -0700
committerAdam Soltys <[email protected]>2026-09-05 00:14:09 -0700
commit6d0baaebb09602305bf1cad3110d59323cce3c1a (patch)
tree652dcd95157098b2ed970388ca8c3c2efde6568a /src/app.js
parent87c7ab1802c6fb9ee45b3bd608f683d9c0804eb3 (diff)
downloadcoinosv3-6d0baaebb09602305bf1cad3110d59323cce3c1a.tar.gz
coinosv3-6d0baaebb09602305bf1cad3110d59323cce3c1a.zip
Handle lightning:lnurl1… links properly. Two faults: (1) an intent often arrives BEFORE the paying feature is ready — ark connects lazily, so zaps' matchSendText declined and the raw URI fell through into the recipient field as dead text; the intent dispatcher now keeps re-offering the text to the feature chain for up to 20s and sweeps the leftover raw text out of the recipient when a feature claims it (the zap amount screen takes over). (2) When the fallback button did render, it read "⚡ Zap lightning:lnurl1dp68gurn8ghj7…<overflow>" — zapDisplay now names targets like a human: the address when there is one, a shortened bech32 otherwise, on both the send-form button and the amount screen
Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MGzU12QrAA4G6BYGzGVdXz
Diffstat (limited to 'src/app.js')
-rw-r--r--src/app.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/app.js b/src/app.js
index a0ef79a..3961876 100644
--- a/src/app.js
+++ b/src/app.js
@@ -4985,6 +4985,23 @@ if (INTENT_URI) {
ui.tab = 'send';
render();
handleScanned(INTENT_URI);
+ // A lightning:lnurl… (or ln-address) intent often lands BEFORE the
+ // feature that pays it is ready — ark connects lazily, so zaps'
+ // matchSendText declines and the raw URI falls through into the
+ // recipient field. Keep re-offering the text to the feature chain for a
+ // while; when a feature finally claims it (the zap amount screen takes
+ // over), sweep the leftover raw text out of the recipient.
+ let tries = 0;
+ const retry = setInterval(() => {
+ const s = ui.send;
+ const pending = s && s.recipients.length === 1 && s.recipients[0].address === INTENT_URI;
+ if (!pending || ++tries > 20) return clearInterval(retry);
+ if (featureMatchSend(INTENT_URI)) {
+ clearInterval(retry);
+ s.recipients[0].address = '';
+ render();
+ }
+ }, 1000);
}, 500);
}