Skip to content
This repository was archived by the owner on Sep 9, 2024. It is now read-only.

Commit c1ccc15

Browse files
authored
fix: properly detect changes (#947)
1 parent 55022af commit c1ccc15

File tree

1 file changed

+8
-21
lines changed

1 file changed

+8
-21
lines changed

packages/core/src/reducers/entryDraft.ts

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -161,20 +161,13 @@ function entryDraftReducer(
161161
}
162162

163163
case DRAFT_UPDATE: {
164-
let newState = { ...state };
165-
if (!newState.entry) {
164+
if (!state.entry) {
166165
return state;
167166
}
168167

169168
const { data } = action.payload;
170169

171-
newState = {
172-
...newState,
173-
entry: {
174-
...newState.entry,
175-
data,
176-
},
177-
};
170+
const newState = set(state, 'entry.data', data);
178171

179172
let hasChanged =
180173
!isEqual(newState.entry?.meta, newState.original?.meta) ||
@@ -194,8 +187,7 @@ function entryDraftReducer(
194187
}
195188

196189
case DRAFT_CHANGE_FIELD: {
197-
let newState = { ...state };
198-
if (!newState.entry) {
190+
if (!state.entry) {
199191
return state;
200192
}
201193

@@ -204,26 +196,21 @@ function entryDraftReducer(
204196
? ['meta']
205197
: (i18n && getDataPath(i18n.currentLocale, i18n.defaultLocale)) || ['data'];
206198

207-
const newEntry = cloneDeep(newState.entry);
208-
209-
newState = {
210-
...newState,
211-
entry: set(newEntry, `${dataPath.join('.')}.${path}`, value),
212-
};
199+
let newState = set(state, `entry.${dataPath.join('.')}.${path}`, value);
213200

214201
if (i18n) {
215202
newState = duplicateI18nFields(newState, field, i18n.locales, i18n.defaultLocale, path);
216203
}
217204

218205
let hasChanged =
219-
!isEqual(newEntry?.meta, newState.original?.meta) ||
220-
!isEqual(newEntry?.data, newState.original?.data);
206+
!isEqual(newState.entry?.meta, newState.original?.meta) ||
207+
!isEqual(newState.entry?.data, newState.original?.data);
221208

222-
const i18nData = newEntry?.i18n ?? {};
209+
const i18nData = newState.entry?.i18n ?? {};
223210
for (const locale in i18nData) {
224211
hasChanged =
225212
hasChanged ||
226-
!isEqual(newEntry?.i18n?.[locale]?.data, newState.original?.i18n?.[locale]?.data);
213+
!isEqual(newState.entry?.i18n?.[locale]?.data, newState.original?.i18n?.[locale]?.data);
227214
}
228215

229216
return {

0 commit comments

Comments
 (0)