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 { 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,
|
||||||
|
|||||||
@@ -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({
|
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(),
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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) => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user