58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
import { h } from "preact";
|
|
import { Router, route } from "preact-router";
|
|
import {Header, Menu} from "./";
|
|
import { menuReducer, sessionReducer } from "../store/reducers";
|
|
import { useReducer } from "preact/hooks";
|
|
import { Home, Users, Profile, Login, Logout } from "../route";
|
|
import { AppStateProvider } from "../store/AppState";
|
|
function App() {
|
|
// useReducer
|
|
const menu = useReducer(menuReducer, false);
|
|
const session = useReducer(sessionReducer, {active: true});
|
|
this.menu_items = [
|
|
{ text: "Übersicht", path: "/" },
|
|
{ text: "Benutzer", path: "/users" },
|
|
{ text: "System", path: "/system" },
|
|
{ text: "Profil", path: "/profile" },
|
|
{ text: "Abmelden", path: "/logout" }
|
|
]
|
|
this.handleRoute = async e => {
|
|
switch (e.url) {
|
|
default:
|
|
if (!session[0].active) route('/login', true);
|
|
break;
|
|
}
|
|
};
|
|
return (
|
|
|
|
<AppStateProvider value={{ menu, session}} >
|
|
<div id="wrapper">
|
|
<Header />
|
|
<div class="page">
|
|
<Menu items={this.menu_items} />
|
|
{!menu[0] &&
|
|
|
|
<Router onChange={this.handleRoute}>
|
|
<Home path="/" user="me" />
|
|
<Login path="login" />
|
|
<Profile path="/profile" />
|
|
<Logout path="/logout" />
|
|
<Users path="/users" />
|
|
<div class="container" default>Error 404</div>
|
|
</Router>
|
|
}
|
|
</div>
|
|
<footer>
|
|
<div className="container" style={'text-align: center; align-items: center'}>
|
|
<span>© Jean Jacques Avril 2022 </span>
|
|
</div>
|
|
|
|
</footer>
|
|
</div>
|
|
</AppStateProvider>
|
|
);
|
|
|
|
}
|
|
|
|
export default App;
|