aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-09-02 09:19:43 -0700
committerAdam Soltys <[email protected]>2026-09-02 09:19:43 -0700
commitd991ec192c5b6b00e1ce75aa5717fd85390aa39e (patch)
treed52de0836e30f938ca0e3a31d058202c361970a1 /src/features
parent59a4d93a52f79ebd8f1460607f53c257ef761b70 (diff)
downloadcoinosv3-d991ec192c5b6b00e1ce75aa5717fd85390aa39e.tar.gz
coinosv3-d991ec192c5b6b00e1ce75aa5717fd85390aa39e.zip
The paying spinner narrates its retries: a Lightning pay that fails its route and re-attempts with a bumped fee budget now says so ('Route failed — retrying with a bigger fee budget (2/3)') instead of three-plus minutes of silent 'Paying invoice…' — a tester paying an unreachable node watched that spinner stonewall through every auto-retry
Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
Diffstat (limited to 'src/features')
-rw-r--r--src/features/ark.js6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/features/ark.js b/src/features/ark.js
index 314f251..97f730a 100644
--- a/src/features/ark.js
+++ b/src/features/ark.js
@@ -833,6 +833,8 @@ export function arkFeature(ctx) {
} else if (ui.arkLnPay) {
if (tries < 2 && lnRetryable(a)) {
tries += 1;
+ p.retrying = tries; // the spinner narrates instead of stonewalling
+ render();
attempt((a.routingFeeSat ?? 0) + 1).catch((e) => {
ui.arkLnPay.status = 'ready'; ui.sendError = e.message; render();
});
@@ -925,7 +927,9 @@ export function arkFeature(ctx) {
ui.sendError ? h('div', { class: 'notice err' }, ui.sendError) : null,
p.status === 'paying'
? h('div', { class: 'card row gap6', style: 'align-items:center' },
- h('span', { class: 'spinner sm' }), h('span', { class: 'small muted' }, t('arkLnPaying')))
+ h('span', { class: 'spinner sm' }),
+ h('span', { class: 'small muted' },
+ p.retrying ? t('arkLnRetrying', { n: p.retrying + 1, of: 3 }) : t('arkLnPaying')))
: h('button', { class: 'btn-primary btn-block', disabled: !!ui.busy || p.status !== 'ready', onClick: doArkLnPay },
ui.busy ? h('span', { class: 'spinner' }) : t('lnPayConfirm')),
p.status !== 'paying'