From 4a781bd0dd8828ce152f6ab2c3f1bbd6b5e826f7 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 9 Jan 2023 20:20:09 -0300 Subject: fix #7153: more error handling if handler do not trap error then fail at compile time, all safe handlers push alert on error errors are typed so they render good information --- packages/taler-wallet-webextension/src/cta/Tip/state.ts | 7 ++++--- packages/taler-wallet-webextension/src/cta/Tip/stories.tsx | 6 +++--- packages/taler-wallet-webextension/src/cta/Tip/test.ts | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) (limited to 'packages/taler-wallet-webextension/src/cta/Tip') diff --git a/packages/taler-wallet-webextension/src/cta/Tip/state.ts b/packages/taler-wallet-webextension/src/cta/Tip/state.ts index 29a9c4c71..3b9abf5a3 100644 --- a/packages/taler-wallet-webextension/src/cta/Tip/state.ts +++ b/packages/taler-wallet-webextension/src/cta/Tip/state.ts @@ -16,7 +16,7 @@ import { Amounts } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; -import { alertFromError } from "../../context/alert.js"; +import { alertFromError, useAlertContext } from "../../context/alert.js"; import { useBackendContext } from "../../context/backend.js"; import { useTranslationContext } from "../../context/translation.js"; import { useAsyncAsHook } from "../../hooks/useAsyncAsHook.js"; @@ -29,6 +29,7 @@ export function useComponentState({ }: Props): State { const api = useBackendContext(); const { i18n } = useTranslationContext(); + const { pushAlertOnError } = useAlertContext(); const tipInfo = useAsyncAsHook(async () => { if (!talerTipUri) throw Error("ERROR_NO-URI-FOR-TIP"); const tip = await api.wallet.call(WalletApiOperation.PrepareTip, { @@ -77,7 +78,7 @@ export function useComponentState({ amount: Amounts.parseOrThrow(tip.tipAmountEffective), error: undefined, cancel: { - onClick: onCancel, + onClick: pushAlertOnError(onCancel), }, }; @@ -92,7 +93,7 @@ export function useComponentState({ status: "ready", ...baseInfo, accept: { - onClick: doAccept, + onClick: pushAlertOnError(doAccept), }, }; } diff --git a/packages/taler-wallet-webextension/src/cta/Tip/stories.tsx b/packages/taler-wallet-webextension/src/cta/Tip/stories.tsx index 86bdd27a9..dd358d9d2 100644 --- a/packages/taler-wallet-webextension/src/cta/Tip/stories.tsx +++ b/packages/taler-wallet-webextension/src/cta/Tip/stories.tsx @@ -20,14 +20,14 @@ */ import { Amounts } from "@gnu-taler/taler-util"; -import { createExample } from "../../test-utils.js"; +import { tests } from "@gnu-taler/web-util/lib/index.browser"; import { AcceptedView, ReadyView } from "./views.js"; export default { title: "tip", }; -export const Accepted = createExample(AcceptedView, { +export const Accepted = tests.createExample(AcceptedView, { status: "accepted", error: undefined, amount: Amounts.parseOrThrow("EUR:1"), @@ -35,7 +35,7 @@ export const Accepted = createExample(AcceptedView, { merchantBaseUrl: "", }); -export const Ready = createExample(ReadyView, { +export const Ready = tests.createExample(ReadyView, { status: "ready", error: undefined, amount: Amounts.parseOrThrow("EUR:1"), diff --git a/packages/taler-wallet-webextension/src/cta/Tip/test.ts b/packages/taler-wallet-webextension/src/cta/Tip/test.ts index 2cc95f424..44a6f9b0b 100644 --- a/packages/taler-wallet-webextension/src/cta/Tip/test.ts +++ b/packages/taler-wallet-webextension/src/cta/Tip/test.ts @@ -23,7 +23,8 @@ import { Amounts } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { expect } from "chai"; import { tests } from "../../../../web-util/src/index.browser.js"; -import { createWalletApiMock, nullFunction } from "../../test-utils.js"; +import { nullFunction } from "../../mui/handlers.js"; +import { createWalletApiMock } from "../../test-utils.js"; import { Props } from "./index.js"; import { useComponentState } from "./state.js"; @@ -48,7 +49,7 @@ describe("Tip CTA states", () => { ({ status, error }) => { expect(status).equals("error"); if (!error) expect.fail(); - expect(error.cause?.message).eq("ERROR_NO-URI-FOR-TIP"); + expect(error.description).eq("ERROR_NO-URI-FOR-TIP"); }, ], TestingContext, -- cgit v1.2.3