Merged in feature/SW-3516-pass-eurobonus-number-on-booking (pull request #2902)
* feat(SW-3516): Include partnerLoyaltyNumber on bookings - Added user context to BookingFlowProviders for user state management. - Updated booking input and output schemas to accommodate new user data. - Refactored booking mutation logic to include user-related information. - Improved type definitions for better TypeScript support across booking components. Approved-by: Anton Gunnarsson
This commit is contained in:
@@ -1,23 +1,35 @@
|
||||
"use client"
|
||||
|
||||
import { createContext, useContext } from "react"
|
||||
import { createContext } from "react"
|
||||
|
||||
type BaseUser = {
|
||||
firstName: string | null
|
||||
lastName: string | null
|
||||
email: string
|
||||
}
|
||||
|
||||
export type BookingFlowUser =
|
||||
| (BaseUser & {
|
||||
type: "partner-sas"
|
||||
partnerLoyaltyNumber: `EB${string}`
|
||||
})
|
||||
| (BaseUser & {
|
||||
type: "scandic"
|
||||
/**
|
||||
* This will always be null for Scandic Friends members
|
||||
*/
|
||||
partnerLoyaltyNumber: null
|
||||
membershipNumber: string
|
||||
})
|
||||
|
||||
export type BookingFlowContextData = {
|
||||
isLoggedIn: boolean
|
||||
user:
|
||||
| { state: "loading"; data: undefined }
|
||||
| { state: "error"; data: undefined }
|
||||
| { state: "loaded"; data: BookingFlowUser | undefined }
|
||||
}
|
||||
|
||||
export const BookingFlowContext = createContext<
|
||||
BookingFlowContextData | undefined
|
||||
>(undefined)
|
||||
|
||||
export const useBookingFlowContext = (): BookingFlowContextData => {
|
||||
const context = useContext(BookingFlowContext)
|
||||
|
||||
if (!context) {
|
||||
throw new Error(
|
||||
"useBookingFlowContext must be used within a BookingFlowContextProvider. Did you forget to use the provider in the consuming app?"
|
||||
)
|
||||
}
|
||||
|
||||
return context
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user