From f8c656b0894016576e6effe0259c4defa08d27f4 Mon Sep 17 00:00:00 2001 From: chetan Date: Wed, 29 May 2024 17:01:51 +0530 Subject: [PATCH] FIX: data fetch request is send to backend without user logedin causes error solved --- client/src/Context/UserContext.jsx | 39 ++++-------- client/src/components/Dashboard/Dashboard.jsx | 55 +++++++++-------- client/src/components/Footer/index.jsx | 7 +-- client/src/components/Navbar/Navbar.jsx | 59 +++++++++++-------- 4 files changed, 78 insertions(+), 82 deletions(-) diff --git a/client/src/Context/UserContext.jsx b/client/src/Context/UserContext.jsx index d8c8032..af6aaa8 100644 --- a/client/src/Context/UserContext.jsx +++ b/client/src/Context/UserContext.jsx @@ -1,21 +1,13 @@ import { createContext, useEffect, useState } from "react"; import axios from "axios"; -import { Loader } from "../components/Loader/Loader"; -import { useNavigate } from "react-router-dom"; export const UserContext = createContext(); export const UserContextProvider = ({ children }) => { const [user, setUser] = useState(null); - const navigate = useNavigate(); - const [loading, setLoading] = useState(true); const token = localStorage.getItem("token"); - if (!token) { - navigate("/login"); - } - const config = { headers: { Authorization: `Bearer ${token}`, @@ -24,28 +16,21 @@ export const UserContextProvider = ({ children }) => { }; const getUser = async () => { - try { - const res = await axios.get( - `${import.meta.env.VITE_BASE_URL}/user/get`, - config - ); - console.log(res.data); - if (res.data.isverified === true) { - setUser(res.data); + if (token) { + try { + const res = await axios.get( + `${import.meta.env.VITE_BASE_URL}/user/get`, + config + ); + console.log(res.data); + if (res.data.isverified === true) { + setUser(res.data); + } + } catch (error) { + console.log(error); } - } catch (error) { - console.log(error); - } finally { - setLoading(false); } }; - useEffect(() => { - getUser(); - }, []); - - if (loading) { - return ; - } return ( diff --git a/client/src/components/Dashboard/Dashboard.jsx b/client/src/components/Dashboard/Dashboard.jsx index 990273b..bbf71d3 100644 --- a/client/src/components/Dashboard/Dashboard.jsx +++ b/client/src/components/Dashboard/Dashboard.jsx @@ -15,32 +15,35 @@ const Dashboard = () => { if (!token) { navigate("/login"); } - axios - .get(`${import.meta.env.VITE_BASE_URL}/user/get`, { - headers: { - authorization: `Bearer ${token}`, - }, - }) - .then((res) => { - console.log(res.data); - if (!res.data.isverified) { - navigate("/verifyotp"); - } else { - setUser(res.data); - } - setLoading(false); - }) - .catch((err) => { - console.log(err.response.data.message); - if ( - err.response.data.message === "Unauthorized" || - err.response.data.message === "Failed to verify token" || - err.response.data.message === "User not found" - ) { - localStorage.removeItem("token"); - navigate("/login"); - } - }); + + if (token) { + axios + .get(`${import.meta.env.VITE_BASE_URL}/user/get`, { + headers: { + authorization: `Bearer ${token}`, + }, + }) + .then((res) => { + console.log(res.data); + if (!res.data.isverified) { + navigate("/verifyotp"); + } else { + setUser(res.data); + } + setLoading(false); + }) + .catch((err) => { + console.log(err.response.data.message); + if ( + err.response.data.message === "Unauthorized" || + err.response.data.message === "Failed to verify token" || + err.response.data.message === "User not found" + ) { + localStorage.removeItem("token"); + navigate("/login"); + } + }); + } }, []); if (loading) { diff --git a/client/src/components/Footer/index.jsx b/client/src/components/Footer/index.jsx index eb550a3..99d73d0 100644 --- a/client/src/components/Footer/index.jsx +++ b/client/src/components/Footer/index.jsx @@ -48,7 +48,6 @@ const Footer = () => { Contact {lang[langKey].PrivacyPolicy} -
  • @@ -62,10 +61,10 @@ const Footer = () => {
  • -
    - +
    + © {new Date().getFullYear()} - + ExamTime . All Rights Reserved. diff --git a/client/src/components/Navbar/Navbar.jsx b/client/src/components/Navbar/Navbar.jsx index c755443..a328851 100644 --- a/client/src/components/Navbar/Navbar.jsx +++ b/client/src/components/Navbar/Navbar.jsx @@ -5,8 +5,8 @@ import { Badge, Button } from "@material-tailwind/react"; import { UserContext } from "../../Context/UserContext"; import axios from "axios"; import { useLocation, useNavigate } from "react-router"; -import Login from "../Login/Login.jsx"; import { Link } from "react-router-dom"; +import { Bounce, toast } from "react-toastify"; function classNames(...classes) { return classes.filter(Boolean).join(" "); @@ -46,24 +46,27 @@ const Navbar = () => { }, withCredentials: true, }; - axios - .get(`${import.meta.env.VITE_BASE_URL}/request`, config) - .then((res) => { - setRequests(res.data); - }) - .catch((error) => { - toast.error("An error occurred", { - position: "top-right", - autoClose: 5000, - hideProgressBar: false, - closeOnClick: false, - pauseOnHover: false, - draggable: false, - progress: undefined, - theme: "light", - transition: Bounce, + + if (token) { + axios + .get(`${import.meta.env.VITE_BASE_URL}/request`, config) + .then((res) => { + setRequests(res.data); + }) + .catch((error) => { + toast.error("An error occurred", { + position: "top-right", + autoClose: 5000, + hideProgressBar: false, + closeOnClick: false, + pauseOnHover: false, + draggable: false, + progress: undefined, + theme: "light", + transition: Bounce, + }); }); - }); + } } catch (error) { console.log(error); } @@ -80,7 +83,7 @@ const Navbar = () => { } else if (loc === "/question") { setRequestNav(false); setUploadNav(false); - setQuestionNav(true) + setQuestionNav(true); } else if (loc === "/leaderboard") { setleaderBoardNav(true); setRequestNav(false); @@ -133,12 +136,19 @@ const Navbar = () => { d="M9 8.25H7.5a2.25 2.25 0 00-2.25 2.25v9a2.25 2.25 0 002.25 2.25h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25H15m0-3l-3-3m0 0l-3 3m3-3V15" /> - ) : item.name === "Ask a Question" ? ( - - - + ) : item.name === "Ask a Question" ? ( + + + - ) :item.name === "Leaderboard" ? ( + ) : item.name === "Leaderboard" ? ( { -