import { Suspense, lazy, useEffect } from 'react' import { Provider } from 'react-redux' import { Route, Routes, useNavigate } from 'react-router-dom' import PageBackground from '@/components/page_background' import PageLoading from '@/components/page_loading' import Toaster from '@/components/toaster' import DialogProvider from '@/contexts/dialog' import AudioProvider from '@/contexts/songs' import useAuth from '@/hooks/auth' import store from '@/store' const WebLoginPage = lazy(() => import('@/pages/web_login')) const IndexPage = lazy(() => import('@/pages/index')) const QQLoginPage = lazy(() => import('@/pages/qq_login')) const DashboardIndexPage = lazy(() => import('@/pages/dashboard')) const AboutPage = lazy(() => import('@/pages/dashboard/about')) const ConfigPage = lazy(() => import('@/pages/dashboard/config')) const DebugPage = lazy(() => import('@/pages/dashboard/debug')) const HttpDebug = lazy(() => import('@/pages/dashboard/debug/http')) const WSDebug = lazy(() => import('@/pages/dashboard/debug/websocket')) const FileManagerPage = lazy(() => import('@/pages/dashboard/file_manager')) const LogsPage = lazy(() => import('@/pages/dashboard/logs')) const NetworkPage = lazy(() => import('@/pages/dashboard/network')) const TerminalPage = lazy(() => import('@/pages/dashboard/terminal')) function App() { return ( }> ) } function AuthChecker({ children }: { children: React.ReactNode }) { const { isAuth } = useAuth() const navigate = useNavigate() useEffect(() => { if (!isAuth) { const search = new URLSearchParams(window.location.search) const token = search.get('token') let url = '/web_login' if (token) { url += `?token=${token}` } navigate(url, { replace: true }) } }, [isAuth, navigate]) return <>{children} } function AppRoutes() { return ( }> } /> } /> } /> } /> }> } /> } /> } /> } /> } /> } /> } /> ) } export default App