UNPKG

@hyper-fetch/react

Version:

React hooks and utils for the hyper-fetch

109 lines (103 loc) 3.58 kB
import { Dispatcher, ExtractErrorType, CacheValueType, ExtractResponseType, RequestInstance, LoggerType, ExtractAdapterType, ExtractAdapterStatusType, ExtractAdapterExtraType, ExtractAdapterReturnType, NullableType, } from "@hyper-fetch/core"; import { isEqual } from "utils"; export type UseTrackedStateProps<T extends RequestInstance> = { request: T; logger: LoggerType; initialData: NullableType<Partial<ExtractAdapterReturnType<T>>>; dispatcher: Dispatcher; dependencyTracking: boolean; defaultCacheEmitting?: boolean; deepCompare: boolean | typeof isEqual; disabled?: boolean; revalidate?: boolean; }; export type UseTrackedStateReturn<T extends RequestInstance> = [ UseTrackedStateType<T>, UseTrackedStateActions<T>, { setRenderKey: (renderKey: keyof UseTrackedStateType<T>) => void; setCacheData: (cacheData: CacheValueType<ExtractResponseType<T>, ExtractErrorType<T>>) => void; getStaleStatus: () => boolean; getIsDataProcessing: (cacheKey: string) => boolean; }, ]; export type UseTrackedStateType<T extends RequestInstance = RequestInstance> = { /** * Request response data */ data: null | ExtractResponseType<T>; /** * Request response error */ error: null | ExtractErrorType<T>; /** * Request loading state */ loading: boolean; /** * Request status */ status: ExtractAdapterStatusType<ExtractAdapterType<T>>; /** * Request additional response data */ extra: ExtractAdapterExtraType<ExtractAdapterType<T>>; /** * Information whether request succeeded */ success: boolean; /** * Request attempts */ retries: number; /** * Request response timestamp */ timestamp: null | Date; }; export type UseTrackedStateActions<T extends RequestInstance> = { /** * Action to set custom data. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option. */ setData: (data: ExtractResponseType<T>, emitToCache?: boolean) => void; /** * Action to set custom error. We can do it locally(inside hook state) or in all hooks with 'emitToCache' option. */ setError: (error: ExtractErrorType<T>, emitToCache?: boolean) => void; /** * Action to set custom loading. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option */ setLoading: (loading: boolean, emitToHooks?: boolean) => void; /** * Action to set custom status. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option */ setStatus: (status: ExtractAdapterStatusType<ExtractAdapterType<T>>, emitToCache?: boolean) => void; /** * Action to set custom success. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option */ setSuccess: (success: boolean, emitToCache?: boolean) => void; /** * Action to set custom additional data. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option */ setExtra: (extra: ExtractAdapterExtraType<ExtractAdapterType<T>>, emitToCache?: boolean) => void; /** * Action to set custom retries count. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option */ setRetries: (retries: number, emitToCache?: boolean) => void; /** * Action to set custom timestamp. We can do it locally(inside hook state) or in cache(all related sources) with 'emitToCache' option */ setTimestamp: (timestamp: Date, emitToCache?: boolean) => void; };