feat(SW-2270): Added hotel listing block to campaign overview page
Approved-by: Matilda Landström
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user