/** نتایج جستجو و لیست همه محصولات: /search?q=سرم */
import type { Metadata } from "next";
import { ListingView } from "@/components/listing/ListingView";
import { Breadcrumbs } from "@/components/ui/Breadcrumbs";
import { parseListingParams, listingSeo } from "@/lib/listing-params";
import { getCategoryIndex, listProducts } from "@/server/services/catalog";

type Props = { searchParams: Promise<Record<string, string | string[] | undefined>> };

export async function generateMetadata({ searchParams }: Props): Promise<Metadata> {
  const f = parseListingParams(await searchParams);
  const { path, titleSuffix } = listingSeo("/search", f);
  return {
    title: f.q ? `نتایج جستجوی «${f.q}»` : `همه محصولات${titleSuffix}`,
    // صفحات نتایج جستجو ایندکس نشوند تا محتوای تکراری ایجاد نشود
    robots: f.q ? { index: false, follow: true } : undefined,
    alternates: { canonical: path },
  };
}

export default async function SearchPage({ searchParams }: Props) {
  const filters = parseListingParams(await searchParams);
  const [result, cats] = await Promise.all([listProducts(filters), getCategoryIndex()]);
  const title = filters.q ? `نتایج «${filters.q}»` : filters.sort === "newest" ? "جدیدترین‌ها" : "همه محصولات";

  return (
    <ListingView
      title={title}
      breadcrumbs={<Breadcrumbs items={[{ name: filters.q ? "جستجو" : "همه محصولات" }]} />}
      basePath="/search"
      filters={filters}
      result={result}
      subcategories={cats.tree.map((c) => ({ name: c.name, href: cats.href(c.id) }))}
    />
  );
}
