@hyper-fetch/react
Version:
React hooks and utils for the hyper-fetch
115 lines • 4.55 kB
TypeScript
import { ExtractAdapterResolvedType, NullableType, RequestInstance, RequestSendType } from '@hyper-fetch/core';
import { isEqual } from '../../utils';
import { OnProgressCallbackType, OnStartCallbackType, OnSuccessCallbackType, OnErrorCallbackType, OnFinishedCallbackType, UseTrackedStateType, UseTrackedStateActions } from '../../helpers';
export type UseSubmitOptionsType<T extends RequestInstance> = {
/**
* Disable submitting
*/
disabled?: boolean;
/**
* If cache is empty we can use placeholder data.
*/
initialResponse?: NullableType<Partial<ExtractAdapterResolvedType<T>>>;
/**
* Enable/disable debouncing for often changing keys or refreshing, to limit requests to server.
*/
bounce?: boolean;
/**
* If `true` it will rerender only when values used by our component gets changed. Otherwise it will rerender on any change.
*/
dependencyTracking?: boolean;
/**
* Deep comparison function for hook to check for equality in incoming data, to limit rerenders.
*/
deepCompare?: boolean | typeof isEqual;
} & ({
/**
* Possibility to choose between debounce and throttle approaches
*/
bounceType?: "debounce";
/**
* How long it should bounce requests.
*/
bounceTime?: number;
} | {
/**
* Possibility to choose between debounce and throttle approaches
*/
bounceType: "throttle";
/**
* How long it should interval requests.
*/
bounceTime?: number;
/**
* ONLY in throttle mode - options for handling last bounce event
*/
bounceTimeout?: number;
});
export type UseSubmitReturnType<RequestType extends RequestInstance> = Omit<UseTrackedStateType<RequestType>, "loading"> & UseTrackedStateActions<RequestType> & {
/**
* Callback which allows to cancel ongoing requests from given queryKey.
*/
abort: () => void;
/**
* Helper hook listening on success response. Includes `mutationContext` when `setOptimistic` is configured.
*/
onSubmitSuccess: (callback: OnSuccessCallbackType<RequestType>) => void;
/**
* Helper hook listening on error response. Includes `mutationContext` when `setOptimistic` is configured.
*/
onSubmitError: (callback: OnErrorCallbackType<RequestType>) => void;
/**
* Helper hook listening on any response. Includes `mutationContext` when `setOptimistic` is configured.
*/
onSubmitFinished: (callback: OnFinishedCallbackType<RequestType>) => void;
/**
* Helper hook listening on request start.
*/
onSubmitRequestStart: (callback: OnStartCallbackType<RequestType>) => void;
/**
* Helper hook listening on response start(before we receive all data from server).
*/
onSubmitResponseStart: (callback: OnStartCallbackType<RequestType>) => void;
/**
* Helper hook listening on download progress ETA. We can later match given requests by their id's or request instance which holds all data which is being transferred.
*/
onSubmitDownloadProgress: (callback: OnProgressCallbackType) => void;
/**
* Helper hook listening on upload progress ETA. We can later match given requests by their id's or request instance which holds all data which is being transferred.
*/
onSubmitUploadProgress: (callback: OnProgressCallbackType) => void;
/**
* Helper hook listening on aborting of requests. Includes `mutationContext` when `setOptimistic` is configured. Abort events are not triggering onError callbacks.
*/
onSubmitAbort: (callback: OnErrorCallbackType<RequestType>) => void;
/**
* Helper hook listening on request going into offline awaiting for network connection to be restored. It will not trigger onError when 'offline' mode is set on request.
*/
onSubmitOfflineError: (callback: OnErrorCallbackType<RequestType>) => void;
/**
* Method responsible for triggering requests. It return Promise which will be resolved with the request.
*/
submit: RequestSendType<RequestType>;
/**
* Request loading state
*/
submitting: boolean;
/**
* Data related to current state of the bounce usage
*/
bounce: {
/**
* Active state of the bounce method
*/
active: boolean;
/**
* Method to stop the active bounce method execution
*/
reset: () => void;
};
/**
* Refetch current request
*/
refetch: () => void;
};
//# sourceMappingURL=use-submit.types.d.ts.map