UNPKG

minh-custom-hooks-release

Version:

My custom hooks for working easier while developing react web app

31 lines (30 loc) 1.61 kB
import { type DependencyList } from 'react'; import { Observable, Subscription } from 'rxjs'; import { EnumSubscriptionState, type ExtractGeneric, type UseTaskObservable } from './@types/useTaskObservable'; export type UseTaskEffectObservable<TFunc extends () => Promise<any> | Observable<any>, TPreHandlerResult extends ReturnType<Observable<ExtractGeneric<ReturnType<TFunc>>>['pipe']>> = UseTaskObservable<TFunc, TPreHandlerResult> & { deps?: DependencyList; enabled?: boolean; loadingAtInit?: boolean; }; export default function useTaskEffectObservable<TFunc extends () => Promise<any> | Observable<any>, TPreHandlerResult extends ReturnType<Observable<ExtractGeneric<ReturnType<TFunc>>>['pipe']> = Observable<ExtractGeneric<ReturnType<TFunc>>>>({ task, observablePreHandler, onNext, onComplete, onError, onCancel, deps, enabled, loadingAtInit, }: UseTaskEffectObservable<TFunc, TPreHandlerResult>): { data: ExtractGeneric<TPreHandlerResult> | undefined; err: any; state: EnumSubscriptionState; subscriptionState: EnumSubscriptionState; isIdle: boolean; isLoading: boolean; isSuccess: boolean; isFailed: boolean; isCanceled: boolean; isSubscriptionIdle: boolean; isSubscriptionLoading: boolean; isSubscriptionDataReceived: boolean; isSubscriptionSuccess: boolean; isSubscriptionFailed: boolean; isSubscriptionCanceled: boolean; refetch: () => void; complete: () => void; cancel: () => void; subscription: Subscription | null; createObservable: () => Observable<ExtractGeneric<TPreHandlerResult>> | undefined; };