taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

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:
Mpackages/taler-wallet-core/src/exchanges.ts | 11+++++++++++
Mpackages/taler-wallet-core/src/wallet.ts | 11++++++++---
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, {