aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/taler-wallet-core/src/db.ts4
-rw-r--r--packages/taler-wallet-core/src/operations/pending.ts10
2 files changed, 13 insertions, 1 deletions
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<void> {
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,
});