import { NextResponse } from "next/server";
import { createClient } from "@/lib/supabase-server";
import { getCompanyContext, resolveCompanyPublicProfileId } from "@/lib/company-context";
import { avisarLojaEEsperar } from "@/lib/loja/avisar-loja";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

/**
 * "Minha loja mudou": o pedido que o admin faz depois de gravar, direto do
 * navegador, qualquer coisa que a vitrine mostra (tema, banner, seção, story,
 * categoria, cupom). Quem dispara é lib/loja/avisar-do-navegador.ts.
 *
 * A loja guarda o retrato de cada vitrine por dois minutos; sem este aviso o
 * lojista trocava o tema, abria a loja e via o antigo. O navegador não pode
 * avisar a loja sozinho porque o aviso é assinado com a chave de serviço.
 *
 * Não recebe nada no corpo: a loja avisada é sempre a da empresa de quem
 * está logado, então ninguém consegue mexer na lembrança da loja dos outros.
 * `loja` diz se a loja ouviu; `false` só significa que a mudança aparece
 * sozinha em até dois minutos.
 */
export async function POST(req: Request) {
  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();
  if (!user) return NextResponse.json({ error: "Não autenticado." }, { status: 401 });

  const ctx = await getCompanyContext(supabase, user);
  const loja = await avisarLojaEEsperar(resolveCompanyPublicProfileId(ctx, user.id), req);
  return NextResponse.json({ ok: true, loja });
}
