From 4fa25c34dd54e34a96b58b4328735c091a8a4e91 Mon Sep 17 00:00:00 2001 From: bmuenzenmeyer Date: Sun, 12 Oct 2025 23:39:30 -0400 Subject: [PATCH 1/5] fix(blog): apply proper route to metadata call --- apps/site/app/[locale]/blog/[...path]/page.tsx | 2 +- apps/site/next.dynamic.page.mjs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/site/app/[locale]/blog/[...path]/page.tsx b/apps/site/app/[locale]/blog/[...path]/page.tsx index 2e3546994465f..aea6e66edb5ac 100644 --- a/apps/site/app/[locale]/blog/[...path]/page.tsx +++ b/apps/site/app/[locale]/blog/[...path]/page.tsx @@ -15,7 +15,7 @@ export const generateViewport = basePage.generateViewport; // This generates each page's HTML Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata -export const generateMetadata = basePage.generateMetadata; +export const generateMetadata = basePage.generateBlogMetadata; // Generates all possible static paths based on the locales and environment configuration // - Returns an empty array if static export is disabled (`ENABLE_STATIC_EXPORT` is false) diff --git a/apps/site/next.dynamic.page.mjs b/apps/site/next.dynamic.page.mjs index 3a35f371bc720..58e12b826440a 100644 --- a/apps/site/next.dynamic.page.mjs +++ b/apps/site/next.dynamic.page.mjs @@ -1,3 +1,5 @@ +import { sep } from 'node:path'; + import { notFound, redirect } from 'next/navigation'; import { setRequestLocale } from 'next-intl/server'; @@ -34,6 +36,20 @@ export const generateMetadata = async props => { return dynamicRouter.getPageMetadata(locale, pathname); }; +/** + * This generates each blog's HTML Metadata + * + * @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata + * + * @param {{ params: Promise<{ path: Array; locale: string }> }} props + * @returns {Promise} the metadata for the page + */ +export const generateBlogMetadata = async props => { + const { path = [], locale = defaultLocale.code } = await props.params; + const pathname = dynamicRouter.getPathname(path); + return dynamicRouter.getPageMetadata(locale, `blog${sep}${pathname}`); +}; + /** * This method is used for retrieving the current locale and pathname from the request * From 92a36e825f6e09ccd540fa527a1512a2c6e84848 Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 14:58:20 -0400 Subject: [PATCH 2/5] fixup! --- .../site/app/[locale]/blog/[...path]/page.tsx | 6 +++- apps/site/next.dynamic.page.mjs | 28 ++++++------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/apps/site/app/[locale]/blog/[...path]/page.tsx b/apps/site/app/[locale]/blog/[...path]/page.tsx index aea6e66edb5ac..cfd6f46316651 100644 --- a/apps/site/app/[locale]/blog/[...path]/page.tsx +++ b/apps/site/app/[locale]/blog/[...path]/page.tsx @@ -15,7 +15,11 @@ export const generateViewport = basePage.generateViewport; // This generates each page's HTML Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata -export const generateMetadata = basePage.generateBlogMetadata; +export const generateMetadata = ({ + params, +}: { + params: Promise<{ path: Array; locale: string }>; +}) => basePage.generateMetadata({ params, prefix: 'blog' }); // Generates all possible static paths based on the locales and environment configuration // - Returns an empty array if static export is disabled (`ENABLE_STATIC_EXPORT` is false) diff --git a/apps/site/next.dynamic.page.mjs b/apps/site/next.dynamic.page.mjs index 58e12b826440a..06150d6b8baa9 100644 --- a/apps/site/next.dynamic.page.mjs +++ b/apps/site/next.dynamic.page.mjs @@ -1,4 +1,4 @@ -import { sep } from 'node:path'; +import { join } from 'node:path'; import { notFound, redirect } from 'next/navigation'; import { setRequestLocale } from 'next-intl/server'; @@ -25,29 +25,19 @@ export const generateViewport = () => ({ ...PAGE_VIEWPORT }); * * @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata * - * @param {{ params: Promise<{ path: Array; locale: string }> }} props + * @param {{ params: Promise<{ path: Array; locale: string }>, prefix?: string }} props * @returns {Promise} the metadata for the page */ -export const generateMetadata = async props => { - const { path = [], locale = defaultLocale.code } = await props.params; +export const generateMetadata = async ({ params, prefix }) => { + const { path = [], locale = defaultLocale.code } = await params; const pathname = dynamicRouter.getPathname(path); - return dynamicRouter.getPageMetadata(locale, pathname); -}; - -/** - * This generates each blog's HTML Metadata - * - * @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata - * - * @param {{ params: Promise<{ path: Array; locale: string }> }} props - * @returns {Promise} the metadata for the page - */ -export const generateBlogMetadata = async props => { - const { path = [], locale = defaultLocale.code } = await props.params; - const pathname = dynamicRouter.getPathname(path); - return dynamicRouter.getPageMetadata(locale, `blog${sep}${pathname}`); + return dynamicRouter.getPageMetadata( + locale, + // If there's a prefix, `join` it with the pathname + prefix ? join(prefix, pathname) : pathname + ); }; /** From 50fed50802c097404831085da36cd93a5073b7aa Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 15:59:39 -0400 Subject: [PATCH 3/5] use nextjs types --- apps/site/app/[locale]/blog/[...path]/page.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/site/app/[locale]/blog/[...path]/page.tsx b/apps/site/app/[locale]/blog/[...path]/page.tsx index cfd6f46316651..3fa824243e722 100644 --- a/apps/site/app/[locale]/blog/[...path]/page.tsx +++ b/apps/site/app/[locale]/blog/[...path]/page.tsx @@ -17,9 +17,8 @@ export const generateViewport = basePage.generateViewport; // @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata export const generateMetadata = ({ params, -}: { - params: Promise<{ path: Array; locale: string }>; -}) => basePage.generateMetadata({ params, prefix: 'blog' }); +}: PageProps<'/[locale]/blog/[...path]'>) => + basePage.generateMetadata({ params, prefix: 'blog' }); // Generates all possible static paths based on the locales and environment configuration // - Returns an empty array if static export is disabled (`ENABLE_STATIC_EXPORT` is false) From 40a495e86bf330e1f139da1004e3934c2ca9b7f9 Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 16:03:50 -0400 Subject: [PATCH 4/5] use other types --- apps/site/app/[locale]/blog/[...path]/page.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/site/app/[locale]/blog/[...path]/page.tsx b/apps/site/app/[locale]/blog/[...path]/page.tsx index 3fa824243e722..8f3aa3656bffd 100644 --- a/apps/site/app/[locale]/blog/[...path]/page.tsx +++ b/apps/site/app/[locale]/blog/[...path]/page.tsx @@ -7,7 +7,7 @@ import * as basePage from '#site/next.dynamic.page.mjs'; import { defaultLocale } from '#site/next.locales.mjs'; import type { DynamicParams } from '#site/types'; -type PageParams = DynamicParams<{ path: Array }>; +type PageParams = DynamicParams<{ path: Array; locale: string }>; // This is the default Viewport Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-viewport#generateviewport-function @@ -15,9 +15,7 @@ export const generateViewport = basePage.generateViewport; // This generates each page's HTML Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-metadata -export const generateMetadata = ({ - params, -}: PageProps<'/[locale]/blog/[...path]'>) => +export const generateMetadata = ({ params }: PageParams) => basePage.generateMetadata({ params, prefix: 'blog' }); // Generates all possible static paths based on the locales and environment configuration From 96735f0105c4518ffe2549926c8303c73a73e273 Mon Sep 17 00:00:00 2001 From: avivkeller Date: Sat, 18 Oct 2025 16:04:49 -0400 Subject: [PATCH 5/5] use other types --- apps/site/app/[locale]/blog/[...path]/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/app/[locale]/blog/[...path]/page.tsx b/apps/site/app/[locale]/blog/[...path]/page.tsx index 8f3aa3656bffd..982a2b6eecfb8 100644 --- a/apps/site/app/[locale]/blog/[...path]/page.tsx +++ b/apps/site/app/[locale]/blog/[...path]/page.tsx @@ -7,7 +7,7 @@ import * as basePage from '#site/next.dynamic.page.mjs'; import { defaultLocale } from '#site/next.locales.mjs'; import type { DynamicParams } from '#site/types'; -type PageParams = DynamicParams<{ path: Array; locale: string }>; +type PageParams = DynamicParams<{ path: Array }>; // This is the default Viewport Metadata // @see https://nextjs.org/docs/app/api-reference/functions/generate-viewport#generateviewport-function