From 8835f5ff7f78b5265e276a2588e7e86f3c82406f Mon Sep 17 00:00:00 2001 From: Gil Glick Date: Sun, 23 Aug 2026 19:36:14 -0400 Subject: [PATCH 1/8] Can change times on edit + fixed zoom link issues --- .../CalendarPage/Components/EditEventModal.tsx | 10 ++++++++-- .../CalendarPage/Components/EventModal.tsx | 17 ++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/frontend/src/pages/CalendarPage/Components/EditEventModal.tsx b/src/frontend/src/pages/CalendarPage/Components/EditEventModal.tsx index 096af6c282..068be6e72d 100644 --- a/src/frontend/src/pages/CalendarPage/Components/EditEventModal.tsx +++ b/src/frontend/src/pages/CalendarPage/Components/EditEventModal.tsx @@ -2,7 +2,7 @@ import React from 'react'; import EventModal, { EventPayload } from './EventModal'; import type { EventInstance, EventType, EventDocumentUploadArgs } from 'shared'; import { convertEventToFormValues } from '../../../utils/calendar.utils'; -import { useEditEvent, useEditScheduleSlot, useUploadManyDocuments } from '../../../hooks/calendar.hooks'; +import { useEditEvent, useEditScheduleSlot, useScheduleEvent, useUploadManyDocuments } from '../../../hooks/calendar.hooks'; import { useToast } from '../../../hooks/toasts.hooks'; import ErrorPage from '../../ErrorPage'; import LoadingIndicator from '../../../components/LoadingIndicator'; @@ -16,6 +16,7 @@ export interface EditEventModalProps { const EditEventModal: React.FC = ({ open, onClose, event, eventTypes }) => { const toast = useToast(); + const { mutateAsync: scheduleEvent } = useScheduleEvent(event.eventId); const { isLoading: editEventIsLoading, isError: editEventIsError, @@ -38,7 +39,7 @@ const EditEventModal: React.FC = ({ open, onClose, event, e const handleSubmit = async (payload: EventPayload) => { try { - const { documentFiles, editScheduleSlotArgs, ...eventData } = payload; + const { documentFiles, editScheduleSlotArgs, rescheduleArgs, ...eventData } = payload; // First, update the event base information const editArgs = { @@ -60,6 +61,10 @@ const EditEventModal: React.FC = ({ open, onClose, event, e }); } + if (rescheduleArgs) { + await scheduleEvent({ startTime: rescheduleArgs.startTime, endTime: rescheduleArgs.endTime }); + } + const editedEvent = await editEvent(editArgs); // Handle document uploads @@ -93,6 +98,7 @@ const EditEventModal: React.FC = ({ open, onClose, event, e initialValues={initialValues} eventTypes={eventTypes} eventId={event.eventId} + eventStatus={event.status} /> ); }; diff --git a/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx b/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx index fb5b0ca417..21a1fbaaab 100644 --- a/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx +++ b/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx @@ -32,7 +32,8 @@ import { MAX_FILE_SIZE, getNextSevenDays, getDay, - SlackMentionType + SlackMentionType, + EventStatus } from 'shared'; import { useToast } from '../../../hooks/toasts.hooks'; import { useAllMembers, useCurrentUser, useUserScheduleSettings } from '../../../hooks/users.hooks'; @@ -124,6 +125,11 @@ export interface EventPayload { newAllDay: boolean; editAllInSeries: boolean; }; + // When an event is already scheduled, these are the new start and end times it can be rescheduled to + rescheduleArgs?: { + startTime: Date; + endTime: Date; + }; } const schema = yup.object().shape({ @@ -169,6 +175,7 @@ export interface BaseEventModalProps { defaultStartTime?: Date; // Pre-fill start time without triggering edit mode (e.g. drag-to-create) defaultEndTime?: Date; // Pre-fill end time without triggering edit mode eventId?: string; // Required for edit mode to fetch preview of affected schedule slots + eventStatus?: EventStatus; actionsLeftChildren?: React.ReactNode; } @@ -231,6 +238,7 @@ const EventModal: React.FC = ({ defaultStartTime, defaultEndTime, eventId, + eventStatus, actionsLeftChildren }) => { const theme = useTheme(); @@ -419,10 +427,10 @@ const EventModal: React.FC = ({ // made it so it only fills when the field is empty, that way doesn't overwrite a link or anythingi me useEffect(() => { if (!open || isEditMode) return; - if (scheduleSettings?.personalZoomLink && !getValues('zoomLink')) { + if (scheduleSettings?.personalZoomLink && selectedEventType?.zoomLink && !getValues('zoomLink')) { setValue('zoomLink', scheduleSettings.personalZoomLink); } - }, [open, isEditMode, scheduleSettings, getValues, setValue]); + }, [open, isEditMode, scheduleSettings, selectedEventType, getValues, setValue]); const computedTitle = isEditMode ? 'Edit Event' : 'Add Event'; @@ -842,7 +850,7 @@ const EventModal: React.FC = ({ render={({ field: { onChange, value } }) => ( setDatePickerOpen(false)} onOpen={() => setDatePickerOpen(true)} @@ -1049,7 +1057,6 @@ const EventModal: React.FC = ({ )} - {/* All Day and Recurring Row */} Date: Mon, 24 Aug 2026 20:40:46 -0400 Subject: [PATCH 2/8] event type can also be rescheduled --- src/frontend/src/pages/CalendarPage/Components/EventModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx b/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx index 21a1fbaaab..3b37b3bc10 100644 --- a/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx +++ b/src/frontend/src/pages/CalendarPage/Components/EventModal.tsx @@ -798,7 +798,7 @@ const EventModal: React.FC = ({