import { createBrowserRouter, RouterProvider } from "react-router-dom"; import { useEffect, useRef } from "react"; import { useDispatch, useSelector } from "react-redux"; import fetchUserProfile from "./features/fetch-async/fetchUserProfile"; import { TOKEN_UNDEFINED } from "./features/constants"; import RootLayout from "./pages/RootLayout"; import HomePage from "./pages/HomePage"; import RegisterPage from "./pages/RegisterPage"; import LoginPage from "./pages/LoginPage"; import UploadPage from "./pages/UploadPage"; import RagPage from "./pages/RagPage"; const router = createBrowserRouter( [ { path: "/", element: , children: [ { index: true, element: }, { path: "register", element: }, { path: "login", element: }, { path: "upload", element: }, { path: "rag", element: }, ], }, ], { basename: "/ragview" }, ); function App() { const dispatch = useDispatch(); const token = useSelector((state) => state.userDetails.token); const bootstrappedRef = useRef(false); const auth = typeof token === "string" && token !== TOKEN_UNDEFINED && token.trim() !== ""; useEffect(() => { if (!auth) { bootstrappedRef.current = false; return; } if (bootstrappedRef.current) return; bootstrappedRef.current = true; dispatch(fetchUserProfile()); }, [auth, dispatch]); return ; } export default App;