[#271] abort truly goes through when removing user in cal search (#295)

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
This commit is contained in:
Camille Moussu
2025-11-13 09:24:34 +01:00
committed by GitHub
parent 3c26a81773
commit 85ccf8e14d
6 changed files with 114 additions and 35 deletions
+6 -2
View File
@@ -2,13 +2,15 @@ import { api } from "../../utils/apiUtils";
export async function getCalendars(
userId: string,
scope: string = "personal=true&sharedDelegationStatus=accepted&sharedPublicSubscription=true&withRights=true"
scope: string = "personal=true&sharedDelegationStatus=accepted&sharedPublicSubscription=true&withRights=true",
signal?: AbortSignal
) {
const calendars = await api
.get(`dav/calendars/${userId}.json?${scope}`, {
headers: {
Accept: "application/calendar+json",
},
signal,
})
.json();
return calendars;
@@ -16,7 +18,8 @@ export async function getCalendars(
export async function getCalendar(
id: string,
match: { start: string; end: string }
match: { start: string; end: string },
signal?: AbortSignal
) {
const response = await api(`dav/calendars/${id}.json`, {
method: "REPORT",
@@ -26,6 +29,7 @@ export async function getCalendar(
body: JSON.stringify({
match,
}),
signal,
});
const calendar = await response.json();
return calendar;
+24 -7
View File
@@ -171,13 +171,21 @@ export const getTempCalendarsListAsync = createAsyncThunk<
export const getCalendarDetailAsync = createAsyncThunk<
{ calId: string; events: CalendarEvent[]; calType?: string },
{ calId: string; match: { start: string; end: string }; calType?: string },
{
calId: string;
match: { start: string; end: string };
calType?: string;
signal?: AbortSignal;
},
{ rejectValue: RejectedError }
>(
"calendars/getCalendarDetails",
async ({ calId, match, calType }, { rejectWithValue }) => {
async ({ calId, match, calType, signal }, { rejectWithValue }) => {
try {
const calendar = (await getCalendar(calId, match)) as Record<string, any>;
const calendar = (await getCalendar(calId, match, signal)) as Record<
string,
any
>;
const color = calendar["apple:color"];
const events: CalendarEvent[] = calendar._embedded["dav:item"].flatMap(
(eventdata: any) => {
@@ -736,10 +744,7 @@ const CalendarSlice = createSlice({
const type = action.payload.calType === "temp" ? "templist" : "list";
if (!state[type][action.payload.calId]) {
state[type][action.payload.calId] = {
id: action.payload.calId,
events: {},
} as Calendars;
return;
}
action.payload.events.forEach((event) => {
state[type][action.payload.calId].events[event.uid] = event;
@@ -998,6 +1003,12 @@ const CalendarSlice = createSlice({
})
.addCase(getTempCalendarsListAsync.rejected, (state, action) => {
state.pending = false;
if (
action.payload?.message.includes("aborted") ||
action.error.name === "AbortError"
) {
return;
}
state.error =
action.payload?.message ||
action.error.message ||
@@ -1005,6 +1016,12 @@ const CalendarSlice = createSlice({
})
.addCase(getCalendarDetailAsync.rejected, (state, action) => {
state.pending = false;
if (
action.payload?.message.includes("aborted") ||
action.error.name === "AbortError"
) {
return;
}
state.error =
action.payload?.message ||
action.error.message ||