SME_V1Client/src/api/Axios.jsx

50 lines
1.3 KiB
JavaScript

import axios from "axios";
import { navigateTo } from "../helper/navigator";
const api = axios.create({
baseURL: import.meta.env.VITE_BASE_API_URL,
headers: {
"X-AUTH-TYPE": "TRANSACTIONAL",
"ngrok-skip-browser-warning": "69420",
},
});
// Request Interceptor — auto attach uuid from URL
api.interceptors.request.use(
(config) => {
const uuid = new URLSearchParams(window.location.search).get("uuid");
if (uuid) {
config.headers.Authorization = `${uuid}`;
// config.headers.Authorization = `Bearer ${uuid}`;
}
return config;
},
(error) => Promise.reject(error)
);
// Response Interceptor — global error routing
api.interceptors.response.use(
(response) => response,
(error) => {
const status = error?.response?.status;
const message = error?.response?.data?.message || "Something went wrong.";
const errorCode = error?.response?.data?.errorCode || null;
const uuid = new URLSearchParams(window.location.search).get("uuid");
if (status === 401) {
navigateTo("/session-expired", {
replace: true,
state: { status, message, errorCode, uuid },
});
} else {
navigateTo("/error", {
replace: true,
state: { status, message, errorCode },
});
}
return Promise.reject(error);
}
);
export default api;