minh-custom-hooks-release
Version:
My custom hooks for working easier while developing react web app
31 lines (30 loc) • 1.61 kB
TypeScript
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;
};