feat(sW-718) use convertSearchParamsToObj instead of new util

This commit is contained in:
Pontus Dreij
2025-01-24 11:45:34 +01:00
parent c8ed172f0e
commit 2c7f6006c5
2 changed files with 20 additions and 63 deletions

View File

@@ -10,12 +10,12 @@ import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
import { useRateSummary } from "@/hooks/selectRate/useRateSummary"
import { useRoomFiltering } from "@/hooks/selectRate/useRoomFiltering"
import { trackLowestRoomPrice } from "@/utils/tracking"
import { convertObjToSearchParams } from "@/utils/url"
import { convertObjToSearchParams, convertSearchParamsToObj } from "@/utils/url"
import RateSummary from "../RateSummary"
import { RoomSelectionPanel } from "../RoomSelectionPanel"
import SelectedRoomPanel from "../SelectedRoomPanel"
import { filterDuplicateRoomTypesByLowestPrice, parseRoomParams } from "./utils"
import { filterDuplicateRoomTypesByLowestPrice } from "./utils"
import styles from "./rooms.module.css"
@@ -24,7 +24,10 @@ import {
RoomPackageCodeEnum,
} from "@/types/components/hotelReservation/selectRate/roomFilter"
import type { SelectRateProps } from "@/types/components/hotelReservation/selectRate/roomSelection"
import type { Rate } from "@/types/components/hotelReservation/selectRate/selectRate"
import type {
Rate,
SelectRateSearchParams,
} from "@/types/components/hotelReservation/selectRate/selectRate"
import type { RoomConfiguration } from "@/server/routers/hotels/output"
export default function Rooms({
@@ -45,18 +48,23 @@ export default function Rooms({
const { modifyRate, selectedRates, setSelectedRates } =
useRateSelectionStore()
const searchedRoomsAndGuests = useMemo(
() => parseRoomParams(searchParams),
const bookingWidgetSearchData = useMemo(
() =>
convertSearchParamsToObj<SelectRateSearchParams>(
Object.fromEntries(searchParams)
),
[searchParams]
)
const isMultipleRooms = searchedRoomsAndGuests.length > 1
const isMultipleRooms = bookingWidgetSearchData.rooms.length > 1
const intl = useIntl()
useEffect(() => {
setSelectedRates(new Array(searchedRoomsAndGuests.length).fill(undefined))
}, [setSelectedRates, searchedRoomsAndGuests.length])
setSelectedRates(
new Array(bookingWidgetSearchData.rooms.length).fill(undefined)
)
}, [setSelectedRates, bookingWidgetSearchData.rooms.length])
const visibleRooms: RoomConfiguration[] = useMemo(() => {
const deduped = filterDuplicateRoomTypesByLowestPrice(
@@ -110,7 +118,7 @@ export default function Rooms({
useRoomFiltering({ roomsAvailability })
const rateSummary = useRateSummary({
searchedRoomsAndGuests,
searchedRoomsAndGuests: bookingWidgetSearchData.rooms,
selectedRates,
getFilteredRooms,
selectedPackagesByRoom,
@@ -209,7 +217,7 @@ export default function Rooms({
return (
<div className={styles.content}>
{isMultipleRooms ? (
searchedRoomsAndGuests.map((room, index) => (
bookingWidgetSearchData.rooms.map((room, index) => (
<div key={index} className={styles.roomContainer}>
{selectedRates[index] === undefined && (
<Subtitle>
@@ -220,13 +228,13 @@ export default function Rooms({
,{" "}
{intl.formatMessage(
{
id: room.children?.length
id: room.childrenInRoom?.length
? "{adults} adults, {children} children"
: "{adults} adults",
},
{
adults: room.adults,
children: room.children?.length,
children: room.childrenInRoom?.length,
}
)}
</Subtitle>