From 93e848d170915ee149224c2bee4927d18a3466bf Mon Sep 17 00:00:00 2001 From: Steven Date: Tue, 28 May 2024 19:59:29 +0800 Subject: [PATCH] chore: tweak root redirector --- .../{HomeLayout.tsx => RootLayout.tsx} | 32 ++++++++++++------- web/src/pages/RootRedirector.tsx | 20 ------------ web/src/router/index.tsx | 11 ++----- 3 files changed, 24 insertions(+), 39 deletions(-) rename web/src/layouts/{HomeLayout.tsx => RootLayout.tsx} (78%) delete mode 100644 web/src/pages/RootRedirector.tsx diff --git a/web/src/layouts/HomeLayout.tsx b/web/src/layouts/RootLayout.tsx similarity index 78% rename from web/src/layouts/HomeLayout.tsx rename to web/src/layouts/RootLayout.tsx index fefedc2ce..e0cf853e0 100644 --- a/web/src/layouts/HomeLayout.tsx +++ b/web/src/layouts/RootLayout.tsx @@ -10,23 +10,33 @@ import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import Loading from "@/pages/Loading"; import { Routes } from "@/router"; -const HomeLayout = () => { +const RootLayout = () => { const location = useLocation(); const { sm } = useResponsiveWidth(); const currentUser = useCurrentUser(); + const [lastVisited] = useLocalStorage("lastVisited", "/home"); const [collapsed, setCollapsed] = useLocalStorage("navigation-collapsed", false); const [initialized, setInitialized] = useState(false); - // Redirect to explore page if not logged in. useEffect(() => { - if ( - !currentUser && - ([Routes.HOME, Routes.TIMELINE, Routes.RESOURCES, Routes.INBOX, Routes.ARCHIVED, Routes.SETTING] as string[]).includes( - location.pathname, - ) - ) { - window.location.href = Routes.EXPLORE; - return; + if (!currentUser) { + if ( + ([Routes.ROOT, Routes.HOME, Routes.TIMELINE, Routes.RESOURCES, Routes.INBOX, Routes.ARCHIVED, Routes.SETTING] as string[]).includes( + location.pathname, + ) + ) { + window.location.href = Routes.EXPLORE; + return; + } + } else { + if (location.pathname === Routes.ROOT) { + if (lastVisited && ([Routes.HOME, Routes.TIMELINE] as string[]).includes(lastVisited)) { + window.location.href = lastVisited; + } else { + window.location.href = Routes.HOME; + } + return; + } } setInitialized(true); @@ -75,4 +85,4 @@ const HomeLayout = () => { ); }; -export default HomeLayout; +export default RootLayout; diff --git a/web/src/pages/RootRedirector.tsx b/web/src/pages/RootRedirector.tsx deleted file mode 100644 index d1632b50b..000000000 --- a/web/src/pages/RootRedirector.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useEffect } from "react"; -import useLocalStorage from "react-use/lib/useLocalStorage"; -import useNavigateTo from "@/hooks/useNavigateTo"; - -const RootRedirector: React.FC = () => { - const [lastVisited] = useLocalStorage("lastVisited", "/home"); - const navigateTo = useNavigateTo(); - - useEffect(() => { - if (lastVisited === "/home" || lastVisited === "/timeline") { - navigateTo(lastVisited); - } else { - navigateTo("/home"); - } - }, []); - - return <>; -}; - -export default RootRedirector; diff --git a/web/src/router/index.tsx b/web/src/router/index.tsx index 58bc443b2..418b21834 100644 --- a/web/src/router/index.tsx +++ b/web/src/router/index.tsx @@ -1,6 +1,6 @@ import { createBrowserRouter } from "react-router-dom"; import App from "@/App"; -import HomeLayout from "@/layouts/HomeLayout"; +import RootLayout from "@/layouts/RootLayout"; import SuspenseWrapper from "@/layouts/SuspenseWrapper"; import About from "@/pages/About"; import Archived from "@/pages/Archived"; @@ -12,7 +12,6 @@ import MemoDetail from "@/pages/MemoDetail"; import NotFound from "@/pages/NotFound"; import PermissionDenied from "@/pages/PermissionDenied"; import Resources from "@/pages/Resources"; -import RootRedirector from "@/pages/RootRedirector"; import Setting from "@/pages/Setting"; import SignIn from "@/pages/SignIn"; import SignUp from "@/pages/SignUp"; @@ -56,13 +55,9 @@ const router = createBrowserRouter([ ], }, { - path: "/", - element: , + path: Routes.ROOT, + element: , children: [ - { - path: Routes.ROOT, - element: , - }, { path: Routes.HOME, element: ,