import axios from 'axios';

/**
 * Instância centralizada do Axios para todas as comunicações com o backend.
 * A base URL é configurada via variável de ambiente VITE_API_URL.
 * 
 * Exemplo de configuração no .env:
 * VITE_API_URL=https://dev.workspace.itguys.com.br/api
 */
const api = axios.create({
  baseURL: import.meta.env.VITE_API_URL || 'https://dev.workspace.itguys.com.br/api',
  headers: {
    'Content-Type': 'application/json',
  },
  timeout: 120000, // 120 segundos (2 minutos) para lidar com a lentidão do backend
});

// Interceptor para adicionar o token em cada requisição
api.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem('x-access-token');
    if (token) {
      config.headers['x-access-token'] = token;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// Interceptor para tratamento de erros de resposta
api.interceptors.response.use(
  (response) => response,
  (error) => {
    // Tratamento de erro 401 (não autorizado)
    if (error.response?.status === 401) {
      // Limpar token inválido
      localStorage.removeItem('x-access-token');
      localStorage.removeItem('integra_user');
      
      // Redirecionar para login se não estiver já na página de login
      const currentPath = window.location.pathname;
      if (!currentPath.includes('/login')) {
        // Redireciona para o login específico do ambiente atual
        if (currentPath.includes('/plataforma/prafrot')) {
          window.location.href = '/plataforma/prafrot/login';
        } else if (currentPath.includes('/plataforma/financeiro-v2')) {
          window.location.href = '/plataforma/auth/login-finance';
        } else if (currentPath.includes('/plataforma/fleet-v2')) {
          window.location.href = '/plataforma/auth/login';
        } else if (currentPath.includes('/plataforma/hr')) {
          window.location.href = '/plataforma/hr/login';
        } else if (currentPath.includes('/plataforma/fleet')) {
          window.location.href = '/plataforma/fleet/login';
        } else {
          // Default para o login global do sistema
          window.location.href = '/plataforma/auth/login';
        }
      }
    }
    
    return Promise.reject(error);
  }
);

export default api;
