Feat(SW-1274) modify date my stay * feat(SW-1676): Modify guest details step 1 * feat(SW-1676) Integration to api to update guest details * feat(SW-1676) Reuse of old modal * feat(SW-1676) updated modify guest * feat(SW-1676) cleanup * feat(SW-1274) modify stay modal and datepicker * feat(SW-1274) DatePicker from modify dates * feat(SW-1274) Modify dates fixes and merge conflicts * feat(SW-1274) handle modify for multiroom * feat(SW-1274) update manage stay * feat(SW-1274) fixed some comments * feat(SW-1274) use Modal instead * feat(SW-1274) fixed formatChildBedPreferences * feat(SW-1274) removed any as prop * feat(SW-1274) fix rebase conflicts * feat(SW-1274) fix flicker on modify modal * feat(SW-1274) CalendarButton * feat(SW-1274) fixed gap variable * feat(SW-1274) simplified code * feat(SW-1274) Split up DatePicker on mode * feat(SW-1274) Updated file structure for datepicker Approved-by: Arvid Norlin
64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
import { create } from "zustand"
|
|
|
|
export interface RoomDetails {
|
|
id: string
|
|
hotelId: string
|
|
checkInDate: Date
|
|
checkOutDate: Date
|
|
adults: number
|
|
children: string
|
|
roomName: string
|
|
roomTypeCode: string
|
|
rateCode: string
|
|
bookingCode: string
|
|
isCancelable: boolean
|
|
mainRoom: boolean
|
|
}
|
|
|
|
interface MyStayRoomDetailsState {
|
|
rooms: RoomDetails[]
|
|
actions: {
|
|
setRoomDetails: (room: RoomDetails) => void
|
|
updateRoomDetails: (room: RoomDetails) => void
|
|
}
|
|
}
|
|
|
|
export const useMyStayRoomDetailsStore = create<MyStayRoomDetailsState>(
|
|
(set) => ({
|
|
rooms: [],
|
|
actions: {
|
|
setRoomDetails: (room) => {
|
|
set((state) => {
|
|
// Check if room with this ID already exists
|
|
const existingIndex = state.rooms.findIndex((r) => r.id === room.id)
|
|
let newRooms = [...state.rooms]
|
|
|
|
if (existingIndex >= 0) {
|
|
// Update existing room
|
|
newRooms[existingIndex] = room
|
|
} else {
|
|
// Add new room
|
|
newRooms.push(room)
|
|
}
|
|
|
|
return {
|
|
rooms: newRooms,
|
|
}
|
|
})
|
|
},
|
|
updateRoomDetails: (room) => {
|
|
set((state) => {
|
|
const existingIndex = state.rooms.findIndex((r) => r.id === room.id)
|
|
let newRooms = [...state.rooms]
|
|
if (existingIndex >= 0) {
|
|
newRooms[existingIndex] = room
|
|
}
|
|
return {
|
|
rooms: newRooms,
|
|
}
|
|
})
|
|
},
|
|
},
|
|
})
|
|
)
|