-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
37 lines (33 loc) · 1.32 KB
/
App.js
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
import React, { useEffect } from 'react';
import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom';
import { useDispatch, useSelector } from 'react-redux';
import { handleFetchPolls } from './actions/polls';
import { handleFetchUsers } from './actions/users';
import PollDetails from './components/PollDetails';
import Home from './components/Home';
import Login from './components/Login';
import NewPoll from './components/NewPoll';
import Leaderboard from './components/Leaderboard';
import Navbar from './components/Navbar';
import './App.css';
function App() {
const dispatch = useDispatch();
const authUser = useSelector((state) => state.authUser);
useEffect(() => {
dispatch(handleFetchUsers());
dispatch(handleFetchPolls());
}, [dispatch]);
return (
<Router>
{authUser && <Navbar />}
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/" element={authUser ? <Home /> : <Navigate to="/login" />} />
<Route path="/questions/:id" element={authUser ? <PollDetails /> : <Navigate to="/login" />} />
<Route path="/add" element={authUser ? <NewPoll /> : <Navigate to="/login" />} />
<Route path="/leaderboard" element={authUser ? <Leaderboard /> : <Navigate to="/login" />} />
</Routes>
</Router>
);
}
export default App;