Merged in feat/SW-2113-allow-feature-combinations (pull request #1719)
Feat/SW-2113 allow feature combinations * feat(SW-2113): Refactor features data to be fetched on filter room filter change * feat(SW-2113): added loading state * fix: now clear room selection when applying filter and room doesnt exists. And added room features to mobile summary * fix * fix: add package to price details * feat(SW-2113): added buttons to room filter * fix: active room * fix: remove console log * fix: added form and close handler to room package filter * fix: add restriction so you cannot select pet room with allergy room and vice versa * fix: fixes from review feedback * fix * fix: hide modify button if on nextcoming rooms if no selection is made, and adjust filter logic in togglePackage * fix: forgot to use roomFeatureCodes from input.. * fix: naming Approved-by: Simon.Emanuelsson
This commit is contained in:
@@ -1,10 +1,6 @@
|
||||
import { useSearchParams } from "next/navigation"
|
||||
import { useEffect, useMemo, useState } from "react"
|
||||
|
||||
import { REDEMPTION } from "@/constants/booking"
|
||||
import { trpc } from "@/lib/trpc/client"
|
||||
|
||||
import { convertSearchParamsToObj, searchParamsToRecord } from "@/utils/url"
|
||||
|
||||
import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter"
|
||||
import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
|
||||
import type { Lang } from "@/constants/languages"
|
||||
@@ -17,79 +13,30 @@ export function useRoomsAvailability(
|
||||
toDateString: string,
|
||||
lang: Lang,
|
||||
childArray: ChildrenInRoom,
|
||||
bookingCode?: string,
|
||||
redemption?: boolean
|
||||
booking: SelectRateSearchParams
|
||||
) {
|
||||
const searchParams = useSearchParams()
|
||||
const searchParamsObj = convertSearchParamsToObj<SelectRateSearchParams>(
|
||||
searchParamsToRecord(searchParams)
|
||||
const redemption = booking.searchType
|
||||
? booking.searchType === REDEMPTION
|
||||
: undefined
|
||||
|
||||
const roomFeatureCodesArray = booking.rooms.map(
|
||||
(room) => room.packages ?? null
|
||||
)
|
||||
|
||||
const hasPackagesParam = searchParamsObj.rooms.some((room) => room.packages)
|
||||
const [hasRoomFeatures, setHasRoomFeatures] = useState(hasPackagesParam)
|
||||
|
||||
useEffect(() => {
|
||||
setHasRoomFeatures(hasPackagesParam)
|
||||
}, [hasPackagesParam, setHasRoomFeatures])
|
||||
|
||||
const { data: roomFeatures, isPending: isRoomFeaturesPending } =
|
||||
trpc.hotel.availability.roomFeatures.useQuery(
|
||||
{
|
||||
hotelId,
|
||||
startDate: fromDateString,
|
||||
endDate: toDateString,
|
||||
adultsCount,
|
||||
childArray,
|
||||
},
|
||||
{
|
||||
enabled: hasRoomFeatures,
|
||||
}
|
||||
)
|
||||
|
||||
const { data: roomsAvailability, isPending: isRoomsAvailabiltyPending } =
|
||||
const roomsAvailability =
|
||||
trpc.hotel.availability.roomsCombinedAvailability.useQuery({
|
||||
adultsCount,
|
||||
bookingCode,
|
||||
childArray,
|
||||
hotelId,
|
||||
lang,
|
||||
redemption,
|
||||
roomStayEndDate: toDateString,
|
||||
roomStayStartDate: fromDateString,
|
||||
bookingCode: booking.bookingCode,
|
||||
roomFeatureCodesArray,
|
||||
})
|
||||
|
||||
const combinedData = useMemo(() => {
|
||||
if (!roomsAvailability) {
|
||||
return undefined
|
||||
}
|
||||
if (!roomFeatures) {
|
||||
return roomsAvailability
|
||||
}
|
||||
|
||||
return roomsAvailability.map((room, idx) => {
|
||||
if ("error" in room) {
|
||||
return room
|
||||
}
|
||||
|
||||
return {
|
||||
...room,
|
||||
roomConfigurations: room.roomConfigurations.map((config) => ({
|
||||
...config,
|
||||
features:
|
||||
roomFeatures?.[idx]?.find(
|
||||
(r) => r.roomTypeCode === config.roomTypeCode
|
||||
)?.features ?? [],
|
||||
})),
|
||||
}
|
||||
})
|
||||
}, [roomFeatures, roomsAvailability])
|
||||
|
||||
return {
|
||||
data: combinedData,
|
||||
isPending: hasRoomFeatures
|
||||
? isRoomsAvailabiltyPending || isRoomFeaturesPending
|
||||
: isRoomsAvailabiltyPending,
|
||||
}
|
||||
return roomsAvailability
|
||||
}
|
||||
|
||||
export function useHotelPackages(
|
||||
|
||||
Reference in New Issue
Block a user