Files
web/packages/booking-flow/lib/contexts/EnterDetails/RoomContext.tsx
Anton Gunnarsson b0f3e4afbd Merged in chore/cleanup-booking-flow (pull request #2824)
chore: Cleanup booking-flow after migration

* Remove unused types

* Clean up exports, types, unused files etc in booking-flow


Approved-by: Joakim Jäderberg
2025-09-18 07:28:05 +00:00

60 lines
1.3 KiB
TypeScript

"use client"
import { createContext, useContext } from "react"
import { useEnterDetailsStore } from "../../stores/enter-details"
import type { Room } from "@scandic-hotels/trpc/types/room"
import type { RoomState } from "../../stores/enter-details/types"
interface RoomContextValue {
actions: RoomState["actions"]
isComplete: RoomState["isComplete"]
idx: number
room: RoomState["room"]
roomNr: number
steps: RoomState["steps"]
}
const RoomContext = createContext<RoomContextValue | null>(null)
export function useRoomContext() {
const ctx = useContext(RoomContext)
if (!ctx) {
throw new Error("Missing context value [RoomContext]")
}
return ctx
}
type RoomProviderProps = {
idx: number
room: Room
children: React.ReactNode
}
export function RoomProvider({ children, idx }: RoomProviderProps) {
const { actions, isComplete, room, steps } = useEnterDetailsStore(
(state) => ({
actions: state.rooms[idx].actions,
isComplete: state.rooms[idx].isComplete,
room: state.rooms[idx].room,
steps: state.rooms[idx].steps,
})
)
return (
<RoomContext.Provider
value={{
actions,
idx,
isComplete,
room,
roomNr: idx + 1,
steps,
}}
>
{children}
</RoomContext.Provider>
)
}