From 4627173d2b9e081a2491e78a60fa45ad6eadec9a Mon Sep 17 00:00:00 2001 From: scruffian Date: Thu, 4 May 2023 12:44:22 +0100 Subject: [PATCH] Add a new selector to check the status of all navigation menus --- .../navigation/edit/unsaved-inner-blocks.js | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/block-library/src/navigation/edit/unsaved-inner-blocks.js b/packages/block-library/src/navigation/edit/unsaved-inner-blocks.js index 5a49b37213113..dfd103571d954 100644 --- a/packages/block-library/src/navigation/edit/unsaved-inner-blocks.js +++ b/packages/block-library/src/navigation/edit/unsaved-inner-blocks.js @@ -10,7 +10,6 @@ import { useContext, useEffect, useRef, useMemo } from '@wordpress/element'; /** * Internal dependencies */ -import useNavigationMenu from '../use-navigation-menu'; import { areBlocksDirty } from './are-blocks-dirty'; const EMPTY_OBJECT = {}; @@ -85,23 +84,30 @@ export default function UnsavedInnerBlocks( { } ); - const { isSaving } = useSelect( + const { isSaving, hasResolvedAllNavigationMenus } = useSelect( ( select ) => { if ( isDisabled ) { return EMPTY_OBJECT; } - const { isSavingEntityRecord } = select( coreStore ); + const { hasFinishedResolution, isSavingEntityRecord } = + select( coreStore ); return { isSaving: isSavingEntityRecord( 'postType', 'wp_navigation' ), + hasResolvedAllNavigationMenus: hasFinishedResolution( + 'getEntityRecords', + [ + 'postType', + 'wp_navigation', + { per_page: -1, status: [ 'publish', 'draft' ] }, + ] + ), }; }, [ isDisabled ] ); - const { hasResolvedNavigationMenus } = useNavigationMenu(); - // Automatically save the uncontrolled blocks. useEffect( () => { // The block will be disabled when used in a BlockPreview. @@ -119,7 +125,7 @@ export default function UnsavedInnerBlocks( { if ( isDisabled || isSaving || - ! hasResolvedNavigationMenus || + ! hasResolvedAllNavigationMenus || ! hasSelection || ! innerBlocksAreDirty ) { @@ -132,7 +138,7 @@ export default function UnsavedInnerBlocks( { createNavigationMenu, isDisabled, isSaving, - hasResolvedNavigationMenus, + hasResolvedAllNavigationMenus, innerBlocksAreDirty, hasSelection, ] );