From ca60e97755d91d73b4f5fc3992ddb2db524cd5f2 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 8 Apr 2024 22:52:53 +0200 Subject: wallet-core: fix cancellation --- packages/bank-ui/src/pages/BankFrame.tsx | 7 ++++--- packages/taler-util/src/notifications.ts | 5 +++++ packages/taler-wallet-core/src/withdraw.ts | 16 +++++++++++++++- .../src/components/WalletActivity.tsx | 4 ++++ 4 files changed, 28 insertions(+), 4 deletions(-) (limited to 'packages') diff --git a/packages/bank-ui/src/pages/BankFrame.tsx b/packages/bank-ui/src/pages/BankFrame.tsx index 30f143828..db757ee07 100644 --- a/packages/bank-ui/src/pages/BankFrame.tsx +++ b/packages/bank-ui/src/pages/BankFrame.tsx @@ -26,14 +26,16 @@ import { Footer, Header, Loading, + RouteDefinition, ToastBanner, notifyError, notifyException, + useBankCoreApiContext, useTranslationContext, } from "@gnu-taler/web-util/browser"; import { ComponentChildren, Fragment, VNode, h } from "preact"; import { useEffect, useErrorBoundary, useState } from "preact/hooks"; -import { useBankCoreApiContext } from "@gnu-taler/web-util/browser"; +import { privatePages } from "../Routing.js"; import { useSettingsContext } from "../context/settings.js"; import { useAccountDetails } from "../hooks/account.js"; import { useBankState } from "../hooks/bank-state.js"; @@ -43,9 +45,7 @@ import { usePreferences, } from "../hooks/preferences.js"; import { useSessionState } from "../hooks/session.js"; -import { RouteDefinition } from "@gnu-taler/web-util/browser"; import { RenderAmount } from "./PaytoWireTransferForm.js"; -import { privatePages } from "../Routing.js"; const GIT_HASH = typeof __GIT_HASH__ !== "undefined" ? __GIT_HASH__ : undefined; const VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : undefined; @@ -273,6 +273,7 @@ function AppActivity(): VNode { case ObservabilityEventType.CryptoStart: case ObservabilityEventType.CryptoFinishSuccess: case ObservabilityEventType.CryptoFinishError: + case ObservabilityEventType.Message: return; default: { assertUnreachable(ev); diff --git a/packages/taler-util/src/notifications.ts b/packages/taler-util/src/notifications.ts index 7ef474754..1c6ca4b85 100644 --- a/packages/taler-util/src/notifications.ts +++ b/packages/taler-util/src/notifications.ts @@ -129,6 +129,7 @@ export enum ObservabilityEventType { CryptoStart = "crypto-start", CryptoFinishSuccess = "crypto-finish-success", CryptoFinishError = "crypto-finish-error", + Message = "message", } export type ObservabilityEvent = @@ -208,6 +209,10 @@ export type ObservabilityEvent = | { type: ObservabilityEventType.ShepherdTaskResult; resultType: string; + } + | { + type: ObservabilityEventType.Message; + contents: string; }; export interface BackupOperationErrorNotification { diff --git a/packages/taler-wallet-core/src/withdraw.ts b/packages/taler-wallet-core/src/withdraw.ts index 68ff9d494..7ec62a46b 100644 --- a/packages/taler-wallet-core/src/withdraw.ts +++ b/packages/taler-wallet-core/src/withdraw.ts @@ -54,6 +54,7 @@ import { LibtoolVersion, Logger, NotificationType, + ObservabilityEventType, TalerBankIntegrationHttpClient, TalerError, TalerErrorCode, @@ -3167,12 +3168,25 @@ export async function getWithdrawalDetailsForAmount( if (clientCancelKey) { const prevCts = wex.ws.clientCancellationMap.get(clientCancelKey); if (prevCts) { + wex.oc.observe({ + type: ObservabilityEventType.Message, + contents: `Cancelling previous key ${clientCancelKey}`, + }); prevCts.cancel(); + } else { + wex.oc.observe({ + type: ObservabilityEventType.Message, + contents: `No previous key ${clientCancelKey}`, + }); } + wex.oc.observe({ + type: ObservabilityEventType.Message, + contents: `Setting clientCancelKey ${clientCancelKey} to ${cts}`, + }); wex.ws.clientCancellationMap.set(clientCancelKey, cts); } try { - return internalGetWithdrawalDetailsForAmount(wex, req); + return await internalGetWithdrawalDetailsForAmount(wex, req); } finally { if (clientCancelKey && !cts.token.isCancelled) { wex.ws.clientCancellationMap.delete(clientCancelKey); diff --git a/packages/taler-wallet-webextension/src/components/WalletActivity.tsx b/packages/taler-wallet-webextension/src/components/WalletActivity.tsx index 60839e1f0..1c566c3e4 100644 --- a/packages/taler-wallet-webextension/src/components/WalletActivity.tsx +++ b/packages/taler-wallet-webextension/src/components/WalletActivity.tsx @@ -262,6 +262,7 @@ function ShowObservabilityEvent({ events, onClick }: MoreInfoPRops): VNode { case ObservabilityEventType.TaskReset: return "Task reset" case ObservabilityEventType.ShepherdTaskResult: return "Schedule" case ObservabilityEventType.DeclareTaskDependency: return "Task dependency" + case ObservabilityEventType.Message: return "Message" } })(); @@ -491,6 +492,9 @@ function ShowObervavilityDetails({ title, notif, onClick, prev }: { title: strin } + case ObservabilityEventType.Message: + // FIXME + return <>; } } -- cgit v1.2.3