/** * WordPress dependencies */ import { useSelect } from '@safe-wordpress/data'; /** * External dependencies */ import { store as NC_DATA } from '@nelio-content/data'; import type { Post, Uuid } from '@nelio-content/types'; /** * Internal dependencies */ import { store as NC_EDIT_POST } from '../../store'; export const useHasUsableAutomationGroups = (): boolean => useSelect( ( select ) => { const post = select( NC_EDIT_POST ).getPost(); const groups = select( NC_DATA ).getPostAutomationGroups( post ); for ( const g of groups ) { if ( ! g.priority ) { continue; } for ( const ps of Object.values( g.profileSettings ) ) { if ( ps.enabled && ( ps.publication.enabled || ps.reshare.enabled ) ) { return true; } } } return false; }, [] ); export const useCanUseAutomations = (): boolean => useSelect( ( select ) => { const post = select( NC_EDIT_POST ).getPost(); const busy = select( NC_EDIT_POST ).isTimelineBusy(); return ( ! busy && select( NC_DATA ).canCurrentUserUseAutomationsInPost( post ) ); }, [] ); export const useDeletingMessageIds = (): ReadonlyArray< Uuid > => useSelect( ( select ) => select( NC_EDIT_POST ).getDeletingMessageIds(), [] ); export const usePost = (): Post => useSelect( ( select ) => select( NC_EDIT_POST ).getPost(), [] ); export const useIsTimelineBusy = (): boolean => useSelect( ( select ) => select( NC_EDIT_POST ).isTimelineBusy(), [] ); export const useIsStaging = (): boolean => useSelect( ( select ) => select( NC_DATA ).isStaging(), [] ); export const useCanCreateMessages = (): boolean => useSelect( ( select ) => { const editor = select( NC_EDIT_POST ); const post = editor.getPost(); const busy = editor.isTimelineBusy(); return ( ! busy && select( NC_DATA ).canCurrentUserCreateMessagesRelatedToPost( post ) ); }, [] ); export const useCouldSubscriberCreateMessages = (): boolean => useSelect( ( select ) => { const editor = select( NC_EDIT_POST ); const post = editor.getPost(); const busy = editor.isTimelineBusy(); return ( ! busy && select( NC_DATA ).couldSubscriberCreateMessagesRelatedToPost( post ) ); }, [] );