commit c6429837df0f13e9ddcfb16e3596bea63b2e8b67
parent b6d716b79d6ce103a5f9a2f639ded2178ed84b9f
Author: Florian Dold <florian@dold.me>
Date: Tue, 14 Jul 2026 22:43:06 +0200
wallet-core: support retries for prepareWithdrawExchange
Diffstat:
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/packages/taler-wallet-core/src/exchanges.ts b/packages/taler-wallet-core/src/exchanges.ts
@@ -1307,6 +1307,17 @@ export async function requireExchangeReadyTx(
}
/**
+ * Reset retries for updating an exchange entry.
+ */
+export async function resetExchangeRetries(
+ wex: WalletExecutionContext,
+ baseUrl: string,
+): Promise<void> {
+ const taskId = TaskIdentifiers.forExchangeUpdateFromUrl(baseUrl);
+ await wex.taskScheduler.resetTask(taskId);
+}
+
+/**
* Ensure that a fresh exchange entry exists for the given
* exchange base URL.
*
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
@@ -46,7 +46,6 @@ import {
AmountString,
Amounts,
AsyncCondition,
- CancelProgressTokenRequest,
CancellationToken,
CanonicalizeBaseUrlRequest,
CanonicalizeBaseUrlResponse,
@@ -356,6 +355,7 @@ import {
listExchanges,
lookupExchangeByUri,
markExchangeUsed,
+ resetExchangeRetries,
startUpdateExchangeEntry,
waitReadyExchange,
} from "./exchanges.js";
@@ -404,7 +404,12 @@ import {
} from "./pay-peer-push-debit.js";
import { checkPayForTemplate } from "./pay-template.js";
import { fillDefaults } from "./preset-exchanges.js";
-import { handleCancelProgressToken, handleRetryProgressTokenNow, ProgressContext, withMaybeProgressContext } from "./progress.js";
+import {
+ ProgressContext,
+ handleCancelProgressToken,
+ handleRetryProgressTokenNow,
+ withMaybeProgressContext,
+} from "./progress.js";
import {
AfterCommitInfo,
DbAccess,
@@ -910,7 +915,7 @@ async function handlePrepareWithdrawExchange(
"prepareWithdrawExchange",
req.progressToken,
async () => {
- logger.warn("retryNow for prepareWithdrawExchange not implemented");
+ await resetExchangeRetries(wex, exchangeBaseUrl);
},
async (pc) => {
const exchange = await fetchFreshExchange(wex, exchangeBaseUrl, {