From 3ec34be1abf93b702e53ffd18fb16f728c7d9768 Mon Sep 17 00:00:00 2001 From: Fernando Chavez Date: Wed, 30 Aug 2023 13:25:57 +0200 Subject: [PATCH] don't clean creator fields because they are not sended to backend --- .../EditViewDataManagerProvider/reducer.js | 15 ++++++--------- .../utils/cleanData.js | 5 +++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js index 342d2f352e..49b078ac3f 100644 --- a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +++ b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js @@ -236,17 +236,14 @@ const reducer = (state, action) => const findAllRelationsAndReplaceWithEmptyArray = findAllAndReplace( components, - (value) => { - return value.type === 'relation'; - }, (value, { path }) => { - const relationFieldName = path[path.length - 1]; - - // When editing, we don't want to fetch the relations with creator fields because we already have it - if (value && (relationFieldName === 'createdBy' || relationFieldName === 'updatedBy')) { - return value; - } + // We don't replace creator fields because we already return them without need to populate them separately + const isCreatorField = + path[path.length - 1] === 'createdBy' || path[path.length - 1] === 'updatedBy'; + return value.type === 'relation' && !isCreatorField; + }, + (_, { path }) => { if (state.modifiedData?.id === data.id && get(state.modifiedData, path)) { return get(state.modifiedData, path); } diff --git a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js index 4ff388607c..fbf19a709e 100644 --- a/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +++ b/packages/core/admin/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js @@ -29,6 +29,11 @@ const cleanData = ({ browserState, serverState }, currentSchema, componentsSchem */ const recursiveCleanData = (browserState, serverState, schema, pathToParent) => { return Object.keys(browserState).reduce((acc, current) => { + // Creator attributes can be safely ignored because they are handle on the backend + if (current === 'createdBy' || current === 'updatedBy') { + return acc; + } + const path = pathToParent ? `${pathToParent}.${current}` : current; const attrType = getType(schema, current);