source: frontend/src/App.js@ 13f1472

Last change on this file since 13f1472 was 13f1472, checked in by Danilo <danilo.najkov@…>, 21 months ago

vip functionallity + menu fields + alergens filtering + google/fb login + email queueing

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