fix coin selection issue

This commit is contained in:
Florian Dold 2016-11-18 00:09:43 +01:00
parent 834b89547b
commit 8db3e73606
2 changed files with 18 additions and 5 deletions

View File

@ -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",

View File

@ -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);