diff --git a/components/HotelReservation/SelectRate/RateSummary/index.tsx b/components/HotelReservation/SelectRate/RateSummary/index.tsx index 902f82b19..c4daf613b 100644 --- a/components/HotelReservation/SelectRate/RateSummary/index.tsx +++ b/components/HotelReservation/SelectRate/RateSummary/index.tsx @@ -27,16 +27,14 @@ export default function RateSummary({ const intl = useIntl() const [isVisible, setIsVisible] = useState(false) - const { rateSummary } = useRateSelectionStore() + const { getSelectedRateSummary } = useRateSelectionStore() useEffect(() => { const timer = setTimeout(() => setIsVisible(true), 0) return () => clearTimeout(timer) }, []) - const selectedRateSummary = rateSummary.filter( - (summary): summary is Rate => summary !== null - ) + const selectedRateSummary = getSelectedRateSummary() if (selectedRateSummary.length === 0) return null diff --git a/components/HotelReservation/SelectRate/Rooms/index.tsx b/components/HotelReservation/SelectRate/Rooms/index.tsx index 87dc6c08d..387541b98 100644 --- a/components/HotelReservation/SelectRate/Rooms/index.tsx +++ b/components/HotelReservation/SelectRate/Rooms/index.tsx @@ -193,7 +193,7 @@ export default function Rooms({ } useEffect(() => { - setTimeout(() => { + requestAnimationFrame(() => { const SCROLL_OFFSET = 100 const roomElements = document.querySelectorAll(`.${styles.roomContainer}`) const index = selectedRates.findIndex((rate) => rate === undefined) @@ -208,7 +208,7 @@ export default function Rooms({ behavior: "smooth", }) } - }, 0) + }) }, [selectedRates]) return ( diff --git a/stores/select-rate/rate-selection.ts b/stores/select-rate/rate-selection.ts index b58f2be7c..cd156a392 100644 --- a/stores/select-rate/rate-selection.ts +++ b/stores/select-rate/rate-selection.ts @@ -30,6 +30,7 @@ interface RateSelectionState { availablePackages, roomCategories, }: RateSummaryParams) => void + getSelectedRateSummary: () => Rate[] } export const useRateSelectionStore = create((set, get) => ({ @@ -64,4 +65,8 @@ export const useRateSelectionStore = create((set, get) => ({ set({ rateSummary: summaries }) }, + getSelectedRateSummary: () => { + const { rateSummary } = get() + return rateSummary.filter((summary): summary is Rate => summary !== null) + }, })) diff --git a/types/components/hotelReservation/selectRate/roomFilter.ts b/types/components/hotelReservation/selectRate/roomFilter.ts index 981ea0784..c6698df9b 100644 --- a/types/components/hotelReservation/selectRate/roomFilter.ts +++ b/types/components/hotelReservation/selectRate/roomFilter.ts @@ -14,8 +14,8 @@ export interface DefaultFilterOptions { itemCode: string | undefined } -export interface FilterValues { - [key: string]: boolean | undefined +export type FilterValues = { + [K in RoomPackageCodeEnum]?: boolean } export interface RoomFilterProps { numberOfRooms: number