diff options
author | Iván Ávalos <avalos@disroot.org> | 2024-06-20 18:03:44 -0600 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-06-26 16:32:03 +0200 |
commit | ad98de50f728f4e81fa99c8d184a24336c2bcd2b (patch) | |
tree | 3e6bdce7a61596b0e39941d47d613c9270f1475b /packages | |
parent | cd6e5c9cefb4cdfeb3095e24bbe987a825128a1c (diff) | |
download | wallet-core-ad98de50f728f4e81fa99c8d184a24336c2bcd2b.tar.xz |
add network-required task result and network status to wallet state
Diffstat (limited to 'packages')
-rw-r--r-- | packages/taler-wallet-core/src/common.ts | 17 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/wallet.ts | 11 |
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 |