refactor(SW-302): update typings

This commit is contained in:
Matilda Landström
2024-10-07 13:47:23 +02:00
parent 0fa8251cd3
commit cdb51bae73
9 changed files with 186 additions and 125 deletions

View File

@@ -1,5 +1,4 @@
import {
activities,
meetingsAndConferences,
restaurantAndBar,
wellnessAndExercise,
@@ -9,60 +8,43 @@ import { getLang } from "@/i18n/serverContext"
import {
type Facilities,
type FacilityCard,
type FacilityCardType,
FacilityEnum,
type FacilityGrid,
FacilityIds,
type FacilityImage,
RestaurantHeadings,
} from "@/types/components/hotelPage/facilities"
import type { Amenities, Facility } from "@/types/hotel"
import { ActivityCard } from "@/types/trpc/routers/contentstack/hotelPage"
import type { CardProps } from "@/components/TempDesignSystem/Card/card"
export function setActivityCard(activitiesCard: ActivityCard): CardProps {
const lang = getLang()
const hasImage = activitiesCard.background_image
export function isFacilityCard(card: FacilityCardType): card is FacilityCard {
return (card as FacilityCard).heading != undefined
}
const updatedCard: CardProps = {
id: activities[lang],
theme: hasImage ? "image" : "primaryDark",
scriptedTopTitle: activitiesCard.scripted_title,
heading: activitiesCard.heading,
bodyText: activitiesCard.body_text,
backgroundImage: hasImage ? activitiesCard.background_image : undefined,
primaryButton: hasImage
? {
href: activitiesCard.contentPage.href,
title: activitiesCard.cta_text,
isExternal: false,
}
: undefined,
secondaryButton: hasImage
? undefined
: {
href: activitiesCard.contentPage.href,
title: activitiesCard.cta_text,
isExternal: false,
},
}
return updatedCard
export function isFacilityImage(card: FacilityCardType): card is FacilityCard {
return (card as FacilityImage).backgroundImage != undefined
}
function setCardProps(
theme: CardProps["theme"],
heading: string,
buttonText: string,
href: string
) {
const card: CardProps = {}
card.theme = theme
card.id = href
card.heading = heading
card.secondaryButton = {
href: `?s=${href}`,
title: buttonText,
isExternal: false,
href: string,
scriptedTopTitle: string
): FacilityCard {
return {
theme: theme,
id: href,
heading: heading,
scriptedTopTitle: scriptedTopTitle,
secondaryButton: {
href: `?s=${href}`,
title: buttonText,
isExternal: false,
},
}
return card
}
export function setFacilityCardGrids(facilities: Facility[]): Facilities {
@@ -70,23 +52,24 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
const cards: Facilities = []
facilities.forEach(async (facility) => {
const grid: Array<CardProps> = []
let card: CardProps = {}
const grid: FacilityGrid = []
let card: FacilityCard
facility.heroImages.slice(0, 2).forEach((image) => {
// Can be a maximum 2 images per grid
const img: CardProps = {}
img.id = image.imageSizes.large
;(img.backgroundImage = {
url: image.imageSizes.large,
title: image.metaData.title,
meta: {
alt: image.metaData.altText,
caption: image.metaData.altText_En,
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,
}),
(img.theme = "image")
}
grid.push(img)
})
@@ -96,9 +79,9 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
"one",
"Sauna and gym",
"Read more about wellness & exercise",
wellnessAndExercise[lang]
wellnessAndExercise[lang],
facility.headingText
)
card.scriptedTopTitle = facility.headingText
grid.unshift(card)
break
@@ -107,9 +90,9 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
"primaryDim",
"Events that make an impression",
"About meetings & conferences",
meetingsAndConferences[lang]
meetingsAndConferences[lang],
facility.headingText
)
card.scriptedTopTitle = facility.headingText
grid.push(card)
break
@@ -119,9 +102,9 @@ export function setFacilityCardGrids(facilities: Facility[]): Facilities {
"primaryDark",
"Enjoy relaxed restaurant experiences",
"Read more & book a table",
restaurantAndBar[lang]
restaurantAndBar[lang],
facility.headingText
)
card.scriptedTopTitle = facility.headingText
grid.unshift(card)
break
}