refactor recurring event modification (#173)
This commit is contained in:
@@ -14,10 +14,13 @@ import { getOpenPaasUser, getUserDetails } from "../User/userAPI";
|
||||
import { parseCalendarEvent } from "../Events/eventUtils";
|
||||
import {
|
||||
deleteEvent,
|
||||
deleteEventInstance,
|
||||
getEvent,
|
||||
importEventFromFile,
|
||||
moveEvent,
|
||||
putEvent,
|
||||
putEventWithOverrides,
|
||||
updateSeries,
|
||||
} from "../Events/EventApi";
|
||||
import {
|
||||
computeWeekRange,
|
||||
@@ -274,6 +277,29 @@ export const deleteEventAsync = createAsyncThunk<
|
||||
return { calId, eventId };
|
||||
});
|
||||
|
||||
export const deleteEventInstanceAsync = createAsyncThunk<
|
||||
{ calId: string; eventId: string },
|
||||
{ cal: Calendars; event: CalendarEvent }
|
||||
>("calendars/delEventInstance", async ({ cal, event }) => {
|
||||
await deleteEventInstance(event, cal.ownerEmails?.[0]);
|
||||
return { calId: cal.id, eventId: event.uid };
|
||||
});
|
||||
|
||||
export const updateEventInstanceAsync = createAsyncThunk<
|
||||
{ calId: string; event: CalendarEvent },
|
||||
{ cal: Calendars; event: CalendarEvent }
|
||||
>("calendars/updateEventInstance", async ({ cal, event }) => {
|
||||
await putEventWithOverrides(event, cal.ownerEmails?.[0]);
|
||||
return { calId: cal.id, event };
|
||||
});
|
||||
|
||||
export const updateSeriesAsync = createAsyncThunk<
|
||||
void,
|
||||
{ cal: Calendars; event: CalendarEvent }
|
||||
>("calendars/updateSeries", async ({ cal, event }) => {
|
||||
await updateSeries(event, cal.ownerEmails?.[0]);
|
||||
});
|
||||
|
||||
export const createCalendarAsync = createAsyncThunk<
|
||||
{
|
||||
userId: string;
|
||||
@@ -545,6 +571,18 @@ const CalendarSlice = createSlice({
|
||||
];
|
||||
}
|
||||
})
|
||||
.addCase(deleteEventInstanceAsync.fulfilled, (state, action) => {
|
||||
state.pending = false;
|
||||
delete state.list[action.payload.calId].events[action.payload.eventId];
|
||||
})
|
||||
.addCase(updateEventInstanceAsync.fulfilled, (state, action) => {
|
||||
state.pending = false;
|
||||
state.list[action.payload.calId].events[action.payload.event.uid] =
|
||||
action.payload.event;
|
||||
})
|
||||
.addCase(updateSeriesAsync.fulfilled, (state) => {
|
||||
state.pending = false;
|
||||
})
|
||||
.addCase(createCalendarAsync.fulfilled, (state, action) => {
|
||||
state.pending = false;
|
||||
state.list[`${action.payload.userId}/${action.payload.calId}`] = {
|
||||
|
||||
Reference in New Issue
Block a user