From ea953f2b772b07780b94daecdefde6cd253a7e90 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 24 May 2023 12:54:07 +0200 Subject: wallet-core: use division for withdrawal coin selection --- packages/taler-wallet-core/src/util/coinSelection.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'packages/taler-wallet-core/src') diff --git a/packages/taler-wallet-core/src/util/coinSelection.ts b/packages/taler-wallet-core/src/util/coinSelection.ts index 3b986d72b..af6dab2bb 100644 --- a/packages/taler-wallet-core/src/util/coinSelection.ts +++ b/packages/taler-wallet-core/src/util/coinSelection.ts @@ -689,18 +689,13 @@ export function selectWithdrawalDenominations( ); for (const d of denoms) { - let count = 0; const cost = Amounts.add( DenominationRecord.getValue(d), d.fees.feeWithdraw, ).amount; - for (;;) { - if (Amounts.cmp(remaining, cost) < 0) { - break; - } - remaining = Amounts.sub(remaining, cost).amount; - count++; - } + const res = Amounts.divmod(remaining, cost); + const count = res.quotient; + remaining = Amounts.sub(remaining, Amounts.mult(cost, count).amount).amount; if (count > 0) { totalCoinValue = Amounts.add( totalCoinValue, -- cgit v1.2.3