aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core')
-rw-r--r--packages/taler-wallet-core/src/common.ts17
-rw-r--r--packages/taler-wallet-core/src/wallet.ts11
2 files changed, 27 insertions, 1 deletions
diff --git a/packages/taler-wallet-core/src/common.ts b/packages/taler-wallet-core/src/common.ts
index 83f50c8e3..a6d4a2245 100644
--- a/packages/taler-wallet-core/src/common.ts
+++ b/packages/taler-wallet-core/src/common.ts
@@ -378,6 +378,7 @@ export enum TaskRunResultType {
Error = "error",
LongpollReturnedPending = "longpoll-returned-pending",
ScheduleLater = "schedule-later",
+ NetworkRequired = "network-required",
}
export type TaskRunResult =
@@ -386,7 +387,8 @@ export type TaskRunResult =
| TaskRunBackoffResult
| TaskRunProgressResult
| TaskRunLongpollReturnedPendingResult
- | TaskRunScheduleLaterResult;
+ | TaskRunScheduleLaterResult
+ | TaskRunNetworkRequired;
export namespace TaskRunResult {
/**
@@ -433,6 +435,15 @@ export namespace TaskRunResult {
type: TaskRunResultType.LongpollReturnedPending,
};
}
+ /**
+ * Network connection is required to complete the task.
+ * When network is back, the transaction will be retried.
+ */
+ export function networkRequired(): TaskRunResult {
+ return {
+ type: TaskRunResultType.NetworkRequired,
+ };
+ }
}
export interface TaskRunFinishedResult {
@@ -452,6 +463,10 @@ export interface TaskRunScheduleLaterResult {
runAt: AbsoluteTime;
}
+export interface TaskRunNetworkRequired {
+ type: TaskRunResultType.NetworkRequired;
+}
+
export interface TaskRunLongpollReturnedPendingResult {
type: TaskRunResultType.LongpollReturnedPending;
}
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index 52cfc02c6..a77f91016 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -1246,6 +1246,7 @@ async function dispatchRequestInternal(
}
case WalletApiOperation.HintNetworkAvailability: {
const req = codecForHintNetworkAvailabilityRequest().decode(payload);
+ wex.ws.networkAvailable = req.isNetworkAvailable;
if (req.isNetworkAvailable) {
await retryAll(wex);
} else {
@@ -1995,6 +1996,16 @@ export class InternalWalletState {
return this._dbAccessHandle;
}
+ private _networkAvailable = false;
+
+ get networkAvailable(): boolean {
+ return this._networkAvailable;
+ }
+
+ set networkAvailable(status: boolean) {
+ this._networkAvailable = status;
+ }
+
/**
* Run a long-polling request, potentially queueing the request
* if too many other long-polling requests against the same hostname