import { createHash } from "node:crypto";
import { slugify } from "@/lib/slug";

const TITLE_PREFIXES = ["Супер", "Мега", "Топ", "Крутая", "Лучшая", "Новая", "Эпичная", "Быстрая"];
const TITLE_SUFFIXES = ["онлайн", "бесплатно", "в браузере", "2026", "про", "классика"];
const DESC_INTROS = [
  "Захватывающая игра",
  "Увлекательный геймплей",
  "Динамичное приключение",
  "Аркадный хит",
  "Популярная браузерная игра",
];

function seededIndex(seed: string, key: string, max: number): number {
  const hash = createHash("sha256").update(`${seed}:${key}`).digest();
  return hash[0] % max;
}

export function uniquifyTitle(title: string, seed: string): string {
  const p = TITLE_PREFIXES[seededIndex(seed, title + "p", TITLE_PREFIXES.length)];
  const s = TITLE_SUFFIXES[seededIndex(seed, title + "s", TITLE_SUFFIXES.length)];
  const variant = seededIndex(seed, title, 3);
  if (variant === 0) return `${p} ${title}`;
  if (variant === 1) return `${title} — ${s}`;
  return `${title} | ${p.toLowerCase()}`;
}

export function uniquifyDescription(desc: string | null, seed: string): string | null {
  if (!desc) return null;
  const intro = DESC_INTROS[seededIndex(seed, desc, DESC_INTROS.length)];
  const variant = seededIndex(seed, desc + "v", 2);
  if (variant === 0) return `${intro}: ${desc}`;
  return `${desc} ${intro.toLowerCase()} без скачивания.`;
}

export function uniquifySlug(baseSlug: string, siteSlug: string, gameId: string): string {
  if (siteSlug === "main") return baseSlug;
  const suffix = createHash("sha256").update(`${siteSlug}:${gameId}`).digest("hex").slice(0, 5);
  const candidate = `${baseSlug}-${siteSlug}-${suffix}`;
  return slugify(candidate).slice(0, 110) || `game-${suffix}`;
}

export function uniquifyMetaTitle(title: string, siteName: string): string {
  return `${title} — играть на ${siteName}`;
}
