Skip to content

Commit

Permalink
Navigation: Load navigations using so that we only need to preload on…
Browse files Browse the repository at this point in the history
…e request
  • Loading branch information
scruffian committed Jul 4, 2023
1 parent 5ba7484 commit 6929278
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 35 deletions.
14 changes: 8 additions & 6 deletions packages/block-library/src/navigation/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,15 @@ export const PRIORITIZED_INSERTER_BLOCKS = [
'core/navigation-link',
];

export const PRELOADED_NAVIGATION_MENUS_QUERY = {
per_page: 100,
status: [ 'publish', 'draft' ],
order: 'desc',
orderby: 'date',
};

export const SELECT_NAVIGATION_MENUS_ARGS = [
'postType',
'wp_navigation',
{
per_page: 100,
status: [ 'publish', 'draft' ],
order: 'desc',
orderby: 'date',
},
PRELOADED_NAVIGATION_MENUS_QUERY,
];
49 changes: 20 additions & 29 deletions packages/block-library/src/navigation/use-navigation-menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@
import {
store as coreStore,
useResourcePermissions,
useEntityRecords,
} from '@wordpress/core-data';
import { useSelect } from '@wordpress/data';

/**
* Internal dependencies
*/
import { SELECT_NAVIGATION_MENUS_ARGS } from './constants';
import { PRELOADED_NAVIGATION_MENUS_QUERY } from './constants';

export default function useNavigationMenu( ref ) {
const permissions = useResourcePermissions( 'navigation', ref );

return useSelect(
const useSelectResult = useSelect(
( select ) => {
const {
canCreate,
Expand All @@ -25,31 +26,17 @@ export default function useNavigationMenu( ref ) {
hasResolved,
} = permissions;

const {
navigationMenus,
isResolvingNavigationMenus,
hasResolvedNavigationMenus,
} = selectNavigationMenus( select );

const {
navigationMenu,
isNavigationMenuResolved,
isNavigationMenuMissing,
} = selectExistingMenu( select, ref );

return {
navigationMenus,
isResolvingNavigationMenus,
hasResolvedNavigationMenus,

navigationMenu,
isNavigationMenuResolved,
isNavigationMenuMissing,

canSwitchNavigationMenu: ref
? navigationMenus?.length > 1
: navigationMenus?.length > 0,

canUserCreateNavigationMenu: canCreate,
isResolvingCanUserCreateNavigationMenu: isResolving,
hasResolvedCanUserCreateNavigationMenu: hasResolved,
Expand All @@ -67,22 +54,26 @@ export default function useNavigationMenu( ref ) {
},
[ ref, permissions ]
);
}

function selectNavigationMenus( select ) {
const { getEntityRecords, hasFinishedResolution, isResolving } =
select( coreStore );
const {
records: navigationMenus,
isResolving: isResolvingNavigationMenus,
hasResolved: hasResolvedNavigationMenus,
canSwitchNavigationMenu = ref
? navigationMenus?.length > 1
: navigationMenus?.length > 0,
} = useEntityRecords(
'postType',
`wp_navigation`,
PRELOADED_NAVIGATION_MENUS_QUERY
);

return {
navigationMenus: getEntityRecords( ...SELECT_NAVIGATION_MENUS_ARGS ),
isResolvingNavigationMenus: isResolving(
'getEntityRecords',
SELECT_NAVIGATION_MENUS_ARGS
),
hasResolvedNavigationMenus: hasFinishedResolution(
'getEntityRecords',
SELECT_NAVIGATION_MENUS_ARGS
),
...useSelectResult,
navigationMenus,
isResolvingNavigationMenus,
hasResolvedNavigationMenus,
canSwitchNavigationMenu,
};
}

Expand Down

0 comments on commit 6929278

Please sign in to comment.