/* This file is part of GNU Taler (C) 2022-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 */ import { 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 } from "preact/hooks"; import { useBackendState } from "./hooks/backend.js"; import { BankFrame } from "./pages/BankFrame.js"; import { WithdrawalOperationPage } from "./pages/WithdrawalOperationPage.js"; import { LoginForm } from "./pages/LoginForm.js"; import { PublicHistoriesPage } from "./pages/PublicHistoriesPage.js"; import { RegistrationPage } from "./pages/RegistrationPage.js"; import { AdminHome } from "./pages/admin/AdminHome.js"; import { CreateCashout } from "./pages/business/CreateCashout.js"; import { ShowAccountDetails } from "./pages/account/ShowAccountDetails.js"; import { UpdateAccountPassword } from "./pages/account/UpdateAccountPassword.js"; import { RemoveAccount } from "./pages/admin/RemoveAccount.js"; import { CreateNewAccount } from "./pages/admin/CreateNewAccount.js"; import { CashoutListForAccount } from "./pages/account/CashoutListForAccount.js"; import { ShowCashoutDetails } from "./pages/business/ShowCashoutDetails.js"; import { WireTransfer } from "./pages/WireTransfer.js"; import { AccountPage } from "./pages/AccountPage/index.js"; import { useSettingsContext } from "./context/settings.js"; import { useBankCoreApiContext } from "./context/config.js"; import { DownloadStats } from "./pages/DownloadStats.js"; import { SolveChallengePage } from "./pages/SolveChallengePage.js"; export function Routing(): VNode { const history = createHashHistory(); const backend = useBackendState(); const settings = useSettingsContext(); const { config } = useBankCoreApiContext(); const { i18n } = useTranslationContext(); if (backend.state.status === "loggedOut") { return (

{i18n.str`Welcome to ${settings.bankName}!`}

{ route("/register"); }} />
)} /> } /> ( { route(`/2fa`) }} onContinue={() => { route("/account"); }} /> )} /> {config.allow_registrations && ( { route("/account"); }} onCancel={() => { route("/account"); }} /> )} /> }
} const { isUserAdministrator, username } = backend.state return ( ( { route("/account"); }} onAuthorizationRequired={() => { route(`/2fa`) }} /> )} /> ( { route("/account"); }} /> )} /> } /> { route("/account") }} />} /> { route("/account") }} onCreateSuccess={() => { route("/account") }} />} /> ( { route("/account") }} onAuthorizationRequired={() => { route(`/2fa`) }} onClear={() => { route("/account") }} /> )} /> ( { route("/account") }} onAuthorizationRequired={() => { route(`/2fa`) }} onCancel={() => { route("/account") }} /> )} /> ( { route("/account") }} onAuthorizationRequired={() => { route(`/2fa`) }} onCancel={() => { route("/account") }} /> )} /> ( { route(`/cashout/${cid}`) }} onAuthorizationRequired={() => { route(`/2fa`) }} onClose={() => { route("/account") }} /> )} /> ( { route("/") }} onAuthorizationRequired={() => { route(`/2fa`) }} onCancel={() => { route("/account") }} /> )} /> ( { route("/account") }} onAuthorizationRequired={() => { route(`/2fa`) }} onClear={() => { route("/account") }} /> )} /> ( { route("/account") }} onAuthorizationRequired={() => { route(`/2fa`) }} onCancel={() => { route("/account") }} /> )} /> ( { route(`/cashout/${cid}`) }} onAuthorizationRequired={() => { route(`/2fa`) }} onClose={() => { route("/account"); }} /> )} /> ( { route(`/2fa`) }} onCancel={() => { route("/account"); }} /> )} /> ( { route("/my-cashouts"); }} /> )} /> ( { route(`/2fa`) }} onCancel={() => { route("/account") }} onSuccess={() => { route("/account") }} /> )} /> { if (isUserAdministrator) { return { route(`/2fa`) }} onCreateAccount={() => { route("/new-account") }} onShowAccountDetails={(aid) => { route(`/profile/${aid}/details`) }} onRemoveAccount={(aid) => { route(`/profile/${aid}/delete`) }} onShowCashoutForAccount={(aid) => { route(`/profile/${aid}/cashouts`) }} onUpdateAccountPassword={(aid) => { route(`/profile/${aid}/change-password`) }} />; } else { return { route(`/2fa`) }} goToConfirmOperation={(wopid) => { route(`/operation/${wopid}`); }} /> } }} /> ); } function Redirect({ to }: { to: string }): VNode { useEffect(() => { route(to, true); }, []); return
being redirected to {to}
; }