import { useCallback, useMemo } from "react"; import { useToast } from "../context/ToastContext"; const useHttpRequest = () => { const { error } = useToast(); const handleError = useCallback( (err) => { const message = `${err.title} ${err.correlationId}`; error(message); }, [error] ); const defaultOptions = useMemo( () => ({ onCompleted: () => {}, onError: handleError }), [handleError] ); const exec = useCallback( async (request, options) => { const internalOptions = { ...defaultOptions, ...options }; const { onCompleted, onError } = internalOptions; try { const result = await request(); onCompleted(result); return result; } catch (error) { onError(error); throw error; } }, [defaultOptions] ); return { exec }; }; export default useHttpRequest;