diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/paths/notfound/index.tsx')
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/notfound/index.tsx | 62 |
1 files changed, 49 insertions, 13 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx b/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx index 10c3fac25..4d348c02b 100644 --- a/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx @@ -1,6 +1,6 @@ /* This file is part of GNU Taler - (C) 2021 Taler Systems S.A. + (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 @@ -14,23 +14,59 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ - /** +/** * * @author Sebastian Javier Marchano (sebasjm) */ -import { h, VNode } from 'preact'; -import { Link } from 'preact-router/match'; +import { useTranslationContext } from "@gnu-taler/web-util/browser"; +import { Fragment, h, VNode } from "preact"; +import { Link, route } from "preact-router"; +import { NotificationCard } from "../../components/menu/index.js"; +import { + cleanAllCache, + DEFAULT_ADMIN_USERNAME, + useSessionContext, +} from "../../context/session.js"; +import InstanceCreatePage from "../../paths/admin/create/index.js"; +import { InstancePaths } from "../../Routing.js"; -export default function NotFoundPage(): VNode { +export function NotFoundPage(): VNode { + return ( + <div> + <p>That page doesn't exist.</p> + <Link href="/"> + <h4>Back to Home</h4> + </Link> + </div> + ); +} + +export function NotFoundPageOrAdminCreate(): VNode { + const { state } = useSessionContext(); + const { i18n } = useTranslationContext(); + if (state.isAdmin && state.instance === DEFAULT_ADMIN_USERNAME) { return ( - <div> - <h1>Error 404</h1> - <p>That page doesn't exist.</p> - <Link href="/"> - <h4>Back to Home</h4> - </Link> - </div> + <Fragment> + <NotificationCard + notification={{ + message: i18n.str`No 'default' instance configured yet.`, + description: i18n.str`Create a 'default' instance to begin using the merchant backoffice.`, + type: "INFO", + }} + /> + <InstanceCreatePage + forceId={DEFAULT_ADMIN_USERNAME} + onConfirm={() => { + // we need to clear everything since we take some + // 404 as "default instance don't exist" + cleanAllCache() + route(InstancePaths.bank_list); + }} + /> + </Fragment> ); -} + } + return <NotFoundPage /> +} |