From ee893cd8e5fc3d5e71dd893cf42cce79babd7057 Mon Sep 17 00:00:00 2001 From: Camille Moussu <66134347+Eriikah@users.noreply.github.com> Date: Fri, 13 Mar 2026 09:49:36 +0100 Subject: [PATCH] 535 coderabbit linter pr comments (#611) --- src/components/Calendar/CalendarModal.tsx | 2 +- .../services/getCalendarsListAsync.ts | 10 ++---- .../Calendars/utils/extractCalendarEvents.ts | 2 +- src/features/Events/EventApi.ts | 2 +- src/features/Events/EventModal.tsx | 19 ++--------- src/features/Events/EventUpdateModal.tsx | 34 ++----------------- src/features/Events/eventUtils.ts | 3 +- .../moveEventBetweenCalendars.ts | 15 ++------ ...ThunkSuccess.tsx => assertThunkSuccess.ts} | 0 9 files changed, 15 insertions(+), 72 deletions(-) rename src/utils/{assertThunkSuccess.tsx => assertThunkSuccess.ts} (100%) diff --git a/src/components/Calendar/CalendarModal.tsx b/src/components/Calendar/CalendarModal.tsx index 79d271b..9a45724 100644 --- a/src/components/Calendar/CalendarModal.tsx +++ b/src/components/Calendar/CalendarModal.tsx @@ -221,7 +221,7 @@ function CalendarPopover({ if (importedContent) { dispatch( importEventFromFileAsync({ - calLink: `/calendar/${userData.openpaasId}/${calId}.json`, + calLink: `/calendars/${userData.openpaasId}/${calId}.json`, file: importedContent, }) ); diff --git a/src/features/Calendars/services/getCalendarsListAsync.ts b/src/features/Calendars/services/getCalendarsListAsync.ts index af135bd..3e6fe2d 100644 --- a/src/features/Calendars/services/getCalendarsListAsync.ts +++ b/src/features/Calendars/services/getCalendarsListAsync.ts @@ -2,7 +2,7 @@ import { RootState } from "@/app/store"; import { OpenPaasUserData } from "@/features/User/type/OpenPaasUserData"; import { getOpenPaasUser, getUserDetails } from "@/features/User/userAPI"; import { defaultColors } from "@/utils/defaultColors"; -import { formatReduxError } from "@/utils/errorUtils"; +import { formatReduxError, toRejectedError } from "@/utils/errorUtils"; import { createAsyncThunk } from "@reduxjs/toolkit"; import { getCalendars } from "../CalendarApi"; import { Calendar, CalendarInvite } from "../CalendarTypes"; @@ -79,7 +79,7 @@ export const getCalendarsListAsync = createAsyncThunk< const color = cal["apple:color"] ? { light: cal["apple:color"], - dark: "#FFF", + dark: defaultColors[0].dark, } : defaultColors[0]; @@ -145,10 +145,6 @@ export const getCalendarsListAsync = createAsyncThunk< errors: errors.join("\n"), }; } catch (err) { - const error = err as { response?: { status?: number } }; - return rejectWithValue({ - message: formatReduxError(err), - status: error.response?.status, - }); + return rejectWithValue(toRejectedError(err)); } }); diff --git a/src/features/Calendars/utils/extractCalendarEvents.ts b/src/features/Calendars/utils/extractCalendarEvents.ts index 3eb7df6..4dccacb 100644 --- a/src/features/Calendars/utils/extractCalendarEvents.ts +++ b/src/features/Calendars/utils/extractCalendarEvents.ts @@ -52,7 +52,7 @@ export function extractCalendarEvents( .filter(Boolean) as CalendarEvent[]; } -function extractValarm(vevent: VCalComponent[]) { +function extractValarm(vevent: VCalComponent) { const subComponents = vevent[2]; if (!Array.isArray(subComponents)) { return undefined; diff --git a/src/features/Events/EventApi.ts b/src/features/Events/EventApi.ts index 3af983e..fcd5e8d 100644 --- a/src/features/Events/EventApi.ts +++ b/src/features/Events/EventApi.ts @@ -373,7 +373,7 @@ export async function searchEvent( organizers?: string[]; attendees?: string[]; } = { - query: keywords ? keywords : query, + query: keywords || query, calendars: searchIn.map((calId) => { const [userId, calendarId] = calId.split("/"); return { calendarId, userId }; diff --git a/src/features/Events/EventModal.tsx b/src/features/Events/EventModal.tsx index ddac1a1..f0f1c74 100644 --- a/src/features/Events/EventModal.tsx +++ b/src/features/Events/EventModal.tsx @@ -7,6 +7,7 @@ import { formatLocalDateTime, } from "@/components/Event/utils/dateTimeFormatters"; import { convertFormDateTimeToISO } from "@/components/Event/utils/dateTimeHelpers"; +import { assertThunkSuccess } from "@/utils/assertThunkSuccess"; import { buildEventFormTempData, clearEventFormTempData, @@ -38,7 +39,6 @@ import React, { import { useI18n } from "twake-i18n"; import { Calendar } from "../Calendars/CalendarTypes"; import { putEventAsync } from "../Calendars/services"; -import { AsyncThunkResult } from "../Calendars/types/AsyncThunkResult"; import { userAttendee } from "../User/models/attendee"; import { CalendarEvent, RepetitionObject } from "./EventsTypes"; import { buildDelegatedEventURL } from "./eventUtils"; @@ -847,22 +847,7 @@ function EventPopover({ }) ); - // Handle result of putEventAsync - check if rejected first - const typedResult = result as AsyncThunkResult; - - // Check if result is a rejected action - if (typedResult.type && typedResult.type.endsWith("/rejected")) { - throw new Error( - typedResult.error?.message || - typedResult.payload?.message || - "API call failed" - ); - } - - // If result has unwrap, call it (it will throw if rejected) - if (typedResult && typeof typedResult.unwrap === "function") { - await typedResult.unwrap(); - } + await assertThunkSuccess(result); // Clear temp data on successful save clearEventFormTempData("create"); diff --git a/src/features/Events/EventUpdateModal.tsx b/src/features/Events/EventUpdateModal.tsx index 6c039aa..5685743 100644 --- a/src/features/Events/EventUpdateModal.tsx +++ b/src/features/Events/EventUpdateModal.tsx @@ -1,5 +1,4 @@ import { useAppDispatch, useAppSelector } from "@/app/hooks"; -import { updateAttendeesAfterTimeChange } from "@/features/Events/updateEventHelpers/updateAttendeesAfterTimeChange"; import { ResponsiveDialog } from "@/components/Dialog"; import EventFormFields from "@/components/Event/EventFormFields"; import { addDays } from "@/components/Event/utils/dateRules"; @@ -10,6 +9,7 @@ import { updateEventInstanceAsync, updateSeriesAsync, } from "@/features/Calendars/services"; +import { updateAttendeesAfterTimeChange } from "@/features/Events/updateEventHelpers/updateAttendeesAfterTimeChange"; import { assertThunkSuccess } from "@/utils/assertThunkSuccess"; import { buildEventFormTempData, @@ -39,7 +39,6 @@ import { updateEventLocal, } from "../Calendars/CalendarSlice"; import { Calendar } from "../Calendars/CalendarTypes"; -import { AsyncThunkResult } from "../Calendars/types/AsyncThunkResult"; import { userAttendee } from "../User/models/attendee"; import { deleteEvent, getEvent, putEvent } from "./EventApi"; import { CalendarEvent, RepetitionObject } from "./EventsTypes"; @@ -798,19 +797,7 @@ function EventUpdateModal({ ); // Handle result of updateEventInstanceAsync - const typedResult = result as AsyncThunkResult; - if (typedResult && typeof typedResult.unwrap === "function") { - await typedResult.unwrap(); - } else { - // Check if result is rejected - if (typedResult.type && typedResult.type.endsWith("/rejected")) { - throw new Error( - typedResult.error?.message || - typedResult.payload?.message || - "API call failed" - ); - } - } + await assertThunkSuccess(result); // Clear temp data on successful save clearEventFormTempData("update"); @@ -871,22 +858,7 @@ function EventUpdateModal({ ); // Handle result of updateSeriesAsync - const typedResult = result as AsyncThunkResult; - if (typedResult && typeof typedResult.unwrap === "function") { - await typedResult.unwrap(); - } else { - // Check if result is rejected - if ( - typedResult.type && - typedResult.type.endsWith("/rejected") - ) { - throw new Error( - typedResult.error?.message || - typedResult.payload?.message || - "API call failed" - ); - } - } + await assertThunkSuccess(result); // Clear cache after successful update dispatch(clearFetchCache(calId)); diff --git a/src/features/Events/eventUtils.ts b/src/features/Events/eventUtils.ts index e719b20..a8b89f1 100644 --- a/src/features/Events/eventUtils.ts +++ b/src/features/Events/eventUtils.ts @@ -7,6 +7,7 @@ import moment from "moment-timezone"; import { Calendar } from "../Calendars/CalendarTypes"; import { RepetitionRule, + VCalComponent, VObjectProperty, } from "../Calendars/types/CalendarData"; import { userAttendee } from "../User/models/attendee"; @@ -37,7 +38,7 @@ export function parseCalendarEvent( color: Record, calendar: Calendar, eventURL: string, - valarm?: VObjectProperty[] + valarm?: VCalComponent ): CalendarEvent { const event: Partial = { color, attendee: [] }; let recurrenceId; diff --git a/src/features/Events/updateEventHelpers/moveEventBetweenCalendars.ts b/src/features/Events/updateEventHelpers/moveEventBetweenCalendars.ts index ea178e6..7e8da63 100644 --- a/src/features/Events/updateEventHelpers/moveEventBetweenCalendars.ts +++ b/src/features/Events/updateEventHelpers/moveEventBetweenCalendars.ts @@ -5,7 +5,6 @@ import { moveEventAsync, putEventAsync, } from "@/features/Calendars/services"; -import { AsyncThunkResult } from "@/features/Calendars/types/AsyncThunkResult"; import { userAttendee } from "@/features/User/models/attendee"; import { userOrganiser } from "@/features/User/userDataTypes"; import { assertThunkSuccess } from "@/utils/assertThunkSuccess"; @@ -186,12 +185,7 @@ async function moveDelegatedEvent({ putEventAsync({ cal: targetCalendar, newEvent: eventForTargetCalendar }) ); - const typedPutResult = putResult as AsyncThunkResult; - if (typedPutResult && typeof typedPutResult.unwrap === "function") { - await typedPutResult.unwrap(); - } else { - await assertThunkSuccess(putResult); - } + await assertThunkSuccess(putResult); const deleteResult = await dispatch( deleteEventAsync({ @@ -201,10 +195,5 @@ async function moveDelegatedEvent({ }) ); - const typedDeleteResult = deleteResult as AsyncThunkResult; - if (typedDeleteResult && typeof typedDeleteResult.unwrap === "function") { - await typedDeleteResult.unwrap(); - } else { - await assertThunkSuccess(deleteResult); - } + await assertThunkSuccess(deleteResult); } diff --git a/src/utils/assertThunkSuccess.tsx b/src/utils/assertThunkSuccess.ts similarity index 100% rename from src/utils/assertThunkSuccess.tsx rename to src/utils/assertThunkSuccess.ts