import type { Metadata } from "next"; import Link from "next/link"; import { MessageCircle, Phone, ShieldCheck } from "lucide-react"; import { notFound, redirect } from "next/navigation"; import { ApiProductCard } from "@/components/api-product-card"; import { ProductTabs } from "@/components/entity-comments"; import { ProductGallery } from "@/components/product-gallery"; import { getComments, getProductById, getProducts, plainText, productImage, productUrl, sanitizeCmsContent, slugifyFa, } from "@/lib/meshkee"; type ProductPageProps = { params: Promise<{ id: string; slug: string }>; }; export async function generateStaticParams() { const data = await getProducts({ pageSize: 50 }).catch(() => ({ items: [] })); return data.items.map((product) => ({ id: product.id, slug: slugifyFa(product.nameFa || product.title), })); } export async function generateMetadata({ params }: ProductPageProps): Promise { const { id } = await params; const data = await getProductById(id).catch(() => null); if (!data) return { title: "محصول یافت نشد", robots: { index: false } }; const product = data.product; const title = product.nameFa || product.title; const description = plainText(product.summary || product.descriptionHtml).slice(0, 155) || `مشخصات و تصاویر ${title} از محصولات گلسموند.`; const image = productImage(product); const canonical = productUrl(product); return { title, description, alternates: { canonical }, openGraph: { title, description, url: canonical, images: image ? [image] : [], }, }; } export default async function ProductDetailPage({ params }: ProductPageProps) { const { id, slug } = await params; const data = await getProductById(id).catch(() => null); if (!data) notFound(); const { product, relatedProducts = [] } = data; const canonical = productUrl(product); const expectedSlug = canonical.split("/").at(-1) || ""; let currentSlug = slug; try { currentSlug = decodeURIComponent(slug); } catch { currentSlug = slug; } if (currentSlug !== expectedSlug) redirect(encodeURI(canonical)); const title = product.nameFa || product.title; const mainImage = productImage(product); const images = Array.from( new Set([mainImage, ...(product.images || []).map((item) => item.url)].filter(Boolean)), ) as string[]; const comments = await getComments("product", product.id); const categoryTitle = product.categoryNameFa || product.categoryName || "آینه"; const categoryHref = product.categoryId ? `/products/category/${product.categoryId}/${slugifyFa(categoryTitle)}` : null; const descriptionHtml = sanitizeCmsContent( product.descriptionHtml || product.summary || "اطلاعات تکمیلی این محصول به‌زودی درج می‌شود.", title, ); return ( <>
PRODUCT DETAILS

{product.categoryNameFa || "آینه هوشمند"}

{title}

{product.summary &&

{product.summary}

}
دسته‌بندی
{categoryHref ? {categoryTitle} : categoryTitle}
وضعیت سفارش
{product.store?.inStock ? "موجود" : "تماس بگیرید"}
خدمات
یک سال گارانتی و ده سال پشتیبانی

تولید مطابق استاندارد IP64 با برق ایمن ۱۲ ولت

{relatedProducts.length > 0 && (
RELATED PRODUCTS

محصولات مرتبط

{relatedProducts.slice(0, 3).map((item) => ( ))}
)} ); }