import axios from “axios“;
import jwt_decode from “jwt-decode“;
export const axiosInstance = (history = null) => {
let authTokens = localStorage.getItem(“jwt“);
const axiosInstance = axios.create({
baseURL: process.env.REACT_APP_APIURL,
headers: { Authorization: `Bearer ${authTokens}` },
});
try{
jwt_decode(localStorage.jwt);
}catch(err){
localStorage.removeItem(“jwt“);
window.location.replace(“/“)
}
const decodedToken = jwt_decode(localStorage.jwt);
const refreshToken = async () => {
try {
const res = await axios.post(`${process.env.REACT_APP_APIURL}refreshtoken`, {
token: localStorage.jwt,
id:decodedToken.id
});
localStorage.setItem(“jwt“, res.data.newToken);
return res.data.newToken;
} catch (err) {
console.log(err);
}
};
// if(localStorage.getItem(“jwt”)===”undefined”){
// localStorage.removeItem(“jwt”);
// console.log(“uuuuss”);
// } else
// if(localStorage.getItem(“jwt”)===undefined){
// localStorage.removeItem(“jwt”);
// console.log(“uuuu”);
// } else
if(localStorage.jwt){
axiosInstance.interceptors.request.use(
async (config) => {
let currentDate = new Date();
if (decodedToken.exp * 1000 < currentDate.getTime()) {
const data = await refreshToken();
config.headers[“Authorization“] = “Bearer “ + data;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);}else{
window.location.replace(“/login“);
}
return axiosInstance;
};