feat(BOOK-57): Adjusted metadata for destination pages with active seo filter
Approved-by: Chuma Mcphoy (We Ahead)
This commit is contained in:
@@ -24,6 +24,11 @@ query GetDestinationCityPageMetadata($locale: String!, $uid: String!) {
|
||||
image
|
||||
}
|
||||
seo_filters {
|
||||
heading
|
||||
preamble
|
||||
seo_metadata {
|
||||
...Metadata
|
||||
}
|
||||
filterConnection {
|
||||
edges {
|
||||
node {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#import "../../Fragments/Metadata.graphql"
|
||||
#import "../../Fragments/System.graphql"
|
||||
#import "../../Fragments/HotelFilter.graphql"
|
||||
|
||||
query GetDestinationCountryPageMetadata($locale: String!, $uid: String!) {
|
||||
destination_country_page(locale: $locale, uid: $uid) {
|
||||
@@ -17,6 +18,20 @@ query GetDestinationCountryPageMetadata($locale: String!, $uid: String!) {
|
||||
images {
|
||||
image
|
||||
}
|
||||
seo_filters {
|
||||
heading
|
||||
preamble
|
||||
seo_metadata {
|
||||
...Metadata
|
||||
}
|
||||
filterConnection {
|
||||
edges {
|
||||
node {
|
||||
...HotelFilter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
system {
|
||||
...System
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import { Country } from "../../../types/country"
|
||||
import { RTETypeEnum } from "../../../types/RTEenums"
|
||||
import { additionalDataAttributesSchema } from "../../hotels/schemas/hotel/include/additionalData"
|
||||
import { imageSchema } from "../../hotels/schemas/image"
|
||||
import { destinationFiltersSchema } from "../schemas/destinationFilters"
|
||||
import { destinationFilterSchema } from "../schemas/destinationFilters"
|
||||
import { systemSchema } from "../schemas/system"
|
||||
|
||||
import type { Lang } from "@scandic-hotels/common/constants/language"
|
||||
@@ -52,17 +52,19 @@ const metaDataBlocksSchema = z
|
||||
.optional()
|
||||
.nullable()
|
||||
|
||||
export const seoMetadataSchema = z
|
||||
.object({
|
||||
title: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
noindex: z.boolean().nullish(),
|
||||
seo_image: transformedImageVaultAssetSchema,
|
||||
})
|
||||
.nullish()
|
||||
|
||||
export const rawMetadataSchema = z.object({
|
||||
web: z
|
||||
.object({
|
||||
seo_metadata: z
|
||||
.object({
|
||||
title: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
noindex: z.boolean().nullish(),
|
||||
seo_image: transformedImageVaultAssetSchema,
|
||||
})
|
||||
.nullish(),
|
||||
seo_metadata: seoMetadataSchema,
|
||||
breadcrumbs: z
|
||||
.object({
|
||||
title: z.string().nullish(),
|
||||
@@ -167,7 +169,13 @@ export const rawMetadataSchema = z.object({
|
||||
cities: z.array(z.string()).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
seo_filters: destinationFiltersSchema,
|
||||
seo_filters: z
|
||||
.array(
|
||||
destinationFilterSchema.merge(
|
||||
z.object({ seo_metadata: seoMetadataSchema })
|
||||
)
|
||||
)
|
||||
.nullish(),
|
||||
system: systemSchema,
|
||||
})
|
||||
|
||||
|
||||
@@ -71,16 +71,17 @@ export async function getCityData(
|
||||
hotelFilters,
|
||||
seoFilters
|
||||
)
|
||||
|
||||
const facilityFilter = allFilters.facilityFilters.find(
|
||||
(f) => f.slug === filter
|
||||
)
|
||||
const surroudingsFilter = allFilters.surroundingsFilters.find(
|
||||
const surroundingsFilter = allFilters.surroundingsFilters.find(
|
||||
(f) => f.slug === filter
|
||||
)
|
||||
|
||||
if (facilityFilter) {
|
||||
filterType = "facility"
|
||||
} else if (surroudingsFilter) {
|
||||
} else if (surroundingsFilter) {
|
||||
filterType = "surroundings"
|
||||
}
|
||||
}
|
||||
@@ -123,13 +124,13 @@ export async function getCountryData(
|
||||
const facilityFilter = allFilters.facilityFilters.find(
|
||||
(f) => f.slug === filter
|
||||
)
|
||||
const surroudingsFilter = allFilters.surroundingsFilters.find(
|
||||
const surroundingsFilter = allFilters.surroundingsFilters.find(
|
||||
(f) => f.slug === filter
|
||||
)
|
||||
|
||||
if (facilityFilter) {
|
||||
filterType = "facility"
|
||||
} else if (surroudingsFilter) {
|
||||
} else if (surroundingsFilter) {
|
||||
filterType = "surroundings"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,29 +30,25 @@ export const blocksSchema = z.discriminatedUnion("__typename", [
|
||||
destinationFilterBlockContent,
|
||||
])
|
||||
|
||||
export const destinationFiltersSchema = z
|
||||
.array(
|
||||
z.object({
|
||||
heading: z.string().nullish(),
|
||||
preamble: z.string().nullish(),
|
||||
blocks: discriminatedUnionArray(blocksSchema.options).nullish(),
|
||||
filterConnection: z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
title: z.string(),
|
||||
facility_id: z
|
||||
.nativeEnum(FacilityEnum)
|
||||
.catch(FacilityEnum.UNKNOWN),
|
||||
category: z.string(),
|
||||
slug: z.string(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
)
|
||||
.nullish()
|
||||
export const destinationFilterSchema = z.object({
|
||||
heading: z.string().nullish(),
|
||||
preamble: z.string().nullish(),
|
||||
blocks: discriminatedUnionArray(blocksSchema.options).nullish(),
|
||||
filterConnection: z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
title: z.string(),
|
||||
facility_id: z.nativeEnum(FacilityEnum).catch(FacilityEnum.UNKNOWN),
|
||||
category: z.string(),
|
||||
slug: z.string(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
|
||||
const destinationFiltersSchema = z.array(destinationFilterSchema).nullish()
|
||||
|
||||
export const transformedDestinationFiltersSchema =
|
||||
destinationFiltersSchema.transform((data) =>
|
||||
|
||||
Reference in New Issue
Block a user