import { supabase } from "@/lib/supabase";

const SESSION_ID_KEY = "tablero_cdc_metrics_session_id";
const RECORDED_KEY = "tablero_cdc_metrics_open_recorded";

function getOrCreateSessionId() {
  if (typeof window === "undefined") return crypto.randomUUID();

  const current = window.sessionStorage.getItem(SESSION_ID_KEY);
  if (current) return current;

  const next = crypto.randomUUID();
  window.sessionStorage.setItem(SESSION_ID_KEY, next);
  return next;
}

/**
 * Registra una apertura válida del Tablero CDC una vez por sesión del navegador.
 * Nunca bloquea el acceso a la app si el módulo de métricas todavía no está instalado.
 */
export async function recordTableroCdcOpen() {
  if (typeof window !== "undefined" && window.sessionStorage.getItem(RECORDED_KEY) === "1") {
    return;
  }

  const sessionId = getOrCreateSessionId();
  const { error } = await supabase.rpc("tablero_cdc_track_app_open", {
    p_session_id: sessionId,
  });

  if (error) {
    const message = String(error.message || "").toLowerCase();
    const missingFunction =
      message.includes("tablero_cdc_track_app_open") ||
      message.includes("could not find the function") ||
      message.includes("schema cache");

    if (!missingFunction) {
      console.warn("No se pudo registrar la métrica de apertura del Tablero CDC:", error);
    }
    return;
  }

  if (typeof window !== "undefined") {
    window.sessionStorage.setItem(RECORDED_KEY, "1");
  }
}
