UNPKG

@resourge/react-fetch

Version:

[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

47 lines (46 loc) 1.72 kB
/** * react-fetch v1.43.1 * * Copyright (c) resourge. * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ import { type PaginationMetadata } from '../types'; import { type PaginationSearchParamsType } from '../types/ParamsType'; export type PreloadConfig = false | { maxPerPage?: number; next?: boolean; previous?: boolean; /** * @default 60000 miliseconds (1minute) */ timeout?: number; }; export type PreloadMethodResult<Data extends any[]> = { data: Data; totalItems?: number; }; export type PreloadRef<Data> = Record<number, { data: { data: Data; totalItems?: number; }; date: number; }>; export type PreloadProps<Data extends any[], FilterSearchParams extends Record<string, any> = Record<string, any>> = { deps: readonly any[]; initialPage: number; method: (metadata: PaginationMetadata<FilterSearchParams>) => Promise<PreloadMethodResult<Data>>; preload?: PreloadConfig; }; export declare const usePreload: <Data extends any[], FilterSearchParams extends Record<string, any> = Record<string, any>>({ method, preload, initialPage, deps }: PreloadProps<Data, FilterSearchParams>) => { willPreload: (page: number) => boolean; getMethod: (metadata: PaginationMetadata<FilterSearchParams>) => Promise<PreloadMethodResult<Data>>; getRestoreMethod: (metadata: PaginationMetadata<FilterSearchParams>, pagination: PaginationSearchParamsType, onData?: (index: number, data: Data) => void) => Promise<{ totalItems: number | undefined; }>; preloadRef: import("react").MutableRefObject<PreloadRef<Data>>; };