panjareh
Version:
Panjareh using aparat and phoenix-video-player to play videos on desktops and tvs.
57 lines (47 loc) • 1.51 kB
JavaScript
import { AuthApi } from "../../api";
import Axios from ".";
import { AuthStorage } from "../../utils/authStorage";
const refreshTokenHandler = async (error) => {
const originalRequest = error.config;
let accessToken = AuthStorage.getToken();
if (!accessToken) {
return Promise.reject(error);
}
if (!originalRequest._retry) {
originalRequest._retry = true;
return AuthApi.refreshToken({
headers: { Authorization: `Bearer ${accessToken}` },
}).then((res) => {
const { access_token } = res;
if (access_token) {
AuthStorage.setToken(access_token);
originalRequest.headers["Authorization"] = `Bearer ${access_token}`;
console.log("Access token refreshed!");
}
return Axios(originalRequest);
});
} else {
return Promise.reject(error?.response?.data || error?.response);
}
};
const catchAxiosError = (error) => {
const status = error?.response ? error?.response.status : null;
if (error?.response) {
if (status === 401) {
return refreshTokenHandler(error);
}
if (status === 404) {
// todo: rewire response for apis that not found
return Promise.reject({ status: status, ...error?.response?.data });
}
if (status === 500) {
return null;
}
} else if (error.request) {
return Promise.reject(error.message);
} else {
console.log("Error", error.message);
}
return Promise.reject(error?.response?.data || error?.response);
};
export { catchAxiosError };