Commit 98859eb5 authored by Steven's avatar Steven

fix(routing): redirect unauthenticated users to /explore when public visibility is allowed

parent 737acbba
...@@ -2,26 +2,35 @@ import { useEffect, useMemo } from "react"; ...@@ -2,26 +2,35 @@ import { useEffect, useMemo } from "react";
import { Outlet, useLocation, useSearchParams } from "react-router-dom"; import { Outlet, useLocation, useSearchParams } from "react-router-dom";
import usePrevious from "react-use/lib/usePrevious"; import usePrevious from "react-use/lib/usePrevious";
import Navigation from "@/components/Navigation"; import Navigation from "@/components/Navigation";
import { useInstance } from "@/contexts/InstanceContext";
import { useMemoFilterContext } from "@/contexts/MemoFilterContext"; import { useMemoFilterContext } from "@/contexts/MemoFilterContext";
import useCurrentUser from "@/hooks/useCurrentUser"; import useCurrentUser from "@/hooks/useCurrentUser";
import useNavigateTo from "@/hooks/useNavigateTo";
import useMediaQuery from "@/hooks/useMediaQuery"; import useMediaQuery from "@/hooks/useMediaQuery";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
import { redirectOnAuthFailure } from "@/utils/auth-redirect"; import { redirectOnAuthFailure } from "@/utils/auth-redirect";
import { ROUTES } from "@/router/routes";
const RootLayout = () => { const RootLayout = () => {
const location = useLocation(); const location = useLocation();
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const sm = useMediaQuery("sm"); const sm = useMediaQuery("sm");
const currentUser = useCurrentUser(); const currentUser = useCurrentUser();
const navigateTo = useNavigateTo();
const { memoRelatedSetting } = useInstance();
const { removeFilter } = useMemoFilterContext(); const { removeFilter } = useMemoFilterContext();
const pathname = useMemo(() => location.pathname, [location.pathname]); const pathname = useMemo(() => location.pathname, [location.pathname]);
const prevPathname = usePrevious(pathname); const prevPathname = usePrevious(pathname);
useEffect(() => { useEffect(() => {
if (!currentUser) { if (!currentUser) {
redirectOnAuthFailure(); if (pathname === ROUTES.ROOT && !memoRelatedSetting.disallowPublicVisibility) {
navigateTo(ROUTES.EXPLORE);
} else {
redirectOnAuthFailure();
}
} }
}, [currentUser]); }, [currentUser, pathname, memoRelatedSetting.disallowPublicVisibility, navigateTo]);
useEffect(() => { useEffect(() => {
// When the route changes and there is no filter in the search params, remove all filters // When the route changes and there is no filter in the search params, remove all filters
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment