feat(SW-718): parse room from searchParams

This commit is contained in:
Pontus Dreij
2025-01-21 08:50:42 +01:00
parent cffde6f9c3
commit 7d716dcf4a
3 changed files with 92 additions and 19 deletions

View File

@@ -4,11 +4,12 @@ import { useSearchParams } from "next/navigation"
import { useCallback, useEffect, useMemo, useState } from "react"
import { useIntl } from "react-intl"
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
import { trackLowestRoomPrice } from "@/utils/tracking"
import RoomFilter from "../RoomFilter"
import RoomSelection from "../RoomSelection"
import { filterDuplicateRoomTypesByLowestPrice } from "./utils"
import { filterDuplicateRoomTypesByLowestPrice, parseRoomParams } from "./utils"
import styles from "./rooms.module.css"
@@ -37,6 +38,11 @@ export default function Rooms({
const arrivalDate = searchParams.get("fromDate")
const departureDate = searchParams.get("toDate")
const searchedRoomsAndGuests = useMemo(
() => parseRoomParams(searchParams),
[searchParams]
)
const intl = useIntl()
const visibleRooms: RoomConfiguration[] = useMemo(() => {
@@ -213,22 +219,32 @@ export default function Rooms({
}, [arrivalDate, departureDate, hotelId, rooms.roomConfigurations])
return (
<div className={styles.content}>
<RoomFilter
numberOfRooms={rooms.roomConfigurations.length}
onFilter={handleFilter}
filterOptions={defaultPackages}
/>
<RoomSelection
roomsAvailability={rooms}
roomCategories={roomCategories}
availablePackages={availablePackages}
selectedPackages={selectedPackages}
setRateCode={setSelectedRate}
rateSummary={rateSummary}
hotelType={hotelType}
isUserLoggedIn={isUserLoggedIn}
/>
</div>
<>
{searchedRoomsAndGuests.map((room, index) => (
<div key={index} className={styles.content}>
<Subtitle>
{`Room ${index + 1}, ${room.adults} adults`}
{room.children &&
room.children.length > 0 &&
`, ${room.children.length} children`}
</Subtitle>
<RoomFilter
numberOfRooms={rooms.roomConfigurations.length}
onFilter={handleFilter}
filterOptions={defaultPackages}
/>
<RoomSelection
roomsAvailability={rooms}
roomCategories={roomCategories}
availablePackages={availablePackages}
selectedPackages={selectedPackages}
setRateCode={setSelectedRate}
rateSummary={rateSummary}
hotelType={hotelType}
isUserLoggedIn={isUserLoggedIn}
/>
</div>
))}
</>
)
}