import type { Metadata } from 'next' import { PayloadRedirects } from '@/components/PayloadRedirects' import configPromise from '@payload-config' import { getPayload, type RequiredDataFromCollectionSlug } from 'payload' import { draftMode } from 'next/headers' import React, { cache } from 'react' import { RenderBlocks } from '@/blocks/RenderBlocks' import type { Page } from '@/payload-types' import { generateMeta } from '@/utilities/generateMeta' import PageClient from '../../[slug]/page.client' import { LivePreviewListener } from '@/components/LivePreviewListener' export const dynamic = 'force-dynamic' export const dynamicParams = true type Args = { params: Promise<{ slug?: string }> } export default async function PageEN({ params: paramsPromise }: Args) { const { isEnabled: draft } = await draftMode() const { slug = 'home' } = await paramsPromise const decodedSlug = decodeURIComponent(slug) const url = '/en/' + decodedSlug const page = await queryPageBySlugEN({ slug: decodedSlug }) if (!page) { return } const { layout } = page as Page return (
{draft && }
) } export async function generateMetadata({ params: paramsPromise }: Args): Promise { const { slug = 'home' } = await paramsPromise const decodedSlug = decodeURIComponent(slug) const page = await queryPageBySlugEN({ slug: decodedSlug }) return generateMeta({ doc: page }) } export async function generateStaticParams() { const payload = await getPayload({ config: configPromise }) const pages = await payload.find({ collection: 'pages', draft: false, limit: 1000, pagination: false, overrideAccess: false, select: { slug: true }, locale: 'en', }) return pages.docs?.map(({ slug }) => ({ slug })) ?? [] } const queryPageBySlugEN = cache(async ({ slug }: { slug: string }) => { const { isEnabled: draft } = await draftMode() const payload = await getPayload({ config: configPromise }) const result = await payload.find({ collection: 'pages', draft, limit: 1, pagination: false, overrideAccess: draft, locale: 'en', // ← only difference from the sv route fallbackLocale: 'sv', // ← if en field is empty, fall back to Swedish where: { slug: { equals: slug, }, }, }) return result.docs?.[0] || null })