import { lazy, Suspense, useState, useCallback, useEffect, type ReactNode } from 'react'; import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; import { App as AntdApp, ConfigProvider, Spin, theme } from 'antd'; import zhCN from 'antd/locale/zh_CN'; import { fetchCurrentUser, getUser } from './store/auth'; import { ThemeProvider } from './store/theme'; import { useTheme } from './store/useTheme'; import AntdMessageBridge from './utils/AntdMessageBridge'; const LoginPage = lazy(() => import('./pages/LoginPage')); const MainLayout = lazy(() => import('./layouts/MainLayout')); const DashboardPage = lazy(() => import('./pages/DashboardPage')); const AccountsPage = lazy(() => import('./pages/AccountsPage')); const AccountCheckPage = lazy(() => import('./pages/AccountCheckPage')); const AssignmentsPage = lazy(() => import('./pages/AssignmentsPage')); const LoginTasksPage = lazy(() => import('./pages/LoginTasksPage')); const ProxyPage = lazy(() => import('./pages/ProxyPage')); const UsersPage = lazy(() => import('./pages/UsersPage')); const CookiePage = lazy(() => import('./pages/CookiePage')); const CookieOperationsPage = lazy(() => import('./pages/CookieOperationsPage')); const DouyuTasksPage = lazy(() => import('./pages/DouyuTasksPage')); const HuyaAccountsPage = lazy(() => import('./pages/HuyaAccountsPage')); const HuyaAssignmentsPage = lazy(() => import('./pages/HuyaAssignmentsPage')); const HuyaCookiePage = lazy(() => import('./pages/HuyaCookiePage')); const HuyaRegisterPage = lazy(() => import('./pages/HuyaRegisterPage')); const HuyaDeviceBindingsPage = lazy(() => import('./pages/HuyaDeviceBindingsPage')); const HuyaTasksPage = lazy(() => import('./pages/HuyaTasksPage')); const YybRechargePage = lazy(() => import('./pages/YybRechargePage')); const AuditLogsPage = lazy(() => import('./pages/AuditLogsPage')); function RouteFallback() { return (
); } function lazyRoute(element: ReactNode) { return }>{element}; } function AppContent() { // 用 state 驱动重渲染,登录/登出时调 refreshAuth() const [authVersion, setAuthVersion] = useState(0); const refreshAuth = useCallback(() => setAuthVersion((v) => v + 1), []); const isLoggedIn = !!getUser(); const isSuperAdmin = getUser()?.role === 'super_admin'; const { isDark } = useTheme(); // localStorage 仅是前端缓存;每次加载应用时以服务端的实时权限为准。 useEffect(() => { if (!getUser()) return; void fetchCurrentUser().finally(refreshAuth); }, [refreshAuth]); return ( )} /> ) : } > )} /> )} /> )} /> )} /> )} /> )} /> )} /> } /> )} /> )} /> )} /> )} /> )} /> )} /> )} /> )} /> )} /> )} /> )} /> )} /> ) : } /> } /> ); } function App() { return ( ); } export default App;