import { origemPublicaDoAdmin } from "./origem-publica.ts";

/**
 * Onde a loja virtual atende, do caminho mais curto para o mais longo. Quem
 * usa é lib/loja/avisar-loja.ts, para pedir que a loja esqueça o retrato
 * guardado de uma vitrine.
 *
 * 1. Em produção os dois apps moram na mesma máquina (ecosystem.config.cjs:
 *    loja na porta 3001). Falar direto com ela não depende de domínio, de
 *    certificado nem da Cloudflare, e responde em milissegundos.
 * 2. O endereço público. O protocolo sai do HOST e não do `x-forwarded-proto`
 *    (ver origem-publica.ts): atrás da Cloudflare o cabeçalho diz "http", o
 *    aviso saía para http://ktalogu.com.br, tomava um 301 para https e
 *    chegava como GET numa rota que só aceita POST. Foi assim que, em
 *    produção, o aviso nunca chegou e toda mudança levava os dois minutos.
 */
export function enderecosDaLoja(request?: Request): string[] {
  const enderecos: string[] = [];
  if (process.env.NODE_ENV === "production") enderecos.push("http://127.0.0.1:3001");

  const configurado = String(
    process.env.NEXT_PUBLIC_PUBLIC_CATALOG_BASE_URL || process.env.PUBLIC_CATALOG_BASE_URL || ""
  ).trim();
  if (configurado) enderecos.push(configurado.replace(/\/+$/, ""));
  else if (request) enderecos.push(lojaDoAdmin(origemPublicaDoAdmin(request)));

  return Array.from(new Set(enderecos.filter(Boolean)));
}

/** admin.ktalogu.com.br vira ktalogu.com.br, e a porta 3002 vira 3001, do
    mesmo jeito que o acesso ao portal do cliente já faz. */
export function lojaDoAdmin(origemDoAdmin: string) {
  return origemDoAdmin
    .replace(":3002", ":3001")
    .replace(/\/\/admin\./, "//")
    .replace(/\/+$/, "");
}
