11import { BrowserRouter as Router , Route , Routes } from "react-router-dom" ;
22import Navbar from "./components/NavBar" ;
33import Footer from "./components/Footer" ;
4- import React , { Suspense } from "react" ;
4+ import React , { Suspense , useState } from "react" ;
55import LoadingSpinner from "./helpers/LoadingSpinner" ;
66import { UserProvider } from "./contexts/UserContext" ;
77import { GradientProvider } from "./contexts/GradientContext" ;
@@ -17,6 +17,27 @@ const EmailVerificationPage = React.lazy(
1717const ResetPasswordPage = React . lazy ( ( ) => import ( "./pages/ResetPasswordPage" ) ) ;
1818
1919function App ( ) {
20+ const [ isReady , setIsReady ] = useState ( false ) ;
21+
22+ const AppRoutes = ( ) => {
23+ React . useEffect ( ( ) => {
24+ setIsReady ( true ) ;
25+ } , [ ] ) ;
26+ return (
27+ < Routes >
28+ < Route path = "/" element = { < HomePage /> } />
29+ < Route
30+ path = "/verify-email"
31+ element = { < EmailVerificationPage /> }
32+ />
33+ < Route
34+ path = "/reset-password"
35+ element = { < ResetPasswordPage /> }
36+ />
37+ </ Routes >
38+ ) ;
39+ } ;
40+
2041 return (
2142 < >
2243 < Toaster />
@@ -26,20 +47,10 @@ function App() {
2647 < GradientProvider >
2748 < SocketProvider >
2849 < Navbar />
29- < Suspense fallback = { < LoadingSpinner /> } >
30- < Routes >
31- < Route path = "/" element = { < HomePage /> } />
32- < Route
33- path = "/verify-email"
34- element = { < EmailVerificationPage /> }
35- />
36- < Route
37- path = "/reset-password"
38- element = { < ResetPasswordPage /> }
39- />
40- </ Routes >
50+ < Suspense fallback = { < LoadingSpinner fullScreen overlay /> } >
51+ < AppRoutes />
4152 </ Suspense >
42- < Footer />
53+ { isReady && < Footer /> }
4354 </ SocketProvider >
4455 </ GradientProvider >
4556 </ UserProvider >
0 commit comments