From 43ff0f450d3c88e3fe9895ed9cf8de0d69e0a9c2 Mon Sep 17 00:00:00 2001 From: Ricky Stretch Date: Sat, 28 Mar 2026 22:02:21 -0400 Subject: [PATCH] recurring event delete bug --- frontend/src/components/SchedulePage.jsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/SchedulePage.jsx b/frontend/src/components/SchedulePage.jsx index f05b171..eaea711 100644 --- a/frontend/src/components/SchedulePage.jsx +++ b/frontend/src/components/SchedulePage.jsx @@ -825,7 +825,7 @@ function EventDetailModal({ event, onClose, onEdit, onAvailabilityChange, isTool
- {(isToolManager||(userId&&event.created_by===userId))&&!isPast&&} + {(isToolManager||(!isPast&&userId&&event.created_by===userId))&&}
@@ -1614,7 +1614,14 @@ export default function SchedulePage({ isToolManager, isMobile, onProfile, onHel }; const openDetail = async e => { - try { const { event } = await api.getEvent(e.id); setDetailEvent(event); } catch { toast('Failed to load event','error'); } + try { + const { event } = await api.getEvent(e.id); + // Virtual recurring occurrences carry their own start/end dates — overlay them so + // the modal shows the correct occurrence time and isPast evaluates against the + // occurrence's end_at, not the base event's first-occurrence end_at. + if (e._virtual) { event.start_at = e.start_at; event.end_at = e.end_at; } + setDetailEvent(event); + } catch { toast('Failed to load event','error'); } }; const handleSaved = () => { load(); setPanel('calendar'); setEditingEvent(null); };