Skip to content

Commit

Permalink
Perf: avoid fetching all reusable blocks on load (again)
Browse files Browse the repository at this point in the history
  • Loading branch information
ellatrix committed Oct 30, 2024
1 parent 3e2b03b commit 07145ed
Showing 1 changed file with 26 additions and 19 deletions.
45 changes: 26 additions & 19 deletions packages/editor/src/components/preferences-modal/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,40 @@ const {
} = unlock( preferencesPrivateApis );

export default function EditorPreferencesModal( { extraSections = {} } ) {
const isActive = useSelect( ( select ) => {
return select( interfaceStore ).isModalActive( 'editor/preferences' );
}, [] );
const { closeModal } = useDispatch( interfaceStore );

if ( ! isActive ) {
return null;
}

// Please wrap all contents inside PreferencesModalContents to prevent all
// hooks from executing when the modal is not open.
return (
<PreferencesModal closeModal={ closeModal }>
<PreferencesModalContents extraSections={ extraSections } />
</PreferencesModal>
);
}

function PreferencesModalContents( { extraSections = {} } ) {
const isLargeViewport = useViewportMatch( 'medium' );
const { isActive, showBlockBreadcrumbsOption } = useSelect(
const showBlockBreadcrumbsOption = useSelect(
( select ) => {
const { getEditorSettings } = select( editorStore );
const { get } = select( preferencesStore );
const { isModalActive } = select( interfaceStore );
const isRichEditingEnabled = getEditorSettings().richEditingEnabled;
const isDistractionFreeEnabled = get( 'core', 'distractionFree' );
return {
showBlockBreadcrumbsOption:
! isDistractionFreeEnabled &&
isLargeViewport &&
isRichEditingEnabled,
isActive: isModalActive( 'editor/preferences' ),
};
return (
! isDistractionFreeEnabled &&
isLargeViewport &&
isRichEditingEnabled
);
},
[ isLargeViewport ]
);
const { closeModal } = useDispatch( interfaceStore );
const { setIsListViewOpened, setIsInserterOpened } =
useDispatch( editorStore );
const { set: setPreference } = useDispatch( preferencesStore );
Expand Down Expand Up @@ -330,13 +345,5 @@ export default function EditorPreferencesModal( { extraSections = {} } ) {
]
);

if ( ! isActive ) {
return null;
}

return (
<PreferencesModal closeModal={ closeModal }>
<PreferencesModalTabs sections={ sections } />
</PreferencesModal>
);
return <PreferencesModalTabs sections={ sections } />;
}

0 comments on commit 07145ed

Please sign in to comment.