feat(SW-1846): Added query to fetch metadata on start page
* feat(SW-1846): Added query to fetch metadata on start page Approved-by: Matilda Landström
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -43,6 +43,7 @@ import {
|
|||||||
import { internalServerError } from "@/server/errors/trpc"
|
import { internalServerError } from "@/server/errors/trpc"
|
||||||
|
|
||||||
import { generateTag } from "@/utils/generateTag"
|
import { generateTag } from "@/utils/generateTag"
|
||||||
|
import { removeTrailingSlash } from "@/utils/url"
|
||||||
|
|
||||||
import { validateLanguageSwitcherData } from "./output"
|
import { validateLanguageSwitcherData } from "./output"
|
||||||
import {
|
import {
|
||||||
@@ -172,7 +173,7 @@ export async function getUrlsOfAllLanguages(
|
|||||||
const item = response.data[key as Lang]
|
const item = response.data[key as Lang]
|
||||||
|
|
||||||
const url = item
|
const url = item
|
||||||
? item.web?.original_url || `/${key}${item.url}`
|
? item.web?.original_url || removeTrailingSlash(`/${key}${item.url}`)
|
||||||
: undefined
|
: undefined
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ export const rawMetadataSchema = z.object({
|
|||||||
.object({
|
.object({
|
||||||
heading: z.string().optional().nullable(),
|
heading: z.string().optional().nullable(),
|
||||||
preamble: z.string().optional().nullable(),
|
preamble: z.string().optional().nullable(),
|
||||||
|
hero_image: tempImageVaultAssetSchema.nullable(),
|
||||||
})
|
})
|
||||||
.optional()
|
.optional()
|
||||||
.nullable(),
|
.nullable(),
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { GetDestinationCountryPageMetadata } from "@/lib/graphql/Query/Destinati
|
|||||||
import { GetDestinationOverviewPageMetadata } from "@/lib/graphql/Query/DestinationOverviewPage/Metadata.graphql"
|
import { GetDestinationOverviewPageMetadata } from "@/lib/graphql/Query/DestinationOverviewPage/Metadata.graphql"
|
||||||
import { GetHotelPageMetadata } from "@/lib/graphql/Query/HotelPage/Metadata.graphql"
|
import { GetHotelPageMetadata } from "@/lib/graphql/Query/HotelPage/Metadata.graphql"
|
||||||
import { GetLoyaltyPageMetadata } from "@/lib/graphql/Query/LoyaltyPage/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 { request } from "@/lib/graphql/request"
|
||||||
import { notFound } from "@/server/errors/trpc"
|
import { notFound } from "@/server/errors/trpc"
|
||||||
import { contentStackUidWithServiceProcedure, router } from "@/server/trpc"
|
import { contentStackUidWithServiceProcedure, router } from "@/server/trpc"
|
||||||
@@ -262,6 +263,14 @@ export const metadataQueryRouter = router({
|
|||||||
},
|
},
|
||||||
alternates
|
alternates
|
||||||
)
|
)
|
||||||
|
case PageContentTypeEnum.startPage:
|
||||||
|
const startPageResponse = await fetchMetadata<{
|
||||||
|
start_page: RawMetadataSchema
|
||||||
|
}>(GetStartPageMetadata, variables)
|
||||||
|
return getTransformedMetadata(
|
||||||
|
startPageResponse.start_page,
|
||||||
|
alternates
|
||||||
|
)
|
||||||
default:
|
default:
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ export function getDescription(data: RawMetadataSchema) {
|
|||||||
|
|
||||||
export function getImage(data: RawMetadataSchema) {
|
export function getImage(data: RawMetadataSchema) {
|
||||||
const metadataImage = data.web?.seo_metadata?.seo_image
|
const metadataImage = data.web?.seo_metadata?.seo_image
|
||||||
const heroImage = data.hero_image
|
const heroImage = data.hero_image || data.header?.hero_image
|
||||||
const hotelImage =
|
const hotelImage =
|
||||||
data.hotelData?.gallery?.heroImages?.[0] ||
|
data.hotelData?.gallery?.heroImages?.[0] ||
|
||||||
data.hotelData?.gallery?.smallerImages?.[0]
|
data.hotelData?.gallery?.smallerImages?.[0]
|
||||||
|
|||||||
Reference in New Issue
Block a user