-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathApp.tsx
More file actions
89 lines (79 loc) · 2.84 KB
/
App.tsx
File metadata and controls
89 lines (79 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { BrowserRouter, Outlet, Route, Routes } from "react-router-dom";
import AvailableRidesComponent from "./Pages/Availablerides"
import ProfileComponent from './Pages/Profile.tsx'
import Start from "./Pages/Start";
import Login from "./Pages/Login";
import Start1 from "./Pages/Start1";
import Start2 from "./Pages/Start2";
import NotFound from "./Pages/NotFound";
import Requests from "./Pages/Requests/Index";
import MyRides from "./Pages/MyRides";
import { ToastContainer } from "react-toastify";
import { AuthProvider, useAuth } from "./Hooks/useAuth";
import Navigation from "./Components/Navigation";
import LocationForm from "./Components/LocationForm";
import Notifications from "./Pages/Notifications";
import FaqAccordion from "./Pages/Faq";
import AccountPage from "./Pages/Account";
import LoadingScreen from "./Components/LoadingScreen";
import React from "react";
import NewAccountSignup from "./Pages/NewAccountSignup.tsx";
import Redirect from "./Components/Redirect.tsx";
import usePushNotifications from "./Hooks/usePushNotifications";
const App: React.FC = () => {
return (
<AuthProvider>
<CustomRouter />
<ToastContainer />
</AuthProvider>
);
};
const CustomRouter = () => {
const { authLoading, user, hasSignedUp } = useAuth()
usePushNotifications(user);
return (
<BrowserRouter>
<LoadingScreen isOpen={authLoading} />
<Routes>
<Route path="/start" element={<Start />} />
<Route path="/start1" element={<Start1 />} />
<Route path="/start2" element={<Start2 />} />
<Route path="/faq" element={<FaqAccordion />} />
<Route path="/login" element={<Login />} />
<Route path="/sign-up" element={<NewAccountSignup />} />
{authLoading ? null : !user ? (
<>
<Route path="*" element={<Redirect to="/start" />} />
</>
) : !hasSignedUp ? (
<>
<Route path="*" element={<Redirect to="/sign-up" />} />
</>
) : (
<>
<Route element={<Layout />}>
<Route index element={<AvailableRidesComponent />} />
<Route path="/create-ride" element={<LocationForm />} />
<Route path="/suggestions" element={<AvailableRidesComponent />} />
<Route path="/requests" element={<Requests />} />
<Route path="/account" element={<AccountPage />} />
<Route path="/profile" element={<ProfileComponent />} />
<Route path="/notifications" element={<Notifications />} />
<Route path="/my-rides" element={<MyRides />} />
</Route>
</>
)}
<Route path="*" element={authLoading ? null : <NotFound />} />
</Routes>
</BrowserRouter >
);
};
const Layout = () => {
return (
<div>
<Outlet />
<Navigation />
</div>
);
};
export default App;