diff --git a/src/components/Event/EventRepeat.tsx b/src/components/Event/EventRepeat.tsx index 4576e48..3155a77 100644 --- a/src/components/Event/EventRepeat.tsx +++ b/src/components/Event/EventRepeat.tsx @@ -31,7 +31,7 @@ export default function RepeatEvent({ // derive endOption based on repetition const getEndOption = () => { - if (repetition.occurrences && repetition.occurrences > 0) return "after"; + if (repetition.occurrences && repetition.occurrences >= 0) return "after"; if (repetition.endDate) return "on"; return "never"; }; @@ -40,7 +40,9 @@ export default function RepeatEvent({ // keep endOption in sync if repetition changes from parent useEffect(() => { - setEndOption(getEndOption()); + if (!endOption) { + setEndOption(getEndOption()); + } }, [repetition.occurrences, repetition.endDate]); const handleDayChange = (day: string) => { @@ -77,7 +79,7 @@ export default function RepeatEvent({ Interval: setRepetition({ ...repetition, @@ -137,15 +139,15 @@ export default function RepeatEvent({ } if (value === "after") { setRepetition({ - freq: repetition.freq, - interval: repetition.interval, - occurences: 0, + ...repetition, + occurrences: 0, + endDate: "", }); } if (value === "on") { setRepetition({ - freq: repetition.freq, - interval: repetition.interval, + ...repetition, + occurrences: 0, endDate: new Date().toISOString().slice(0, 16), }); } @@ -171,7 +173,7 @@ export default function RepeatEvent({ setRepetition({ freq: repetition.freq, interval: repetition.interval, - occurences: Number(e.target.value), + occurrences: Number(e.target.value), }) } sx={{ width: 100 }} diff --git a/src/features/Calendars/CalendarSlice.ts b/src/features/Calendars/CalendarSlice.ts index dca589e..f36b427 100644 --- a/src/features/Calendars/CalendarSlice.ts +++ b/src/features/Calendars/CalendarSlice.ts @@ -71,11 +71,18 @@ export const putEventAsync = createAsyncThunk< { cal: Calendars; newEvent: CalendarEvent } // Arg type >("calendars/putEvent", async ({ cal, newEvent }) => { const response = await putEvent(newEvent); + const eventDate = new Date(newEvent.start); + + const weekStart = new Date(eventDate); + weekStart.setHours(0, 0, 0, 0); + weekStart.setDate(eventDate.getDate() - eventDate.getDay()); + + const weekEnd = new Date(weekStart); + weekEnd.setDate(weekStart.getDate() + 7); + const calEvents = (await getCalendar(cal.id, { - start: formatDateToYYYYMMDDTHHMMSS(new Date(newEvent.start)), - end: formatDateToYYYYMMDDTHHMMSS( - new Date(new Date(newEvent.start).getTime() + 86400000) - ), + start: formatDateToYYYYMMDDTHHMMSS(weekStart), + end: formatDateToYYYYMMDDTHHMMSS(weekEnd), })) as Record; const events: CalendarEvent[] = calEvents._embedded["dav:item"].flatMap( (eventdata: any) => {