console.log("🔍 [FaceAut Classifier] Content script cargado en grupo...");

const wait = (ms) => new Promise(r => setTimeout(r, ms));

async function clasificarGrupoActual() {
  await wait(2000);

  const urlActual = window.location.href;
  const bodyText = document.body ? (document.body.innerText || "") : "";
  const mainEl = document.querySelector('[role="main"]') || document.body;
  const mainText = mainEl ? (mainEl.innerText || "") : "";
  const combinedText = (bodyText + " " + mainText).toLowerCase();

  // 1. ¿AÚN EXISTE?
  const noExiste = 
    combinedText.includes("contenido no disponible") ||
    combinedText.includes("esta página no está disponible") ||
    combinedText.includes("este contenido no está disponible") ||
    combinedText.includes("el enlace al que accediste puede estar roto") ||
    combinedText.includes("página no encontrada") ||
    combinedText.includes("this content isn't available right now") ||
    combinedText.includes("the link you followed may be broken") ||
    combinedText.includes("page not found");

  const aunExiste = !noExiste;

  if (!aunExiste) {
    console.warn("⚠️ Grupo no existe / eliminado:", urlActual);
    return responder({
      url: urlActual,
      aun_existe: false,
      pausado: false,
      es_discusion: false,
      disponible_publicar: false,
      estado_clasificacion: 'no_existe'
    });
  }

  // 2. ¿ESTÁ PAUSADO?
  const pausado = 
    combinedText.includes("en pausa") ||
    combinedText.includes("pausado") ||
    combinedText.includes("pausada") ||
    combinedText.includes("pausaron") ||
    combinedText.includes("pausó") ||
    combinedText.includes("se ha pausado") ||
    combinedText.includes("se han pausado") ||
    combinedText.includes("se pausó") ||
    combinedText.includes("publicaciones en pausa") ||
    combinedText.includes("publicaciones pausadas") ||
    combinedText.includes("actividad en pausa") ||
    combinedText.includes("group is paused") ||
    combinedText.includes("group paused") ||
    combinedText.includes("posts are paused") ||
    combinedText.includes("posting is paused") ||
    combinedText.includes("posting paused") ||
    combinedText.includes("activity is paused") ||
    combinedText.includes("paused by admin");

  // 3. ¿ES DE DISCUSIÓN O SOLO VENTAS?
  const esVentasSolo = !urlActual.includes('view=group_discussion') && 
                       (bodyText.includes("¿Qué vendes?") || bodyText.includes("What are you selling?"));

  const tieneTabConversacion = Array.from(document.querySelectorAll('a, [role="tab"], span'))
    .some(el => {
      const txt = el.innerText?.trim().toLowerCase() || "";
      return txt === "conversación" || txt === "discussion" || txt === "conversar" || txt === "discusión";
    });

  const esDiscusion = !esVentasSolo || tieneTabConversacion;

  // 4. ¿DISPONIBLE PARA PUBLICAR?
  const buttons = Array.from(document.querySelectorAll('[role="button"], [role="tab"]'));
  const esMiembro = buttons.some(btn => {
    const txt = btn.innerText?.trim().toLowerCase() || "";
    return txt === "eres miembro" || txt === "miembro" || txt === "member" || txt === "unido" || txt === "joined";
  }) || mainText.includes("Eres miembro") || mainText.includes("Miembro de este grupo");

  const tieneCajaPublicar = Array.from(document.querySelectorAll('[role="button"], span, div')).some(el => {
    const txt = el.innerText?.trim().toLowerCase() || "";
    return txt.includes("escribe algo") || txt.includes("write something") || txt.includes("crear publicación") || txt.includes("create post");
  });

  const disponiblePublicar = aunExiste && !pausado && (esMiembro || tieneCajaPublicar);

  // 5. ESTADO GENERADO
  let estadoClasificacion = 'disponible';
  if (!aunExiste) {
    estadoClasificacion = 'no_existe';
  } else if (pausado) {
    estadoClasificacion = 'pausado';
  } else if (!esDiscusion) {
    estadoClasificacion = 'solo_ventas';
  } else if (!disponiblePublicar) {
    estadoClasificacion = 'sin_acceso';
  } else {
    estadoClasificacion = 'disponible';
  }

  const resultado = {
    url: urlActual,
    aun_existe: aunExiste,
    pausado: pausado,
    es_discusion: esDiscusion,
    disponible_publicar: disponiblePublicar,
    estado_clasificacion: estadoClasificacion
  };

  console.log("📊 Resultado clasificación:", resultado);
  responder(resultado);
}

function responder(data) {
  try {
    chrome.runtime.sendMessage({
      type: "CLASSIFY_RESULT",
      data: data
    });
  } catch (e) {
    console.error("❌ Error enviando resultado de clasificación:", e);
  }
}

clasificarGrupoActual();
