feat: SW-1356 Reward night bookingflow * feat: SW-1356 Reward night bookingflow * feat: SW-1356 Removed extra param booking call * feat: SW-1356 Optimized as review comments * feat: SW-1356 Schema validation updates * feat: SW-1356 Fix after rebase * feat: SW-1356 Optimised price.redemptions check * feat: SW-1356 Updated Props naming Approved-by: Arvid Norlin
77 lines
1.9 KiB
TypeScript
77 lines
1.9 KiB
TypeScript
"use client"
|
|
import { REDEMPTION } from "@/constants/booking"
|
|
import { dt } from "@/lib/dt"
|
|
|
|
import useLang from "@/hooks/useLang"
|
|
import RatesProvider from "@/providers/RatesProvider"
|
|
|
|
import { useHotelPackages, useRoomsAvailability } from "../utils"
|
|
import RateSummary from "./RateSummary"
|
|
import Rooms from "./Rooms"
|
|
import { RoomsContainerSkeleton } from "./RoomsContainerSkeleton"
|
|
|
|
import type { RoomsContainerProps } from "@/types/components/hotelReservation/selectRate/roomsContainer"
|
|
|
|
export function RoomsContainer({
|
|
adultArray,
|
|
booking,
|
|
childArray,
|
|
fromDate,
|
|
hotelData,
|
|
isUserLoggedIn,
|
|
toDate,
|
|
}: RoomsContainerProps) {
|
|
const lang = useLang()
|
|
|
|
const fromDateString = dt(fromDate).format("YYYY-MM-DD")
|
|
const toDateString = dt(toDate).format("YYYY-MM-DD")
|
|
const redemption = booking.searchType
|
|
? booking.searchType === REDEMPTION
|
|
: undefined
|
|
|
|
const { data: roomsAvailability, isPending: isLoadingAvailability } =
|
|
useRoomsAvailability(
|
|
adultArray,
|
|
hotelData.hotel.id,
|
|
fromDateString,
|
|
toDateString,
|
|
lang,
|
|
childArray,
|
|
booking.bookingCode,
|
|
redemption
|
|
)
|
|
|
|
const { data: packages, isPending: isLoadingPackages } = useHotelPackages(
|
|
adultArray,
|
|
childArray,
|
|
fromDateString,
|
|
toDateString,
|
|
hotelData.hotel.id,
|
|
lang
|
|
)
|
|
|
|
if (isLoadingAvailability || isLoadingPackages) {
|
|
return <RoomsContainerSkeleton />
|
|
}
|
|
|
|
if (packages === null) {
|
|
// TODO: Log packages error
|
|
console.error("[RoomsContainer] unable to fetch packages")
|
|
}
|
|
|
|
return (
|
|
<RatesProvider
|
|
booking={booking}
|
|
hotelType={hotelData.hotel.hotelType}
|
|
isUserLoggedIn={isUserLoggedIn}
|
|
packages={packages}
|
|
roomCategories={hotelData.roomCategories}
|
|
roomsAvailability={roomsAvailability}
|
|
vat={hotelData.hotel.vat}
|
|
>
|
|
<Rooms />
|
|
<RateSummary isUserLoggedIn={isUserLoggedIn} />
|
|
</RatesProvider>
|
|
)
|
|
}
|