diff --git a/apps/scandic-web/utils/generateMetadata.ts b/apps/scandic-web/utils/generateMetadata.ts index 6a6c1ca3a..ec91c2039 100644 --- a/apps/scandic-web/utils/generateMetadata.ts +++ b/apps/scandic-web/utils/generateMetadata.ts @@ -1,3 +1,4 @@ +import { env } from "@/env/server" import { serverClient } from "@/lib/trpc/server" import type { @@ -6,9 +7,11 @@ import type { PageArgs, UIDParams, } from "@/types/params" +import type { Lang } from "@/constants/languages" export async function generateMetadata({ searchParams, + params, }: PageArgs< LangParams & ContentTypeParams & UIDParams, { subpage?: string; filterFromUrl?: string } @@ -22,5 +25,34 @@ export async function generateMetadata({ filterFromUrl, noIndex: noIndexOnSearchParams, }) - return metadata + + if (!metadata) { + return { + robots: { + index: env.isLangLive(params.lang), + follow: env.isLangLive(params.lang), + }, + } + } + + if (typeof metadata?.robots === "string") { + return metadata + } + + return { + ...metadata, + robots: { + ...(metadata.robots ?? {}), + index: isIndexable(metadata.robots?.index, params.lang), + follow: isIndexable(metadata.robots?.follow, params.lang), + }, + } +} + +function isIndexable( + pageIndexableFromSettings: boolean | null | undefined, + lang: Lang +) { + // If we are live we want to index the page, but if the page has been marked as noindex in contentstack we don't + return (pageIndexableFromSettings ?? true) && env.isLangLive(lang) }