UNPKG

minh-custom-hooks-release

Version:

My custom hooks for working easier while developing react web app

43 lines (42 loc) 1.76 kB
export declare enum EnumTaskState { IDLE = "IDLE", PENDING = "PENDING", SUCCESS = "SUCCESS", FAIL = "FAIL", CANCELED = "CANCELED" } export type UnwrapPromise<T> = T extends Promise<infer U> ? U : T; export type TTaskType = (...args: any[]) => Promise<any>; export type UseTaskProps<TTask extends TTaskType, TError extends any = any> = { task: TTask; startLoadingOnBeforeStart?: boolean; onBeforeStart?: () => Promise<boolean>; onInit?: (run: (...args: any[]) => any, cancel: () => void, reset: () => void) => void; onSuccess?(data: UnwrapPromise<ReturnType<TTask>> | undefined, others: { params: [...Parameters<TTask>]; }): void; onError?(error: TError | undefined, others: { params: [...Parameters<TTask>]; }): void; onFinally?(others?: { params: [...Parameters<TTask>]; }): void; preserve?: boolean; preserveWhenError?: boolean; loadingAtInit?: boolean; debounceTime?: number; resetOnUnmount?: boolean; }; export default function useTask<TTask extends (...args: any[]) => Promise<any>, TError extends any>({ task, startLoadingOnBeforeStart, onBeforeStart, onInit, onSuccess, onError, onFinally, preserve, preserveWhenError, loadingAtInit, debounceTime, resetOnUnmount, }: UseTaskProps<TTask, TError>): { data: UnwrapPromise<ReturnType<TTask>> | undefined; error: TError | undefined; state: "IDLE" | "SUCCESS" | "CANCELED" | "PENDING" | "FAIL"; isIdle: boolean; isLoading: boolean; isSuccess: boolean; isError: boolean; run: (...args: Parameters<typeof task>) => void; runAsync: (...args: Parameters<typeof task>) => Promise<UnwrapPromise<ReturnType<TTask>> | undefined>; cancel: () => void; reset: () => void; };