aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/recoup.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-01-11 12:48:32 +0100
committerFlorian Dold <florian@dold.me>2022-01-11 14:48:02 +0100
commita05e891d6e1468fdd99f710301e286857a46aea3 (patch)
tree5ea22817eb2cec888ff52a80dcd3a9986bd768fa /packages/taler-wallet-core/src/operations/recoup.ts
parentfb22009ec4799a624f00c228fbd7435b44c1cbac (diff)
downloadwallet-core-a05e891d6e1468fdd99f710301e286857a46aea3.tar.xz
towards new recoup API
Diffstat (limited to 'packages/taler-wallet-core/src/operations/recoup.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/recoup.ts37
1 files changed, 31 insertions, 6 deletions
diff --git a/packages/taler-wallet-core/src/operations/recoup.ts b/packages/taler-wallet-core/src/operations/recoup.ts
index 8a4c2242a..559513d44 100644
--- a/packages/taler-wallet-core/src/operations/recoup.ts
+++ b/packages/taler-wallet-core/src/operations/recoup.ts
@@ -28,6 +28,7 @@ import {
Amounts,
codecForRecoupConfirmation,
getTimestampNow,
+ j2s,
NotificationType,
RefreshReason,
TalerErrorDetails,
@@ -107,7 +108,7 @@ async function putGroupAsFinished(
}
}
if (allFinished) {
- logger.trace("all recoups of recoup group are finished");
+ logger.info("all recoups of recoup group are finished");
recoupGroup.timestampFinished = getTimestampNow();
recoupGroup.retryInfo = initRetryInfo();
recoupGroup.lastError = undefined;
@@ -178,8 +179,17 @@ async function recoupWithdrawCoin(
type: NotificationType.RecoupStarted,
});
- const recoupRequest = await ws.cryptoApi.createRecoupRequest(coin);
+ const recoupRequest = await ws.cryptoApi.createRecoupRequest({
+ blindingKey: coin.blindingKey,
+ coinPriv: coin.coinPriv,
+ coinPub: coin.coinPub,
+ denomPub: coin.denomPub,
+ denomPubHash: coin.denomPubHash,
+ denomSig: coin.denomSig,
+ recoupAmount: coin.currentAmount,
+ });
const reqUrl = new URL(`/coins/${coin.coinPub}/recoup`, coin.exchangeBaseUrl);
+ logger.trace(`requesting recoup via ${reqUrl.href}`);
const resp = await ws.http.postJson(reqUrl.href, recoupRequest, {
timeout: getReserveRequestTimeout(reserve),
});
@@ -188,6 +198,8 @@ async function recoupWithdrawCoin(
codecForRecoupConfirmation(),
);
+ logger.trace(`got recoup confirmation ${j2s(recoupConfirmation)}`);
+
if (recoupConfirmation.reserve_pub !== reservePub) {
throw Error(`Coin's reserve doesn't match reserve on recoup`);
}
@@ -249,7 +261,15 @@ async function recoupRefreshCoin(
type: NotificationType.RecoupStarted,
});
- const recoupRequest = await ws.cryptoApi.createRecoupRequest(coin);
+ const recoupRequest = await ws.cryptoApi.createRecoupRefreshRequest({
+ blindingKey: coin.blindingKey,
+ coinPriv: coin.coinPriv,
+ coinPub: coin.coinPub,
+ denomPub: coin.denomPub,
+ denomPubHash: coin.denomPubHash,
+ denomSig: coin.denomSig,
+ recoupAmount: coin.currentAmount,
+ });
const reqUrl = new URL(`/coins/${coin.coinPub}/recoup`, coin.exchangeBaseUrl);
logger.trace(`making recoup request for ${coin.coinPub}`);
@@ -359,9 +379,14 @@ async function processRecoupGroupImpl(
logger.trace("recoup group finished");
return;
}
- const ps = recoupGroup.coinPubs.map((x, i) =>
- processRecoup(ws, recoupGroupId, i),
- );
+ const ps = recoupGroup.coinPubs.map(async (x, i) => {
+ try {
+ processRecoup(ws, recoupGroupId, i);
+ } catch (e) {
+ logger.warn(`processRecoup failed: ${e}`);
+ throw e;
+ }
+ });
await Promise.all(ps);
const reserveSet = new Set<string>();