import { createContext } from 'react'; import { InfiniteListControllerResult } from './useInfiniteListController'; /** * Context to store the pagination callbacks from the useInfiniteListController() result. * * Use the useInfinitePaginationContext() hook to read the pagination callbacks. * * @typedef {Object} InfinitePaginationContextValue * @prop {Function} fetchNextPage a callback to fetch the next page * @prop {Function} fetchPreviousPage a callback to fetch the previous page * @example * * import { useListController, ListPaginationContext } from 'ra-core'; * * const List = props => { * const { fetchNextPage, fetchPreviousPage } = useInfiniteListController(props); * return ( * * ... * * ); * }; */ export const InfinitePaginationContext = createContext({ hasNextPage: false, fetchNextPage: () => Promise.reject('not implemented'), isFetchingNextPage: false, hasPreviousPage: false, fetchPreviousPage: () => Promise.reject('not implemented'), isFetchingPreviousPage: false, }); InfinitePaginationContext.displayName = 'InfinitePaginationContext'; export type InfinitePaginationContextValue = Pick< InfiniteListControllerResult, | 'fetchNextPage' | 'fetchPreviousPage' | 'isFetchingNextPage' | 'hasNextPage' | 'hasPreviousPage' | 'isFetchingPreviousPage' >;