import { useState, useEffect } from 'react' import { getEvents, deleteEvent, getEventStats } from '../api/api' import './EventList.css' const he = { myEvents: 'האירועים שלי', newEvent: '+ אירוע חדש', noEvents: 'אין לך אירועים עדיין.', createFirstEvent: 'צור את האירוע הראשון', manage: 'ניהול', deleteEvent: 'מחוק אירוע', sure: 'האם אתה בטוח שברצונך למחוק אירוע זה? פעולה זו לא ניתן לבטל.', guests: 'אורחים', confirmed: 'אישרו', rate: 'אחוז אישור', loadingEvents: 'טוען אירועים...', failedLoadEvents: 'נכשל בטעינת אירועים', failedDeleteEvent: 'נכשל במחיקת אירוע' } function EventList({ onEventSelect, onCreateEvent, onManageTemplates }) { const [events, setEvents] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState('') const [stats, setStats] = useState({}) const [refreshTrigger, setRefreshTrigger] = useState(0) useEffect(() => { loadEvents() // Set up page visibility listener to refresh when returning to this page const handleVisibilityChange = () => { if (!document.hidden) { loadEvents() } } document.addEventListener('visibilitychange', handleVisibilityChange) return () => document.removeEventListener('visibilitychange', handleVisibilityChange) }, [refreshTrigger]) const loadEvents = async () => { try { setLoading(true) const data = await getEvents() setEvents(data) // Load stats for each event const statsData = {} for (const event of data) { try { statsData[event.id] = await getEventStats(event.id) } catch (err) { console.error(`Failed to load stats for event ${event.id}:`, err) } } setStats(statsData) setError('') } catch (err) { setError(he.failedLoadEvents) console.error(err) } finally { setLoading(false) } } const handleDelete = async (eventId, e) => { e.stopPropagation() if (!window.confirm(he.sure)) { return } try { await deleteEvent(eventId) setEvents(events.filter(e => e.id !== eventId)) } catch (err) { setError(he.failedDeleteEvent) console.error(err) } } const formatDate = (dateString) => { if (!dateString) return 'לא קבוע תאריך' const date = new Date(dateString) return date.toLocaleDateString('he-IL', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' }) } if (loading) { return
{he.loadingEvents}
} return (

{he.myEvents}

{onManageTemplates && ( )}
{error &&
{error}
} {events.length === 0 ? (

{he.noEvents}

) : (
{events.map(event => { const eventStats = stats[event.id] || { stats: { total: 0, confirmed: 0 } } const guestStats = eventStats.stats || { total: 0, confirmed: 0 } return (
onEventSelect(event.id)} >

{event.name}

{event.location && (

📍 {event.location}

)}

📅 {formatDate(event.date)}

{he.guests} {guestStats.total}
{he.confirmed} {guestStats.confirmed}
{guestStats.total > 0 && (
{he.rate} {Math.round((guestStats.confirmed / guestStats.total) * 100)}%
)}
) })}
)}
) } export default EventList