summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-07-16 15:13:52 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-07-16 15:13:52 +0530
commitbcd9e2e5ff7f14308c5298a257388afc398dc674 (patch)
treebdd0886ec3503d82d74075497ffb832fa23b5a4b /src
parent75c5c59316a428fbebe2448d9d79a70689565657 (diff)
downloadwallet-core-bcd9e2e5ff7f14308c5298a257388afc398dc674.tar.gz
wallet-core-bcd9e2e5ff7f14308c5298a257388afc398dc674.tar.bz2
wallet-core-bcd9e2e5ff7f14308c5298a257388afc398dc674.zip
fix totally broken withdrawal coin selection
Diffstat (limited to 'src')
-rw-r--r--src/operations/withdraw.ts27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/operations/withdraw.ts b/src/operations/withdraw.ts
index fd850f140..41b77da8f 100644
--- a/src/operations/withdraw.ts
+++ b/src/operations/withdraw.ts
@@ -162,6 +162,9 @@ export async function getBankWithdrawalInfo(
};
}
+/**
+ * Return denominations that can potentially used for a withdrawal.
+ */
async function getPossibleDenoms(
ws: InternalWalletState,
exchangeBaseUrl: string,
@@ -458,24 +461,17 @@ export async function selectWithdrawalDenoms(
throw Error(`exchange ${exchangeBaseUrl} details not available`);
}
- console.log("getting possible denoms");
-
- const possibleDenoms = await getPossibleDenoms(ws, exchange.baseUrl);
-
- console.log("got possible denoms");
-
let allValid = false;
-
let selectedDenoms: DenominationSelectionInfo;
+ // Find a denomination selection for the requested amount.
+ // If a selected denomination has not been validated yet
+ // and turns our to be invalid, we try again with the
+ // reduced set of denominations.
do {
allValid = true;
- const nextPossibleDenoms = [];
- selectedDenoms = getWithdrawDenomList(amount, possibleDenoms);
- console.log("got withdraw denom list");
- if (!selectedDenoms) {
- console;
- }
+ const nextPossibleDenoms = await getPossibleDenoms(ws, exchange.baseUrl);
+ selectedDenoms = getWithdrawDenomList(amount, nextPossibleDenoms);
for (const denomSel of selectedDenoms.selectedDenoms) {
const denom = denomSel.denom;
if (denom.status === DenominationStatus.Unverified) {
@@ -488,17 +484,12 @@ export async function selectWithdrawalDenoms(
allValid = false;
} else {
denom.status = DenominationStatus.VerifiedGood;
- nextPossibleDenoms.push(denom);
}
await ws.db.put(Stores.denominations, denom);
- } else {
- nextPossibleDenoms.push(denom);
}
}
} while (selectedDenoms.selectedDenoms.length > 0 && !allValid);
- console.log("returning denoms");
-
return selectedDenoms;
}