Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / applications / calendar / src / app / containers / alarms / getPaginatedAlarms.ts
blob2df72fa0662bbab85e49f78cd1ecee0d579e0060
1 import { getUnixTime } from 'date-fns';
3 import { queryCalendarAlarms } from '@proton/shared/lib/api/calendars';
4 import type { Api } from '@proton/shared/lib/interfaces';
5 import type { CalendarAlarm } from '@proton/shared/lib/interfaces/calendar';
7 const MAX_FETCH_ITERATIONS = 100;
9 const getPaginatedAlarms = async (api: Api, calendarID: string, dateRange: Date[]) => {
10     let results: CalendarAlarm[] = [];
12     const PageSize = 100;
14     const params = {
15         End: getUnixTime(dateRange[1]),
16         PageSize,
17     };
19     let lastStart: number | undefined = getUnixTime(dateRange[0]);
20     let iterations = 0;
22     while (lastStart !== undefined && iterations < MAX_FETCH_ITERATIONS) {
23         // https://github.com/microsoft/TypeScript/issues/36687
24         // @ts-ignore
25         const { Alarms = [] } = await api<{ Alarms: CalendarAlarm[] }>(
26             queryCalendarAlarms(calendarID, { ...params, Start: lastStart })
27         );
28         const lastAlarm = Alarms.length > 0 ? Alarms[Alarms.length - 1] : undefined;
29         results = results.concat(Alarms);
30         lastStart = Alarms.length === PageSize && lastAlarm ? lastAlarm.Occurrence : undefined;
31         iterations++;
32     }
34     return results;
37 export default getPaginatedAlarms;