import { useEffect, useState, type ReactNode } from "react"; import { Navigate, Route, Routes, useLocation, useParams, } from "react-router-dom"; import { AppShell } from "@/components/AppShell"; import { FullPageSpinner } from "@/components/ui"; import AccountPage from "@/features/account/AccountPage"; import { AgeGate } from "@/features/age/AgeGate"; import LoginPage from "@/features/auth/LoginPage"; import RegisterPage from "@/features/auth/RegisterPage"; import DetailPage from "@/features/detail/DetailPage"; import DeletePage from "@/features/library/DeletePage"; import DuplicatesPage from "@/features/library/DuplicatesPage"; import FollowedPage from "@/features/follows/FollowedPage"; import LibraryPage from "@/features/library/LibraryPage"; import Md5Redirect from "@/features/library/Md5Redirect"; import OnlinePage from "@/features/online/OnlinePage"; import PoolDetailPage from "@/features/pools/PoolDetailPage"; import PoolsPage from "@/features/pools/PoolsPage"; import SimilarPage from "@/features/similar/SimilarPage"; import UploadPage from "@/features/upload/UploadPage"; import UsersPage from "@/features/users/UsersPage"; import { isAgeVerified, markAgeVerified } from "@/lib/age"; import { useAuth } from "@/store/auth"; function RequireAuth({ children }: { children: ReactNode }) { const user = useAuth((state) => state.user); const location = useLocation(); if (!user) { return ; } return <>{children}; } function PostRedirect() { const { postId = "" } = useParams(); return ; } export default function App() { const ready = useAuth((state) => state.ready); const loadUser = useAuth((state) => state.loadUser); const [ageVerified, setAgeVerified] = useState(isAgeVerified); useEffect(() => { void loadUser(); }, [loadUser]); if (!ageVerified) { return ( { markAgeVerified(); setAgeVerified(true); }} /> ); } if (!ready) { return ; } return ( }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }