[#31]added two function to setup data to be sent and put function

This commit is contained in:
Camille Moussu
2025-07-22 09:50:02 +02:00
parent fd059954f4
commit b1ceebfc7d
12 changed files with 2906 additions and 48 deletions
+41
View File
@@ -4,6 +4,8 @@ import { CalendarEvent } from "../Events/EventsTypes";
import { getCalendar, getCalendars } from "./CalendarApi";
import getOpenPaasUserId from "../User/userAPI";
import { parseCalendarEvent } from "../Events/eventUtils";
import { getEvent, putEvent } from "../Events/EventApi";
import { formatDateToYYYYMMDDTHHMMSS } from "../../utils/dateUtils";
export const getCalendarsListAsync = createAsyncThunk<
Record<string, Calendars> // Return type
@@ -47,6 +49,22 @@ export const getCalendarDetailAsync = createAsyncThunk<
return { calId, events };
});
export const putEventAsync = createAsyncThunk<
{ calId: string; event: CalendarEvent }, // Return type
{ cal: Calendars; newEvent: CalendarEvent } // Arg type
>("calendars/putEvent", async ({ cal, newEvent }) => {
const response = await putEvent(cal, newEvent);
const now = new Date();
const event = (await getCalendar(cal.id, {
start: formatDateToYYYYMMDDTHHMMSS(now),
end: formatDateToYYYYMMDDTHHMMSS(new Date(now.getDate() + 1)),
})) as Record<string, any>;
return {
calId: cal.id,
event: parseCalendarEvent([event[1]], "", cal.id),
};
});
const CalendarSlice = createSlice({
name: "calendars",
initialState: { list: {} as Record<string, Calendars>, pending: false },
@@ -111,11 +129,34 @@ const CalendarSlice = createSlice({
});
}
)
.addCase(
putEventAsync.fulfilled,
(
state,
action: PayloadAction<{ calId: string; event: CalendarEvent }>
) => {
state.pending = false;
if (!state.list[action.payload.calId]) {
state.list[action.payload.calId] = {
id: action.payload.calId,
events: {},
} as Calendars;
}
state.list[action.payload.calId].events[action.payload.event.uid] =
action.payload.event;
state.list[action.payload.calId].events[
action.payload.event.uid
].color = state.list[action.payload.calId].color;
}
)
.addCase(getCalendarDetailAsync.pending, (state) => {
state.pending = true;
})
.addCase(getCalendarsListAsync.pending, (state) => {
state.pending = true;
})
.addCase(putEventAsync.pending, (state) => {
state.pending = true;
});
},
});