diff --git a/packages/edit-site/src/components/sidebar-navigation-screen-details-footer/index.js b/packages/edit-site/src/components/sidebar-navigation-screen-details-footer/index.js index 3dec3f0a7b2eb..51833443d8d85 100644 --- a/packages/edit-site/src/components/sidebar-navigation-screen-details-footer/index.js +++ b/packages/edit-site/src/components/sidebar-navigation-screen-details-footer/index.js @@ -23,6 +23,7 @@ import SidebarNavigationItem from '../sidebar-navigation-item'; export default function SidebarNavigationScreenDetailsFooter( { record, + revisionsCount, ...otherProps } ) { /* @@ -34,9 +35,20 @@ export default function SidebarNavigationScreenDetailsFooter( { const hrefProps = {}; const lastRevisionId = record?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id ?? null; - const revisionsCount = - record?._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0; - // Enable the revisions link if there is a last revision and there are more than one revisions. + + // Use incoming prop first, then the record's version history, if available. + revisionsCount = + revisionsCount || + record?._links?.[ 'version-history' ]?.[ 0 ]?.count || + 0; + + /* + * Enable the revisions link if there is a last revision and there is more than one revision. + * This link is used for theme assets, e.g., templates, which have no database record until they're edited. + * For these files there's only a "revision" after they're edited twice, + * which means the revision.php page won't display a proper diff. + * See: https://github.com/WordPress/gutenberg/issues/49164. + */ if ( lastRevisionId && revisionsCount > 1 ) { hrefProps.href = addQueryArgs( 'revision.php', { revision: record?._links[ 'predecessor-version' ][ 0 ].id, diff --git a/packages/edit-site/src/components/sidebar-navigation-screen-global-styles/index.js b/packages/edit-site/src/components/sidebar-navigation-screen-global-styles/index.js index 3dc93ff4d4df6..772b15aec2a29 100644 --- a/packages/edit-site/src/components/sidebar-navigation-screen-global-styles/index.js +++ b/packages/edit-site/src/components/sidebar-navigation-screen-global-styles/index.js @@ -48,24 +48,15 @@ export function SidebarNavigationItemGlobalStyles( props ) { export default function SidebarNavigationScreenGlobalStyles() { const history = useHistory(); const { params } = useLocation(); - const { revisions, isLoading: isLoadingRevisions } = - useGlobalStylesRevisions(); + const { + revisions, + isLoading: isLoadingRevisions, + revisionsCount, + } = useGlobalStylesRevisions(); const { openGeneralSidebar } = useDispatch( editSiteStore ); const { setEditorCanvasContainerView } = unlock( useDispatch( editSiteStore ) ); - const { revisionsCount } = useSelect( ( select ) => { - const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = - select( coreStore ); - const globalStylesId = __experimentalGetCurrentGlobalStylesId(); - const globalStyles = globalStylesId - ? getEntityRecord( 'root', 'globalStyles', globalStylesId ) - : undefined; - return { - revisionsCount: - globalStyles?._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0, - }; - }, [] ); const { set: setPreference } = useDispatch( preferencesStore ); const openGlobalStyles = useCallback( async () => { @@ -95,10 +86,10 @@ export default function SidebarNavigationScreenGlobalStyles() { }, [ openGlobalStyles, setEditorCanvasContainerView ] ); // If there are no revisions, do not render a footer. - const hasRevisions = revisionsCount > 0; const modifiedDateTime = revisions?.[ 0 ]?.modified; const shouldShowGlobalStylesFooter = - hasRevisions && ! isLoadingRevisions && modifiedDateTime; + revisionsCount > 0 && ! isLoadingRevisions && modifiedDateTime; + return ( <> )