import { drupal } from "@/lib/drupal" import type { DrupalNode } from "@/lib/types" import { NodeArticle } from "@/components/node-article" import { notFound } from "next/navigation" import type { Metadata } from "next" const drupalBaseUrl = process.env.NEXT_PUBLIC_DRUPAL_BASE_URL ?? "" interface NodePageProps { params: Promise<{ slug: string[] }> } // Render dynamically at runtime (not at build time). export const dynamic = "force-dynamic" export const revalidate = 60 export async function generateMetadata({ params, }: NodePageProps): Promise { if (!drupalBaseUrl) return {} const { slug } = await params const path = drupal.constructPathFromSegment(slug) try { const translatedPath = await drupal.translatePath(path, { withAuth: true }) if (!translatedPath?.jsonapi?.resourceName || !translatedPath?.entity?.uuid) { return {} } const node = await drupal.getResource( translatedPath.jsonapi.resourceName, translatedPath.entity.uuid, { withAuth: true, params: { "fields[node--article]": "title", "fields[node--page]": "title", "fields[node--about]": "title", }, } ) return { title: node?.title, } } catch { return {} } } export default async function NodePage({ params }: NodePageProps) { if (!drupalBaseUrl) notFound() const { slug } = await params const path = drupal.constructPathFromSegment(slug) try { const translatedPath = await drupal.translatePath(path, { withAuth: true }) if (!translatedPath?.jsonapi?.resourceName || !translatedPath?.entity?.uuid) { notFound() } const type = translatedPath.jsonapi.resourceName const node = await drupal.getResource( type, translatedPath.entity.uuid, { withAuth: true, params: { include: "uid", }, } ) if (!node || !node.status) { notFound() } return } catch { notFound() } }