import { Metadata } from "next"; import clientPromise from "@/lib/db"; interface Page { title: string; content: string; } // baseURL [ENV] export async function generateMetadata(props: { params: Promise<{ slug: "string" }>; }) { const params = await props.params; let page: Page = { title: "unknown mod", content: "unknown mod" }; let notFound = false; try { const client = await clientPromise; const db = client.db(process.env.MONGODB_DB); const fetchedPage = (await db .collection("pages") .findOne({ slug: params.slug })) as unknown as Page; if (fetchedPage) { page = fetchedPage; } else { notFound = true; } } catch (err) {} if (notFound) { return { title: "404 Not Found - SVR.JS", openGraph: { title: "404 Not Found - SVR.JS" }, twitter: { title: "404 Not Found - SVR.JS" } }; } return { title: `${page.title} change log - SVR.JS`, description: `Keep track of the latest updates and improvements for ${page.title} with our comprehensive change log. Discover new features, bug fixes, and enhancements for each release of this SVR.JS mod.`, alternates: { canonical: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/changelog/${params.slug}` }, openGraph: { title: `${page.title} change log - SVR.JS`, description: `Keep track of the latest updates and improvements for ${page.title} with our comprehensive change log. Discover new features, bug fixes, and enhancements for each release of this SVR.JS mod.`, url: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/changelog/${params.slug}`, type: "website", images: [ { url: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/metadata/svrjs-cover.png`, width: 800, height: 600, alt: `${page.title} change log - SVR.JS` } ] }, twitter: { card: "summary_large_image", site: "@SVR_JS", title: `${page.title} change log - SVR.JS`, description: `Keep track of the latest updates and improvements for ${page.title} with our comprehensive change log. Discover new features, bug fixes, and enhancements for each release of this SVR.JS mod.`, images: [ `${process.env.NEXT_PUBLIC_WEBSITE_URL}/metadata/svrjs-cover.png` ], creator: "@SVR_JS" } }; } const ContactLayout = ({ children }: { children: React.ReactNode }) => { return <>{children}; }; export default ContactLayout;