import { autenticacion, cambiarTokenDeOpciones } from './autenticacion.js';
import { obtenerDatosLocalStorage } from './local-storage.js';

export function establecerDatosDeEnvio(objetoAforo) {
  const { _id = 2021 } = objetoAforo;
  const bodyData = { _id, ...objetoAforo };
  return bodyData;
}

export async function peticionPostGenerica(url, opciones) {
  console.log(opciones)
  const { tiempoDeEspera = 8000 } = opciones;
  const controller = new AbortController();
  const id = setTimeout(() => controller.abort(), tiempoDeEspera);
  const respuesta = await fetch(url, {...opciones, signal: controller.signal});
  // let entro = 0;
  if (respuesta.status == 401 || respuesta.status == 400) {
    // entro = 1;
    autenticacion().then(()=>{
      const opcionesConTokenNuevo = cambiarTokenDeOpciones(opciones, obtenerDatosLocalStorage('xtoken'));
      peticionPostGenerica(url, opcionesConTokenNuevo);
    });
  }
  if (respuesta.status != 200) {
    throw new Error(`HTTP error! status: ${respuesta.status}`);
  }
  // if(entro)
  clearTimeout(id);
  const bodyData = await respuesta.json();
  return bodyData;
}