taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 8db3e7360689a789b154e2e8a093f466a08b2185
parent 834b89547bfcfa597db71c63925136236cf147aa
Author: Florian Dold <florian.dold@gmail.com>
Date:   Fri, 18 Nov 2016 00:09:43 +0100

fix coin selection issue

Diffstat:
Mmanifest.json | 4++--
Msrc/wallet.ts | 19++++++++++++++++---
2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/manifest.json b/manifest.json @@ -4,8 +4,8 @@ "name": "GNU Taler Wallet (git)", "description": "Privacy preserving and transparent payments", "author": "GNU Taler Developers", - "version": "0.6.29", - "version_name": "0.1.5", + "version": "0.6.30", + "version_name": "0.1.6", "minimum_chrome_version": "49", "minimum_opera_version": "36", diff --git a/src/wallet.ts b/src/wallet.ts @@ -246,10 +246,16 @@ export function selectCoins(cds: CoinWithDenom[], paymentAmount: AmountJson, let coversAmountWithFee = false; for (let i = 0; i < cds.length; i++) { let {coin, denom} = cds[i]; - cdsResult.push(cds[i]); + if (coin.suspended) { + continue; + } + if (coin.dirty) { + continue; + } if (Amounts.cmp(denom.feeDeposit, coin.currentAmount) >= 0) { continue; } + cdsResult.push(cds[i]); accFee = Amounts.add(denom.feeDeposit, accFee).amount; accAmount = Amounts.add(coin.currentAmount, accAmount).amount; coversAmount = Amounts.cmp(accAmount, paymentAmount) >= 0; @@ -518,6 +524,12 @@ export class Wallet { if (coin.suspended) { continue; } + if (coin.dirty) { + continue; + } + if (coin.transactionPending) { + continue; + } cds.push({coin, denom}); } @@ -933,6 +945,7 @@ export class Wallet { */ private async depleteReserve(reserve: ReserveRecord, exchange: ExchangeRecord): Promise<number> { + console.log("depleting reserve"); if (!reserve.current_amount) { throw Error("can't withdraw when amount is unknown"); } @@ -943,6 +956,8 @@ export class Wallet { let denomsForWithdraw = await this.getVerifiedWithdrawDenomList(exchange.baseUrl, currentAmount); + console.log(`withdrawing ${denomsForWithdraw.length} coins`); + let ps = denomsForWithdraw.map(async(denom) => { function mutateReserve(r: ReserveRecord): ReserveRecord { let currentAmount = r.current_amount; @@ -1343,8 +1358,6 @@ export class Wallet { (x) => x.baseUrl) .reduce(collectSmallestWithdraw, {})); - console.log("smallest withdraws", smallestWithdraw); - let tx = this.q(); tx.iter(Stores.coins) .reduce(collectBalances, balance);