diff --git a/packages/edit-post/src/hooks/use-navigate-to-entity-record.js b/packages/edit-post/src/hooks/use-navigate-to-entity-record.js index b8c39865ecee8a..cd256ca7405203 100644 --- a/packages/edit-post/src/hooks/use-navigate-to-entity-record.js +++ b/packages/edit-post/src/hooks/use-navigate-to-entity-record.js @@ -2,8 +2,10 @@ * WordPress dependencies */ import { useCallback, useReducer } from '@wordpress/element'; -import { useSelect, useDispatch } from '@wordpress/data'; +import { useSelect, useDispatch, useRegistry } from '@wordpress/data'; import { store as editorStore } from '@wordpress/editor'; +import { store as coreStore } from '@wordpress/core-data'; +import { sprintf, __ } from '@wordpress/i18n'; /** * A hook that records the 'entity' history in the post editor as a user @@ -25,6 +27,8 @@ export default function useNavigateToEntityRecord( initialPostType, defaultRenderingMode ) { + const registry = useRegistry(); + const [ postHistory, dispatch ] = useReducer( ( historyState, { type, post, previousRenderingMode } ) => { if ( type === 'push' ) { @@ -52,7 +56,23 @@ export default function useNavigateToEntityRecord( const { setRenderingMode } = useDispatch( editorStore ); const onNavigateToEntityRecord = useCallback( - ( params ) => { + async ( params ) => { + try { + await registry + .resolveSelect( coreStore ) + .getPostType( params.postType ); + } catch ( err ) { + throw new Error( + sprintf( + // translators: %s: the name of a post type. + __( `Unable to fetch post type "%s" from API.` ), + params.postType + ), + { + cause: err, + } + ); + } dispatch( { type: 'push', post: { postId: params.postId, postType: params.postType }, @@ -61,7 +81,7 @@ export default function useNavigateToEntityRecord( } ); setRenderingMode( defaultRenderingMode ); }, - [ getRenderingMode, setRenderingMode, defaultRenderingMode ] + [ registry, getRenderingMode, setRenderingMode, defaultRenderingMode ] ); const onNavigateToPreviousEntityRecord = useCallback( () => {