@resourge/react-fetch
Version:
[](LICENSE)
47 lines (46 loc) • 1.72 kB
TypeScript
/**
* react-fetch v1.41.3
*
* 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<string, {
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>>;
};