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 | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx b/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx index 68adb79bf..4d348c02b 100644 --- a/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/notfound/index.tsx @@ -19,10 +19,19 @@ * @author Sebastian Javier Marchano (sebasjm) */ -import { h, VNode } from "preact"; -import { Link } from "preact-router"; +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> @@ -32,3 +41,32 @@ export default function NotFoundPage(): VNode { </div> ); } + +export function NotFoundPageOrAdminCreate(): VNode { + const { state } = useSessionContext(); + const { i18n } = useTranslationContext(); + if (state.isAdmin && state.instance === DEFAULT_ADMIN_USERNAME) { + return ( + <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 /> +} |