import { lazy, Suspense } from "react"; import { BrowserRouter, Navigate, Route, Routes } from "react-router"; import { RestrictedGuest } from "./pages/RestrictedGuest.tsx"; import { RestrictedLoggedIn } from "./pages/RestrictedLoggedIn.tsx"; import { useAuth } from "./hooks/useAuth.ts"; import { useDefaultFeedTab } from "./hooks/useDefaultFeedTab.ts"; import { AuthProvider } from "./contexts/AuthProvider.tsx"; import { PlayerProvider } from "./contexts/PlayerProvider.tsx"; import { WSProvider } from "./contexts/WSProvider.tsx"; import { FollowProvider } from "./contexts/FollowProvider.tsx"; import { ThemeProvider } from "./contexts/ThemeProvider.tsx"; import { GlobalPlayer } from "./components/GlobalPlayer.tsx"; import { DumpFab } from "./components/DumpFab.tsx"; import "./App.css"; const Index = lazy(() => import("./pages/Index.tsx").then((m) => ({ default: m.Index })) ); const Dump = lazy(() => import("./pages/Dump.tsx").then((m) => ({ default: m.Dump })) ); const DumpEdit = lazy(() => import("./pages/DumpEdit.tsx").then((m) => ({ default: m.DumpEdit })) ); const UserLogin = lazy(() => import("./pages/UserLogin.tsx").then((m) => ({ default: m.UserLogin })) ); const UserPublicProfile = lazy(() => import("./pages/UserPublicProfile.tsx").then((m) => ({ default: m.UserPublicProfile, })) ); const UserRegister = lazy(() => import("./pages/UserRegister.tsx").then((m) => ({ default: m.UserRegister })) ); const UserDumps = lazy(() => import("./pages/UserDumps.tsx").then((m) => ({ default: m.UserDumps })) ); const UserUpvoted = lazy(() => import("./pages/UserUpvoted.tsx").then((m) => ({ default: m.UserUpvoted })) ); const UserPlaylists = lazy(() => import("./pages/UserPlaylists.tsx").then((m) => ({ default: m.UserPlaylists, })) ); const PlaylistDetail = lazy(() => import("./pages/PlaylistDetail.tsx").then((m) => ({ default: m.PlaylistDetail, })) ); const Notifications = lazy(() => import("./pages/Notifications.tsx").then((m) => ({ default: m.Notifications, })) ); const Search = lazy(() => import("./pages/Search.tsx").then((m) => ({ default: m.Search })) ); const ResetPassword = lazy(() => import("./pages/ResetPassword.tsx").then((m) => ({ default: m.ResetPassword, })) ); const NotFound = lazy(() => import("./pages/NotFound.tsx").then((m) => ({ default: m.NotFound })) ); function IndexRedirect() { const { user } = useAuth(); const [preferredTab] = useDefaultFeedTab(); // "followed" requires a session, so fall back to "hot" for guests. const tab = preferredTab === "followed" && !user ? "hot" : preferredTab; return ; } function AppRoutes() { return ( <> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } function App() { return ( ); } export default App;