-only return coin indices for successfully withdrawn coins

This commit is contained in:
Florian Dold 2023-02-10 13:40:57 +01:00
parent c8336c8c2c
commit 49608f0bbb
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B

View File

@ -492,7 +492,7 @@ async function processPlanchetExchangeBatchRequest(
const batchReq: ExchangeBatchWithdrawRequest = { planchets: [] };
// Indices of coins that are included in the batch request
const coinIdxs: number[] = [];
const requestCoinIdxs: number[] = [];
await ws.db
.mktx((x) => [
@ -537,7 +537,7 @@ async function processPlanchetExchangeBatchRequest(
coin_ev: planchet.coinEv,
};
batchReq.planchets.push(planchetReq);
coinIdxs.push(coinIdx);
requestCoinIdxs.push(coinIdx);
}
});
@ -563,7 +563,7 @@ async function processPlanchetExchangeBatchRequest(
for (let i = startIdx; i < coinIdxs.length; i++) {
let planchet = await tx.planchets.indexes.byGroupAndIndex.get([
withdrawalGroup.withdrawalGroupId,
coinIdxs[i],
requestCoinIdxs[i],
]);
if (!planchet) {
continue;
@ -623,11 +623,11 @@ async function processPlanchetExchangeBatchRequest(
codecForWithdrawBatchResponse(),
);
return {
coinIdxs,
coinIdxs: requestCoinIdxs,
batchResp: r,
};
} catch (e) {
await storeCoinError(e, coinIdxs[0]);
await storeCoinError(e, requestCoinIdxs[0]);
return {
batchResp: { ev_sigs: [] },
coinIdxs: [],
@ -638,6 +638,7 @@ async function processPlanchetExchangeBatchRequest(
const responses: ExchangeWithdrawBatchResponse = {
ev_sigs: [],
};
const responseCoinIdxs: number[] = [];
for (let i = 0; i < batchReq.planchets.length; i++) {
try {
const p = batchReq.planchets[i];
@ -650,7 +651,7 @@ async function processPlanchetExchangeBatchRequest(
await handleKycRequired(resp, i);
// We still return blinded coins that we could actually withdraw.
return {
coinIdxs,
coinIdxs: responseCoinIdxs,
batchResp: responses,
};
}
@ -659,12 +660,13 @@ async function processPlanchetExchangeBatchRequest(
codecForWithdrawResponse(),
);
responses.ev_sigs.push(r);
responseCoinIdxs.push(requestCoinIdxs[i]);
} catch (e) {
await storeCoinError(e, coinIdxs[i]);
await storeCoinError(e, requestCoinIdxs[i]);
}
}
return {
coinIdxs,
coinIdxs: responseCoinIdxs,
batchResp: responses,
};
}