import React, { useState } from 'react'; import { useSessions } from '../../hooks/useSleepSession'; import { Edit2, Check, X } from 'lucide-react'; import type { SleepSessionRead } from '../../types'; import { formatDateTime, toLocalDatetimeInputValue, getDurationMinutes } from '../../utils/time'; export function SessionList() { const { sessions, isLoading, updateSession } = useSessions(); const [editingId, setEditingId] = useState(null); const [editStart, setEditStart] = useState(''); const [editEnd, setEditEnd] = useState(''); if (isLoading) return
Loading sessions...
; if (!sessions.length) return
No sessions recorded.
; const handleSave = async (id: number) => { try { await updateSession({ sessionId: id, payload: { start_time: new Date(editStart).toISOString(), end_time: editEnd ? new Date(editEnd).toISOString() : null, } } as any); setEditingId(null); } catch (err) { console.error(err); alert('Failed to update session'); } }; const startEditing = (s: SleepSessionRead) => { setEditingId(s.id); setEditStart(toLocalDatetimeInputValue(new Date(s.start_time))); setEditEnd(s.end_time ? toLocalDatetimeInputValue(new Date(s.end_time)) : ''); }; const handleCancel = () => { setEditingId(null); }; return (

Sleep Sessions

{sessions.map((s) => (
{editingId === s.id ? (
Start Time setEditStart(e.target.value)} />
End Time setEditEnd(e.target.value)} />
) : (
startEditing(s)} >
{formatDateTime(s.start_time)} {s.end_time ? `${formatDateTime(s.start_time)} → ${formatDateTime(s.end_time)}` : 'In progress'}
{s.end_time && s.start_time ? `${getDurationMinutes(s.start_time, s.end_time)} min` : '—'}
)}
))}
); }