Spaces:
Sleeping
Sleeping
| 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; | |