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

View File

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

View File

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

View File

@@ -57,65 +57,69 @@ export function setFacilityCardGrids(
): Facilities { ): Facilities {
const lang = getLang() const lang = getLang()
const cards: Facilities = facilities.map((facility) => { const cards: Facilities = facilities
let card: FacilityCard .filter((fac) => !!fac.headingText)
.map((facility) => {
let card: FacilityCard
const grid: FacilityGrid = facility.heroImages.slice(0, 2).map((image) => { const grid: FacilityGrid = facility.heroImages
// Can be a maximum 2 images per grid .slice(0, 2)
const img: FacilityImage = { .map((image) => {
backgroundImage: { // Can be a maximum 2 images per grid
url: image.imageSizes.large, const img: FacilityImage = {
title: image.metaData.title, backgroundImage: {
meta: { url: image.imageSizes.large,
alt: image.metaData.altText, title: image.metaData.title,
caption: image.metaData.altText_En, meta: {
}, alt: image.metaData.altText,
id: image.imageSizes.large, caption: image.metaData.altText_En,
}, },
theme: "image", id: image.imageSizes.large,
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 return cards
} }