fix: hydrate store with updated values

This commit is contained in:
Christel Westerberg
2024-11-21 11:14:28 +01:00
parent 3a6cfcfe5c
commit 92b0ec9c84

View File

@@ -144,34 +144,33 @@ export function createDetailsStore(
}), }),
{ {
name: detailsStorageName, name: detailsStorageName,
onRehydrateStorage() { onRehydrateStorage(prevState) {
return function (state) { return function (state) {
if (state) { if (state) {
const validatedBedType = bedTypeSchema.safeParse(state.data) const validatedBedType = bedTypeSchema.safeParse(state.data)
if (validatedBedType.success) { if (validatedBedType.success !== state.isValid["select-bed"]) {
state.actions.updateValidity(StepEnum.selectBed, true) state.isValid["select-bed"] = validatedBedType.success
} else {
state.actions.updateValidity(StepEnum.selectBed, false)
} }
const validatedBreakfast = breakfastStoreSchema.safeParse( const validatedBreakfast = breakfastStoreSchema.safeParse(
state.data state.data
) )
if (validatedBreakfast.success) { if (validatedBreakfast.success !== state.isValid.breakfast) {
state.actions.updateValidity(StepEnum.breakfast, true) state.isValid.breakfast = validatedBreakfast.success
} else {
state.actions.updateValidity(StepEnum.breakfast, false)
} }
const detailsSchema = isMember const detailsSchema = isMember
? signedInDetailsSchema ? signedInDetailsSchema
: guestDetailsSchema : guestDetailsSchema
const validatedDetails = detailsSchema.safeParse(state.data) const validatedDetails = detailsSchema.safeParse(state.data)
if (validatedDetails.success) { if (validatedDetails.success !== state.isValid.details) {
state.actions.updateValidity(StepEnum.details, true) state.isValid.details = validatedDetails.success
} else {
state.actions.updateValidity(StepEnum.details, false)
} }
const mergedState = merge(state.data, prevState.data, {
arrayMerge,
})
state.data = mergedState
} }
} }
}, },