diff --git a/src/hooks/usePagination.tsx b/src/hooks/usePagination.tsx index e2cb9965b..b7ffa20a8 100644 --- a/src/hooks/usePagination.tsx +++ b/src/hooks/usePagination.tsx @@ -24,6 +24,7 @@ export function usePagination( const total: number | undefined = Array.isArray(dataOrFetchFunction) ? dataOrFetchFunction.length : undefined; + let serverCount: number | undefined; const fetchPage = useCallback( async (page: number): Promise => { @@ -31,15 +32,17 @@ export function usePagination( let result; if (Array.isArray(dataOrFetchFunction)) { result = dataOrFetchFunction.slice(skip, skip + limit); + serverCount = dataOrFetchFunction.length; setData(result); } else { result = await dataOrFetchFunction(limit, skip); + serverCount = (result as any).serverCount; setData(result); } - if (result.length < limit) { - setHasMore(false); + if (serverCount !== undefined) { + setHasMore(page * limit < serverCount); } else { - setHasMore(true); + setHasMore(result.length >= limit); } }, [limit, dataOrFetchFunction],