source: frontend/src/App.js@ 49b0bbd

Last change on this file since 49b0bbd was a569b7c, checked in by Danilo <danilo.najkov@…>, 22 months ago

todo items full functionality

  • Property mode set to 100644
File size: 2.7 KB
Line 
1import './App.css';
2import {Route, BrowserRouter as Router, Navigate, Routes, useNavigate} from "react-router-dom";
3import axios from 'axios'
4import env from './env'
5
6import {Spin} from "antd";
7import React, {useEffect, useState} from "react";
8import {Login, Register} from "./Auth/auth";
9import Dashboard from "./Dashboard";
10import Reservations from "./Dashboard/Reservations";
11import FrontPage from "./FrontPage";
12import Restaurant from "./Dashboard/Restaurant";
13import Menu from "./Dashboard/Menu";
14import Review from "./Dashboard/Review";
15import Confirm from "./Auth/Confirm";
16import SendConfirm from "./Auth/SendConfirm";
17import SendReset from "./Auth/SendReset";
18import Reset from "./Auth/Reset";
19import ToDo from "./Dashboard/ToDo";
20
21
22function App() {
23 const [user, setUser] = useState(undefined)
24 const [loading, setLoading] = useState(true)
25 useEffect(()=>{
26 getUser()
27 },[])
28
29 const getUser = () => {
30 setLoading(true)
31 axios.get(env.api+'Users/authed',{headers:{Authorization:localStorage.getItem('Auth')}}).then(res=>{
32 console.log(res.data)
33 setUser(res.data)
34 setLoading(false)
35 })
36 }
37 const logout = () => {
38 setUser(undefined);
39 localStorage.removeItem('Auth');
40 window.location.replace('/')
41 }
42 return (
43 <div style={{textAlign:'center'}}>
44 <Router>
45 <Routes>
46 <Route path="/dashboard" element={loading ? <Spin /> : user ? (user.isAdmin ? <Dashboard setUser={setUser}/> : <Navigate to="/" replace={true} />) : <Navigate to="/login" replace={true} />}>
47 <Route path="/dashboard" element={<Restaurant/>}/>
48 <Route path="/dashboard/menu" element={<Menu/>}/>
49 <Route path="/dashboard/reservations" element={<Reservations/>}/>
50 <Route path="/dashboard/reviews" element={<Review/>}/>
51 <Route path="/dashboard/todo" element={<ToDo/>}/>
52 </Route>
53 <Route path="/login" element={loading ? <Spin /> : !user ? <Login setUser={setUser}/> : <Navigate to="/dashboard" replace={true} />}/>
54 <Route path="/register" element={loading ? <Spin /> : !user ? <Register setUser={setUser}/> : <Navigate to="/dashboard" replace={true} />}/>
55 <Route path="/reset-password" element={loading ? <Spin /> : <SendReset/>}/>
56 <Route path="/reset" element={loading ? <Spin /> : <Reset/>}/>
57 <Route path="/confirm" element={loading ? <Spin /> : <Confirm setUser={setUser} user={user}/>}/>
58 <Route path="/confirm-email" element={loading ? <Spin /> : <SendConfirm setUser={setUser} user={user}/>}/>
59 <Route path="/" element={<FrontPage user={user} logout={logout}/>}/>
60 </Routes>
61 </Router>
62 </div>
63 );
64}
65
66export default App;
Note: See TracBrowser for help on using the repository browser.