From 5c81ff13f7c5237aad2741221944c83325410a8a Mon Sep 17 00:00:00 2001 From: Pontus Dreij Date: Thu, 22 Aug 2024 14:45:19 +0200 Subject: [PATCH] feat(SW-266): Added breadcrumbs to metadata fragment --- app/[lang]/(live)/layout.tsx | 3 +-- lib/graphql/Fragments/LoyaltyPage/MetaData.graphql | 3 +++ lib/graphql/Fragments/MyPages/MetaData.graphql | 3 +++ server/routers/contentstack/loyaltyPage/output.ts | 1 - server/routers/contentstack/metadata/output.ts | 4 ++++ server/routers/contentstack/metadata/query.ts | 7 ------- server/routers/contentstack/metadata/utils.ts | 1 + utils/generateMetadata.ts | 6 ++---- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/[lang]/(live)/layout.tsx b/app/[lang]/(live)/layout.tsx index f19388e72..c159e3926 100644 --- a/app/[lang]/(live)/layout.tsx +++ b/app/[lang]/(live)/layout.tsx @@ -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, diff --git a/lib/graphql/Fragments/LoyaltyPage/MetaData.graphql b/lib/graphql/Fragments/LoyaltyPage/MetaData.graphql index dcb0c704d..a169b5182 100644 --- a/lib/graphql/Fragments/LoyaltyPage/MetaData.graphql +++ b/lib/graphql/Fragments/LoyaltyPage/MetaData.graphql @@ -13,5 +13,8 @@ fragment LoyaltyPageMetaData on LoyaltyPage { } } } + breadcrumbs { + title + } } } diff --git a/lib/graphql/Fragments/MyPages/MetaData.graphql b/lib/graphql/Fragments/MyPages/MetaData.graphql index 1971efe3f..644594401 100644 --- a/lib/graphql/Fragments/MyPages/MetaData.graphql +++ b/lib/graphql/Fragments/MyPages/MetaData.graphql @@ -13,5 +13,8 @@ fragment MyPagesMetaData on AccountPage { } } } + breadcrumbs { + title + } } } diff --git a/server/routers/contentstack/loyaltyPage/output.ts b/server/routers/contentstack/loyaltyPage/output.ts index a95b2e341..205509a4c 100644 --- a/server/routers/contentstack/loyaltyPage/output.ts +++ b/server/routers/contentstack/loyaltyPage/output.ts @@ -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(), diff --git a/server/routers/contentstack/metadata/output.ts b/server/routers/contentstack/metadata/output.ts index ae0367a3c..12024b3c6 100644 --- a/server/routers/contentstack/metadata/output.ts +++ b/server/routers/contentstack/metadata/output.ts @@ -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(), diff --git a/server/routers/contentstack/metadata/query.ts b/server/routers/contentstack/metadata/query.ts index 3dbc2f2a2..38d773248 100644 --- a/server/routers/contentstack/metadata/query.ts +++ b/server/routers/contentstack/metadata/query.ts @@ -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) diff --git a/server/routers/contentstack/metadata/utils.ts b/server/routers/contentstack/metadata/utils.ts index f2e80b604..661c2b89d 100644 --- a/server/routers/contentstack/metadata/utils.ts +++ b/server/routers/contentstack/metadata/utils.ts @@ -20,6 +20,7 @@ export async function getResponse(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, diff --git a/utils/generateMetadata.ts b/utils/generateMetadata.ts index 6f321f853..547c5ccd6 100644 --- a/utils/generateMetadata.ts +++ b/utils/generateMetadata.ts @@ -7,12 +7,10 @@ import { MetaData } from "@/types/components/metadata" export async function generateMetadata(): Promise { 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 { } } - 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) => ({