import { ehDaEquipe } from "@/lib/live/regras";
import { lerCorpo, rotaDeQuemEsta } from "@/lib/live/servidor/rota";
import { estadoAtual, mensagensRecentes, talvezAvisarPessoas } from "@/lib/live/servidor/sala";

export const runtime = "nodejs";

/*
 * O sinal de vida da tela (a cada 15 s). Marca que a pessoa continua na sala
 * e devolve o estado de agora: se o canal de avisos cair, a tela segue em dia
 * por aqui. As mensagens vêm junto quando a tela pede (canal fora do ar, ou
 * quem apresenta no modo "só perguntas").
 */
export async function POST(req: Request, { params }: { params: Promise<{ salaId: string }> }) {
  const { salaId } = await params;
  return rotaDeQuemEsta(req, salaId, async ({ admin, sala, eu }) => {
    const corpo = await lerCorpo(req);
    await admin.from("live_participantes").update({ visto_em: new Date().toISOString() }).eq("id", eu.id);
    await talvezAvisarPessoas(admin, sala.id);
    const estado = await estadoAtual(admin, sala.id);
    const querMensagens = corpo.semCanal === true || (ehDaEquipe(eu.papel) && sala.chat === "perguntas");
    const desde = typeof corpo.desde === "string" ? corpo.desde : null;
    return {
      estado,
      podeFalar: eu.pode_falar,
      horaDoServidor: Date.now(),
      mensagens: querMensagens ? await mensagensRecentes(admin, sala, eu, desde) : null,
    };
  });
}
