Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / applications / drive / src / app / store / _search / indexing / fetchItemsMetadataPage.ts
blobf53eb220070746944e01172eb18a2a69e664189b
1 import { getApiError } from '@proton/shared/lib/api/helpers/apiErrorHelper';
2 import type { ShareMapLink } from '@proton/shared/lib/interfaces/drive/link';
4 import retryOnError from '../../../utils/retryOnError';
5 import { PAGE_SIZE, SESSION_EXPIRED_ERROR_CODE } from '../constants';
6 import type { Session } from '../types';
7 import { getDefaultSessionValue } from '../utils';
8 import type { FetchShareMap } from './useFetchShareMap';
10 export const fetchItemsMetadataPage = async (
11     shareId: string,
12     fetchShareMap: FetchShareMap,
13     sessionName?: Session['sessionName'],
14     page?: number
15 ): Promise<{
16     links: ShareMapLink[];
17     session: Session;
18 }> => {
19     return retryOnError<{
20         links: ShareMapLink[];
21         session: Session;
22     }>({
23         fn: async (sessionName: Session['sessionName'], page?: number) => {
24             const lastIndex = page === undefined ? undefined : page * PAGE_SIZE - 1;
25             const { Links, SessionName, More, Total } = await fetchShareMap({
26                 shareId,
27                 lastIndex,
28                 sessionName,
29                 pageSize: PAGE_SIZE,
30             });
32             return {
33                 links: Links,
34                 session: {
35                     sessionName: SessionName,
36                     isDone: More === 0,
37                     total: Total,
38                 },
39             };
40         },
41         shouldRetryBasedOnError: (error) => {
42             const apiError = getApiError(error);
43             if (apiError.code === SESSION_EXPIRED_ERROR_CODE) {
44                 return true;
45             }
47             console.warn(error);
48             return false;
49         },
50         beforeRetryCallback: async () => {
51             return [getDefaultSessionValue()];
52         },
53         maxRetriesNumber: 2,
54     })(sessionName, page);