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 ;
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter