/*
  A marca do navegador da equipe.

  Quem vende costuma abrir o próprio link do orçamento para conferir — no
  WhatsApp Web, logo depois de mandar. Essa abertura contava como se fosse do
  cliente. Agora o navegador em que alguém da
  empresa usa o painel leva um cookie com o código da empresa, no domínio do
  Ktalogu inteiro (o painel e a loja são endereços irmãos). A página do
  orçamento vê o cookie e registra a abertura como da equipe.

  O cookie só diz "este navegador é da empresa X". Não dá acesso a nada: quem
  o falsificasse só esconderia as próprias aberturas.

  Domínio próprio de loja (loja.cliente.com.br) não recebe o cookie; lá, a
  abertura do vendedor pode ser marcada à mão no painel ("fui eu").
*/

export const COOKIE_DA_EQUIPE = "ktl_equipe";
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
const VALIDADE_EM_SEGUNDOS = 180 * 24 * 60 * 60;

export function valorDaMarcaDaEquipe(empresas: string[]) {
  return [...new Set(empresas.filter((id) => UUID.test(id)))].slice(0, 20).join(",");
}

/* O domínio do cookie: o Ktalogu inteiro em produção; em outro endereço (o
   localhost, por exemplo), só ele — e no localhost o cookie vale em todas as
   portas, então a loja local também o vê. */
export function dominioDaMarca(host: string) {
  const limpo = host.toLowerCase();
  return limpo === "ktalogu.com.br" || limpo.endsWith(".ktalogu.com.br") ? ".ktalogu.com.br" : null;
}

export function marcarNavegadorDaEquipe(empresas: string[]) {
  if (typeof document === "undefined") return;
  const valor = valorDaMarcaDaEquipe(empresas);
  if (!valor) return;
  const dominio = dominioDaMarca(window.location.hostname);
  const partes = [
    `${COOKIE_DA_EQUIPE}=${encodeURIComponent(valor)}`,
    "path=/",
    `max-age=${VALIDADE_EM_SEGUNDOS}`,
    "samesite=lax",
    dominio ? `domain=${dominio}` : "",
    window.location.protocol === "https:" ? "secure" : "",
  ].filter(Boolean);
  try {
    document.cookie = partes.join("; ");
  } catch {
    /* Cookie bloqueado: as aberturas da equipe voltam a contar, como antes. */
  }
}
