import React, { useState, useEffect } from 'react'; import { Routes, Route, Navigate } from 'react-router-dom'; import type { User } from '@/types'; import { AuthContext, AuthContextType } from '@/contexts/AuthContext'; import { authAPI } from '@/api'; // Layouts import FrontLayout from '@/components/layout/FrontLayout'; import AdminLayout from '@/components/layout/AdminLayout'; // Front Pages import LandingPage from '@/pages/front/LandingPage'; import LoginPage from '@/pages/front/LoginPage'; import ChatPage from '@/pages/front/ChatPage'; import ChannelPage from '@/pages/front/ChannelPage'; import KnowledgePage from '@/pages/front/KnowledgePage'; import MarketPage from '@/pages/front/MarketPage'; import TokenDashboardPage from '@/pages/front/TokenDashboardPage'; import PricingPage from '@/pages/front/PricingPage'; import ProfilePage from '@/pages/front/ProfilePage'; import NotificationPage from '@/pages/front/NotificationPage'; import AssetsPage from '@/pages/front/AssetsPage'; import NovelPreviewPage from '@/pages/front/NovelPreviewPage'; import EvolutionDashboard from '@/pages/front/EvolutionDashboard'; // Admin Pages import AdminDashboard from '@/pages/admin/Dashboard'; import AdminUsers from '@/pages/admin/Users'; import AdminModels from '@/pages/admin/Models'; import AdminSiteSettings from '@/pages/admin/SiteSettings'; import AdminPayment from '@/pages/admin/Payment'; import AdminServices from '@/pages/admin/Services'; import AdminMembership from '@/pages/admin/Membership'; import AdminAds from '@/pages/admin/Ads'; import AdminMarket from '@/pages/admin/Market'; import AdminLogs from '@/pages/admin/Logs'; import AdminSkills from '@/pages/admin/Skills' import AdminAgents from '@/pages/admin/Agents'; import AdminCodeExec from '@/pages/admin/CodeExec';; const App: React.FC = () => { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); // 初始化:从localStorage恢复登录状态 useEffect(() => { const token = localStorage.getItem('aiflow_token'); const cachedUser = localStorage.getItem('aiflow_user'); if (token && cachedUser) { try { setUser(JSON.parse(cachedUser)); } catch { localStorage.removeItem('aiflow_token'); localStorage.removeItem('aiflow_user'); } } setLoading(false); }, []); const login = (u: User) => { setUser(u); localStorage.setItem('aiflow_user', JSON.stringify(u)); }; const logout = () => { setUser(null); localStorage.removeItem('aiflow_token'); localStorage.removeItem('aiflow_user'); }; const isAdmin = user?.role === 'admin'; if (loading) { return
加载中...
; } return ( {/* Login */} : ) : } /> {/* Root - Landing for guests, redirect for authenticated users */} : ) : } /> {/* Front Routes (authenticated only) */} }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Admin Routes */} }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }; export default App;