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 Jun 29, 2023
1 parent 55c18fc commit a26c115
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 53 deletions.
18 changes: 0 additions & 18 deletions lib/compat/wordpress-6.3/navigation-block-preloading.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,6 @@ function gutenberg_preload_navigation_posts( $preload_paths, $context ) {
// Preload the OPTIONS request for all Navigation posts request.
$preload_paths[] = array( $navigation_rest_route, 'OPTIONS' );

// Preload the GET request for ALL 'published' or 'draft' Navigation posts.
$preload_paths[] = array(
add_query_arg(
array(
'context' => 'edit',
'per_page' => 100,
'order' => 'desc',
'orderby' => 'date',
'_locale' => 'user',
// array indices are required to avoid query being encoded and not matching in cache.
'status[0]' => 'publish',
'status[1]' => 'draft',
),
$navigation_rest_route
),
'GET',
);

// Preload request for all menus in Browse Mode sidebar "Navigation" section.
$preload_paths[] = array(
add_query_arg(
Expand Down
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 a26c115

Please sign in to comment.