diff --git a/packages/core-data/src/actions.js b/packages/core-data/src/actions.js index 31067b954cfbbe..5ca26bc6bb24e6 100644 --- a/packages/core-data/src/actions.js +++ b/packages/core-data/src/actions.js @@ -700,14 +700,29 @@ export const __experimentalSaveSpecifiedEntityEdits = ( * @param {string} name Name of the entity. * @param {Object} recordId ID of the record. */ -export function __experimentalResetEditedEntityRecord( kind, name, recordId ) { - return { - type: 'RESET_ENTITY_RECORD_EDITS', +export const __experimentalResetEditedEntityRecord = ( + kind, + name, + recordId +) => async ( { select, dispatch } ) => { + if ( ! select.hasEditsForEntityRecord( kind, name, recordId ) ) { + return; + } + const edits = select.getEntityRecordEdits( kind, name, recordId ); + const editsToDiscard = {}; + for ( const edit in edits ) { + editsToDiscard[ edit ] = undefined; + } + return await dispatch( { + type: 'EDIT_ENTITY_RECORD', kind, name, recordId, - }; -} + edits: editsToDiscard, + transientEdits: {}, + meta: { undo: undefined }, + } ); +}; /** * Action triggered to reset only specified properties for the entity. diff --git a/packages/core-data/src/reducer.js b/packages/core-data/src/reducer.js index ba64c9680c4207..130407e6f277af 100644 --- a/packages/core-data/src/reducer.js +++ b/packages/core-data/src/reducer.js @@ -263,15 +263,6 @@ function entity( entityConfig ) { ...state, [ action.recordId ]: nextEdits, }; - - case 'RESET_ENTITY_RECORD_EDITS': - const { - // eslint-disable-next-line no-unused-vars - [ action.recordId ]: recordEdits, - ...otherEdits - } = state; - - return otherEdits; } return state;