Merge branch 'IDTEAM-1.26.0' into 'main'
[ProtonMail-WebClient.git] / packages / shared / lib / calendar / api.ts
blob7b88ca45cda44dc2cc2062708b9c972abcc45df8
1 import { getEventByUID } from '../api/calendars';
2 import type { Api } from '../interfaces';
3 import type { CalendarEvent, GetEventByUIDArguments } from '../interfaces/calendar';
4 import type { CALENDAR_TYPE } from './constants';
6 const MAX_ITERATIONS = 100;
8 export const getPaginatedEventsByUID = async ({
9     api,
10     uid,
11     recurrenceID,
12     max = MAX_ITERATIONS,
13     calendarType,
14 }: {
15     api: Api;
16     uid: string;
17     recurrenceID?: number;
18     max?: number;
19     calendarType?: CALENDAR_TYPE;
20 }) => {
21     const pageSize = 100;
22     let pageNumber = 0;
23     let result: CalendarEvent[] = [];
25     while (pageNumber < max) {
26         const params: GetEventByUIDArguments = {
27             UID: uid,
28             RecurrenceID: recurrenceID,
29             Page: pageNumber,
30             PageSize: pageSize,
31         };
33         if (calendarType !== undefined) {
34             params.CalendarType = calendarType;
35         }
36         const page = await api<{ Events: CalendarEvent[] }>(getEventByUID(params));
37         result = result.concat(page.Events);
38         if (page.Events.length !== pageSize) {
39             break;
40         }
41         pageNumber++;
42     }
44     return result;
47 export const reformatApiErrorMessage = (message: string) => {
48     if (message.toLowerCase().endsWith('. please try again')) {
49         return message.slice(0, -18);
50     }
51     return message;