import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; /** * UserProfile component for displaying user information * @param {Object} props - Component props * @param {Object} props.user - User object * @param {Function} props.onEdit - Edit callback function */ const UserProfile = ({ user, onEdit }) => { const [isEditing, setIsEditing] = useState(false); const [userData, setUserData] = useState(user); const [loading, setLoading] = useState(false); useEffect(() => { setUserData(user); }, [user]); const handleSave = async () => { setLoading(true); try { await onEdit(userData); setIsEditing(false); } catch (error) { console.error('Failed to save user data:', error); } finally { setLoading(false); } }; const handleCancel = () => { setUserData(user); setIsEditing(false); }; const handleInputChange = (field, value) => { setUserData(prev => ({ ...prev, [field]: value })); }; if (loading) { return
Email: {userData.email}
Bio: {userData.bio || 'No bio provided'}
Member since: {new Date(userData.joinDate).toLocaleDateString()}