import { useEffect, useState, type FormEvent } from 'react'; import * as memberApi from '../../api/member'; import { ApiError } from '../../api/http'; export function ProfilePage() { const [displayName, setDisplayName] = useState(''); const [language, setLanguage] = useState('zh-TW'); const [currency, setCurrency] = useState('TWD'); const [phone, setPhone] = useState(''); const [msg, setMsg] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); useEffect(() => { memberApi.getMe().then((m) => { setDisplayName(m.display_name ?? ''); setLanguage(m.language ?? 'zh-TW'); setCurrency(m.currency ?? 'TWD'); setPhone(m.phone ?? ''); }); }, []); const submit = async (e: FormEvent) => { e.preventDefault(); setError(''); setMsg(''); setLoading(true); try { await memberApi.updateMe({ display_name: displayName, language, currency, phone: phone || undefined, }); setMsg('已儲存'); } catch (err) { setError(err instanceof ApiError ? err.message : '儲存失敗'); } finally { setLoading(false); } }; return (

個人資料

{error &&

{error}

} {msg &&

{msg}

}
); }