import type { Metadata } from "next";
import GaleraDaKtalogu from "./GaleraDaKtalogu";
import { galeraDoServidor } from "./galera-do-servidor";

/**
 * Vitrine publica das lojas — atende lojas.ktalogu.com.br.
 *
 * Os numeros vem das funcoes lojas_da_galera() e placar_da_galera()
 * (migration 220), que agregam tudo no banco, lidas no servidor pela chave
 * de servico (galera-do-servidor.ts). Os criterios estao em tipos.ts.
 */

/* Revalida a cada 10 min: e um ranking, nao um placar ao vivo. Sem cache, cada
   visita dispararia a agregacao completa das ~90 lojas. */
export const revalidate = 600;

const TITULO = "A Galera da Ktalogu — as lojas que estão bombando";
const DESCRICAO =
  "Conheça as lojas que vendem todo dia com a Ktalogu: ranking, mais acessadas, em alta e os catálogos mais completos do Brasil.";

export const metadata: Metadata = {
  title: { absolute: TITULO },
  description: DESCRICAO,
  alternates: { canonical: "https://lojas.ktalogu.com.br/" },
  robots: {
    index: true,
    follow: true,
    googleBot: { index: true, follow: true, "max-image-preview": "large", "max-snippet": -1 },
  },
  openGraph: {
    title: TITULO,
    description: DESCRICAO,
    url: "https://lojas.ktalogu.com.br/",
    siteName: "Ktalogu",
    type: "website",
    locale: "pt_BR",
    images: [{ url: "/brand-logo.svg", alt: "Ktalogu", width: 1200, height: 630 }],
  },
  twitter: { card: "summary_large_image", title: TITULO, description: DESCRICAO },
};

/* Sem resposta do banco (galera-do-servidor.ts):
   - no build, entra vazia (o deploy não pode cair por isso) e o navegador
     preenche no primeiro ciclo ao vivo;
   - na renovação da página (ISR), ERRA de propósito: o Next mantém a versão
     anterior, que tem as lojas, em vez de guardar "0 lojas" por 10 min. */
async function carregarGalera() {
  const galera = await galeraDoServidor();
  if (galera) return galera;
  if (process.env.NEXT_PHASE === "phase-production-build") {
    return { lojas: [], totais: { lojas: 0, produtos: 0, visitas: 0, estados: 0, negociado: 0, negociado30d: 0 } };
  }
  throw new Error("A galera sem resposta do banco: a página anterior continua valendo.");
}

export default async function PaginaGalera() {
  const { lojas, totais } = await carregarGalera();

  const dadosEstruturados = {
    "@context": "https://schema.org",
    "@type": "CollectionPage",
    name: TITULO,
    description: DESCRICAO,
    url: "https://lojas.ktalogu.com.br/",
    mainEntity: {
      "@type": "ItemList",
      numberOfItems: lojas.length,
      itemListElement: lojas.slice(0, 30).map((loja, indice) => ({
        "@type": "ListItem",
        position: indice + 1,
        name: loja.nome,
        url: loja.url,
      })),
    },
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{
          __html: JSON.stringify(dadosEstruturados).replace(/</g, "\\u003c"),
        }}
      />
      <GaleraDaKtalogu lojas={lojas} totais={totais} />
    </>
  );
}
