From a5960665245c4ffb625dd16923019e8c62c20159 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 13 Sep 2023 11:31:15 -0300 Subject: fixed greedy calculation --- packages/taler-wallet-core/src/util/coinSelection.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'packages/taler-wallet-core/src/util/coinSelection.ts') diff --git a/packages/taler-wallet-core/src/util/coinSelection.ts b/packages/taler-wallet-core/src/util/coinSelection.ts index b8ce5e0f2..0885215dd 100644 --- a/packages/taler-wallet-core/src/util/coinSelection.ts +++ b/packages/taler-wallet-core/src/util/coinSelection.ts @@ -918,19 +918,19 @@ function greedySelectPeer( instructedAmount, tally.amountAcc, ).amount; - const coinSpend = Amounts.max( - Amounts.min(amountPayRemaining, denom.value), - denom.feeDeposit, - ); + const coinContrib = Amounts.sub(denom.value, denom.feeDeposit).amount + + const coinSpend = Amounts.min(amountPayRemaining, coinContrib) + tally.amountAcc = Amounts.add(tally.amountAcc, coinSpend).amount; - // Since this is a peer payment, there is no merchant to - // potentially cover the deposit fees. - tally.amountAcc = Amounts.sub(tally.amountAcc, denom.feeDeposit).amount; + tally.depositFeesAcc = Amounts.add( tally.depositFeesAcc, denom.feeDeposit, ).amount; + tally.lastDepositFee = Amounts.parseOrThrow(denom.feeDeposit); + contributions.push(coinSpend); } if (contributions.length > 0) { -- cgit v1.2.3