From 98bda19d962ece520591a1016bce67b3d54d57b8 Mon Sep 17 00:00:00 2001
From: Fatih20 <fnri39@protonmail.com>
Date: Fri, 17 Nov 2023 05:44:00 +0700
Subject: [PATCH] Fix bug in protecting routes.

---
 src/components/HomeLayout.tsx      | 20 ++++++++------------
 src/components/ProtectedLayout.tsx | 21 ++++++++-------------
 2 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/src/components/HomeLayout.tsx b/src/components/HomeLayout.tsx
index 80b5dca..8662252 100644
--- a/src/components/HomeLayout.tsx
+++ b/src/components/HomeLayout.tsx
@@ -1,28 +1,24 @@
 import { useUser } from "@/utils/context/AuthProvider";
-import { useEffect, useState } from "react";
+import { useEffect } from "react";
 import { Outlet, useNavigate } from "react-router-dom";
 
 function HomeLayout() {
   const { user, status } = useUser();
-  const [showingLoading, setShowingLoading] = useState(true);
   const nav = useNavigate();
   useEffect(() => {
     if (user && status === "success") {
       nav("/");
     }
-
-    if (status === "success") {
-      setTimeout(() => {
-        setShowingLoading(false), 1000;
-      });
-    }
   }, [user, nav, status]);
 
-  if (showingLoading) {
-    <div className="bg-black/50 w-screen h-screen flex flex-col items-center justify-center">
-      Loading
-    </div>;
+  if (status === "loading") {
+    return (
+      <div className="bg-black/50 w-screen h-screen flex flex-col items-center justify-center">
+        Loading
+      </div>
+    );
   }
+
   return (
     <div className="min-h-screen w-screen flex flex-col items-center justify-center">
       <main>
diff --git a/src/components/ProtectedLayout.tsx b/src/components/ProtectedLayout.tsx
index 1f7aa9e..c76d361 100644
--- a/src/components/ProtectedLayout.tsx
+++ b/src/components/ProtectedLayout.tsx
@@ -2,29 +2,24 @@ import NavWrapper from "@/components/NavWrapper";
 import { useUser } from "@/utils/context/AuthProvider";
 import GymApplicationProvider from "@/utils/context/GymApplicationProvider";
 import GymProvider from "@/utils/context/GymProvider";
-import { useEffect, useState } from "react";
+import { useEffect } from "react";
 import { useNavigate, Outlet } from "react-router-dom";
 
 function ProtectedLayout() {
   const { user, status } = useUser();
-  const [showingLoading, setShowingLoading] = useState(true);
   const nav = useNavigate();
   useEffect(() => {
-    if (!user && status === "success") {
+    if ((!user && status === "success") || status === "error") {
       nav("/login");
     }
-
-    if (status === "success") {
-      setTimeout(() => {
-        setShowingLoading(false), 1000;
-      });
-    }
   }, [user, nav, status]);
 
-  if (showingLoading) {
-    <div className="bg-black/50 w-screen h-screen flex flex-col items-center justify-center">
-      Loading
-    </div>;
+  if (!user) {
+    return (
+      <div className="bg-black/50 w-screen h-screen flex flex-col items-center justify-center">
+        Loading
+      </div>
+    );
   }
 
   return (
-- 
GitLab