import { useState, useEffect } from 'react'; import { useAppContext } from '../context/AppContext'; import type { User } from '../types/models'; import { FaUser, FaSave, FaTimes } from 'react-icons/fa'; function parseBirthDate(dateString: string) { return new Date(dateString).toISOString().split('T')[0]; // Format to YYYY-MM-DD } const ProfilePage = () => { const { user, updateUser, isLoading, error: contextError } = useAppContext(); const [formData, setFormData] = useState(null); const [isEditing, setIsEditing] = useState(false); const [error, setError] = useState(null); const [successMessage, setSuccessMessage] = useState(null); useEffect(() => { if (user && !formData) { setFormData({ ...user }); } }, [user, formData]); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => { if (!prev) return prev; return { ...prev, [name]: value }; }); }; const handleEditToggle = () => { if (isEditing) { // Cancel edit - revert changes setFormData(user ? { ...user } : null); } setIsEditing(!isEditing); setError(null); setSuccessMessage(null); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!formData) return; try { setError(null); await updateUser(formData); setSuccessMessage('Profile updated successfully!'); setIsEditing(false); // Clear success message after a few seconds setTimeout(() => { setSuccessMessage(null); }, 3000); } catch { setError('Failed to update profile. Please try again.'); } }; if (isLoading) { return (

Profile

Loading profile data...
); } if (!formData) { return (

Profile

Could not load profile data.
); } return (

Your Profile

{contextError &&
{contextError}
} {error &&
{error}
} {successMessage &&
{successMessage}
}
{isEditing && (
)}
); }; export default ProfilePage;