feat(SW-2270): Added hotel listing block to campaign overview page

Approved-by: Matilda Landström
This commit is contained in:
Erik Tiekstra
2025-06-30 09:29:20 +00:00
parent 4229e9b11b
commit 0393f7b7b9
10 changed files with 89 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ import {
carouselCardsRefsSchema,
carouselCardsSchema,
} from "../schemas/blocks/carouselCards"
import { campaignOverviewPageHotelListingSchema } from "../schemas/blocks/hotelListing"
import {
linkAndTitleSchema,
linkConnectionRefs,
@@ -70,8 +71,17 @@ const campaignOverviewPageCarouselCards = z
})
.merge(carouselCardsSchema)
export const campaignOverviewPageHotelListing = z
.object({
__typename: z.literal(
CampaignOverviewPageEnum.ContentStack.blocks.HotelListing
),
})
.merge(campaignOverviewPageHotelListingSchema)
export const blocksSchema = z.discriminatedUnion("__typename", [
campaignOverviewPageCarouselCards,
campaignOverviewPageHotelListing,
])
export const campaignOverviewPageSchema = z.object({

View File

@@ -69,3 +69,34 @@ export const campaignPageHotelListingSchema = z.object({
heading: z.string(),
}),
})
export const campaignOverviewPageHotelListingSchema = z.object({
typename: z
.literal(BlocksEnums.block.CampaignOverviewPageHotelListing)
.default(BlocksEnums.block.CampaignOverviewPageHotelListing),
hotel_listing: z
.object({
heading: z.string(),
preamble: z.string().nullish(),
included_hotelsConnection: z.object({
edges: z.array(
z.object({
node: z.object({
hotel_page_id: z.string(),
}),
})
),
}),
})
.transform((data) => {
const { included_hotelsConnection, ...rest } = data
const hotelIds = data.included_hotelsConnection.edges
.map(({ node }) => node.hotel_page_id)
.filter(Boolean)
return {
...rest,
hotelIds,
}
}),
})