import * as React from "react" import { GetStaticPathsContext, GetStaticPathsResult, GetStaticPropsContext, GetStaticPropsResult, } from "next" import Head from "next/head" import { useRouter } from "next/router" import { DrupalNode } from "next-drupal" import { drupal } from "lib/drupal" import { getMenus } from "lib/get-menus" import { absoluteURL } from "lib/utils/absolute-url" import { getParams } from "lib/get-params" import { Node } from "components/node" import { Layout, LayoutProps } from "components/layout" import { Meta } from "components/meta" const RESOURCE_TYPES = ["node--page", "node--landing_page", "node--article"] interface NodePageProps extends LayoutProps { node: DrupalNode } export default function NodePage({ node, menus }: NodePageProps) { const router = useRouter() return ( {node.content_translations?.map((translation, index) => translation.langcode !== router.locale ? ( ) : null )} ) } export async function getStaticPaths( context: GetStaticPathsContext ): Promise { return { paths: await drupal.getStaticPathsFromContext(RESOURCE_TYPES, context, { params: { filter: { "field_site.meta.drupal_internal__target_id": process.env.DRUPAL_SITE_ID, }, }, }), fallback: "blocking", } } export async function getStaticProps( context: GetStaticPropsContext ): Promise> { const path = await drupal.translatePathFromContext(context) if (!path || !RESOURCE_TYPES.includes(path.jsonapi.resourceName)) { return { notFound: true, } } const type = path.jsonapi.resourceName const node = await drupal.getResourceFromContext(path, context, { params: getParams(type), }) if (!node || (!context.preview && node?.status === false)) { return { notFound: true, } } // Load initial view data. if (type === "node--landing_page") { for (const section of node.field_sections) { if (section.type === "paragraph--view" && section.field_view) { const view = await drupal.getView(section.field_view, { params: { include: "field_location,field_images.field_media_image", }, }) section.field_view = { name: section.field_view, ...view, } } } } return { props: { node, menus: await getMenus(context), }, } }