Axios interceptor
Tue Jun 15 2021 20:23:48 GMT+0000 (UTC)
Saved by
@bifrost
#javascript
import axios from "axios";
import { redirect } from "helpers/historyDom";
import store from 'app/store';
import {logout} from 'app/actions/authAction';
// const { default: axios } = require("axios");
/* creating custom axios */
const axiosIntercept = axios.create({
//baseURL : process.env.REACT_APP_API_URL ,
//timeout : 200 ,
headers : {
'Content-Type': 'application/json',
'Authorization' : `Token ${localStorage.getItem('god_token')}` ,
},
});
/* callback to clear storage and local state */
const clearStorage = async (_callback) => {
// await localStorage.clear()
await store.dispatch(logout())
_callback();
}
const requestHandler = (request) => {
// console.log(request)
request.headers.Authorization = `Token ${localStorage.getItem('god_token')}` ;
return request ;
};
const responseHandler = (response) => {
if(response.status === 401){
// console.log(response)
// console.log("got yaaaaaaaaaaaaaaaaaa response")
clearStorage(()=>{
redirect('/Connexion')
})
}
return response
};
const errorHandler = (error) => {
if(error.response.status === 401){
clearStorage(()=>{
redirect('/Connexion')
})
};
return Promise.reject(error)
// return error
};
axiosIntercept.interceptors.request.use(
(request) => requestHandler(request) ,
(error) => errorHandler(error) ,
);
axiosIntercept.interceptors.response.use(
(request) => responseHandler(request) ,
(error) => errorHandler(error) ,
);
export default axiosIntercept ;
content_copyCOPY
Comments