// Wrapper de fetch para las rutas de sesión /app/umind/*. La cookie de
// sesión viaja sola por ser mismo origen. Si el JWT expiró, AuthWeb()
// redirige a /login devolviendo HTML en vez de un 401 JSON — fetch sigue
// ese redirect solo, así que lo detectamos por el content-type de vuelta.
async function request(path, options = {}) {
  const res = await fetch(path, {
    ...options,
    headers: { 'Content-Type': 'application/json', ...options.headers },
  })

  const contentType = res.headers.get('content-type') || ''
  if (res.redirected || !contentType.includes('application/json')) {
    window.location.href = '/login'
    throw new Error('Sesión expirada')
  }

  const data = await res.json()
  if (!res.ok) {
    throw new Error(data?.error || data?.message || 'Error de servidor')
  }
  return data
}

export const api = {
  get: (path) => request(path),
  post: (path, body) => request(path, { method: 'POST', body: JSON.stringify(body) }),
  put: (path, body) => request(path, { method: 'PUT', body: JSON.stringify(body) }),
  del: (path) => request(path, { method: 'DELETE' }),
}
