From 0147d37fb8dd8cb55167a33b7f88da8edcdfe978 Mon Sep 17 00:00:00 2001 From: Kai Hao Date: Fri, 10 May 2024 10:03:35 +0900 Subject: [PATCH] Change to modify --- .../block-editor/src/hooks/content-lock-ui.js | 49 ++++++------------- .../block-editor/src/store/private-actions.js | 19 +++++++ .../content-only-settings-menu.js | 13 +++-- 3 files changed, 43 insertions(+), 38 deletions(-) diff --git a/packages/block-editor/src/hooks/content-lock-ui.js b/packages/block-editor/src/hooks/content-lock-ui.js index eff6cc9a2d8af3..7cca4b325b09d7 100644 --- a/packages/block-editor/src/hooks/content-lock-ui.js +++ b/packages/block-editor/src/hooks/content-lock-ui.js @@ -20,7 +20,6 @@ import { unlock } from '../lock-unlock'; // also includes artifacts on the store (actions, reducers, and selector). function ContentLockControlsPure( { clientId, isSelected } ) { - const { getBlockListSettings, getSettings } = useSelect( blockEditorStore ); const { templateLock, isLockedByParent, isEditingAsBlocks } = useSelect( ( select ) => { const { @@ -37,16 +36,11 @@ function ContentLockControlsPure( { clientId, isSelected } ) { [ clientId ] ); - const { - updateSettings, - updateBlockListSettings, - __unstableSetTemporarilyEditingAsBlocks, - } = useDispatch( blockEditorStore ); - const { stopEditingAsBlocks } = unlock( useDispatch( blockEditorStore ) ); + const { stopEditingAsBlocks, modifyContentLockBlock } = unlock( + useDispatch( blockEditorStore ) + ); const isContentLocked = ! isLockedByParent && templateLock === 'contentOnly'; - const { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } = - useDispatch( blockEditorStore ); const stopEditingAsBlockCallback = useCallback( () => { stopEditingAsBlocks( clientId ); @@ -73,30 +67,19 @@ function ContentLockControlsPure( { clientId, isSelected } ) { ) } { showStartEditingAsBlocks && ( - { ( { onClose } ) => ( - { - __unstableMarkNextChangeAsNotPersistent(); - updateBlockAttributes( clientId, { - templateLock: undefined, - } ); - updateBlockListSettings( clientId, { - ...getBlockListSettings( clientId ), - templateLock: false, - } ); - const focusModeToRevert = - getSettings().focusMode; - updateSettings( { focusMode: true } ); - __unstableSetTemporarilyEditingAsBlocks( - clientId, - focusModeToRevert - ); - onClose(); - } } - > - { __( 'Modify' ) } - - ) } + { ( { selectedClientIds, onClose } ) => + selectedClientIds.length === 1 && + selectedClientIds[ 0 ] === clientId && ( + { + modifyContentLockBlock( clientId ); + onClose(); + } } + > + { __( 'Modify' ) } + + ) + } ) } diff --git a/packages/block-editor/src/store/private-actions.js b/packages/block-editor/src/store/private-actions.js index 6cfccb17287ff9..fea2dd7306adc9 100644 --- a/packages/block-editor/src/store/private-actions.js +++ b/packages/block-editor/src/store/private-actions.js @@ -391,3 +391,22 @@ export function expandBlock( clientId ) { clientId, }; } + +export const modifyContentLockBlock = + ( clientId ) => + ( { select, dispatch } ) => { + dispatch.__unstableMarkNextChangeAsNotPersistent(); + dispatch.updateBlockAttributes( clientId, { + templateLock: undefined, + } ); + dispatch.updateBlockListSettings( clientId, { + ...select.getBlockListSettings( clientId ), + templateLock: false, + } ); + const focusModeToRevert = select.getSettings().focusMode; + dispatch.updateSettings( { focusMode: true } ); + dispatch.__unstableSetTemporarilyEditingAsBlocks( + clientId, + focusModeToRevert + ); + }; diff --git a/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js b/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js index 43f73867611b05..833f1601aeef76 100644 --- a/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js +++ b/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js @@ -131,7 +131,11 @@ function TemplateLockContentOnlyMenuItems( { clientId, onClose } ) { ); const blockDisplayInformation = useBlockDisplayInformation( contentLockingParent ); - const { updateBlockAttributes } = useDispatch( blockEditorStore ); + // Disable reason: We're using a hook here so it has to be on top-level. + // eslint-disable-next-line @wordpress/no-unused-vars-before-return + const { modifyContentLockBlock, selectBlock } = unlock( + useDispatch( blockEditorStore ) + ); if ( ! blockDisplayInformation?.title ) { return null; @@ -156,15 +160,14 @@ function TemplateLockContentOnlyMenuItems( { clientId, onClose } ) { { - updateBlockAttributes( contentLockingParent, { - templateLock: undefined, - } ); + selectBlock( contentLockingParent ); + modifyContentLockBlock( contentLockingParent ); onClose(); } } > { sprintf( // translators: %s: block's title. - __( 'Unlock "%s"' ), + __( 'Modify "%s"' ), blockDisplayInformation.title ) }