diff options
| author | Adam Soltys <[email protected]> | 2026-06-24 20:31:08 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-06-24 20:31:08 -0700 |
| commit | a6bfb5bd4429cf7069a5d0c5e61cb5873ddd8230 (patch) | |
| tree | 70b99b7c1bd2a3a356537305e9c435bff8bbfb7a /src/wallet.js | |
| parent | 08d1753e8433fcae6e9068e87cff93813f0ed76d (diff) | |
| download | coinosv3-a6bfb5bd4429cf7069a5d0c5e61cb5873ddd8230.tar.gz coinosv3-a6bfb5bd4429cf7069a5d0c5e61cb5873ddd8230.zip | |
Deduct gift-locked coins from the spendable balance
Coins reserved behind unclaimed gift links were already excluded from
spending, but the headline balance still counted them. Show the spendable
balance (total minus gift locks) as the headline and surface the locked
amount as its own line, so a gift debits immediately rather than at claim.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'src/wallet.js')
| -rw-r--r-- | src/wallet.js | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/wallet.js b/src/wallet.js index 72d33be..2871c5e 100644 --- a/src/wallet.js +++ b/src/wallet.js @@ -583,6 +583,19 @@ export class Wallet { return this.confirmed + this.pending; } + // Confirmed coins locked behind unclaimed gift links. The whole source coin is + // committed until the gift is claimed (our change only comes back in the + // claimer's tx), so it's already excluded from spending — and from the + // spendable balance below. + get lockedValue() { + const res = this.reservedSet(); + return this.utxos.reduce((s, u) => s + (res.has(utxoId(u)) ? u.value : 0), 0); + } + // What the user can actually spend right now: everything minus gift locks. + get spendable() { + return this.total - this.lockedValue; + } + _recomputeBalanceFromChains() { let c = 0; let p = 0; |
