import axios from 'axios';
import store from '../store';

// API-Basis-URL - Apache-Proxy für Produktion, direkte Verbindung für lokale Entwicklung
const getApiBaseURL = () => {
    // Wenn explizite Umgebungsvariable gesetzt ist, diese verwenden
    if (import.meta.env.VITE_API_BASE_URL) {
        return import.meta.env.VITE_API_BASE_URL;
    }
    
    // Für lokale Entwicklung: direkte Backend-Verbindung
    if (import.meta.env.DEV || window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
        return 'http://localhost:3001';
    }
    
    // Für Produktion: Root-Pfad, da API-Endpunkte bereits mit /api beginnen
    return '';
};


const apiClient = axios.create({
    baseURL: getApiBaseURL(),
    headers: {
        'Content-Type': 'application/json'
    }
});

apiClient.interceptors.request.use(config => {
    const user = store.getters.user;
    
    if (user && user.authCode) {
        config.headers['userid'] = user.id;
        config.headers['authcode'] = user.authCode; // Kleinschreibung!
    }
    
    return config;
}, error => {
    return Promise.reject(error);
});

apiClient.interceptors.response.use(response => {
    return response;
}, error => {
    if (error.response && error.response.status === 401) {
        store.dispatch('logout');
    }
    return Promise.reject(error);
});

export default apiClient;
