Merged in feat/SW-1084-spa-page (pull request #1117)
Feat/SW-1084 Spa page option on Hotel page * chore(SW-1084): add separate spa page from CS for hotel page * fix(SW-1084): Cleanup Approved-by: Erik Tiekstra Approved-by: Fredrik Thorsson
This commit is contained in:
@@ -9,9 +9,14 @@ import {
|
||||
activitiesCardSchema,
|
||||
} from "../schemas/blocks/activitiesCard"
|
||||
import { hotelFaqRefsSchema, hotelFaqSchema } from "../schemas/blocks/hotelFaq"
|
||||
import { spaPageRefSchema, spaPageSchema } from "../schemas/blocks/spaPage"
|
||||
import { systemSchema } from "../schemas/system"
|
||||
|
||||
import { HotelPageEnum } from "@/types/enums/hotelPage"
|
||||
import type {
|
||||
ActivitiesCard,
|
||||
SpaPage,
|
||||
} from "@/types/trpc/routers/contentstack/hotelPage"
|
||||
|
||||
const contentBlockActivities = z
|
||||
.object({
|
||||
@@ -19,13 +24,38 @@ const contentBlockActivities = z
|
||||
})
|
||||
.merge(activitiesCardSchema)
|
||||
|
||||
const contentBlockSpaPage = z
|
||||
.object({
|
||||
__typename: z.literal(HotelPageEnum.ContentStack.blocks.SpaPage),
|
||||
})
|
||||
.merge(spaPageSchema)
|
||||
|
||||
export const contentBlock = z.discriminatedUnion("__typename", [
|
||||
contentBlockActivities,
|
||||
contentBlockSpaPage,
|
||||
])
|
||||
|
||||
export const hotelPageSchema = z.object({
|
||||
hotel_page: z.object({
|
||||
content: discriminatedUnionArray(contentBlock.options).nullable(),
|
||||
content: discriminatedUnionArray(contentBlock.options)
|
||||
.nullable()
|
||||
.transform((data) => {
|
||||
let spaPage: SpaPage | undefined
|
||||
let activitiesCard: ActivitiesCard | undefined
|
||||
data?.map((block) => {
|
||||
switch (block.typename) {
|
||||
case HotelPageEnum.ContentStack.blocks.ActivitiesCard:
|
||||
activitiesCard = block
|
||||
break
|
||||
case HotelPageEnum.ContentStack.blocks.SpaPage:
|
||||
spaPage = block
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
})
|
||||
return { spaPage, activitiesCard }
|
||||
}),
|
||||
faq: hotelFaqSchema,
|
||||
hotel_page_id: z.string(),
|
||||
title: z.string(),
|
||||
@@ -40,14 +70,21 @@ export const hotelPageSchema = z.object({
|
||||
})
|
||||
|
||||
/** REFS */
|
||||
const hotelPageActiviesCardRefs = z
|
||||
const hotelPageActivitiesCardRefs = z
|
||||
.object({
|
||||
__typename: z.literal(HotelPageEnum.ContentStack.blocks.ActivitiesCard),
|
||||
})
|
||||
.merge(activitiesCardRefSchema)
|
||||
|
||||
const hotelPageSpaPageRefs = z
|
||||
.object({
|
||||
__typename: z.literal(HotelPageEnum.ContentStack.blocks.SpaPage),
|
||||
})
|
||||
.merge(spaPageRefSchema)
|
||||
|
||||
const hotelPageBlockRefsItem = z.discriminatedUnion("__typename", [
|
||||
hotelPageActiviesCardRefs,
|
||||
hotelPageActivitiesCardRefs,
|
||||
hotelPageSpaPageRefs,
|
||||
])
|
||||
|
||||
export const hotelPageRefsSchema = z.object({
|
||||
|
||||
Reference in New Issue
Block a user