gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]