[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] 02/08: handle network-required result
From: |
gnunet |
Subject: |
[taler-wallet-core] 02/08: handle network-required result |
Date: |
Wed, 26 Jun 2024 17:25:16 +0200 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository wallet-core.
commit ca86c0a3463a46605d41af27fb62606427c9a217
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Thu Jun 20 18:41:46 2024 -0600
handle network-required result
---
packages/taler-wallet-core/src/common.ts | 10 +++++-----
packages/taler-wallet-core/src/shepherd.ts | 9 +++++++++
packages/taler-wallet-core/src/transactions.ts | 7 +++++++
packages/taler-wallet-core/src/wallet.ts | 3 ++-
4 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/packages/taler-wallet-core/src/common.ts
b/packages/taler-wallet-core/src/common.ts
index a6d4a2245..c37d0e21a 100644
--- a/packages/taler-wallet-core/src/common.ts
+++ b/packages/taler-wallet-core/src/common.ts
@@ -388,7 +388,7 @@ export type TaskRunResult =
| TaskRunProgressResult
| TaskRunLongpollReturnedPendingResult
| TaskRunScheduleLaterResult
- | TaskRunNetworkRequired;
+ | TaskRunNetworkRequiredResult;
export namespace TaskRunResult {
/**
@@ -463,14 +463,14 @@ export interface TaskRunScheduleLaterResult {
runAt: AbsoluteTime;
}
-export interface TaskRunNetworkRequired {
- type: TaskRunResultType.NetworkRequired;
-}
-
export interface TaskRunLongpollReturnedPendingResult {
type: TaskRunResultType.LongpollReturnedPending;
}
+export interface TaskRunNetworkRequiredResult {
+ type: TaskRunResultType.NetworkRequired;
+}
+
export interface TaskRunErrorResult {
type: TaskRunResultType.Error;
errorDetail: TalerErrorDetail;
diff --git a/packages/taler-wallet-core/src/shepherd.ts
b/packages/taler-wallet-core/src/shepherd.ts
index 2b529fb4b..b7d6475d0 100644
--- a/packages/taler-wallet-core/src/shepherd.ts
+++ b/packages/taler-wallet-core/src/shepherd.ts
@@ -476,6 +476,15 @@ export class TaskSchedulerImpl implements TaskScheduler {
}
break;
}
+ case TaskRunResultType.NetworkRequired: {
+ logger.trace(`Shepherd for ${taskId} got network-required result.`);
+ const retryRecord = await storePendingTaskPending(this.ws, taskId);
+ const t = timestampAbsoluteFromDb(retryRecord.retryInfo.nextRetry);
+ const delay = Duration.getForever();
+ logger.trace(`Not retrying task until network is restored.`);
+ await this.wait(taskId, info, delay);
+ break;
+ }
default:
assertUnreachable(res);
}
diff --git a/packages/taler-wallet-core/src/transactions.ts
b/packages/taler-wallet-core/src/transactions.ts
index 7f766f1b0..8268828be 100644
--- a/packages/taler-wallet-core/src/transactions.ts
+++ b/packages/taler-wallet-core/src/transactions.ts
@@ -1815,6 +1815,13 @@ export async function retryAll(wex:
WalletExecutionContext): Promise<void> {
}
}
+/**
+ * Restart all the running tasks.
+ */
+export async function restartAll(wex: WalletExecutionContext): Promise<void> {
+ await wex.taskScheduler.reload();
+}
+
async function getContextForTransaction(
wex: WalletExecutionContext,
transactionId: string,
diff --git a/packages/taler-wallet-core/src/wallet.ts
b/packages/taler-wallet-core/src/wallet.ts
index a77f91016..963dfdfe9 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -292,6 +292,7 @@ import {
getTransactions,
getWithdrawalTransactionByUri,
parseTransactionIdentifier,
+ restartAll,
resumeTransaction,
retryAll,
retryTransaction,
@@ -1248,7 +1249,7 @@ async function dispatchRequestInternal(
const req = codecForHintNetworkAvailabilityRequest().decode(payload);
wex.ws.networkAvailable = req.isNetworkAvailable;
if (req.isNetworkAvailable) {
- await retryAll(wex);
+ await restartAll(wex);
} else {
// We're not doing anything right now, but we could stop showing
// certain errors!
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-wallet-core] branch master updated (cd6e5c9ce -> 4c006659a), gnunet, 2024/06/26
- [taler-wallet-core] 03/08: make tasks return network-required when offline, gnunet, 2024/06/26
- [taler-wallet-core] 01/08: add network-required task result and network status to wallet state, gnunet, 2024/06/26
- [taler-wallet-core] 05/08: remove dead code from shepherd, gnunet, 2024/06/26
- [taler-wallet-core] 02/08: handle network-required result,
gnunet <=
- [taler-wallet-core] 06/08: harness: add hintNetworkAvailability test, gnunet, 2024/06/26
- [taler-wallet-core] 08/08: wallet-core: restart all tasks also when network becomes unavailable, gnunet, 2024/06/26
- [taler-wallet-core] 04/08: set networkAvailable to true by default, gnunet, 2024/06/26
- [taler-wallet-core] 07/08: enable observability without setting TALER_TEST_OBSERVABILITY, gnunet, 2024/06/26