// conteo de visitas

// #######################################################
// REVISAR SI YA SE HA VISTO EL POST EL DÍA DE HOY
// #######################################################
const postId = window.location.pathname.split("/")[2]; // ID del post desde la URL
const today = new Date().toISOString().split("T")[0]; // YYYY-MM-DD

// Obtener historial de visitas del localStorage o un objeto vacío
let viewedPosts = JSON.parse(localStorage.getItem("url_viewed") || "{}");

// Revisar si ya fue visto hoy
const alreadyViewedToday = viewedPosts[postId] === today;

if (!alreadyViewedToday) {
  // Actualizar localStorage
  viewedPosts[postId] = today;
  localStorage.setItem("url_viewed", JSON.stringify(viewedPosts));

  // Enviar datos al backend
  fetch("/blog/get-data", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ post_id: postId }),
  })
    .then((res) => res.json())
    .then((data) => {
      if (data.success) {
        let viewed = document.getElementById("viewed");
        let n_viewed = parseInt(viewed.innerText) + 1;
        viewed.innerText = n_viewed;
      }
    })
    .catch((err) => console.error("Error al enviar datos:", err));
}
// else {
//   console.log("El post ya fue visto hoy");
// }

// #######################################################
// ACTUALIZAR CONTEO CADA MINUTO
// #######################################################

const cur_id = window.location.pathname.split("/")[2];
const viewed = document.getElementById("viewed");

async function fetchViewCount() {
  try {
    const res = await fetch(
      window.location.origin + "/blog/api/count-post-viewed"
    );
    const data = await res.json();

    const dict = {};
    data.forEach((item) => {
      dict[item.id_post] = item.count;
    });

    const n_viewed = parseInt(viewed.innerText);
    if (dict[cur_id] !== n_viewed) {
      viewed.innerText = dict[cur_id] ?? 0;
    }
  } catch (err) {
    console.error("Error al obtener datos de visitas:", err);
  }
}

// Ejecutar de inmediato
// fetchViewCount();

// Luego cada minuto
setInterval(fetchViewCount, 30000);
