feat: use autoredirect for homepage

This commit is contained in:
me
2026-05-07 04:59:55 +05:30
parent 8cca16a0f9
commit 167b1d2875
+77 -73
View File
@@ -1,6 +1,6 @@
import { lazy, Suspense, useEffect, useRef } from "react"; import { lazy, Suspense, useEffect, useRef } from "react";
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom"; import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import { ProtectedRoute, PublicRoute } from "./components/RouteGuards"; import { ProtectedRoute, AutoRedirectRoute } from "./components/RouteGuards";
import SplashScreen from "./components/SplashScreen"; import SplashScreen from "./components/SplashScreen";
import { ROUTES } from "./config/routes"; import { ROUTES } from "./config/routes";
import { useAuth } from "./hooks/useAuth"; import { useAuth } from "./hooks/useAuth";
@@ -16,81 +16,85 @@ const VerifyEmail = lazy(() => import("./pages/VerifyEmail"));
const About = lazy(() => import("./pages/About")); const About = lazy(() => import("./pages/About"));
export default function App() { export default function App() {
const { initialize, isInitializing } = useAuth(); const { initialize, isInitializing } = useAuth();
const authInitialized = useRef<boolean>(false); const authInitialized = useRef<boolean>(false);
useEffect(() => { useEffect(() => {
if (authInitialized.current) return; if (authInitialized.current) return;
authInitialized.current = true; authInitialized.current = true;
initialize().then(); initialize().then();
}, [initialize]); }, [initialize]);
if (isInitializing) { if (isInitializing) {
return <SplashScreen />; return <SplashScreen />;
} }
return ( return (
<BrowserRouter> <BrowserRouter>
<main className="relative min-h-screen min-w-screen flex items-center justify-center w-full bg-base-200 before:absolute before:top-0 before:left-0 before:w-full before:h-full before:content-[''] before:opacity-[0.03] before:z-50 before:pointer-events-none before:bg-[url('assets/noise.gif')]"> <main className="relative min-h-screen min-w-screen flex items-center justify-center w-full bg-base-200 before:absolute before:top-0 before:left-0 before:w-full before:h-full before:content-[''] before:opacity-[0.03] before:z-50 before:pointer-events-none before:bg-[url('assets/noise.gif')]">
<Suspense fallback={<SplashScreen />}> <Suspense fallback={<SplashScreen />}>
<Routes> <Routes>
<Route path={ROUTES.HOME} element={<Home />} /> <Route path={ROUTES.HOME} element={
<AutoRedirectRoute>
<Home />
</AutoRedirectRoute>
} />
<Route <Route
path={ROUTES.ONBOARD} path={ROUTES.ONBOARD}
element={ element={
<PublicRoute> <AutoRedirectRoute>
<Register /> <Register />
</PublicRoute> </AutoRedirectRoute>
} }
/> />
<Route <Route
path={ROUTES.LOGIN} path={ROUTES.LOGIN}
element={ element={
<PublicRoute> <AutoRedirectRoute>
<Login /> <Login />
</PublicRoute> </AutoRedirectRoute>
} }
/> />
<Route <Route
path={ROUTES.VERIFY_EMAIL} path={ROUTES.VERIFY_EMAIL}
element={ element={
<PublicRoute> <AutoRedirectRoute>
<VerifyEmail /> <VerifyEmail />
</PublicRoute> </AutoRedirectRoute>
} }
/> />
<Route <Route
path={ROUTES.ACTIVATE} path={ROUTES.ACTIVATE}
element={ element={
<PublicRoute> <AutoRedirectRoute>
<Activate /> <Activate />
</PublicRoute> </AutoRedirectRoute>
} }
/> />
<Route <Route
path={ROUTES.DRAWER} path={ROUTES.DRAWER}
element={ element={
<ProtectedRoute> <ProtectedRoute>
<Drawer /> <Drawer />
</ProtectedRoute> </ProtectedRoute>
} }
/> />
<Route <Route
path={ROUTES.WRITE} path={ROUTES.WRITE}
element={ element={
<ProtectedRoute> <ProtectedRoute>
<Editor /> <Editor />
</ProtectedRoute> </ProtectedRoute>
} }
/> />
<Route path={ROUTES.READ} element={<Reader />} /> <Route path={ROUTES.READ} element={<Reader />} />
<Route path={ROUTES.ABOUT} element={<About />} /> <Route path={ROUTES.ABOUT} element={<About />} />
<Route path="*" element={<Navigate to={ROUTES.HOME} replace />} /> <Route path="*" element={<Navigate to={ROUTES.HOME} replace />} />
</Routes> </Routes>
</Suspense> </Suspense>
</main> </main>
</BrowserRouter> </BrowserRouter>
); );
} }