'use client'; import { useState, useEffect } from 'react'; import { FileBrowser } from '@/components/FileBrowser'; import { Header } from '@/components/Header'; import { Footer } from '@/components/Footer'; import { CommandModal } from '@/components/CommandModal'; import { LoginModal } from '@/components/LoginModal'; import { Config } from '@/types'; interface User { id: number; username: string; email: string; role: string; } export default function Home() { const [config, setConfig] = useState(null); const [loading, setLoading] = useState(true); const [darkMode, setDarkMode] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false); const [isLoginModalOpen, setIsLoginModalOpen] = useState(false); const [user, setUser] = useState(null); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!mounted) return; // 加载配置 fetch('/api/config') .then(res => res.json()) .then(data => { if (data.success) { setConfig(data.data); } }) .catch(console.error) .finally(() => setLoading(false)); // 检查本地存储的主题设置 const savedTheme = localStorage.getItem('theme'); if (savedTheme === 'dark' || (!savedTheme && window.matchMedia('(prefers-color-scheme: dark)').matches)) { setDarkMode(true); } // 检查本地存储的登录状态 const savedUser = localStorage.getItem('user'); if (savedUser) { try { setUser(JSON.parse(savedUser)); } catch (error) { console.error('解析用户数据失败:', error); localStorage.removeItem('user'); } } }, [mounted]); useEffect(() => { if (!mounted) return; if (darkMode) { document.documentElement.classList.add('dark'); localStorage.setItem('theme', 'dark'); } else { document.documentElement.classList.remove('dark'); localStorage.setItem('theme', 'light'); } }, [darkMode, mounted]); // 防止hydration不匹配的loading状态 if (!mounted || loading) { return (

加载中...

); } if (!config) { return (

加载配置失败

); } return (
setDarkMode(!darkMode)} onOpenModal={() => setIsModalOpen(true)} onLogin={() => setIsLoginModalOpen(true)} user={user} onUserChange={setUser} />
); }