import React, { useState } from 'react' import { User, userDatabase } from '@/lib/userDatabase' import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Button } from "@/components/ui/button" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" export function 个人资料({ onClose }: { onClose: () => void }) { const [user, setUser] = useState({ id: Date.now(), name: '', age: 0, avatar: '', location: '', budget: 0, bio: '', occupation: '', travelStyle: '', email: '', phone: '', socialMedia: { instagram: '', website: '' }, languages: [], interests: [] }) const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target setUser(prevUser => { if (name.startsWith('socialMedia.')) { const socialMediaField = name.split('.')[1] return { ...prevUser, socialMedia: { ...prevUser.socialMedia, [socialMediaField]: value } } } return { ...prevUser, [name]: value } }) } const handleAvatarUpload = (e: React.ChangeEvent) => { const file = e.target.files?.[0] if (file) { const reader = new FileReader() reader.onloadend = () => { setUser(prevUser => ({ ...prevUser, avatar: reader.result as string })) } reader.readAsDataURL(file) } } const handleSave = async () => { setIsLoading(true); setError(null); try { const response = await fetch(`/api/users/${user.id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(user), }); if (!response.ok) { throw new Error('Failed to update user'); } const updatedUser = await response.json(); console.log('Profile updated successfully', updatedUser); onClose(); } catch (error) { console.error('Error updating profile:', error); setError('更新个人资料失败,请稍后再试。'); } finally { setIsLoading(false); } }; return (
个人资料
{user.avatar && } {user.name[0]}