From 59d960b5f91237f8fbe3d27383f8a028477d49de Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 26 Jul 2022 17:42:37 +0300 Subject: [PATCH] fix: coin selection --- .../static/components/payment/payment.js | 2 +- .../static/components/send-to/send-to.js | 1 - .../components/utxo-list/utxo-list.html | 21 ++----------------- .../static/components/utxo-list/utxo-list.js | 17 +++++++++++---- 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/lnbits/extensions/watchonly/static/components/payment/payment.js b/lnbits/extensions/watchonly/static/components/payment/payment.js index 900eb7de..92d69cbd 100644 --- a/lnbits/extensions/watchonly/static/components/payment/payment.js +++ b/lnbits/extensions/watchonly/static/components/payment/payment.js @@ -163,7 +163,7 @@ async function payment(path) { this.selectChangeAddress(this.changeWallet) }, handleOutputsChange: function () { - this.$refs.utxoList.applyUtxoSelectionMode() + this.$refs.utxoList.refreshUtxoSelection(this.totalPayedAmount) }, getTotalPaymentAmount: function () { return this.sendToList.reduce((t, a) => t + (a.amount || 0), 0) diff --git a/lnbits/extensions/watchonly/static/components/send-to/send-to.js b/lnbits/extensions/watchonly/static/components/send-to/send-to.js index 3329ef06..9b6cf348 100644 --- a/lnbits/extensions/watchonly/static/components/send-to/send-to.js +++ b/lnbits/extensions/watchonly/static/components/send-to/send-to.js @@ -67,7 +67,6 @@ async function sendTo(path) { 0, inputAmount - payedAmount - feeValue ) - this.handleOutputsChange() }, handleOutputsChange: function () { this.$emit('update:outputs') diff --git a/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html index d5a9e353..52643d20 100644 --- a/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html +++ b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html @@ -9,7 +9,7 @@ v-model="utxoSelectionMode" :options="utxoSelectionModes" label="Selection Mode" - @input="applyUtxoSelectionMode" + @input="updateUtxoSelection" >
@@ -17,7 +17,7 @@ outline icon="refresh" color="grey" - @click="applyUtxoSelectionMode" + @click="updateUtxoSelection" class="q-ml-sm" >
@@ -130,23 +130,6 @@ - diff --git a/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js index 3b5c3974..a1418e74 100644 --- a/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js +++ b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js @@ -75,7 +75,8 @@ async function utxoList(path) { 'Smaller Inputs First', 'Larger Inputs First' ], - utxoSelectionMode: 'Random' + utxoSelectionMode: 'Random', + utxoSelectAmount: 0 } }, @@ -101,7 +102,16 @@ async function utxoList(path) { .reduce((t, a) => t + (a.amount || 0), 0) return total }, + refreshUtxoSelection: function (totalPayedAmount) { + this.utxoSelectAmount = totalPayedAmount + this.applyUtxoSelectionMode() + }, + updateUtxoSelection: function () { + this.utxoSelectAmount = this.payedAmount + this.applyUtxoSelectionMode() + }, applyUtxoSelectionMode: function () { + console.log('### this.utxoSelectAmount', this.utxoSelectAmount) const mode = this.utxoSelectionMode const isSelectAll = mode === 'Select All' if (isSelectAll) { @@ -111,11 +121,10 @@ async function utxoList(path) { this.utxos.forEach(u => (u.selected = false)) const isManual = mode === 'Manual' - if (isManual || !this.payedAmount) return + if (isManual || !this.utxoSelectAmount) return const isSmallerFirst = mode === 'Smaller Inputs First' const isLargerFirst = mode === 'Larger Inputs First' - let selectedUtxos = this.utxos.slice() if (isSmallerFirst || isLargerFirst) { const sortFn = isSmallerFirst @@ -127,7 +136,7 @@ async function utxoList(path) { selectedUtxos = _.shuffle(selectedUtxos) } selectedUtxos.reduce((total, utxo) => { - utxo.selected = total < this.payedAmount + utxo.selected = total < this.utxoSelectAmount total += utxo.amount return total }, 0)