From a1303d3dae324d3051d87ddecdd3a8c72c31d688 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Thu, 13 Mar 2025 09:11:30 +0000 Subject: [PATCH] feat(SW-1846): Added query to fetch metadata on start page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(SW-1846): Added query to fetch metadata on start page Approved-by: Matilda Landström --- .../graphql/Query/StartPage/Metadata.graphql | 19 +++++++++++++++++++ .../contentstack/languageSwitcher/utils.ts | 3 ++- .../routers/contentstack/metadata/output.ts | 1 + .../routers/contentstack/metadata/query.ts | 9 +++++++++ .../routers/contentstack/metadata/utils.ts | 2 +- 5 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 apps/scandic-web/lib/graphql/Query/StartPage/Metadata.graphql diff --git a/apps/scandic-web/lib/graphql/Query/StartPage/Metadata.graphql b/apps/scandic-web/lib/graphql/Query/StartPage/Metadata.graphql new file mode 100644 index 000000000..68d03fbe1 --- /dev/null +++ b/apps/scandic-web/lib/graphql/Query/StartPage/Metadata.graphql @@ -0,0 +1,19 @@ +#import "../../Fragments/Metadata.graphql" +#import "../../Fragments/System.graphql" + +query GetStartPageMetadata($locale: String!, $uid: String!) { + start_page(locale: $locale, uid: $uid) { + web { + seo_metadata { + ...Metadata + } + } + header { + heading + hero_image + } + system { + ...System + } + } +} diff --git a/apps/scandic-web/server/routers/contentstack/languageSwitcher/utils.ts b/apps/scandic-web/server/routers/contentstack/languageSwitcher/utils.ts index 3203a1ed9..f579ec54d 100644 --- a/apps/scandic-web/server/routers/contentstack/languageSwitcher/utils.ts +++ b/apps/scandic-web/server/routers/contentstack/languageSwitcher/utils.ts @@ -43,6 +43,7 @@ import { import { internalServerError } from "@/server/errors/trpc" import { generateTag } from "@/utils/generateTag" +import { removeTrailingSlash } from "@/utils/url" import { validateLanguageSwitcherData } from "./output" import { @@ -172,7 +173,7 @@ export async function getUrlsOfAllLanguages( const item = response.data[key as Lang] const url = item - ? item.web?.original_url || `/${key}${item.url}` + ? item.web?.original_url || removeTrailingSlash(`/${key}${item.url}`) : undefined return { diff --git a/apps/scandic-web/server/routers/contentstack/metadata/output.ts b/apps/scandic-web/server/routers/contentstack/metadata/output.ts index f6ab640cb..898492210 100644 --- a/apps/scandic-web/server/routers/contentstack/metadata/output.ts +++ b/apps/scandic-web/server/routers/contentstack/metadata/output.ts @@ -88,6 +88,7 @@ export const rawMetadataSchema = z.object({ .object({ heading: z.string().optional().nullable(), preamble: z.string().optional().nullable(), + hero_image: tempImageVaultAssetSchema.nullable(), }) .optional() .nullable(), diff --git a/apps/scandic-web/server/routers/contentstack/metadata/query.ts b/apps/scandic-web/server/routers/contentstack/metadata/query.ts index c3a39f7db..9f6fa59b2 100644 --- a/apps/scandic-web/server/routers/contentstack/metadata/query.ts +++ b/apps/scandic-web/server/routers/contentstack/metadata/query.ts @@ -9,6 +9,7 @@ import { GetDestinationCountryPageMetadata } from "@/lib/graphql/Query/Destinati import { GetDestinationOverviewPageMetadata } from "@/lib/graphql/Query/DestinationOverviewPage/Metadata.graphql" import { GetHotelPageMetadata } from "@/lib/graphql/Query/HotelPage/Metadata.graphql" import { GetLoyaltyPageMetadata } from "@/lib/graphql/Query/LoyaltyPage/Metadata.graphql" +import { GetStartPageMetadata } from "@/lib/graphql/Query/StartPage/Metadata.graphql" import { request } from "@/lib/graphql/request" import { notFound } from "@/server/errors/trpc" import { contentStackUidWithServiceProcedure, router } from "@/server/trpc" @@ -262,6 +263,14 @@ export const metadataQueryRouter = router({ }, alternates ) + case PageContentTypeEnum.startPage: + const startPageResponse = await fetchMetadata<{ + start_page: RawMetadataSchema + }>(GetStartPageMetadata, variables) + return getTransformedMetadata( + startPageResponse.start_page, + alternates + ) default: return null } diff --git a/apps/scandic-web/server/routers/contentstack/metadata/utils.ts b/apps/scandic-web/server/routers/contentstack/metadata/utils.ts index ebba69518..e4577af0d 100644 --- a/apps/scandic-web/server/routers/contentstack/metadata/utils.ts +++ b/apps/scandic-web/server/routers/contentstack/metadata/utils.ts @@ -157,7 +157,7 @@ export function getDescription(data: RawMetadataSchema) { export function getImage(data: RawMetadataSchema) { const metadataImage = data.web?.seo_metadata?.seo_image - const heroImage = data.hero_image + const heroImage = data.hero_image || data.header?.hero_image const hotelImage = data.hotelData?.gallery?.heroImages?.[0] || data.hotelData?.gallery?.smallerImages?.[0]