feat(SW-3526): Show EB points rate and label in booking flow * feat(SW-3526): Show EB points rate and label in booking flow * feat(SW-3526) Optimized points currency code * feat(SW-3526) Removed extra multiplication for token expiry after rebase * feat(SW-3526): Updated to exhaustive check and thow if type error Approved-by: Anton Gunnarsson
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
"use client"
|
|
|
|
import { createContext, useContext } from "react"
|
|
|
|
import { CurrencyEnum } from "@scandic-hotels/common/constants/currency"
|
|
|
|
import type { BookingFlowConfig } from "./bookingFlowConfig"
|
|
|
|
type BookingFlowConfigContextData = BookingFlowConfig
|
|
|
|
const BookingFlowConfigContext = createContext<
|
|
BookingFlowConfigContextData | undefined
|
|
>(undefined)
|
|
|
|
export const useBookingFlowConfig = (): BookingFlowConfigContextData => {
|
|
const context = useContext(BookingFlowConfigContext)
|
|
|
|
if (!context) {
|
|
throw new Error(
|
|
"useBookingFlowConfig must be used within a BookingFlowConfigContextProvider. Did you forget to use BookingFlowConfig in the consuming app?"
|
|
)
|
|
}
|
|
|
|
return context
|
|
}
|
|
|
|
export const useGetPointsCurrency = () => {
|
|
const config = useBookingFlowConfig()
|
|
|
|
switch (config.variant) {
|
|
case "scandic":
|
|
return CurrencyEnum.POINTS
|
|
case "partner-sas":
|
|
return CurrencyEnum.EUROBONUS
|
|
default:
|
|
throw new Error(`Unknown variant: ${config.variant}`)
|
|
}
|
|
}
|
|
|
|
export function BookingFlowConfigContextProvider({
|
|
children,
|
|
config,
|
|
}: {
|
|
children: React.ReactNode
|
|
config: BookingFlowConfig
|
|
}) {
|
|
return (
|
|
<BookingFlowConfigContext.Provider value={config}>
|
|
{children}
|
|
</BookingFlowConfigContext.Provider>
|
|
)
|
|
}
|