import { Button, IconButton, Tooltip } from "@mui/joy"; import clsx from "clsx"; import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"; import { Suspense, useEffect, useState } from "react"; import { Outlet, useLocation } from "react-router-dom"; import useLocalStorage from "react-use/lib/useLocalStorage"; import Navigation from "@/components/Navigation"; import useCurrentUser from "@/hooks/useCurrentUser"; import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import Loading from "@/pages/Loading"; import { Routes } from "@/router"; import { useMemoFilterStore } from "@/store/v1"; import { useTranslate } from "@/utils/i18n"; const RootLayout = () => { const t = useTranslate(); const location = useLocation(); const { sm } = useResponsiveWidth(); const currentUser = useCurrentUser(); const memoFilterStore = useMemoFilterStore(); const [collapsed, setCollapsed] = useLocalStorage("navigation-collapsed", false); const [initialized, setInitialized] = useState(false); useEffect(() => { if (!currentUser) { if (([Routes.ROOT, Routes.RESOURCES, Routes.INBOX, Routes.ARCHIVED, Routes.SETTING] as string[]).includes(location.pathname)) { window.location.href = Routes.EXPLORE; return; } } setInitialized(true); }, []); useEffect(() => { // When the route changes, remove all filters. memoFilterStore.removeFilter(() => true); }, [location.pathname]); return !initialized ? ( ) : (
{sm && (
setCollapsed(!collapsed)} > {!collapsed ? ( ) : ( )}
)}
}>
); }; export default RootLayout;