// packages/frontend/src/components/CelebrityProfile.jsx import React, { useState, useEffect } from 'react'; import { useParams, useNavigate, Link } from 'react-router-dom'; import { getCelebrityById, updateCelebrity, deleteCelebrity } from '../services/api'; import EditableField from './EditableField'; import './CelebrityProfile.css'; function CelebrityProfile() { const { id } = useParams(); const navigate = useNavigate(); const [celebrity, setCelebrity] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { if (id) { setLoading(true); getCelebrityById(id) .then((data) => { if (data.birth_date) { data.birth_date = data.birth_date.split('T')[0]; } setCelebrity(data); }) .catch((err) => setError(err.message)) .finally(() => setLoading(false)); } else { navigate('/'); } }, [id, navigate]); const handleFieldSave = async (fieldName, newValue) => { let valueToSend = newValue === '' ? null : newValue; if (fieldName === 'boobs_are_natural') { valueToSend = newValue === 'true'; } const payload = { [fieldName]: valueToSend }; try { const updatedCelebrity = await updateCelebrity(id, payload); setCelebrity((prev) => ({ ...prev, [fieldName]: newValue })); console.log('Salvataggio riuscito:', updatedCelebrity); } catch (err) { console.error(`Errore durante il salvataggio del campo ${fieldName}:`, err); throw err; } }; const handleDelete = async () => { if (window.confirm(`Sei sicuro di voler eliminare ${celebrity.name}? L'azione è irreversibile.`)) { try { await deleteCelebrity(id); alert(`${celebrity.name} è stato eliminato con successo.`); navigate('/'); } catch (err) { setError(`Errore durante l'eliminazione: ${err.message}`); } } }; if (loading) return
Caricamento profilo...
; if (error && !celebrity) return

Errore: {error}

; if (!celebrity) return

Nessuna celebrità trovata.

; const genderOptions = [{ value: 'female', label: 'Female' }, { value: 'male', label: 'Male' }, { value: 'other', label: 'Other' }]; const braSystemOptions = [{ value: 'US', label: 'US' }, { value: 'UK', label: 'UK' }, { value: 'EU', label: 'EU' }, { value: 'FR', label: 'FR' }, { value: 'AU', label: 'AU' }, { value: 'IT', label: 'IT' }, { value: 'JP', label: 'JP' }]; const shoeSystemOptions = [{ value: 'EU', label: 'EU' }, { value: 'US', label: 'US' }, { value: 'UK', label: 'UK' }]; const booleanOptions = [{ value: 'true', label: 'Sì' }, { value: 'false', label: 'No' }]; return (
{error &&

Errore: {error}

}

Dati Anagrafici

Aspetto Fisico

Misure Corporee

{celebrity.gender === 'male' && }
{celebrity.gender !== 'male' && (

Reggiseno

)}

Biografia

); } export default CelebrityProfile;