feat: keep inventory of bedselections

This commit is contained in:
Simon Emanuelsson
2025-05-16 16:58:53 +02:00
committed by Michael Zetterberg
parent 39b89c5d51
commit 5ca30d02a0
12 changed files with 153 additions and 47 deletions

View File

@@ -39,7 +39,7 @@ export default function EnterDetailsProvider({
.filter((r) => r.bedTypes?.length) // TODO: how to handle room without bedtypes?
.map((room) => ({
isAvailable: room.isAvailable,
breakfastIncluded: !!room.breakfastIncluded,
breakfastIncluded: room.breakfastIncluded,
cancellationText: room.cancellationText,
rateDetails: room.rateDetails,
memberRateDetails: room.memberRateDetails,
@@ -48,7 +48,7 @@ export default function EnterDetailsProvider({
roomRate: room.roomRate,
roomType: room.roomType,
roomTypeCode: room.roomTypeCode,
bedTypes: room.bedTypes!,
bedTypes: room.bedTypes,
bedType:
room.bedTypes?.length === 1
? {
@@ -186,12 +186,25 @@ export default function EnterDetailsProvider({
nights
)
// Need to create a deep new copy since store is readonly
const availableBeds = deepmerge({}, store.availableBeds)
for (const filteredOutMissingRoom of filteredOutMissingRooms) {
if (filteredOutMissingRoom.room.bedType) {
const roomTypeCode = filteredOutMissingRoom.room.bedType.roomTypeCode
availableBeds[roomTypeCode] = Math.max(
availableBeds[roomTypeCode] - 1,
0
)
}
}
writeToSessionStorage({
booking,
rooms: filteredOutMissingRooms,
})
storeRef.current?.setState({
availableBeds,
canProceedToPayment,
rooms: filteredOutMissingRooms,
totalPrice,