diff options
| -rw-r--r-- | src/app.js | 10 | ||||
| -rw-r--r-- | src/features/ark.js | 8 |
2 files changed, 17 insertions, 1 deletions
@@ -3857,7 +3857,15 @@ function recipientRow(s, r, i) { }, }), h('button', { type: 'button', title: t('switchUnit'), onClick: toggleUnit }, unitLabel()), - single && !featureHook('hideSendControls', r.address) && h('button', { type: 'button', class: s.max ? 'btn-primary' : '', onClick: () => { s.max = !s.max; render(); } }, t('max')) + single && !featureHook('hideSendControls', r.address) && h('button', { type: 'button', class: s.max ? 'btn-primary' : '', onClick: () => { s.max = !s.max; render(); } }, t('max')), + // features that hide the fee controls (ark) can still offer their own + // Max — it fills the amount with that rail's spendable balance + single && featureHook('hideSendControls', r.address) + ? (() => { + const v = featureHook('sendMaxFill', r.address); + return v != null ? h('button', { type: 'button', onClick: () => { r.amount = v; s.max = false; render(); } }, t('max')) : null; + })() + : null ) : null ); syncCheck(); diff --git a/src/features/ark.js b/src/features/ark.js index 59c293f..3e614c4 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -2338,6 +2338,14 @@ export function arkFeature(ctx) { }, isSendDest(a) { return isArkAddress(a) && arkAvailable(); }, hideSendControls(a) { return isArkAddress(a); }, + // Max for an ark recipient: arkoor sends are free, so the whole + // spendable Spending balance is the honest maximum. + sendMaxFill(a) { + if (!isArkAddress(a)) return null; + const sat = arkBalance()?.spendableSat || 0; + if (!sat) return null; + return ctx.getUnit() === 'sats' ? String(sat) : (sat / 1e8).toFixed(8); + }, sendFormNote(a) { if (!isArkAddress(a)) return null; maybeReconcile(); |
