diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-11-18 00:09:43 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-11-18 00:09:43 +0100 |
commit | 8db3e7360689a789b154e2e8a093f466a08b2185 (patch) | |
tree | d750649d3027ee7df415047001e3f196f4ae5888 | |
parent | 834b89547bfcfa597db71c63925136236cf147aa (diff) |
fix coin selection issue
-rw-r--r-- | manifest.json | 4 | ||||
-rw-r--r-- | src/wallet.ts | 19 |
2 files changed, 18 insertions, 5 deletions
diff --git a/manifest.json b/manifest.json index 7217b8668..7edf3a55e 100644 --- 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 index 8f6346c77..902599beb 100644 --- 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); |