import React, { useState, useEffect } from 'react'; import { useAuth } from '../contexts/AuthContext'; import { supabase } from '../lib/supabase'; import { Button } from '../components/ui/Button'; import { Input } from '../components/ui/Input'; import { Select } from '../components/ui/Select'; import { Card, CardContent, CardHeader, CardTitle } from '../components/ui/Card'; import { toast } from 'sonner'; import { User, Calendar, MapPin, Save } from 'lucide-react'; import { UserProfile } from '../types'; const ProfilePage: React.FC = () => { const { user } = useAuth(); const [loading, setLoading] = useState(false); const [profile, setProfile] = useState(null); const [formData, setFormData] = useState({ full_name: '', birth_date: '', birth_time: '', birth_location: '', gender: 'male' as 'male' | 'female', username: '' }); useEffect(() => { loadProfile(); }, [user]); const loadProfile = async () => { if (!user) return; try { const { data, error } = await supabase .from('user_profiles') .select('*') .eq('user_id', user.id) .maybeSingle(); if (error && error.code !== 'PGRST116') { throw error; } if (data) { setProfile(data); setFormData({ full_name: data.full_name || '', birth_date: data.birth_date || '', birth_time: data.birth_time || '', birth_location: data.birth_location || '', gender: data.gender || 'male', username: data.username || '' }); } } catch (error: any) { console.error('加载档案失败:', error); toast.error('加载档案失败'); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!user) return; setLoading(true); try { const profileData = { user_id: user.id, ...formData, updated_at: new Date().toISOString() }; let result; if (profile) { // 更新现有档案 result = await supabase .from('user_profiles') .update(profileData) .eq('user_id', user.id) .select() .maybeSingle(); } else { // 创建新档案 result = await supabase .from('user_profiles') .insert([{ ...profileData, created_at: new Date().toISOString() }]) .select() .maybeSingle(); } if (result.error) { throw result.error; } setProfile(result.data); toast.success('档案保存成功!'); } catch (error: any) { console.error('保存档案失败:', error); toast.error('保存档案失败:' + error.message); } finally { setLoading(false); } }; const handleInputChange = (field: string, value: string) => { setFormData(prev => ({ ...prev, [field]: value })); }; return (
个人档案

完善您的个人信息,获得更精准的命理分析

handleInputChange('full_name', e.target.value)} required placeholder="请输入您的真实姓名" /> handleInputChange('username', e.target.value)} placeholder="请输入用户名(可选)" />
handleInputChange('birth_date', e.target.value)} required />
handleInputChange('birth_time', e.target.value)} placeholder="选填,但强烈建议填写" />
handleInputChange('birth_location', e.target.value)} placeholder="如:北京市朝阳区" />

温馨提示

{profile && (

最后更新:{new Date(profile.updated_at).toLocaleString('zh-CN')}

)} ); }; export default ProfilePage;