import type { MetadataRoute } from "next";
import { getSettings } from "@/lib/settings";
import { getSiteUrl } from "@/lib/seo";

// Sonst prerendert Next diese Route einmalig zur Build-Zeit — Änderungen an
// der "indexable"-Einstellung im Admin würden dann nie ausgeliefert.
export const dynamic = "force-dynamic";

export default async function robots(): Promise<MetadataRoute.Robots> {
  const settings = await getSettings();
  const siteUrl = getSiteUrl();

  if (settings.seoSettings?.indexable === false) {
    return { rules: { userAgent: "*", disallow: "/" } };
  }

  // Tatsächliche URLs sind immer locale-präfixt (/de/..., /en/...), daher
  // beide Varianten sperren — ein Disallow auf "/admin" allein würde
  // "/de/admin/..." nicht treffen.
  const privatePaths = [
    "admin",
    "account",
    "api",
    "login",
    "register",
    "forgot-password",
    "reset-password",
    "verify",
    // Unlisted Share-/Token-Links — nicht schützenswert wie /admin, aber
    // sollen von Crawlern gar nicht erst nachverfolgt werden.
    "galerie",
    "feedback",
  ];
  const disallow = privatePaths.flatMap((p) => [`/de/${p}`, `/en/${p}`, `/${p}`]);

  return {
    rules: {
      userAgent: "*",
      allow: "/",
      disallow,
    },
    sitemap: `${siteUrl}/sitemap.xml`,
  };
}
