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 ServerIntlProvider from "@/i18n/Provider"
import { getLang, setLang } from "@/i18n/serverContext"
import { generateMetadata } from "@/utils/generateMetadata"
import type { LangParams, LayoutArgs } from "@/types/params"
export { generateMetadata }
export { generateMetadata } from "@/utils/generateMetadata"
export default async function RootLayout({
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({
title: z.string(),
heading: z.string().nullable(),
blocks: z.array(loyaltyPageBlockItem).nullable(),
sidebar: z.array(loyaltyPageSidebarItem).nullable(),

View File

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

View File

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

View File

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

View File

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