"use client" import { useCallback, useState } from "react" import RoomFilter from "../RoomFilter" import RoomSelection from "../RoomSelection" import { getLowestPricedDuplicateRooms } from "./utils" import styles from "./rooms.module.css" import { RoomPackageCodeEnum, type RoomPackageCodes, } from "@/types/components/hotelReservation/selectRate/roomFilter" import type { RoomSelectionProps } from "@/types/components/hotelReservation/selectRate/roomSelection" import type { RoomConfiguration, RoomsAvailability, } from "@/server/routers/hotels/output" export default function Rooms({ roomsAvailability, roomCategories = [], user, packages, }: Omit) { const visibleRooms: RoomConfiguration[] = getLowestPricedDuplicateRooms( roomsAvailability.roomConfigurations ) const defaultRooms = visibleRooms const [rooms, setRooms] = useState({ ...roomsAvailability, roomConfigurations: defaultRooms, }) const [selectedPackages, setSelectedPackages] = useState( [] ) const handleFilter = useCallback( (filter: Record) => { const filteredPackages = Object.keys(filter).filter( (key) => filter[key as RoomPackageCodeEnum] ) as RoomPackageCodeEnum[] setSelectedPackages(filteredPackages) if (filteredPackages.length === 0) { setRooms({ ...roomsAvailability, roomConfigurations: defaultRooms, }) return } const filteredRooms = visibleRooms.filter((room) => filteredPackages.every((filteredPackage) => room.features.some((feature) => feature.code === filteredPackage) ) ) setRooms({ ...roomsAvailability, roomConfigurations: filteredRooms }) }, [roomsAvailability, defaultRooms, visibleRooms] ) return (
) }