Files
frontend/src/lib/hooks/useRequest.js
Amirhossein Mahmoodi a6eef76045 fixe notification
2024-12-23 12:19:32 +03:30

49 lines
1.4 KiB
JavaScript

import { errorResponse } from "@/core/utils/errorResponse";
import { successRequest } from "@/core/utils/successRequest";
import axios from "axios";
import { useAuth } from "../contexts/auth";
const defaultOptions = {
data: {},
requestOptions: {
headers: {},
},
notificationShow: true,
notificationSuccess: false,
notificationFailed: true
};
const useRequest = (initOptions) => {
const { logout } = useAuth();
const _options = Object.assign({}, defaultOptions, initOptions);
return async (url = "", method = "get", options) => {
const mergedOptions = Object.assign({}, _options, options);
try {
const response = await axios({
url,
method,
data: method === "get" ? null : mergedOptions.data,
withCredentials: true,
...mergedOptions.requestOptions,
});
successRequest(mergedOptions.notificationShow && mergedOptions.notificationSuccess, "request_data");
return response;
} catch (error) {
if (error.response) {
errorResponse(
error.response,
mergedOptions.notificationShow && mergedOptions.notificationFailed,
"request_data",
logout
);
}
throw error;
}
};
};
export default useRequest;