diff options
author | Sebastian <sebasjm@gmail.com> | 2023-09-19 00:39:00 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-09-19 00:39:00 -0300 |
commit | 0388d31d364139d0a3999126b06d8ac850117ab9 (patch) | |
tree | 8fcb0c248c689b70b1e583d0f35d267f8ca5b02f /packages/demobank-ui/src/components/Routing.tsx | |
parent | 40d2aa0c11e61ea45005c4c212c6ab686162b4b0 (diff) | |
download | wallet-core-0388d31d364139d0a3999126b06d8ac850117ab9.tar.xz |
account page
Diffstat (limited to 'packages/demobank-ui/src/components/Routing.tsx')
-rw-r--r-- | packages/demobank-ui/src/components/Routing.tsx | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/packages/demobank-ui/src/components/Routing.tsx b/packages/demobank-ui/src/components/Routing.tsx new file mode 100644 index 000000000..d5ea44e10 --- /dev/null +++ b/packages/demobank-ui/src/components/Routing.tsx @@ -0,0 +1,109 @@ +/* + This file is part of GNU Taler + (C) 2022 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/> + */ + +import { createHashHistory } from "history"; +import { VNode, h } from "preact"; +import { Route, Router, route } from "preact-router"; +import { useEffect } from "preact/hooks"; +import { BankFrame } from "../pages/BankFrame.js"; +import { BusinessAccount } from "../pages/BusinessAccount.js"; +import { HomePage, WithdrawalOperationPage } from "../pages/HomePage.js"; +import { PublicHistoriesPage } from "../pages/PublicHistoriesPage.js"; +import { RegistrationPage } from "../pages/RegistrationPage.js"; + +export function Routing(): VNode { + const history = createHashHistory(); + + return ( + <BankFrame + goToBusinessAccount={() => { + route("/business"); + }} + > + <Router history={history}> + <Route + path="/operation/:wopid" + component={({ wopid }: { wopid: string }) => ( + <WithdrawalOperationPage + operationId={wopid} + onContinue={() => { + route("/account"); + }} + onLoadNotOk={() => { + route("/account"); + }} + /> + )} + /> + <Route + path="/public-accounts" + component={() => <PublicHistoriesPage />} + /> + <Route + path="/register" + component={() => ( + <RegistrationPage + onComplete={() => { + route("/account"); + }} + /> + )} + /> + <Route + path="/account" + component={() => ( + <HomePage + onPendingOperationFound={(wopid) => { + route(`/operation/${wopid}`); + }} + onRegister={() => { + route("/register"); + }} + /> + )} + /> + <Route + path="/business" + component={() => ( + <BusinessAccount + onClose={() => { + route("/account"); + }} + onRegister={() => { + route("/register"); + }} + onLoadNotOk={() => { + route("/account"); + }} + /> + )} + /> + <Route default component={Redirect} to="/account" /> + </Router> + </BankFrame> + ); +} + +function Redirect({ to }: { to: string }): VNode { + useEffect(() => { + route(to, true); + }, []); + return <div>being redirected to {to}</div>; +} + +export function assertUnreachable(x: never): never { + throw new Error("Didn't expect to get here"); +} |