import { cache } from "react"; import ClinicPage from "@/components/clinic"; import Layout from "@/components/layout/StLayout"; import { fetchReq } from "@/lib/req"; import { getStateInfo } from "@/lib/getStateInfo"; import { imageUrl } from "@/helper"; const API_URL = process.env.NEXT_PUBLIC_API_URL; const getClinic = cache(async (slug) => { try { const res = await fetch(`${API_URL}/api/v1/clinic/${slug}`, { next: { revalidate: 3600, tags: [`clinic-${slug}`] }, }); if (!res.ok) return null; const json = await res.json(); return json?.data?.data ?? null; } catch { return null; } }); export async function generateMetadata({ params }) { const { slug } = await params; const { matchedCity } = await getStateInfo(); const siteName = matchedCity?.site_name || "نوبت 724"; try { const clinic = await getClinic(slug); if (!clinic) return {}; const title = `${clinic.title} | ${siteName}`; const description = `رزرو نوبت و اطلاعات ${clinic.title}. مشاهده لیست پزشکان و خدمات درمانی موجود.`; return { title, description, openGraph: { title, description, images: clinic.images_clinic?.[0]?.url ? [imageUrl(clinic.images_clinic[0].url)] : ["https://www.nobat724.com/assets/images/logo.png"], }, }; } catch { return {}; } } async function Clinic({ params, searchParams }) { const { slug } = await params; const sp = await searchParams; const page = Number(sp?.page) || 1; const limit = 50; const clinic = await getClinic(slug); const reqDoctors = await fetchReq( `${API_URL}/api/v1/clinic/doctor-list/${slug}?page=${page}&limit=${limit}` ); const doctors = reqDoctors?.data?.data || []; const meta = reqDoctors?.data?.meta; const pagedoctors = meta ? { current: meta.currentPage, total_pages: meta.totalPages } : { current: 1, total_pages: 1 }; const jsonLd = clinic ? { "@context": "https://schema.org", "@type": "MedicalClinic", name: clinic.title, ...(clinic.images_clinic?.[0]?.url && { image: imageUrl(clinic.images_clinic[0].url), }), } : null; const breadcrumbJsonLd = clinic ? { "@context": "https://schema.org", "@type": "BreadcrumbList", itemListElement: [ { "@type": "ListItem", position: 1, name: "خانه", item: "https://www.nobat724.com" }, { "@type": "ListItem", position: 2, name: "کلینیک‌ها", item: "https://www.nobat724.com/clinics" }, { "@type": "ListItem", position: 3, name: clinic.title }, ], } : null; return ( <> {jsonLd && (