feat(SW-415): Normalize roomSchema

This commit is contained in:
Pontus Dreij
2024-10-10 14:10:03 +02:00
parent 9d106713a0
commit c69b473de1
4 changed files with 45 additions and 32 deletions

View File

@@ -22,20 +22,20 @@ export function Rooms({ rooms }: RoomsProps) {
const mappedRooms = rooms const mappedRooms = rooms
.map((room) => { .map((room) => {
const size = `${room.attributes.roomSize.min} - ${room.attributes.roomSize.max}` const size = `${room.roomSize.min} - ${room.roomSize.max}`
const personLabel = const personLabel =
room.attributes.occupancy.total === 1 room.occupancy.total === 1
? intl.formatMessage({ id: "hotelPages.rooms.roomCard.person" }) ? intl.formatMessage({ id: "hotelPages.rooms.roomCard.person" })
: intl.formatMessage({ id: "hotelPages.rooms.roomCard.persons" }) : intl.formatMessage({ id: "hotelPages.rooms.roomCard.persons" })
const subtitle = `${size} (${room.attributes.occupancy.total} ${personLabel})` const subtitle = `${size} (${room.occupancy.total} ${personLabel})`
return { return {
id: room.id, id: room.id,
images: room.attributes.content.images, images: room.images,
title: room.attributes.name, title: room.name,
subtitle: subtitle, subtitle: subtitle,
sortOrder: room.attributes.sortOrder, sortOrder: room.sortOrder,
popularChoice: null, popularChoice: null,
} }
}) })

View File

@@ -53,16 +53,16 @@ export default function RoomCard({
} }
const roomSize = roomCategories.find( const roomSize = roomCategories.find(
(category) => category.attributes.name === roomConfiguration.roomType (category) => category.name === roomConfiguration.roomType
)?.attributes.roomSize )?.roomSize
const occupancy = roomCategories.find( const occupancy = roomCategories.find(
(category) => category.attributes.name === roomConfiguration.roomType (category) => category.name === roomConfiguration.roomType
)?.attributes.occupancy.total )?.occupancy.total
const roomDescription = roomCategories.find( const roomDescription = roomCategories.find(
(room) => room.attributes.name === roomConfiguration.roomType (room) => room.name === roomConfiguration.roomType
)?.attributes.content.texts.descriptions.short )?.descriptions.short
return ( return (
<div className={styles.card}> <div className={styles.card}>

View File

@@ -425,7 +425,8 @@ const roomFacilitiesSchema = z.object({
sortOrder: z.number(), sortOrder: z.number(),
}) })
export const roomSchema = z.object({ export const roomSchema = z
.object({
attributes: z.object({ attributes: z.object({
name: z.string(), name: z.string(),
sortOrder: z.number(), sortOrder: z.number(),
@@ -445,6 +446,18 @@ export const roomSchema = z.object({
id: z.string(), id: z.string(),
type: z.enum(["roomcategories"]), type: z.enum(["roomcategories"]),
}) })
.transform((data) => {
return {
descriptions: data.attributes.content.texts.descriptions,
id: data.id,
images: data.attributes.content.images,
name: data.attributes.name,
occupancy: data.attributes.occupancy,
roomSize: data.attributes.roomSize,
sortOrder: data.attributes.sortOrder,
type: data.type,
}
})
const merchantInformationSchema = z.object({ const merchantInformationSchema = z.object({
webMerchantId: z.string(), webMerchantId: z.string(),

View File

@@ -2,7 +2,7 @@ import type { RoomData } from "@/types/hotel"
export interface RoomCardProps { export interface RoomCardProps {
id: string id: string
images: RoomData["attributes"]["content"]["images"] images: RoomData["images"]
title: string title: string
subtitle: string subtitle: string
badgeTextTransKey: string | null badgeTextTransKey: string | null