diff --git a/packages/core/admin/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeSearchResults.js b/packages/core/admin/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeSearchResults.js index 8718cd6e0f..53cf471505 100644 --- a/packages/core/admin/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeSearchResults.js +++ b/packages/core/admin/admin/src/content-manager/components/RelationInputDataManager/utils/normalizeSearchResults.js @@ -8,8 +8,9 @@ export const normalizeSearchResults = (relations, { mainFieldName }) => { ...relations, data: pages .map((page) => - (page ?? []).results.map((relation) => normalizeRelation(relation, { mainFieldName })) + page?.results.map((relation) => normalizeRelation(relation, { mainFieldName })) ) + .filter(Boolean) .flat(), }; }; diff --git a/packages/core/admin/admin/src/content-manager/hooks/useRelation/useRelation.js b/packages/core/admin/admin/src/content-manager/hooks/useRelation/useRelation.js index 4d9486ad54..4090f436ea 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useRelation/useRelation.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useRelation/useRelation.js @@ -49,13 +49,26 @@ export const useRelation = (cacheKey, { name, relation, search }) => { const relationsRes = useInfiniteQuery(['relation', cacheKey], fetchRelations, { cacheTime: 0, enabled: relation.enabled, + /** + * @type {(lastPage: + * | { data: null } + * | { results: any[], + * pagination: { + * page: number, + * pageCount: number, + * pageSize: number, + * total: number + * } + * } + * ) => number} + */ getNextPageParam(lastPage) { const isXToOneRelation = !lastPage?.pagination; if ( !lastPage || // the API may send an empty 204 response isXToOneRelation || // xToOne relations do not have a pagination - lastPage.pagination.page >= lastPage.pagination.pageCount + lastPage?.pagination.page >= lastPage?.pagination.pageCount ) { return undefined; } @@ -126,8 +139,21 @@ export const useRelation = (cacheKey, { name, relation, search }) => { fetchSearch, { enabled: Object.keys(searchParams).length > 0, + /** + * @type {(lastPage: + * | { data: null } + * | { results: any[], + * pagination: { + * page: number, + * pageCount: number, + * pageSize: number, + * total: number + * } + * } + * ) => number} + */ getNextPageParam(lastPage) { - if (lastPage.pagination.page >= lastPage.pagination.pageCount) { + if (!lastPage?.pagination || lastPage.pagination.page >= lastPage.pagination.pageCount) { return undefined; }