Skip to content

Commit

Permalink
Editor: Fix the 'useSelect' warning in the 'useIsDirty' hook (#53759)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mamaduka authored Aug 18, 2023
1 parent 3f2ef2b commit c320a3b
Showing 1 changed file with 16 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/
import { useSelect } from '@wordpress/data';
import { store as coreStore } from '@wordpress/core-data';
import { useState } from '@wordpress/element';
import { useMemo, useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';

const TRANSLATED_SITE_PROPERTIES = {
Expand All @@ -18,38 +18,34 @@ const TRANSLATED_SITE_PROPERTIES = {
};

export const useIsDirty = () => {
const { dirtyEntityRecords } = useSelect( ( select ) => {
const dirtyRecords =
select( coreStore ).__experimentalGetDirtyEntityRecords();
const { editedEntities, siteEdits } = useSelect( ( select ) => {
const { __experimentalGetDirtyEntityRecords, getEntityRecordEdits } =
select( coreStore );

return {
editedEntities: __experimentalGetDirtyEntityRecords(),
siteEdits: getEntityRecordEdits( 'root', 'site' ),
};
}, [] );

const dirtyEntityRecords = useMemo( () => {
// Remove site object and decouple into its edited pieces.
const dirtyRecordsWithoutSite = dirtyRecords.filter(
const editedEntitiesWithoutSite = editedEntities.filter(
( record ) => ! ( record.kind === 'root' && record.name === 'site' )
);

const siteEdits = select( coreStore ).getEntityRecordEdits(
'root',
'site'
);

const siteEditsAsEntities = [];
const editedSiteEntities = [];
for ( const property in siteEdits ) {
siteEditsAsEntities.push( {
editedSiteEntities.push( {
kind: 'root',
name: 'site',
title: TRANSLATED_SITE_PROPERTIES[ property ] || property,
property,
} );
}
const dirtyRecordsWithSiteItems = [
...dirtyRecordsWithoutSite,
...siteEditsAsEntities,
];

return {
dirtyEntityRecords: dirtyRecordsWithSiteItems,
};
}, [] );
return [ ...editedEntitiesWithoutSite, ...editedSiteEntities ];
}, [ editedEntities, siteEdits ] );

// Unchecked entities to be ignored by save function.
const [ unselectedEntities, _setUnselectedEntities ] = useState( [] );
Expand Down

0 comments on commit c320a3b

Please sign in to comment.