I have figured out my previous problem and the whole code works properly, however I am interested if there is a better way to write this big function, using axios interceptor.
export const handleFetchData =
(accessToken, refreshToken) => async (dispatch) => {
authentification.interceptors.response.use((response) => {
if (response.data.statusCode === 200) {
console.log("valid");
dispatch({ type: "USER_ME", payload: response });
} else {
console.log("invalid");
axios({
method: "post",
url: "http://142.93.134.108:1111/refresh",
headers: { Authorization: `Bearer ${refreshToken}` },
}).then((res) => {
localStorage.setItem("accessToken", res.data.body.access_token);
localStorage.setItem("refreshToken", res.data.body.refresh_token);
axios
.get("http://142.93.134.108:1111/me", {
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
})
.then((reply) => dispatch({ type: "USER_ME", payload: reply }));
});
}
return response;
});
await authentification.get("http://142.93.134.108:1111/me", {
headers: {
Authorization: "Bearer " + accessToken,
},
});
};