// Configuración central de la API // En local (localhost / 127.0.0.1) apunta al backend Docker; en producción, al servidor real. const API_BASE = ( location.hostname === "localhost" || location.hostname === "127.0.0.1" || location.hostname === "" // file:// abierto directamente ) ? "http://localhost:8080" : "/api"; /** * Realiza una llamada autenticada a la API. * Si el servidor devuelve 401 (token caducado/inválido), cierra la sesión automáticamente. */ async function apiCall(endpoint, options = {}) { const token = getToken(); const headers = { "Content-Type": "application/json", ...(token ? { "Authorization": `Bearer ${token}` } : {}), ...(options.headers || {}) }; const response = await fetch(`${API_BASE}${endpoint}`, { ...options, headers }); if (response.status === 401) { cerrarSesion(); return null; } return response; }