@josipp/use-fetch
Version:
Simple useFetch hook for sequential requests
36 lines (28 loc) • 1.27 kB
JavaScript
import { useCallback } from 'react';
import { useFetchOptions } from '../../fetchContetxt/useFetchContext';
import { AbortError, NetworkError } from '../errorInstances';
import consts from '../consts';
const useCatchErrorInstance = () => {
const { providerOptions } = useFetchOptions();
const handleCatch = useCallback(
(err, ...rest) => {
let abortErrorNames = providerOptions?.abortErrorNames;
let networkErrorMessages = providerOptions?.networkErrorMessages;
if (!Array.isArray(abortErrorNames)) {
abortErrorNames = consts.defaultAbortErrorNames;
}
if (!Array.isArray(networkErrorMessages)) {
networkErrorMessages = consts.defaultNetworkErrorMessages;
}
if (err instanceof DOMException && abortErrorNames.includes(err?.name)) {
throw new AbortError(err?.message, ...rest);
} else if (networkErrorMessages.includes(err?.message)) {
throw new NetworkError(err?.message, ...rest);
}
throw err;
},
[providerOptions?.abortErrorNames, providerOptions?.networkErrorMessages]
);
return handleCatch;
};
export default useCatchErrorInstance;