import { NextResponse } from "next/server";
import { linkPublicoNaLoja } from "@/lib/banner-editor/link-publico";
import { quemPodeCriarArtes } from "@/lib/banner-editor/servidor";
import { origemPublicaDoAdmin } from "@/lib/origem-publica";

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

/**
 * O link público de um design da empresa (o "Compartilhar" da galeria): quem
 * abre vê, toca e baixa, sem login (app/arte/[codigo]). A assinatura sai da
 * chave do servidor, por isso o link é feito aqui e não no navegador.
 */
export async function POST(request: Request) {
  const acesso = await quemPodeCriarArtes();
  if ("falha" in acesso && acesso.falha) return NextResponse.json({ error: acesso.falha.texto }, { status: acesso.falha.status, headers: { "Cache-Control": "no-store" } });
  const corpo = (await request.json().catch(() => ({}))) as { id?: unknown };
  const id = typeof corpo.id === "string" && /^[0-9a-f-]{36}$/i.test(corpo.id) ? corpo.id : "";
  if (!id) return NextResponse.json({ error: "Escolha o design." }, { status: 400 });
  /* Pelo cliente da pessoa: o RLS só deixa ver os designs da empresa dela. */
  const { data } = await acesso.supabase.from("artes_do_editor").select("id").eq("id", id).eq("user_id", acesso.dono).maybeSingle();
  if (!data) return NextResponse.json({ error: "Esse design não foi encontrado." }, { status: 404 });
  /* No endereço da loja (o domínio próprio ou o grátis), como o link do pedido. */
  return NextResponse.json({ link: await linkPublicoNaLoja(origemPublicaDoAdmin(request), acesso.dono, id) }, { headers: { "Cache-Control": "no-store" } });
}
