/** * WordPress dependencies */ import { createHigherOrderComponent } from '@safe-wordpress/compose'; import { useSelect } from '@safe-wordpress/data'; import { _x } from '@safe-wordpress/i18n'; /** * External dependencies */ import { LoadingAnimation } from '@nelio-content/components'; /** * Internal dependencies */ import { store as NC_EDIT_POST } from '../store'; export const withPostReadyCheck = createHigherOrderComponent( ( Component: ( _: unknown ) => JSX.Element ) => ( props ): JSX.Element => { const isPostReady = useSelect( ( select ) => select( NC_EDIT_POST ).isPostReady(), [] ); if ( isPostReady ) { return ; } return ( <> { _x( 'Please save post first to access this feature.', 'user', 'nelio-content' ) } ); }, 'withPostReadyCheck' ); export const withLoadingCheck = < C extends ( props: unknown ) => JSX.Element | null >( fnName: | 'isRetrievingEditorialComments' | 'isRetrievingSocialMessages' | 'isRetrievingEditorialTasks' ): ( ( c: C ) => C ) => ( c: C ) => createHigherOrderComponent( ( Component: C ) => ( props ) => { const isLoading = useSelect( ( select ) => !! select( NC_EDIT_POST )[ fnName ](), [] ); if ( ! isLoading ) { return ; } return ( ); }, 'withLoadingCheck' )( c ) as C;