From b83ac54492803785610a7f6b51802cdd3cddd7ac Mon Sep 17 00:00:00 2001 From: Gustavo Bicalho Date: Mon, 14 Oct 2024 11:13:32 +0100 Subject: [PATCH] use setWith with appropriate customizer to always create nested objects instead of arrays --- packages/core/src/reducers/core.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/reducers/core.ts b/packages/core/src/reducers/core.ts index aaffcf7da3..673f38a620 100644 --- a/packages/core/src/reducers/core.ts +++ b/packages/core/src/reducers/core.ts @@ -24,12 +24,13 @@ */ import cloneDeep from 'lodash/cloneDeep'; -import setFp from 'lodash/fp/set'; +import setWithFp from 'lodash/fp/setWith'; import unsetFp from 'lodash/fp/unset'; import get from 'lodash/get'; import filter from 'lodash/filter'; import isEqual from 'lodash/isEqual'; import isFunction from 'lodash/isFunction'; +import isObject from 'lodash/isObject'; import type Ajv from 'ajv'; import type { ErrorObject, ValidateFunction } from 'ajv'; import { @@ -273,7 +274,8 @@ export const coreReducer: Reducer = ( const newData = action.updater(cloneDeep(oldData)); let newState: any; if (newData !== undefined) { - newState = setFp( + newState = setWithFp( + (v: any) => (isObject(v) ? v : {}), action.path, newData, state.data === undefined ? {} : state.data