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) => {