summaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/merchant-backoffice-ui/src/InstanceRoutes.tsx')
-rw-r--r--packages/merchant-backoffice-ui/src/InstanceRoutes.tsx20
1 files changed, 15 insertions, 5 deletions
diff --git a/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx b/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
index c3c20bcc4..b5680eabb 100644
--- a/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
+++ b/packages/merchant-backoffice-ui/src/InstanceRoutes.tsx
@@ -23,11 +23,12 @@ import {
useTranslationContext,
HttpError,
ErrorType,
+ GlobalNotificationsBanner,
} from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
import { Fragment, FunctionComponent, h, VNode } from "preact";
import { Route, route, Router } from "preact-router";
-import { useCallback, useEffect, useMemo, useState } from "preact/hooks";
+import { useCallback, useEffect, useErrorBoundary, useMemo, useState } from "preact/hooks";
import { Loading } from "./components/exception/loading.js";
import { Menu, NotificationCard } from "./components/menu/index.js";
import { useBackendContext } from "./context/backend.js";
@@ -77,6 +78,7 @@ import { Notification } from "./utils/types.js";
import { LoginToken, MerchantBackend } from "./declaration.js";
import { Settings } from "./paths/settings/index.js";
import { dateFormatForSettings, useSettings } from "./hooks/useSettings.js";
+import { TranslatedString } from "@gnu-taler/taler-util";
export enum InstancePaths {
error = "/error",
@@ -151,7 +153,7 @@ export function InstanceRoutes({
const [token, updateToken] = useBackendInstanceToken(id);
const { i18n } = useTranslationContext();
- type GlobalNotifState = (Notification & { to: string }) | undefined;
+ type GlobalNotifState = (Notification & { to: string | undefined }) | undefined;
const [globalNotification, setGlobalNotification] =
useState<GlobalNotifState>(undefined);
@@ -163,9 +165,8 @@ export function InstanceRoutes({
}
onLoginPass()
};
- // const updateLoginStatus = (url: string, token?: string) => {
- // changeToken(token);
- // };
+
+ const [error] = useErrorBoundary();
const value = useMemo(
() => ({ id, token, admin, changeToken }),
@@ -264,6 +265,15 @@ export function InstanceRoutes({
/>
<KycBanner />
<NotificationCard notification={globalNotification} />
+ {error &&
+ <NotificationCard notification={{
+ message: "Internal error, please repot",
+ type: "ERROR",
+ description: <pre>
+ {(error instanceof Error ? error.stack : String(error)) as TranslatedString}
+ </pre>
+ }} />
+ }
<Router
onChange={(e) => {