/** * External dependencies. */ import { __ } from '@wordpress/i18n'; import { useParams, useNavigate } from 'react-router-dom'; import { Notice } from '@wordpress/components'; import Loading from '@wp-rollback/shared-core/components/Loading'; import RollbackModal from '@wp-rollback/shared-core/components/modals/RollbackModal'; import RollbackHeader from '@wp-rollback/shared-core/components/Rollbacks/RollbackHeader'; import RollbackActions from '@wp-rollback/shared-core/components/Rollbacks/RollbackActions'; import { RollbackProvider, useRollbackContext } from '@wp-rollback/shared-core/context/RollbackContext'; import VersionsList from '@wp-rollback/shared-core/components/Rollbacks/VersionsList'; import Layout from '../layout/Layout'; import RollbackContent from './RollbackContent'; import PremiumRollbackInlineUpsell from '../components/PremiumRollbackInlineUpsell'; /** * Inner component that consumes the context * * @return {JSX.Element} The rollback page component content */ const RollbacksContent = () => { const { isLoading, error, rollbackInfo, isPremiumAsset, rollbackVersion, setRollbackVersion, currentVersion } = useRollbackContext(); if ( isLoading ) { return ( ); } // Handle error state if ( error || rollbackInfo.message ) { return (

{ rollbackInfo.code || __( 'Error', 'wp-rollback' ) }

{ rollbackInfo.message || error }

); } // Show premium upsell for premium assets (in free plugin) if ( isPremiumAsset ) { return ( {/* Custom header for premium assets */}

{ __('Unlock Premium Rollbacks', 'wp-rollback') }

{ __('This premium asset requires WP Rollback Pro for safe version rollbacks.', 'wp-rollback') }

{rollbackInfo?.name || slug} { __('is not available on WordPress.org and requires WP Rollback Pro for version control.', 'wp-rollback') }

{/* Show available versions if they exist - moved higher */} { rollbackInfo?.versions && Object.keys( rollbackInfo.versions ).length > 0 && (

{ __( 'Available Versions (Pro Feature)', 'wp-rollback' ) }

{ __( 'These versions would be available for rollback with WP Rollback Pro:', 'wp-rollback' ) }

) }
); } // Show normal rollback content for wp.org assets return (
); }; /** * RollbackPage component handles the rollback process for plugins and themes * * @return {JSX.Element} The rollback page component */ export const Rollbacks = () => { const { type, slug } = useParams(); const navigate = useNavigate(); // Handle navigation back to home const handleCancel = () => { navigate( '/' ); }; return ( ); }; export default Rollbacks;