diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts index 4296d0503..07e0f4b0a 100644 --- a/packages/taler-wallet-core/src/db.ts +++ b/packages/taler-wallet-core/src/db.ts @@ -539,6 +539,10 @@ export interface ExchangeRecord { */ nextRefreshCheck: Timestamp; + /** + * Last error (if any) for fetching updated information about the + * exchange. + */ lastError?: TalerErrorDetails; /** diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts index a87b1c8b1..e3d22bfe6 100644 --- a/packages/taler-wallet-core/src/operations/pending.ts +++ b/packages/taler-wallet-core/src/operations/pending.ts @@ -52,10 +52,18 @@ async function gatherExchangePending( resp: PendingOperationsResponse, ): Promise { await tx.exchanges.iter().forEachAsync(async (e) => { + let exchangeUpdateTimestampDue: Timestamp; + + if (e.lastError) { + exchangeUpdateTimestampDue = e.retryInfo.nextRetry; + } else { + exchangeUpdateTimestampDue = e.nextUpdate; + } + resp.pendingOperations.push({ type: PendingTaskType.ExchangeUpdate, givesLifeness: false, - timestampDue: e.nextUpdate, + timestampDue: exchangeUpdateTimestampDue, exchangeBaseUrl: e.baseUrl, lastError: e.lastError, });