import { notFound } from 'next/navigation' import type { Metadata } from 'next' import DynamicPageRenderer from '../../components/dynamic/DynamicPageRenderer' import { getCategoriesResult, getCmsPageResult } from '../../lib/cms' const lang = 'th' const reservedSlugs = new Set([ 'about', 'article', 'category', 'contact', 'coupons', 'faq', 'order', 'products', 'profile', 'search', 'scent-guide', 'shop', 'track', 'wishlist', ]) function normalizeSlug(slug: string) { return slug.trim().replace(/^\/+|\/+$/g, '').toLowerCase() } function isReservedSlug(slug: string) { return reservedSlugs.has(normalizeSlug(slug)) } export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise { const { slug } = await params if (isReservedSlug(slug)) return { title: 'Page Not Found | HomAroma' } const pageResult = await getCmsPageResult(slug, lang) if (!pageResult.ok || !pageResult.data.isPublished) return { title: 'Page Not Found | HomAroma' } return { title: `${pageResult.data.title} | HomAroma`, } } export default async function CmsCustomPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params if (isReservedSlug(slug)) notFound() const [pageResult, categoriesResult] = await Promise.all([ getCmsPageResult(slug, lang), getCategoriesResult(lang), ]) if (!pageResult.ok) { if (pageResult.status === 404) notFound() return (

CMS Page Error

ไม่สามารถโหลดหน้านี้ได้

{pageResult.error}

) } const page = pageResult.data if (!page.isPublished) notFound() const categories = categoriesResult.ok ? categoriesResult.data : [] const sections = page.sections?.filter((section) => section.isActive) ?? [] if (!categoriesResult.ok) { console.error(`[website-cms] categories unavailable for CMS page "${slug}": ${categoriesResult.error}`) } return (
{sections.length > 0 ? ( ) : (

HomAroma

{page.title}

หน้านี้ถูกเผยแพร่แล้ว แต่ยังไม่มี section ที่เปิดใช้งานใน Page Builder

)}
) }