"use strict";

import Usuario from "../models/usuarioModel.js?v=2.0.0";
import {
  mostrarMensajes,
  obtenerParametroUrl,
} from "./funcionesGenerales.js?v=2.0.0";
import construirMenu from "./menu.js?v=2.0.0";
import { NOMBRE_SESION } from "./constantes.js?v=2.0.0";

!(async function () {
  document
    .getElementById("logout-link")
    .addEventListener("click", Usuario.cerrarSesion);

  try {
    await verificarToken();
    await construirMenu();
  } catch (err) {
    mostrarMensajes.error(err);
  }
})();

function verificarToken() {
  return new Promise((resolve, reject) => {
    try {
      const jwtU = obtenerParametroUrl("jwtU"),
        local = localStorage.getItem(`${NOMBRE_SESION}-UId`);

      if (!jwtU || local) {
        return resolve();
      }

      const idUsuario = atob(decodeURIComponent(jwtU));

      const nombreUsuario = document.getElementById(
        "spnNombreUsuarioApp"
      ).innerText;
      let codedIdUsuario = btoa(idUsuario);

      localStorage.setItem(`${NOMBRE_SESION}-UId`, codedIdUsuario);
      localStorage.setItem(
        `${NOMBRE_SESION}-${codedIdUsuario}-UName`,
        nombreUsuario
      );
      resolve();
    } catch (err) {
      reject(err);
    }
  });
}
