import axios from 'axios';

// Создаем экземпляр axios с базовыми настройками
const api = axios.create({
  baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:8000/api',
  headers: {
    'Content-Type': 'application/json',
  },
});

// Перехватчик запросов для добавления токена авторизации
api.interceptors.request.use(
  (config) => {
    // Проверяем, что мы в браузере, а не на сервере
    if (typeof window !== 'undefined') {
      const token = localStorage.getItem('token');
      if (token) {
        config.headers.Authorization = `Bearer ${token}`;
      }
    }
    return config;
  },
  (error) => Promise.reject(error)
);

// Перехватчик ответов для обработки ошибок
api.interceptors.response.use(
  (response) => response,
  async (error) => {
    // Проверяем, что error.response существует
    if (error.response) {
      const originalRequest = error.config;
      
      // Если ошибка 401 (неавторизован) и это не повторный запрос
      if (error.response.status === 401 && !originalRequest._retry) {
        originalRequest._retry = true;
        
        // Здесь можно добавить логику обновления токена
        // Например, перенаправление на страницу входа
        if (typeof window !== 'undefined') {
          localStorage.removeItem('token');
          window.location.href = '/login';
        }
      }
    }
    
    return Promise.reject(error);
  }
);

export default api; 