diff options
Diffstat (limited to 'packages')
9 files changed, 49 insertions, 7 deletions
diff --git a/packages/taler-wallet-webextension/src/components/CurrentAlerts.tsx b/packages/taler-wallet-webextension/src/components/CurrentAlerts.tsx index b1ed3b02c..38d1b6b6b 100644 --- a/packages/taler-wallet-webextension/src/components/CurrentAlerts.tsx +++ b/packages/taler-wallet-webextension/src/components/CurrentAlerts.tsx @@ -22,6 +22,8 @@ import { } from "../context/alert.js"; import { Alert } from "../mui/Alert.js"; import { useTranslationContext } from "@gnu-taler/web-util/browser"; +import { ButtonHandler } from "../mui/handlers.js"; +import { Button } from "../mui/Button.js"; /** * @@ -99,13 +101,23 @@ function AlertContext({ export function ErrorAlertView({ error, + retry, onClose, }: { error: AlertNotification; + retry?: ButtonHandler; onClose?: () => Promise<void>; }): VNode { + const { i18n } = useTranslationContext(); return ( <Wrapper> + {!retry ? undefined : ( + <section> + <Button variant="contained" color="success" onClick={retry.onClick}> + <i18n.Translate>Retry operation</i18n.Translate> + </Button> + </section> + )} <AlertView alert={error} onClose={onClose} /> </Wrapper> ); diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts index fd3fb52f8..1ca7481be 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts @@ -47,6 +47,7 @@ export namespace State { export interface LoadingUriError { status: "error"; + retry: ButtonHandler; error: ErrorAlert; } diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts index daa3ee76d..baaa9a3dd 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts @@ -34,6 +34,7 @@ export function useComponentState({ }: Props): RecursiveState<State> { const amount = Amounts.parseOrThrow(amountStr); const api = useBackendContext(); + const { pushAlertOnError } = useAlertContext(); const hook = useAsyncAsHook(() => api.wallet.call(WalletApiOperation.ListExchanges, {}), @@ -49,6 +50,11 @@ export function useComponentState({ if (hook.hasError) { return { status: "error", + retry: { + onClick: pushAlertOnError(async () => { + hook.retry(); + }), + }, error: alertFromError( i18n, i18n.str`Could not load the list of exchanges`, @@ -103,6 +109,11 @@ export function useComponentState({ if (hook.hasError) { return { status: "error", + retry: { + onClick: pushAlertOnError(async () => { + hook.retry(); + }), + }, error: alertFromError( i18n, i18n.str`Could not load the invoice status`, diff --git a/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts b/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts index f0cd63fbe..dcb1f827b 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts @@ -50,6 +50,7 @@ export namespace State { export interface LoadingUriError { status: "error"; + retry: ButtonHandler; error: ErrorAlert; } diff --git a/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts b/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts index 99de03d2d..deee83751 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts @@ -63,6 +63,11 @@ export function useComponentState({ if (hook.hasError) { return { status: "error", + retry: { + onClick: pushAlertOnError(async () => { + hook.retry(); + }), + }, error: alertFromError( i18n, i18n.str`Could not load the transfer payment status`, diff --git a/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts b/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts index 794d2ad1c..539ca207c 100644 --- a/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts +++ b/packages/taler-wallet-webextension/src/cta/TransferCreate/index.ts @@ -14,7 +14,11 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { AmountJson, AmountString, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { + AmountJson, + AmountString, + TalerErrorDetail, +} from "@gnu-taler/taler-util"; import { ErrorAlertView } from "../../components/CurrentAlerts.js"; import { Loading } from "../../components/Loading.js"; import { ErrorAlert } from "../../context/alert.js"; @@ -39,6 +43,7 @@ export namespace State { export interface LoadingUriError { status: "error"; + retry: ButtonHandler; error: ErrorAlert; } diff --git a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts index f092801ed..f15d48c23 100644 --- a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts +++ b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts @@ -57,6 +57,11 @@ export function useComponentState({ if (hook.hasError) { return { status: "error", + retry: { + onClick: pushAlertOnError(async () => { + hook.retry(); + }), + }, error: alertFromError( i18n, i18n.str`Could not load the max amount to transfer`, diff --git a/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts b/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts index 4e1301d6a..a7bb0b67a 100644 --- a/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts +++ b/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts @@ -14,16 +14,12 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { - AbsoluteTime, - AmountJson, - TalerErrorDetail, -} from "@gnu-taler/taler-util"; +import { AbsoluteTime, AmountJson } from "@gnu-taler/taler-util"; import { ErrorAlertView } from "../../components/CurrentAlerts.js"; import { Loading } from "../../components/Loading.js"; import { ErrorAlert } from "../../context/alert.js"; import { ButtonHandler } from "../../mui/handlers.js"; -import { compose, StateViewMap } from "../../utils/index.js"; +import { StateViewMap, compose } from "../../utils/index.js"; import { useComponentState } from "./state.js"; import { ReadyView } from "./views.js"; @@ -43,6 +39,7 @@ export namespace State { export interface LoadingUriError { status: "error"; + retry: ButtonHandler; error: ErrorAlert; } diff --git a/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts b/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts index 67f6d9113..28d8c9e70 100644 --- a/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts +++ b/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts @@ -49,6 +49,11 @@ export function useComponentState({ if (hook.hasError) { return { status: "error", + retry: { + onClick: pushAlertOnError(async () => { + hook.retry(); + }), + }, error: alertFromError( i18n, i18n.str`Could not load the invoice payment status`, |