All files / app/utils hasAtLeastOnePage.ts

100% Statements 2/2
100% Branches 3/3
100% Functions 1/1
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21                        12x           251x    
import { InfiniteData } from "react-query";
 
export type EndsWithList = `${string}List`;
export type ObjectWithListValue<TData> = {
  [Key in keyof TData]: Key extends EndsWithList ? unknown[] : unknown;
};
 
/**
 * Utility function for checking if the resultant infinite data has at least one
 * page of data in.
 * @returns true if there is at least one page of data, false otherwise.
 */
export default function hasAtLeastOnePage<
  TData extends ObjectWithListValue<TData>
>(
  data: InfiniteData<TData> | undefined,
  listKey: keyof TData & EndsWithList
): data is InfiniteData<TData> {
  return !!data && data.pages.length > 0 && data.pages[0][listKey].length > 0;
}