summaryrefslogtreecommitdiff
path: root/packages/auditor-backoffice-ui/src/ApplicationReadyRoutes.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/auditor-backoffice-ui/src/ApplicationReadyRoutes.tsx')
-rw-r--r--packages/auditor-backoffice-ui/src/ApplicationReadyRoutes.tsx155
1 files changed, 155 insertions, 0 deletions
diff --git a/packages/auditor-backoffice-ui/src/ApplicationReadyRoutes.tsx b/packages/auditor-backoffice-ui/src/ApplicationReadyRoutes.tsx
new file mode 100644
index 000000000..2837e8d27
--- /dev/null
+++ b/packages/auditor-backoffice-ui/src/ApplicationReadyRoutes.tsx
@@ -0,0 +1,155 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021-2024 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ *
+ * @author Nic Eigel
+ */
+import { HttpStatusCode, TranslatedString } from "@gnu-taler/taler-util";
+import { ErrorType, useTranslationContext } from "@gnu-taler/web-util/browser";
+import { createHashHistory } from "history";
+import { Fragment, VNode, h } from "preact";
+import { Route, Router, route } from "preact-router";
+import { useEffect, useErrorBoundary, useState } from "preact/hooks";
+import { InstanceRoutes } from "./InstanceRoutes.js";
+import {
+ NotConnectedAppMenu,
+ NotificationCard,
+} from "./components/menu/index.js";
+import { useBackendContext } from "./context/backend.js";
+import { INSTANCE_ID_LOOKUP } from "./utils/constants.js";
+
+/**
+ * Check if admin against /management/instances
+ * @returns
+ */
+export function ApplicationReadyRoutes(): VNode {
+ const { i18n } = useTranslationContext();
+ const [unauthorized, setUnauthorized] = useState(false)
+ const {
+ url: backendURL,
+ /*updateToken,
+ alreadyTriedLogin,*/
+ } = useBackendContext();
+
+ /*function updateLoginStatus(token: LoginToken | undefined) {
+ updateToken(token)
+ setUnauthorized(false)
+ }
+ const result = useBackendInstancesTestForAdmin();
+
+ const clearTokenAndGoToRoot = () => {
+ route("/");
+ };*/
+ const [showSettings, setShowSettings] = useState(false)
+ /* const unauthorizedAdmin = !result.loading
+ && !result.ok
+ && result.type === ErrorType.CLIENT
+ && result.status === HttpStatusCode.Unauthorized;
+
+ if (!alreadyTriedLogin && !result.ok) {
+ return (
+ <Fragment>
+ <NotConnectedAppMenu title="Welcome!" />
+ <LoginPage onConfirm={updateToken} />
+ </Fragment>
+ );
+ }
+
+ if (showSettings) {
+ return <Fragment>
+ <NotYetReadyAppMenu onShowSettings={() => setShowSettings(true)} title="UI Settings" onLogout={clearTokenAndGoToRoot} isPasswordOk={false} />
+ <Settings onClose={() => setShowSettings(false)} />
+ </Fragment>
+ }
+
+ if (result.loading) {
+ return <NotYetReadyAppMenu onShowSettings={() => setShowSettings(true)} title="Loading..." isPasswordOk={false} />;
+ }
+
+ let admin = result.ok || unauthorizedAdmin;
+ let instanceNameByBackendURL: string | undefined;
+*/
+// if (!admin) {
+// // * the testing against admin endpoint failed and it's not
+// // an authorization problem
+// // * merchant backend will return this SPA under the main
+// // endpoint or /instance/<id> endpoint
+// // => trying to infer the instance id
+// const path = new URL(backendURL).pathname;
+// const match = INSTANCE_ID_LOOKUP.exec(path);
+// if (!match || !match[1]) {
+// // this should be rare because
+// // query to /config is ok but the URL
+// // does not match our pattern
+// return (
+// <Fragment>
+// <NotYetReadyAppMenu onShowSettings={() => setShowSettings(true)} title="Error" onLogout={clearTokenAndGoToRoot} isPasswordOk={false} />
+// <NotificationCard
+// notification={{
+// message: i18n.str`Couldn't access the server.`,
+// description: i18n.str`Could not infer instance id from url ${backendURL}`,
+// type: "ERROR",
+// }}
+// />
+// {/* <ConnectionPage onConfirm={changeBackend} /> */}
+// </Fragment>
+// );
+// }
+//
+// instanceNameByBackendURL = match[1];
+// }
+//
+// if (unauthorized || unauthorizedAdmin) {
+// return <Fragment>
+// <NotYetReadyAppMenu onShowSettings={() => setShowSettings(true)} title="Login" onLogout={clearTokenAndGoToRoot} isPasswordOk={false} />
+// <NotificationCard
+// notification={{
+// message: i18n.str`Access denied`,
+// description: i18n.str`Check your token is valid`,
+// type: "ERROR",
+// }}
+// />
+// <LoginPage onConfirm={updateLoginStatus} />
+// </Fragment>
+// }
+//
+ const history = createHashHistory();
+ return (
+ <Router history={history}>
+ <Route
+ default
+ component={DefaultMainRoute}
+ />
+ </Router>
+ );
+}
+
+function DefaultMainRoute({
+ instance,
+ url, //from preact-router
+ }: any): VNode {
+ const [instanceName, setInstanceName] = useState(
+ "default",
+ );
+
+ return (
+ <InstanceRoutes
+ id={instanceName}
+ path={url}
+ />
+ );
+}