@@ -112,10 +118,9 @@ export default function FlexibilityOption({
diff --git a/components/HotelReservation/SelectRate/RoomsContainer/Rooms/RoomSelectionPanel/RoomCard/index.tsx b/components/HotelReservation/SelectRate/RoomsContainer/Rooms/RoomSelectionPanel/RoomCard/index.tsx
index 2f3372052..1f0fd0315 100644
--- a/components/HotelReservation/SelectRate/RoomsContainer/Rooms/RoomSelectionPanel/RoomCard/index.tsx
+++ b/components/HotelReservation/SelectRate/RoomsContainer/Rooms/RoomSelectionPanel/RoomCard/index.tsx
@@ -81,7 +81,7 @@ export default function RoomCard({ roomConfiguration }: RoomCardProps) {
rateDefinitions: state.roomsAvailability?.rateDefinitions,
roomCategories: state.roomCategories,
}))
- const { selectedPackage, selectedRate } = useRoomContext()
+ const { isMainRoom, selectedPackage, selectedRate } = useRoomContext()
const classNames = cardVariants({
availability:
@@ -197,7 +197,7 @@ export default function RoomCard({ roomConfiguration }: RoomCardProps) {
throw new Error("We should never make it where without rateCodes")
}
- const key = isUserLoggedIn ? memberRate : publicRate
+ const key = isUserLoggedIn && isMainRoom ? memberRate : publicRate
return getRate(key)
}
@@ -299,7 +299,6 @@ export default function RoomCard({ roomConfiguration }: RoomCardProps) {
selectedRate?.roomTypeCode ===
roomConfiguration.roomTypeCode
}
- isUserLoggedIn={isUserLoggedIn}
paymentTerm={rate.isFlex ? payLater : payNow}
petRoomPackage={petRoomPackageSelected}
product={rate.notAvailable ? undefined : product}
diff --git a/package-lock.json b/package-lock.json
index 8ab75ef91..2f28a3dcc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11896,7 +11896,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
@@ -11911,7 +11910,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -11946,7 +11944,6 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
@@ -11963,7 +11960,6 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"license": "BSD-2-Clause",
- "dev":true,
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -12189,7 +12185,6 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
diff --git a/providers/RoomProvider.tsx b/providers/RoomProvider.tsx
index c467b83a6..02400f85d 100644
--- a/providers/RoomProvider.tsx
+++ b/providers/RoomProvider.tsx
@@ -15,6 +15,7 @@ export default function RoomProvider({
const modifyRate = useRatesStore((state) => state.actions.modifyRate(idx))
const selectFilter = useRatesStore((state) => state.actions.selectFilter(idx))
const selectRate = useRatesStore((state) => state.actions.selectRate(idx))
+ const roomNr = idx + 1
return (
{children}
diff --git a/stores/select-rate/index.ts b/stores/select-rate/index.ts
index 5ba450d82..2fce554a1 100644
--- a/stores/select-rate/index.ts
+++ b/stores/select-rate/index.ts
@@ -109,6 +109,15 @@ export function createRatesStore({
}
})
+ let activeRoom = rateSummary.length
+ if (searchParams.has("modifyRateIndex")) {
+ activeRoom = Number(searchParams.get("modifyRateIndex"))
+ } else if (rateSummary.length === booking.rooms.length) {
+ // Since all rooms has selections, all sections should be
+ // closed on load
+ activeRoom = -1
+ }
+
return create()((set) => ({
actions: {
modifyRate(idx) {
@@ -168,17 +177,23 @@ export function createRatesStore({
roomTypeCode: selectedRate.roomTypeCode,
}
+ const roomNr = idx + 1
+ const isMemberRate =
+ isUserLoggedIn &&
+ roomNr === 1 &&
+ selectedRate.product.productType.member
const searchParams = new URLSearchParams(state.searchParams)
searchParams.set(
`room[${idx}].counterratecode`,
- isUserLoggedIn && selectedRate.product.productType.member
+ isMemberRate
? selectedRate.product.productType.public.rateCode
: selectedRate.product.productType.member?.rateCode ?? ""
)
searchParams.set(
`room[${idx}].ratecode`,
- isUserLoggedIn && selectedRate.product.productType.member
- ? selectedRate.product.productType.member.rateCode
+ isMemberRate
+ ? // already checked in isMemberRate
+ selectedRate.product.productType.member!.rateCode
: selectedRate.product.productType.public.rateCode
)
searchParams.set(
@@ -202,7 +217,7 @@ export function createRatesStore({
}
},
},
- activeRoom: rateSummary.length,
+ activeRoom,
allRooms,
booking,
filterOptions,
diff --git a/types/components/hotelReservation/selectRate/flexibilityOption.ts b/types/components/hotelReservation/selectRate/flexibilityOption.ts
index c96a902cf..37d5c8baa 100644
--- a/types/components/hotelReservation/selectRate/flexibilityOption.ts
+++ b/types/components/hotelReservation/selectRate/flexibilityOption.ts
@@ -16,7 +16,6 @@ export type RoomPriceSchema = z.output
export type FlexibilityOptionProps = {
features: RoomConfiguration["features"]
isSelected: boolean
- isUserLoggedIn: boolean
paymentTerm: string
petRoomPackage: RoomPackage | undefined
priceInformation?: Array
@@ -27,7 +26,6 @@ export type FlexibilityOptionProps = {
}
export interface PriceListProps {
- isUserLoggedIn: boolean
publicPrice?: ProductPrice | Record
memberPrice?: ProductPrice | Record
petRoomPackage?: RoomPackage
diff --git a/types/contexts/room.ts b/types/contexts/room.ts
index 834287164..c68d79fd8 100644
--- a/types/contexts/room.ts
+++ b/types/contexts/room.ts
@@ -8,5 +8,6 @@ export interface RoomContextValue extends SelectedRoom {
selectRate: (rate: SelectedRate) => void
}
isActiveRoom: boolean
+ isMainRoom: boolean
roomNr: number
}