chore: cleaning up select-rate

This commit is contained in:
Simon Emanuelsson
2025-02-05 20:18:03 +01:00
parent 3044bc87d1
commit 051bc54e6c
95 changed files with 3269 additions and 3527 deletions

76
types/stores/rates.ts Normal file
View File

@@ -0,0 +1,76 @@
import type { ReadonlyURLSearchParams } from "next/navigation"
import type {
DefaultFilterOptions,
RoomPackageCodeEnum,
} from "@/types/components/hotelReservation/selectRate/roomFilter"
import type {
Rate,
Room as RoomBooking,
SelectRateSearchParams,
} from "@/types/components/hotelReservation/selectRate/selectRate"
import type { Room } from "@/types/hotel"
import type { Packages } from "@/types/requests/packages"
import type {
Product,
RoomConfiguration,
RoomsAvailability,
} from "@/types/trpc/routers/hotel/roomAvailability"
interface Actions {
modifyRate: (idx: number) => () => void
selectFilter: (idx: number) => (code: RoomPackageCodeEnum | undefined) => void
selectRate: (idx: number) => (rate: SelectedRate) => void
}
export interface SelectedRate {
features: RoomConfiguration["features"]
product: Product
roomType: RoomConfiguration["roomType"]
roomTypeCode: RoomConfiguration["roomTypeCode"]
}
export interface SelectedRoom {
bookingRoom: RoomBooking
rooms: RoomConfiguration[]
selectedPackage: RoomPackageCodeEnum | undefined
selectedRate: SelectedRate | null
}
export interface RatesState {
actions: Actions
activeRoom: number
allRooms: RoomConfiguration[]
booking: SelectRateSearchParams
filterOptions: DefaultFilterOptions[]
hotelType: string | undefined
packages: NonNullable<Packages>
pathname: string
petRoomPackage: NonNullable<Packages>[number] | undefined
rateSummary: Rate[]
rooms: SelectedRoom[]
roomCategories: Room[]
roomsAvailability: RoomsAvailability | null
searchParams: ReadonlyURLSearchParams
vat: number
}
export interface InitialState
extends Pick<
RatesState,
| "booking"
| "hotelType"
| "packages"
| "pathname"
| "roomCategories"
| "roomsAvailability"
| "searchParams"
| "vat"
> {
isUserLoggedIn: boolean
labels: {
accessibilityRoom: string
allergyRoom: string
petRoom: string
}
}