Untitled
unknown
javascript
3 years ago
1.9 kB
12
Indexable
const showError = (errorStatus, message = '') => {
Sentry.captureMessage(`Lỗi API Futures: ${message}`);
};
export const createAxios = (config, isPrivate) => {
const axiosInstance = axios.create({
...defaultConfigAxios,
...config,
});
axiosInstance.interceptors.request.use(req => {
if (isPrivate) {
const token = getTokenByStore().access_token;
req.headers.Authorization = `Bearer ${token}`;
}
return req;
});
axiosInstance.interceptors.response.use(
response => {
if (response.status < 200 || response.status > 300) {
console.log('response error', response);
}
return response;
},
async error => {
const errorConfig = error.config;
const responseError = {
...error,
response: {
...error.response,
},
};
if (
error?.response?.status === 401 &&
!errorConfig._retry &&
!isRefreshing
) {
errorConfig._retry = true;
try {
const token = getTokenByStore();
refreshAccessToken(token);
isRefreshing = isRefreshing
? isRefreshing
: refreshAccessToken(token);
await isRefreshing;
isRefreshing = null;
return axiosInstance(errorConfig);
} catch (err) {
return Promise.reject(err);
}
} else {
if (
error?.response?.status !== 401 &&
responseError?.response?.config?.url
) {
showError(
responseError?.response?.data?.code,
`url: ${responseError?.response?.config?.url}\nstatus: ${responseError?.response?.status}\nmessage: ${responseError?.response?.data?.message}`,
);
}
}
// console.log('handle error api', responseError?.response?.data?.code);
return responseError;
},
);
return axiosInstance;
};Editor is loading...