aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
-rw-r--r--packages/taler-wallet-core/src/operations/exchanges.ts4
-rw-r--r--packages/taler-wallet-core/src/operations/recoup.ts37
-rw-r--r--packages/taler-wallet-core/src/operations/reserves.ts10
3 files changed, 41 insertions, 10 deletions
diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts
index 987031810..2975c860f 100644
--- a/packages/taler-wallet-core/src/operations/exchanges.ts
+++ b/packages/taler-wallet-core/src/operations/exchanges.ts
@@ -651,7 +651,7 @@ async function updateExchangeFromUrlImpl(
logger.trace("denom already revoked");
continue;
}
- logger.trace("revoking denom", recoupInfo.h_denom_pub);
+ logger.info("revoking denom", recoupInfo.h_denom_pub);
oldDenom.isRevoked = true;
await tx.denominations.put(oldDenom);
const affectedCoins = await tx.coins.indexes.byDenomPubHash
@@ -662,7 +662,7 @@ async function updateExchangeFromUrlImpl(
}
}
if (newlyRevokedCoinPubs.length != 0) {
- logger.trace("recouping coins", newlyRevokedCoinPubs);
+ logger.info("recouping coins", newlyRevokedCoinPubs);
recoupGroupId = await ws.recoupOps.createRecoupGroup(
ws,
tx,
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>();
diff --git a/packages/taler-wallet-core/src/operations/reserves.ts b/packages/taler-wallet-core/src/operations/reserves.ts
index 5a9fbb405..75d517d68 100644
--- a/packages/taler-wallet-core/src/operations/reserves.ts
+++ b/packages/taler-wallet-core/src/operations/reserves.ts
@@ -30,6 +30,7 @@ import {
encodeCrock,
getRandomBytes,
getTimestampNow,
+ j2s,
Logger,
NotificationType,
randomBytes,
@@ -538,6 +539,7 @@ async function updateReserve(
resp,
codecForReserveStatus(),
);
+
if (result.isError) {
if (
resp.status === 404 &&
@@ -555,6 +557,8 @@ async function updateReserve(
}
}
+ logger.trace(`got reserve status ${j2s(result.response)}`);
+
const reserveInfo = result.response;
const balance = Amounts.parseOrThrow(reserveInfo.balance);
const currency = balance.currency;
@@ -635,8 +639,10 @@ async function updateReserve(
}
}
- const remainingAmount = Amounts.sub(amountReservePlus, amountReserveMinus)
- .amount;
+ const remainingAmount = Amounts.sub(
+ amountReservePlus,
+ amountReserveMinus,
+ ).amount;
const denomSelInfo = selectWithdrawalDenominations(
remainingAmount,
denoms,