source: reactapp/src/App.js@ 62b653f

main
Last change on this file since 62b653f was 62b653f, checked in by unknown <mlviktor23@…>, 22 months ago

implemented upvote/downvote func. in react

  • Property mode set to 100644
File size: 2.7 KB
Line 
1import Professor from "./Pages/Professor";
2import SearchResults from "./Pages/SearchResults";
3import Login from "./Pages/Login";
4import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
5import Home from "./Pages/Home";
6import UserDashboard from "./Pages/UserDashboard";
7import { useEffect, useState, useMemo } from "react";
8import AuthApi from "./api/AuthApi";
9import Cookies from "js-cookie";
10import axios from "./api/axios";
11import JSOG from "jsog";
12
13export default function App() {
14 const [auth, setAuth] = useState(false);
15 const [user, setUser] = useState(null);
16 const [userLoaded, setUserLoaded] = useState(false);
17 const variableAuth = useMemo(() => ({ auth, setAuth }), [auth]);
18 const [authLoaded, setAuthLoaded] = useState(false);
19
20 const fetchUser = async () => {
21 try {
22 const response = await axios.get(
23 "http://192.168.0.17:8080/secure/currentUser",
24 { withCredentials: true }
25 );
26 var cyclicGraph = await response.data;
27 var jsogStructure = JSOG.encode(cyclicGraph);
28 cyclicGraph = JSOG.decode(jsogStructure);
29 setUser(cyclicGraph);
30 setUserLoaded(true);
31 } catch (error) {
32 console.log("Fetching error", error);
33 }
34 };
35
36 const readCookie = async () => {
37 const session = Cookies.get("JSESSIONID");
38 if (session) {
39 setAuth(true); // go stava true ako postoi takvo cookie (zasto auth=false na sekoe renderiranje)
40 fetchUser();
41 } else {
42 setAuth(false);
43 }
44 setAuthLoaded(true);
45 };
46
47 useEffect(() => {
48 readCookie();
49 }, []);
50
51 const ProtectedRoute = ({ auth, children }) => {
52 if (authLoaded) {
53 if (!auth) {
54 return <Navigate to="/login" replace />;
55 }
56 return children;
57 } else {
58 return <div>се вчитува cookie...</div>;
59 }
60 };
61
62 return (
63 <AuthApi.Provider value={variableAuth}>
64 <BrowserRouter>
65 <Routes>
66 <Route
67 path="/"
68 element={<Home user={user} userLoaded={userLoaded} />}
69 >
70 <Route path="login" element={<Login />}></Route>
71 <Route path="professor">
72 <Route
73 path=":professorId"
74 element={<Professor user={user} userLoaded={userLoaded} />}
75 />
76 </Route>
77 <Route path="search" element={<SearchResults />}></Route>
78 <Route
79 path="user_dashboard"
80 element={
81 <ProtectedRoute auth={auth}>
82 {<UserDashboard user={user} userLoaded={userLoaded} />}
83 </ProtectedRoute>
84 }
85 ></Route>
86 </Route>
87 </Routes>
88 </BrowserRouter>
89 </AuthApi.Provider>
90 );
91}
Note: See TracBrowser for help on using the repository browser.