import "server-only" import { cache } from "react" import { BookingFlowConfigContextProvider } from "./bookingFlowConfigContext" import type { LangRoute } from "@scandic-hotels/common/constants/routes/langRoute" import type { BookingFlowVariant } from "./bookingFlowVariants" export type BookingFlowConfig = { bookingCodeEnabled: boolean enterDetailsMembershipIdInputLocation: "form" | "join-card" variant: BookingFlowVariant routes: { myStay: LangRoute bookingTermsAndConditions: LangRoute membershipTermsAndConditions: LangRoute customerService: LangRoute privacyPolicy: LangRoute } } const getRef = cache(() => ({ current: undefined as BookingFlowConfig | undefined, })) function setBookingFlowConfig(newConfig: BookingFlowConfig) { getRef().current = newConfig } export function getBookingFlowConfig(): BookingFlowConfig { const contextConfig = getRef().current if (!contextConfig) { throw new Error("BookingFlowConfig not set") } return contextConfig } /* * Sets up both a server side context and a client side context * for the booking flow config. */ export async function BookingFlowConfig({ children, config, }: { children: React.ReactNode config: BookingFlowConfig }) { setBookingFlowConfig(config) return ( {children} ) }