feat(SW-266): Added breadcrumbs to metadata fragment
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -13,5 +13,8 @@ fragment LoyaltyPageMetaData on LoyaltyPage {
|
||||
}
|
||||
}
|
||||
}
|
||||
breadcrumbs {
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,5 +13,8 @@ fragment MyPagesMetaData on AccountPage {
|
||||
}
|
||||
}
|
||||
}
|
||||
breadcrumbs {
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) => ({
|
||||
|
||||
Reference in New Issue
Block a user