feat(SW-3611): Add config flag for saved credit cards * Add config flag for saved credit cards Approved-by: Linus Flood
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
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
|
|
redemptionEnabled: boolean
|
|
savedCreditCardsEnabled: 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 (
|
|
<BookingFlowConfigContextProvider config={config}>
|
|
{children}
|
|
</BookingFlowConfigContextProvider>
|
|
)
|
|
}
|