feat(SW-266): Added breadcrumbs to metadata fragment

This commit is contained in:
Pontus Dreij
2024-08-22 14:45:19 +02:00
parent ab3feb367b
commit 5c81ff13f7
8 changed files with 14 additions and 14 deletions

View File

@@ -14,11 +14,10 @@ import { preloadUserTracking } from "@/components/TrackingSDK"
import { getIntl } from "@/i18n" import { getIntl } from "@/i18n"
import ServerIntlProvider from "@/i18n/Provider" import ServerIntlProvider from "@/i18n/Provider"
import { getLang, setLang } from "@/i18n/serverContext" import { getLang, setLang } from "@/i18n/serverContext"
import { generateMetadata } from "@/utils/generateMetadata"
import type { LangParams, LayoutArgs } from "@/types/params" import type { LangParams, LayoutArgs } from "@/types/params"
export { generateMetadata } export { generateMetadata } from "@/utils/generateMetadata"
export default async function RootLayout({ export default async function RootLayout({
children, children,

View File

@@ -13,5 +13,8 @@ fragment LoyaltyPageMetaData on LoyaltyPage {
} }
} }
} }
breadcrumbs {
title
}
} }
} }

View File

@@ -13,5 +13,8 @@ fragment MyPagesMetaData on AccountPage {
} }
} }
} }
breadcrumbs {
title
}
} }
} }

View File

@@ -190,7 +190,6 @@ const loyaltyPageSidebarItem = z.discriminatedUnion("__typename", [
]) ])
export const validateLoyaltyPageSchema = z.object({ export const validateLoyaltyPageSchema = z.object({
title: z.string(),
heading: z.string().nullable(), heading: z.string().nullable(),
blocks: z.array(loyaltyPageBlockItem).nullable(), blocks: z.array(loyaltyPageBlockItem).nullable(),
sidebar: z.array(loyaltyPageSidebarItem).nullable(), sidebar: z.array(loyaltyPageSidebarItem).nullable(),

View File

@@ -1,6 +1,7 @@
import { z } from "zod" import { z } from "zod"
export const getMetaDataSchema = z.object({ export const getMetaDataSchema = z.object({
breadcrumbsTitle: z.string().optional(),
title: z.string().optional(), title: z.string().optional(),
description: z.string().optional(), description: z.string().optional(),
imageConnection: z imageConnection: z
@@ -33,6 +34,9 @@ const page = z.object({
}) })
.optional(), .optional(),
}), }),
breadcrumbs: z.object({
title: z.string(),
}),
}), }),
system: z.object({ system: z.object({
uid: z.string(), uid: z.string(),

View File

@@ -18,9 +18,6 @@ async function getLoyaltyPageMetaData(variables: Variables) {
variables variables
) )
if (!response.data.all_loyalty_page.items[0].web?.seo_metadata?.title) {
return null
}
const validatedMetaDataData = const validatedMetaDataData =
validateLoyaltyPageMetaDataContentstackSchema.safeParse(response.data) validateLoyaltyPageMetaDataContentstackSchema.safeParse(response.data)
@@ -41,10 +38,6 @@ async function getMyPagesMetaData(variables: Variables) {
variables variables
) )
if (!response.data.all_account_page.items[0].web?.seo_metadata?.title) {
return []
}
const validatedMetaDataData = const validatedMetaDataData =
validateMyPagesMetaDataContentstackSchema.safeParse(response.data) validateMyPagesMetaDataContentstackSchema.safeParse(response.data)

View File

@@ -20,6 +20,7 @@ export async function getResponse<T>(query: string, variables: Variables) {
export function getMetaData(page: Page) { export function getMetaData(page: Page) {
const pageMetaData = { const pageMetaData = {
breadcrumbsTitle: page.web.breadcrumbs.title,
title: page.web.seo_metadata.title, title: page.web.seo_metadata.title,
description: page.web.seo_metadata.description, description: page.web.seo_metadata.description,
imageConnection: page.web.seo_metadata.imageConnection, imageConnection: page.web.seo_metadata.imageConnection,

View File

@@ -7,12 +7,10 @@ import { MetaData } from "@/types/components/metadata"
export async function generateMetadata(): Promise<Metadata> { export async function generateMetadata(): Promise<Metadata> {
const metaData: MetaData | never[] | null = const metaData: MetaData | never[] | null =
await serverClient().contentstack.metaData.get() await serverClient().contentstack.metaData.get()
const breadcrumbs = await serverClient().contentstack.breadcrumbs.get()
const pageTitle = breadcrumbs?.at(-1)?.title
if (Array.isArray(metaData)) { if (Array.isArray(metaData)) {
return { return {
title: pageTitle ?? "", title: "",
description: "", description: "",
openGraph: { openGraph: {
images: [], images: [],
@@ -20,7 +18,7 @@ export async function generateMetadata(): Promise<Metadata> {
} }
} }
const title = pageTitle ?? metaData?.title ?? "" // Use pageTitle first const title = metaData?.breadcrumbsTitle ?? metaData?.title ?? ""
const description = metaData?.description ?? "" const description = metaData?.description ?? ""
const images = const images =
metaData?.imageConnection?.edges?.map((edge) => ({ metaData?.imageConnection?.edges?.map((edge) => ({