diff --git a/packages/site/app/actus/[id]/[slug]/utils.ts b/packages/site/app/actus/[id]/[slug]/utils.ts index 834d1e9adb..8aff4ef2cd 100644 --- a/packages/site/app/actus/[id]/[slug]/utils.ts +++ b/packages/site/app/actus/[id]/[slug]/utils.ts @@ -13,6 +13,8 @@ import { VideoFetchedData, } from '../../../types'; +const LIMIT = 50; + export const getMetaData = async (id: number) => { const data = await fetchItem('actualites', id, [ ['populate[0]', 'seo'], @@ -59,13 +61,32 @@ export const getData = async (id: number) => { ]); if (data) { - const {data: idList} = await fetchCollection('actualites', [ + const {data: ids, meta} = await fetchCollection('actualites', [ ['fields[0]', 'DateCreation'], ['fields[1]', 'createdAt'], ['fields[2]', 'Epingle'], ['sort[0]', 'createdAt:desc'], + ['pagination[start]', '0'], + ['pagination[limit]', `${LIMIT}`], ]); + const {pagination} = meta; + let idList = ids; + let page = 1; + + while (page < Math.ceil(pagination.total / pagination.limit)) { + const {data} = await fetchCollection('actualites', [ + ['fields[0]', 'DateCreation'], + ['fields[1]', 'createdAt'], + ['fields[2]', 'Epingle'], + ['sort[0]', 'createdAt:desc'], + ['pagination[start]', `${page * LIMIT}`], + ['pagination[limit]', `${LIMIT}`], + ]); + idList.push(...data); + page++; + } + const sortedIds = idList ? idList .map(d => ({ diff --git a/packages/site/app/actus/page.tsx b/packages/site/app/actus/page.tsx index 0525c12022..14359744b8 100644 --- a/packages/site/app/actus/page.tsx +++ b/packages/site/app/actus/page.tsx @@ -10,6 +10,8 @@ import {Metadata} from 'next'; import {convertNameToSlug} from 'src/utils/convertNameToSlug'; import {notFound} from 'next/navigation'; +const LIMIT = 50; + export async function generateMetadata(): Promise { return { title: 'Actualités', @@ -26,13 +28,30 @@ type ActuCard = { }; const getData = async () => { - const {data} = await fetchCollection('actualites', [ + const {data, meta} = await fetchCollection('actualites', [ ['populate[0]', 'Couverture'], ['sort[0]', 'createdAt:desc'], + ['pagination[start]', '0'], + ['pagination[limit]', `${LIMIT}`], ]); - const formattedData: ActuCard[] | null = data - ? data.map(d => ({ + const {pagination} = meta; + let cards = data; + let page = 1; + + while (page < Math.ceil(pagination.total / pagination.limit)) { + const {data} = await fetchCollection('actualites', [ + ['populate[0]', 'Couverture'], + ['sort[0]', 'createdAt:desc'], + ['pagination[start]', `${page * LIMIT}`], + ['pagination[limit]', `${LIMIT}`], + ]); + cards.push(...data); + page++; + } + + const formattedData: ActuCard[] | null = cards + ? cards.map(d => ({ id: d.id, titre: d.attributes.Titre as unknown as string, dateCreation: