Use same lock values as mobile clients
[ProtonMail-WebClient.git] / packages / shared / lib / api / helpers / paginatedFetch.ts
blobea5e11b3aa85bf759fe7dabc42dcd0b501029def
1 import type { Api } from '../../interfaces';
3 const MAX_ITERATIONS = 100;
5 const paginatedFetch = async <T>(
6     api: Api,
7     cb: (pageNumber: number, pageSize: number) => Promise<T[]>,
8     max = MAX_ITERATIONS
9 ) => {
10     const pageSize = 100;
11     let pageNumber = 0;
12     let result: T[] = [];
14     while (pageNumber < max) {
15         const page = await cb(pageNumber, pageSize);
16         result = result.concat(page);
17         if (page.length !== pageSize) {
18             break;
19         }
20         pageNumber++;
21     }
23     return result;
26 export default paginatedFetch;