From 3e060b80428943c6562250a6ff77eff10a0259b7 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 24 Oct 2022 10:46:14 +0200 Subject: repo: integrate packages from former merchant-backoffice.git --- .../src/ApplicationReadyRoutes.tsx | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 packages/merchant-backoffice-ui/src/ApplicationReadyRoutes.tsx (limited to 'packages/merchant-backoffice-ui/src/ApplicationReadyRoutes.tsx') diff --git a/packages/merchant-backoffice-ui/src/ApplicationReadyRoutes.tsx b/packages/merchant-backoffice-ui/src/ApplicationReadyRoutes.tsx new file mode 100644 index 000000000..ebc3d1d95 --- /dev/null +++ b/packages/merchant-backoffice-ui/src/ApplicationReadyRoutes.tsx @@ -0,0 +1,120 @@ +/* + This file is part of GNU Taler + (C) 2021 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 + */ + +/** + * + * @author Sebastian Javier Marchano (sebasjm) + */ +import { Fragment, h, VNode } from "preact"; +import Router, { Route, route } from "preact-router"; +import { useBackendContext } from "./context/backend"; +import { useBackendInstancesTestForAdmin } from "./hooks/backend"; +import { InstanceRoutes } from "./InstanceRoutes"; +import LoginPage from "./paths/login"; +import { INSTANCE_ID_LOOKUP } from "./utils/constants"; +import { NotYetReadyAppMenu, Menu, NotificationCard } from "./components/menu"; +import { useTranslator } from "./i18n"; +import { createHashHistory } from "history"; +import { useState } from "preact/hooks"; + +export function ApplicationReadyRoutes(): VNode { + const i18n = useTranslator(); + const { + url: backendURL, + updateLoginStatus, + clearAllTokens, + } = useBackendContext(); + + const result = useBackendInstancesTestForAdmin(); + + const clearTokenAndGoToRoot = () => { + clearAllTokens(); + route("/"); + }; + + if (result.clientError && result.isUnauthorized) { + return ( + + + + + + ); + } + + if (result.loading) return ; + + let admin = true; + let instanceNameByBackendURL; + + if (!result.ok) { + 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 ( + + + + + + ); + } + + admin = false; + instanceNameByBackendURL = match[1]; + } + + const history = createHashHistory(); + return ( + + + + ); +} + +function DefaultMainRoute({ instance, admin, instanceNameByBackendURL }: any) { + const [instanceName, setInstanceName] = useState( + instanceNameByBackendURL || instance || "default" + ); + + return ( + + ); +} -- cgit v1.2.3