diff options
| author | Adam Soltys <[email protected]> | 2026-09-02 09:19:43 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-02 09:19:43 -0700 |
| commit | d991ec192c5b6b00e1ce75aa5717fd85390aa39e (patch) | |
| tree | d52de0836e30f938ca0e3a31d058202c361970a1 | |
| parent | 59a4d93a52f79ebd8f1460607f53c257ef761b70 (diff) | |
| download | coinosv3-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
| -rw-r--r-- | src/features/ark.js | 6 | ||||
| -rw-r--r-- | src/i18n.js | 1 |
2 files changed, 6 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' diff --git a/src/i18n.js b/src/i18n.js index fc23c19..14908bc 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -636,6 +636,7 @@ const STR = { arkLnPayVia: 'Instant, from your Spending balance', arkLnFee: 'Fee', arkLnPaying: 'Paying invoice…', + arkLnRetrying: 'Route failed — retrying with a bigger fee budget ({n}/{of})…', arkLnPayFailed: 'Payment failed', arkLnRefunded: 'Payment failed — your money is back in Spending.', arkLnPaidTitle: 'Paid!', |
