Files
web/providers/StepsProvider.tsx

54 lines
1.2 KiB
TypeScript

"use client"
import { useRef } from "react"
import { useDetailsStore } from "@/stores/details"
import { createStepsStore } from "@/stores/steps"
import { StepsContext } from "@/contexts/Steps"
import type { StepsStore } from "@/types/contexts/steps"
import type { StepsProviderProps } from "@/types/providers/steps"
export default function StepsProvider({
bedTypes,
breakfastPackages,
children,
isMember,
step,
}: StepsProviderProps) {
const storeRef = useRef<StepsStore>()
const updateBedType = useDetailsStore((state) => state.actions.updateBedType)
const updateBreakfast = useDetailsStore(
(state) => state.actions.updateBreakfast
)
if (!storeRef.current) {
const noBedChoices = bedTypes.length === 1
const noBreakfast = !breakfastPackages?.length
if (noBedChoices) {
updateBedType({
description: bedTypes[0].description,
roomTypeCode: bedTypes[0].value,
})
}
if (noBreakfast) {
updateBreakfast(false)
}
storeRef.current = createStepsStore(
step,
isMember,
noBedChoices,
noBreakfast
)
}
return (
<StepsContext.Provider value={storeRef.current}>
{children}
</StepsContext.Provider>
)
}