Spaces:
Runtime error
Runtime error
File size: 777 Bytes
cdc55f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import axios from "axios";
const api = axios.create({
baseURL: import.meta.env.VITE_API_URL || "http://localhost:8000",
});
// Attach token from module-level getter (set by AuthProvider)
let _getToken: (() => string | null) = () => null;
export function setTokenGetter(fn: () => string | null) { _getToken = fn; }
let _onUnauthorized: (() => void) = () => {};
export function setUnauthorizedHandler(fn: () => void) { _onUnauthorized = fn; }
api.interceptors.request.use((config) => {
const token = _getToken();
if (token) config.headers.Authorization = `Bearer ${token}`;
return config;
});
api.interceptors.response.use(
(r) => r,
(err) => {
if (err.response?.status === 401) _onUnauthorized();
return Promise.reject(err);
}
);
export default api;
|