Spaces:
Sleeping
Sleeping
File size: 1,051 Bytes
f4854a1 | 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 30 31 32 33 34 35 36 37 38 39 40 41 | import axios from 'axios';
import { auth } from './firebase';
import { API_BASE_URL } from '../utils/constants';
// Create axios instance with base URL
const api = axios.create({
baseURL: API_BASE_URL,
headers: {
'Content-Type': 'application/json',
},
});
// Request interceptor — attach Firebase ID token
api.interceptors.request.use(
async (config) => {
try {
const user = auth.currentUser;
if (user) {
const token = await user.getIdToken();
config.headers.Authorization = `Bearer ${token}`;
}
} catch (error) {
console.error('Error getting auth token:', error);
}
return config;
},
(error) => Promise.reject(error)
);
// Response interceptor — handle errors
api.interceptors.response.use(
(response) => response.data,
(error) => {
const message = error.response?.data?.error || error.message || 'Something went wrong';
console.error('API Error:', message);
return Promise.reject({ message, status: error.response?.status });
}
);
export default api;
|