Merged in feat/SW-2033-implement-new-room-feature-request (pull request #1665)

feat(SW-2033): Added new route for fetching room features, and merged the data with existing availability data

* feat(SW-2033): Added new route for fetching room features, and merged the data with existing availability data

* fix: issue with total price not including room features

* fix: add return null

* fix

* fix

* fixes from PR feedback


Approved-by: Arvid Norlin
This commit is contained in:
Tobias Johansson
2025-03-31 11:20:49 +00:00
parent 81f579bbfe
commit 7434f30c20
9 changed files with 232 additions and 12 deletions

View File

@@ -1,3 +1,4 @@
import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter"
import type { AvailabilityError } from "@/types/stores/rates"
import type {
Product,
@@ -78,3 +79,11 @@ export function findSelectedRate(
return findProductInRoom(rateCode, room)
})
}
export function isRoomPackageCode(
code: string | null
): code is RoomPackageCodeEnum {
return Object.values(RoomPackageCodeEnum).includes(
code as RoomPackageCodeEnum
)
}

View File

@@ -5,7 +5,11 @@ import { create, useStore } from "zustand"
import { RatesContext } from "@/contexts/Rates"
import { findProductInRoom, findSelectedRate } from "./helpers"
import {
findProductInRoom,
findSelectedRate,
isRoomPackageCode,
} from "./helpers"
import { RoomPackageCodeEnum } from "@/types/components/hotelReservation/selectRate/roomFilter"
import { BookingCodeFilterEnum } from "@/types/enums/bookingCodeFilter"
@@ -83,6 +87,7 @@ export function createRatesStore({
rate: product.rate,
roomType: selectedRoom.roomType,
roomTypeCode: selectedRoom.roomTypeCode,
package: room.packages?.[0],
}
}
}
@@ -125,7 +130,11 @@ export function createRatesStore({
product = findProductInRoom(room.rateCode, selectedRate)
}
const selectedPackage = room.packages?.[0]
// Since features are fetched async based on query string, we need to read from query string to apply correct filtering
const packagesParam = searchParams.get(`room[${idx}].packages`)
const selectedPackage = isRoomPackageCode(packagesParam)
? packagesParam
: undefined
let rooms: RoomConfiguration[] = roomConfiguration
if (selectedPackage) {