remove project router, make everything from root

This commit is contained in:
Proddy
2023-02-28 18:48:00 +01:00
parent c8ea1d0c8a
commit 9e3c4134e1
8 changed files with 29 additions and 79 deletions

View File

@@ -42,9 +42,7 @@ const App: FC = () => {
</IconButton>
)}
>
{/* <FeaturesLoader> */}
<AppRouting />
{/* </FeaturesLoader> */}
</SnackbarProvider>
</CustomTheme>
</TypesafeI18n>

View File

@@ -3,11 +3,12 @@ import { Navigate, Routes, Route, useNavigate, useLocation } from 'react-router-
import { AxiosError } from 'axios';
import * as AuthenticationApi from 'api/authentication';
import { PROJECT_PATH } from 'api/env';
import { AXIOS } from 'api/endpoints';
import { Layout, RequireAdmin } from 'components';
import ProjectRouting from 'project/ProjectRouting';
import Dashboard from './project/Dashboard';
import Settings from './project/Settings';
import Help from './project/Help';
import NetworkConnection from 'framework/network/NetworkConnection';
import AccessPoint from 'framework/ap/AccessPoint';
@@ -39,7 +40,17 @@ const AuthenticatedRouting: FC = () => {
return (
<Layout>
<Routes>
<Route path={`/${PROJECT_PATH}/*`} element={<ProjectRouting />} />
<Route path="/dashboard/*" element={<Dashboard />} />
<Route
path="/settings/*"
element={
<RequireAdmin>
<Settings />
</RequireAdmin>
}
/>
<Route path="/help/*" element={<Help />} />
<Route path="/network/*" element={<NetworkConnection />} />
<Route path="/ap/*" element={<AccessPoint />} />
<Route path="/ntp/*" element={<NetworkTime />} />

View File

@@ -6,13 +6,10 @@ import { Path } from 'react-router-dom';
import { Me, SignInRequest, SignInResponse } from 'types';
import { ACCESS_TOKEN, AXIOS } from './endpoints';
import { PROJECT_PATH } from './env';
export const SIGN_IN_PATHNAME = 'loginPathname';
export const SIGN_IN_SEARCH = 'loginSearch';
export const getDefaultRoute = `/${PROJECT_PATH}`;
export function verifyAuthorization(): AxiosPromise<void> {
return AXIOS.get('/verifyAuthorization');
}
@@ -21,9 +18,6 @@ export function signIn(request: SignInRequest): AxiosPromise<SignInResponse> {
return AXIOS.post('/signIn', request);
}
/**
* Fallback to sessionStorage if localStorage is absent. WebView may not have local storage enabled.
*/
export function getStorage() {
return localStorage || sessionStorage;
}
@@ -45,7 +39,7 @@ export function fetchLoginRedirect(): Partial<Path> {
const signInSearch = getStorage().getItem(SIGN_IN_SEARCH);
clearLoginRedirect();
return {
pathname: signInPathname || `/${PROJECT_PATH}`,
pathname: signInPathname || `/dashboard`,
search: (signInPathname && signInSearch) || undefined
};
}

View File

@@ -1,2 +1 @@
export const PROJECT_NAME = 'EMS-ESP';
export const PROJECT_PATH = 'project';

View File

@@ -9,9 +9,12 @@ import SettingsIcon from '@mui/icons-material/Settings';
import LockIcon from '@mui/icons-material/Lock';
import SettingsEthernetIcon from '@mui/icons-material/SettingsEthernet';
import ProjectMenu from 'project/ProjectMenu';
import TuneIcon from '@mui/icons-material/Tune';
import DashboardIcon from '@mui/icons-material/Dashboard';
import InfoIcon from '@mui/icons-material/Info';
import LayoutMenuItem from 'components/layout/LayoutMenuItem';
import LayoutMenuItem from './LayoutMenuItem';
import { AuthenticatedContext } from 'contexts/authentication';
import { useI18nContext } from 'i18n/i18n-react';
@@ -23,7 +26,14 @@ const LayoutMenu: FC = () => {
return (
<>
<List disablePadding component="nav">
<ProjectMenu />
<LayoutMenuItem icon={DashboardIcon} label={LL.DASHBOARD()} to={`/dashboard`} />
<LayoutMenuItem
icon={TuneIcon}
label={LL.SETTINGS_OF('')}
to={`/settings`}
disabled={!authenticatedContext.me.admin}
/>
<LayoutMenuItem icon={InfoIcon} label={LL.HELP_OF('')} to={`/help`} />
<Divider />
</List>
<List disablePadding component="nav">

View File

@@ -1,34 +0,0 @@
import { FC, useContext } from 'react';
import { List } from '@mui/material';
import { AuthenticatedContext } from 'contexts/authentication';
import { PROJECT_PATH } from 'api/env';
import { useI18nContext } from 'i18n/i18n-react';
import TuneIcon from '@mui/icons-material/Tune';
import DashboardIcon from '@mui/icons-material/Dashboard';
import LayoutMenuItem from 'components/layout/LayoutMenuItem';
import InfoIcon from '@mui/icons-material/Info';
const ProjectMenu: FC = () => {
const authenticatedContext = useContext(AuthenticatedContext);
const { LL } = useI18nContext();
return (
<List>
<LayoutMenuItem icon={DashboardIcon} label={LL.DASHBOARD()} to={`/${PROJECT_PATH}/dashboard`} />
<LayoutMenuItem
icon={TuneIcon}
label={LL.SETTINGS_OF('')}
to={`/${PROJECT_PATH}/settings`}
disabled={!authenticatedContext.me.admin}
/>
<LayoutMenuItem icon={InfoIcon} label={LL.HELP_OF('')} to={`/${PROJECT_PATH}/help`} />
</List>
);
};
export default ProjectMenu;

View File

@@ -1,28 +0,0 @@
import { FC } from 'react';
import { Navigate, Routes, Route } from 'react-router-dom';
import { RequireAdmin } from 'components';
import Dashboard from './Dashboard';
import Settings from './Settings';
import Help from './Help';
const ProjectRouting: FC = () => {
return (
<Routes>
<Route path="dashboard/*" element={<Dashboard />} />
<Route
path="settings/*"
element={
<RequireAdmin>
<Settings />
</RequireAdmin>
}
/>
<Route path="help/*" element={<Help />} />
<Route path="/*" element={<Navigate to="dashboard/data" />} />
</Routes>
);
};
export default ProjectRouting;

View File

@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.6.0-dev.0"
#define EMSESP_APP_VERSION "3.6.0-dev.1"