import { useEffect, useMemo } from "react"; import { Outlet, useLocation, useSearchParams } from "react-router-dom"; import usePrevious from "react-use/lib/usePrevious"; import Navigation from "@/components/Navigation"; import { useMemoFilterContext } from "@/contexts/MemoFilterContext"; import useCurrentUser from "@/hooks/useCurrentUser"; import useMediaQuery from "@/hooks/useMediaQuery"; import useNavigateTo from "@/hooks/useNavigateTo"; import { cn } from "@/lib/utils"; import { ROUTES } from "@/router/routes"; import { redirectOnAuthFailure } from "@/utils/auth-redirect"; const RootLayout = () => { const location = useLocation(); const [searchParams] = useSearchParams(); const sm = useMediaQuery("sm"); const currentUser = useCurrentUser(); const navigateTo = useNavigateTo(); const { removeFilter } = useMemoFilterContext(); const pathname = useMemo(() => location.pathname, [location.pathname]); const prevPathname = usePrevious(pathname); useEffect(() => { if (!currentUser) { if (pathname === ROUTES.ROOT) { navigateTo(ROUTES.EXPLORE); } else { redirectOnAuthFailure(); } } }, [currentUser, pathname, navigateTo]); useEffect(() => { // When the route changes and there is no filter in the search params, remove all filters if (prevPathname !== pathname && !searchParams.has("filter")) { removeFilter(() => true); } }, [prevPathname, pathname, searchParams, removeFilter]); return (