export const dynamic='force-dynamic';
import {cache} from 'react';
import {notFound} from 'next/navigation';
import {getCatalog} from '@/lib/server';
import {ProjectPage} from '@/components/project-page';
import {ProjectUnavailable} from '@/components/project-unavailable';
import {localized} from '@/lib/catalog';
type PageProps={params:Promise<{slug:string}>;searchParams:Promise<{preview?:string}>};
// Metadata and the page share one read within the same server render, never a cross-request cache.
const projectCatalog=cache((designPreview:boolean)=>getCatalog({designPreview}));
export async function generateMetadata({params,searchParams}:PageProps){
 const {slug}=await params;const query=await searchParams;
 const data=await projectCatalog(query.preview==='design');
 if(data.mode==='unavailable')return {title:'دریافت اطلاعات پروژه ممکن نشد | پلانک'};
 const p=data.projects.find(p=>p.slug===slug&&p.status==='published');
 return {title:p?`${localized(p.title)} | پلانک`:'پروژه یافت نشد | پلانک',description:p?localized(p.description):''};
}
export default async function Page({params,searchParams}:PageProps){
 const {slug}=await params;const query=await searchParams;
 const data=await projectCatalog(query.preview==='design');
 // A failed catalog read does not establish that the requested project is missing.
 if(data.mode==='unavailable')return <ProjectUnavailable/>;
 const p=data.projects.find(p=>p.slug===slug&&p.status==='published');
 if(!p)notFound();
 return <ProjectPage project={p} catalog={data}/>;
}
