From cf93b24abcf5e8b2868f5e0eaa07b8685dc3abc7 Mon Sep 17 00:00:00 2001 From: andreawoe Date: Mon, 24 Aug 2026 13:09:51 +0200 Subject: [PATCH] fix(calendar): allow editing own events when Stalwart omits isOrigin --- components/calendar/event-detail-popover.tsx | 3 ++- components/calendar/event-modal.tsx | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/components/calendar/event-detail-popover.tsx b/components/calendar/event-detail-popover.tsx index d7f1f9ba..ffa7cf68 100644 --- a/components/calendar/event-detail-popover.tsx +++ b/components/calendar/event-detail-popover.tsx @@ -182,7 +182,8 @@ export function EventDetailPopover({ const isAttendeeMode = useMemo(() => { if (!event.participants) return false; - return !event.isOrigin && !userIsOrganizer; + if (userIsOrganizer) return false; + return event.isOrigin === false; }, [event, userIsOrganizer]); const userParticipantId = useMemo( diff --git a/components/calendar/event-modal.tsx b/components/calendar/event-modal.tsx index 27662dec..b2154f61 100644 --- a/components/calendar/event-modal.tsx +++ b/components/calendar/event-modal.tsx @@ -227,7 +227,12 @@ export function EventModal({ const isAttendeeMode = useMemo(() => { if (!event || !event.participants) return false; - return !event.isOrigin && !userIsOrganizer; + // Only enter attendee (read-only + RSVP) mode when we are definitively NOT + // the organizer AND the event explicitly did not originate from this + // account. Stalwart may omit `isOrigin`, so treat a missing value as "ours" + // (editable) rather than locking the user out of their own events. + if (userIsOrganizer) return false; + return event.isOrigin === false; }, [event, userIsOrganizer]); const userParticipantId = useMemo(() => {