Create backup route skeleton

This commit is contained in:
Pierre HUBERT 2025-05-02 15:41:26 +02:00
parent c68ddffc5e
commit f220451e6e
4 changed files with 58 additions and 23 deletions

View File

@ -7,15 +7,16 @@ import {
} from "react-router-dom";
import { AuthApi } from "./api/AuthApi";
import { ServerApi } from "./api/ServerApi";
import { AccountRoute } from "./routes/AccountRoute";
import { AccountsRoute } from "./routes/AccountsRoute";
import { BackupRoute } from "./routes/BackupRoute";
import { HomeRoute } from "./routes/HomeRoute";
import { NotFoundRoute } from "./routes/NotFound";
import { TokensRoute } from "./routes/TokensRoute";
import { LoginRoute } from "./routes/auth/LoginRoute";
import { OIDCCbRoute } from "./routes/auth/OIDCCbRoute";
import { BaseAuthenticatedPage } from "./widgets/BaseAuthenticatedPage";
import { BaseLoginPage } from "./widgets/BaseLoginPage";
import { TokensRoute } from "./routes/TokensRoute";
import { AccountsRoute } from "./routes/AccountsRoute";
import { AccountRoute } from "./routes/AccountRoute";
interface AuthContext {
signedIn: boolean;
@ -41,6 +42,7 @@ export function App() {
<Route path="*" element={<BaseAuthenticatedPage />}>
<Route path="" element={<HomeRoute />} />
<Route path="tokens" element={<TokensRoute />} />
<Route path="backup" element={<BackupRoute />} />
<Route path="accounts" element={<AccountsRoute />} />
<Route path="account/:accountId" element={<AccountRoute />} />

View File

@ -0,0 +1,9 @@
import { MoneyMgrWebRouteContainer } from "../widgets/MoneyMgrWebRouteContainer";
export function BackupRoute(): React.ReactElement {
return (
<MoneyMgrWebRouteContainer label={"Backup & Restore"}>
TODO
</MoneyMgrWebRouteContainer>
);
}

View File

@ -1,4 +1,4 @@
import { mdiApi, mdiCashMultiple, mdiHome } from "@mdi/js";
import { mdiCashMultiple, mdiHome } from "@mdi/js";
import Icon from "@mdi/react";
import {
Divider,
@ -11,10 +11,10 @@ import {
import React from "react";
import { useLocation } from "react-router-dom";
import { useAccounts } from "../hooks/AccountsListProvider";
import { AccountWidget } from "./AccountWidget";
import { RouterLink } from "./RouterLink";
import { AmountWidget } from "./AmountWidget";
import { usePublicMode } from "../hooks/context_providers/PublicModeProvider";
import { AccountWidget } from "./AccountWidget";
import { AmountWidget } from "./AmountWidget";
import { RouterLink } from "./RouterLink";
export function MoneyNavList(): React.ReactElement {
const publicMode = usePublicMode();
@ -28,17 +28,7 @@ export function MoneyNavList(): React.ReactElement {
backgroundColor: "background.paper",
}}
>
<NavLink
label="Accueil"
uri="/"
icon={<Icon path={mdiHome} size={1} />}
/>
<NavLink
label="API Tokens"
uri="/tokens"
icon={<Icon path={mdiApi} size={1} />}
/>
<NavLink label="Home" uri="/" icon={<Icon path={mdiHome} size={1} />} />
<NavLink
label="Accounts"

View File

@ -1,7 +1,9 @@
import { mdiCash } from "@mdi/js";
import { mdiApi, mdiCash } from "@mdi/js";
import Icon from "@mdi/react";
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
import LogoutIcon from "@mui/icons-material/Logout";
import SettingsIcon from "@mui/icons-material/Settings";
import { Button } from "@mui/material";
import { Button, Divider, ListItemIcon, ListItemText } from "@mui/material";
import AppBar from "@mui/material/AppBar";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
@ -10,8 +12,8 @@ import Typography from "@mui/material/Typography";
import * as React from "react";
import { useAuthInfo } from "./BaseAuthenticatedPage";
import { DarkThemeButton } from "./DarkThemeButtonWidget";
import { RouterLink } from "./RouterLink";
import { PublicModeButton } from "./PublicModeButtonWidget";
import { RouterLink } from "./RouterLink";
export function MoneyWebAppBar(p: {
onSignOut: () => void;
@ -63,7 +65,7 @@ export function MoneyWebAppBar(p: {
id="menu-appbar"
anchorEl={anchorEl}
anchorOrigin={{
vertical: "top",
vertical: "bottom",
horizontal: "right",
}}
keepMounted
@ -74,7 +76,39 @@ export function MoneyWebAppBar(p: {
open={Boolean(anchorEl)}
onClose={handleCloseMenu}
>
<MenuItem onClick={signOut}>Sign out</MenuItem>
{/* API tokens */}
<RouterLink to={"/tokens"}>
<MenuItem>
<ListItemIcon>
<Icon path={mdiApi} size={1} />
</ListItemIcon>
<ListItemText secondary="Manage programmatic access to your account">
API Tokens
</ListItemText>
</MenuItem>
</RouterLink>
{/* Backup */}
<RouterLink to={"/backup"}>
<MenuItem>
<ListItemIcon>
<CloudDownloadIcon />
</ListItemIcon>
<ListItemText secondary="Backup and restore your data">
Backup
</ListItemText>
</MenuItem>
</RouterLink>
<Divider />
{/* Sign out */}
<MenuItem onClick={signOut}>
<ListItemIcon>
<LogoutIcon />
</ListItemIcon>
<ListItemText secondary="End your session">Sign out</ListItemText>
</MenuItem>
</Menu>
</div>
</Toolbar>