summaryrefslogtreecommitdiff
path: root/packages/bank-ui/src/Routing.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/bank-ui/src/Routing.tsx')
-rw-r--r--packages/bank-ui/src/Routing.tsx69
1 files changed, 37 insertions, 32 deletions
diff --git a/packages/bank-ui/src/Routing.tsx b/packages/bank-ui/src/Routing.tsx
index 75f070e4b..fbf5aa9ec 100644
--- a/packages/bank-ui/src/Routing.tsx
+++ b/packages/bank-ui/src/Routing.tsx
@@ -22,6 +22,7 @@ import {
import { Fragment, VNode, h } from "preact";
import {
+ AbsoluteTime,
AccessToken,
HttpStatusCode,
TranslatedString,
@@ -30,13 +31,13 @@ import {
import { useEffect } from "preact/hooks";
import { useBankCoreApiContext } from "./context/config.js";
import { useNavigationContext } from "./context/navigation.js";
-import { useSettingsContext } from "./context/settings.js";
import { useSessionState } from "./hooks/session.js";
import { AccountPage } from "./pages/AccountPage/index.js";
import { BankFrame } from "./pages/BankFrame.js";
import { LoginForm } from "./pages/LoginForm.js";
import { PublicHistoriesPage } from "./pages/PublicHistoriesPage.js";
import { RegistrationPage } from "./pages/RegistrationPage.js";
+import { ShowNotifications } from "./pages/ShowNotifications.js";
import { SolveChallengePage } from "./pages/SolveChallengePage.js";
import { WireTransfer } from "./pages/WireTransfer.js";
import { WithdrawalOperationPage } from "./pages/WithdrawalOperationPage.js";
@@ -58,7 +59,10 @@ export function Routing(): VNode {
if (session.state.status === "loggedIn") {
const { isUserAdministrator, username } = session.state;
return (
- <BankFrame account={username} routeAccountDetails={privatePages.myAccountDetails}>
+ <BankFrame
+ account={username}
+ routeAccountDetails={privatePages.myAccountDetails}
+ >
<PrivateRouting username={username} isAdmin={isUserAdministrator} />
</BankFrame>
);
@@ -90,7 +94,6 @@ function PublicRounting({
}: {
onLoggedUser: (username: string, token: AccessToken) => void;
}): VNode {
- const settings = useSettingsContext();
const { i18n } = useTranslationContext();
const location = useCurrentLocation(publicPages);
const { navigateTo } = useNavigationContext();
@@ -109,12 +112,11 @@ function PublicRounting({
async function doAutomaticLogin(username: string, password: string) {
await handleError(async () => {
- const resp = await authenticator(username)
- .createAccessToken(password, {
- scope: "readwrite",
- duration: { d_us: "forever" },
- refreshable: true,
- });
+ const resp = await authenticator(username).createAccessToken(password, {
+ scope: "readwrite",
+ duration: { d_us: "forever" },
+ refreshable: true,
+ });
if (resp.type === "ok") {
onLoggedUser(username, resp.body.access_token);
} else {
@@ -125,6 +127,7 @@ function PublicRounting({
title: i18n.str`Wrong credentials for "${username}"`,
description: resp.detail.hint as TranslatedString,
debug: resp.detail,
+ when: AbsoluteTime.now(),
});
case HttpStatusCode.NotFound:
return notify({
@@ -132,6 +135,7 @@ function PublicRounting({
title: i18n.str`Account not found`,
description: resp.detail.hint as TranslatedString,
debug: resp.detail,
+ when: AbsoluteTime.now(),
});
default:
assertUnreachable(resp);
@@ -198,14 +202,12 @@ export const privatePages = {
() => "#/account/charge-wallet",
),
homeWireTransfer: urlPattern<{
- account?: string,
- subject?: string,
- amount?: string,
- }>(
- /\/account\/wire-transfer/,
- () => "#/account/wire-transfer",
- ),
+ account?: string;
+ subject?: string;
+ amount?: string;
+ }>(/\/account\/wire-transfer/, () => "#/account/wire-transfer"),
home: urlPattern(/\/account/, () => "#/account"),
+ notifications: urlPattern(/\/notifications/, () => "#/notifications"),
solveSecondFactor: urlPattern(/\/2fa/, () => "#/2fa"),
cashoutCreate: urlPattern(/\/new-cashout/, () => "#/new-cashout"),
cashoutDetails: urlPattern<{ cid: string }>(
@@ -213,9 +215,9 @@ export const privatePages = {
({ cid }) => `#/cashout/${cid}`,
),
wireTranserCreate: urlPattern<{
- account?: string,
- subject?: string,
- amount?: string,
+ account?: string;
+ subject?: string;
+ amount?: string;
}>(
/\/wire-transfer\/(?<account>[a-zA-Z0-9]+)/,
({ account }) => `#/wire-transfer/${account}`,
@@ -278,7 +280,6 @@ function PrivateRouting({
switch (location.name) {
case "operationDetails": {
-
return (
<WithdrawalOperationPage
operationId={location.values.wopid}
@@ -293,7 +294,6 @@ function PrivateRouting({
);
}
case "startOperation": {
-
return (
<WithdrawalOperationPage
operationId={location.values.wopid}
@@ -563,17 +563,19 @@ function PrivateRouting({
);
}
case "conversionConfig": {
- return <ConversionConfig
- routeMyAccountCashout={privatePages.myAccountCashouts}
- routeMyAccountDelete={privatePages.myAccountDelete}
- routeMyAccountDetails={privatePages.myAccountDetails}
- routeMyAccountPassword={privatePages.myAccountPassword}
- routeConversionConfig={privatePages.conversionConfig}
- routeCancel={privatePages.home}
- onUpdateSuccess={() => {
- navigateTo(privatePages.home.url({}))
- }}
- />;
+ return (
+ <ConversionConfig
+ routeMyAccountCashout={privatePages.myAccountCashouts}
+ routeMyAccountDelete={privatePages.myAccountDelete}
+ routeMyAccountDetails={privatePages.myAccountDetails}
+ routeMyAccountPassword={privatePages.myAccountPassword}
+ routeConversionConfig={privatePages.conversionConfig}
+ routeCancel={privatePages.home}
+ onUpdateSuccess={() => {
+ navigateTo(privatePages.home.url({}));
+ }}
+ />
+ );
}
case "homeWireTransfer": {
return (
@@ -598,6 +600,9 @@ function PrivateRouting({
/>
);
}
+ case "notifications": {
+ return <ShowNotifications />;
+ }
default:
assertUnreachable(location);
}