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