Merged in fix/hotel-faq (pull request #1265)

fix: setting faq section as nullable from CS as CS returns null after import

* fix: setting faq section as nullable from CS as CS returns null after import


Approved-by: Fredrik Thorsson
This commit is contained in:
Erik Tiekstra
2025-02-06 09:19:59 +00:00
parent d0e2bd5c8d
commit 8ecaac4b52
4 changed files with 64 additions and 60 deletions

View File

@@ -150,7 +150,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
<TabNavigation
restaurantTitle={getRestaurantHeading(detailedFacilities)}
hasActivities={activitiesCards.length > 0}
hasFAQ={!!faq.accordions.length}
hasFAQ={!!faq?.accordions.length}
tabValues={tabValues}
/>
@@ -187,7 +187,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
amenities={detailedFacilities}
healthFacilities={healthFacilities}
/>
{faq.accordions.length > 0 && (
{faq && faq.accordions.length > 0 && (
<AccordionSection accordion={faq.accordions} title={faq.title} />
)}
</main>

View File

@@ -70,7 +70,7 @@ export const hotelPageSchema = z.object({
})
return { spaPage, activitiesCards }
}),
faq: hotelFaqSchema,
faq: hotelFaqSchema.nullable(),
hotel_page_id: z.string(),
title: z.string(),
url: z.string(),

View File

@@ -1240,7 +1240,7 @@ export const hotelQueryRouter = router({
},
})
)
return null
return []
}
const apiJson = await apiResponse.json()

View File

@@ -57,65 +57,69 @@ export function setFacilityCardGrids(
): Facilities {
const lang = getLang()
const cards: Facilities = facilities.map((facility) => {
let card: FacilityCard
const cards: Facilities = facilities
.filter((fac) => !!fac.headingText)
.map((facility) => {
let card: FacilityCard
const grid: FacilityGrid = facility.heroImages.slice(0, 2).map((image) => {
// Can be a maximum 2 images per grid
const img: FacilityImage = {
backgroundImage: {
url: image.imageSizes.large,
title: image.metaData.title,
meta: {
alt: image.metaData.altText,
caption: image.metaData.altText_En,
},
id: image.imageSizes.large,
},
theme: "image",
id: image.imageSizes.large,
const grid: FacilityGrid = facility.heroImages
.slice(0, 2)
.map((image) => {
// Can be a maximum 2 images per grid
const img: FacilityImage = {
backgroundImage: {
url: image.imageSizes.large,
title: image.metaData.title,
meta: {
alt: image.metaData.altText,
caption: image.metaData.altText_En,
},
id: image.imageSizes.large,
},
theme: "image",
id: image.imageSizes.large,
}
return img
})
switch (facility.id) {
case FacilityCardTypeEnum.wellness:
const wellnessTitle = getWellnessHeading(healthFacilities)
card = setCardProps(
"one",
"Read more about wellness & exercise",
wellnessAndExercise[lang],
facility.headingText,
wellnessTitle
)
grid.unshift(card)
break
case FacilityCardTypeEnum.conference:
card = setCardProps(
"primaryDim",
"About meetings & conferences",
meetingsAndConferences[lang],
facility.headingText,
"Events that make an impression"
)
grid.push(card)
break
case FacilityCardTypeEnum.restaurant:
const restaurantTitle = getRestaurantHeading(amenities)
card = setCardProps(
"primaryDark",
"Read more & book a table",
restaurantAndBar[lang],
facility.headingText,
restaurantTitle
)
grid.unshift(card)
break
}
return img
return grid
})
switch (facility.id) {
case FacilityCardTypeEnum.wellness:
const wellnessTitle = getWellnessHeading(healthFacilities)
card = setCardProps(
"one",
"Read more about wellness & exercise",
wellnessAndExercise[lang],
facility.headingText,
wellnessTitle
)
grid.unshift(card)
break
case FacilityCardTypeEnum.conference:
card = setCardProps(
"primaryDim",
"About meetings & conferences",
meetingsAndConferences[lang],
facility.headingText,
"Events that make an impression"
)
grid.push(card)
break
case FacilityCardTypeEnum.restaurant:
const restaurantTitle = getRestaurantHeading(amenities)
card = setCardProps(
"primaryDark",
"Read more & book a table",
restaurantAndBar[lang],
facility.headingText,
restaurantTitle
)
grid.unshift(card)
break
}
return grid
})
return cards
}