'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { apiFetch } from '../../../lib/auth'; import { Skeleton } from '@/components/ui/skeleton'; interface Profile { nickname: string; email: string; phone: string; avatar: string; } export default function SettingsPage() { const router = useRouter(); const [profile, setProfile] = useState({ nickname: '', email: '', phone: '', avatar: '' }); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [nickname, setNickname] = useState(''); const [email, setEmail] = useState(''); useEffect(() => { loadProfile(); }, []); async function loadProfile() { try { const res = await apiFetch('/dashboard/profile'); const data = await res.json(); setProfile(data); setNickname(data.nickname || ''); setEmail(data.email || ''); } catch (e) { console.error(e) } setLoading(false); } async function handleSave(e: React.FormEvent) { e.preventDefault(); setSaving(true); try { await apiFetch('/dashboard/profile', { method: 'PUT', body: JSON.stringify({ nickname, email }), }); alert('保存成功'); } catch (e) { console.error(e) } setSaving(false); } async function handleLogout() { localStorage.removeItem('token'); localStorage.removeItem('refreshToken'); router.push('/auth'); } if (loading) return (
); return (

设置

管理你的账号偏好

个人信息

setNickname(e.target.value)} className="w-full px-4 py-2.5 border border-border rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-brand-500" />
setEmail(e.target.value)} className="w-full px-4 py-2.5 border border-border rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-brand-500" />

账号安全

); }