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;