From 8d1a6374908ed06d4e06db2572a4155659b1c7a4 Mon Sep 17 00:00:00 2001 From: Glen Davies Date: Tue, 18 Jul 2023 16:35:04 +1200 Subject: [PATCH 1/2] Don't override the rootClientID in case used elsewhere --- .../reusable-blocks-menu-items/index.js | 21 ++++++------------- .../reusable-block-convert-button.js | 14 ++++++++++--- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js index d7823483f5e09e..c46a0a77f01223 100644 --- a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js +++ b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js @@ -1,7 +1,7 @@ /** * WordPress dependencies */ -import { withSelect } from '@wordpress/data'; +import { useSelect } from '@wordpress/data'; import { store as blockEditorStore } from '@wordpress/block-editor'; /** @@ -10,7 +10,11 @@ import { store as blockEditorStore } from '@wordpress/block-editor'; import ReusableBlockConvertButton from './reusable-block-convert-button'; import ReusableBlocksManageButton from './reusable-blocks-manage-button'; -function ReusableBlocksMenuItems( { clientIds, rootClientId } ) { +export default function ReusableBlocksMenuItems( { rootClientId } ) { + const clientIds = useSelect( ( select ) => + select( blockEditorStore ).getSelectedBlockClientIds() + ); + return ( <> ); } - -export default withSelect( ( select ) => { - const { getSelectedBlockClientIds, getBlockRootClientId } = - select( blockEditorStore ); - const clientIds = getSelectedBlockClientIds(); - return { - clientIds, - rootClientId: - clientIds?.length > 0 - ? getBlockRootClientId( clientIds[ 0 ] ) - : undefined, - }; -} )( ReusableBlocksMenuItems ); diff --git a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js index 2dfd635e2963a3..7f5c242aee59dd 100644 --- a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js +++ b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js @@ -51,8 +51,16 @@ export default function ReusableBlockConvertButton( { const canConvert = useSelect( ( select ) => { const { canUser } = select( coreStore ); - const { getBlocksByClientId, canInsertBlockType } = - select( blockEditorStore ); + const { + getBlocksByClientId, + canInsertBlockType, + getBlockRootClientId, + } = select( blockEditorStore ); + + const rootId = + rootClientId || clientIds.length > 0 + ? getBlockRootClientId( clientIds[ 0 ] ) + : undefined; const blocks = getBlocksByClientId( clientIds ) ?? []; @@ -70,7 +78,7 @@ export default function ReusableBlockConvertButton( { // Hide when this is already a reusable block. ! isReusable && // Hide when reusable blocks are disabled. - canInsertBlockType( 'core/block', rootClientId ) && + canInsertBlockType( 'core/block', rootId ) && blocks.every( ( block ) => // Guard against the case where a regular block has *just* been converted. From bbbf34187bb7829cf14999ca3e2bf1712c493efc Mon Sep 17 00:00:00 2001 From: Glen Davies Date: Wed, 19 Jul 2023 13:41:13 +1200 Subject: [PATCH 2/2] Fix issue with missing dependency array and ternary --- .../src/components/reusable-blocks-menu-items/index.js | 5 +++-- .../reusable-block-convert-button.js | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js index c46a0a77f01223..6affb00479b308 100644 --- a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js +++ b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js @@ -11,8 +11,9 @@ import ReusableBlockConvertButton from './reusable-block-convert-button'; import ReusableBlocksManageButton from './reusable-blocks-manage-button'; export default function ReusableBlocksMenuItems( { rootClientId } ) { - const clientIds = useSelect( ( select ) => - select( blockEditorStore ).getSelectedBlockClientIds() + const clientIds = useSelect( + ( select ) => select( blockEditorStore ).getSelectedBlockClientIds(), + [] ); return ( diff --git a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js index 7f5c242aee59dd..7f7ab7e50e66eb 100644 --- a/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js +++ b/packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js @@ -58,9 +58,10 @@ export default function ReusableBlockConvertButton( { } = select( blockEditorStore ); const rootId = - rootClientId || clientIds.length > 0 + rootClientId || + ( clientIds.length > 0 ? getBlockRootClientId( clientIds[ 0 ] ) - : undefined; + : undefined ); const blocks = getBlocksByClientId( clientIds ) ?? [];