diff options
| -rw-r--r-- | src/features/ark.js | 14 | ||||
| -rw-r--r-- | src/i18n.js | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/features/ark.js b/src/features/ark.js index cdac6c4..11ebc5c 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -1747,7 +1747,19 @@ export function arkFeature(ctx) { const sats = parseInt(o.amount, 10) || spendable; if (!sats || sats <= 0 || sats > spendable) { ui.arkError = t('enterValidAmtForN', { n: 1 }); render(); return; } doArkOffboard(sats >= spendable ? 0 : sats, o.address); - } }, t('send')))); + } }, t('send'))), + // This send IS the cooperative exit. The trustless door stays visible — + // quiet while things work, promoted to a button the moment the server + // fails to cooperate (that being the whole point of a unilateral exit). + ui.arkError && ui.arkBusy !== 'offboard' + ? h('button', { + class: 'btn-block', + onClick: () => { ui.arkOffboardSend = null; ui.arkError = ''; ui.arkExitPage = true; render(); }, + }, t('arkUniOffer')) + : h('button', { + class: 'linklike small', style: 'align-self:center', + onClick: () => { ui.arkOffboardSend = null; ui.arkError = ''; ui.arkExitPage = true; render(); }, + }, t('arkUniOfferQuiet'))); } async function doArkOffboard(amountSat, destAddress = null) { diff --git a/src/i18n.js b/src/i18n.js index 56da989..14e6d14 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -199,6 +199,8 @@ const STR = { onbBoardTitle: 'Top up Spending', onbBoardBody: 'Move some sats from Savings into Spending — payments there are instant, with no mining fees.', topUpFromSavings: 'Top up from Savings', + arkUniOffer: 'Exit without the server instead', + arkUniOfferQuiet: 'Server not cooperating? Unilateral exit', msgPushOffer: 'Get notified when you receive payments and messages, even with coinos closed.', msgPushEnable: 'Enable notifications', msgPushOn: 'Notifications on', |
