/** * External dependencies */ import { EMPTY_ARRAY } from '@nelio-content/constants'; import type { AuthorId, AutoShareEndModeId, AutomationSources, ImageId, Maybe, PostId, PostStatusSlug, PostTypeName, RegularQueryArg, Series, SocialNetworkName, TaxonomySlug, Term, Url, } from '@nelio-content/types'; /** * Internal dependencies */ import type { State } from '../types'; export function isPostReady( state: State ): boolean { return 'auto-draft' !== state.post.status && !! state.post.id; } export function getPost( state: State ): State[ 'post' ] { return state.post; } export function getPostId( state: State ): Maybe< PostId > { return state.post.id || undefined; } export function getPostType( state: State ): Maybe< PostTypeName > { return state.post.type || undefined; } export function getTitle( state: State ): string { return state.post.title || ''; } export function getExcerpt( state: State ): string { return state.post.excerpt || ''; } export function getContent( state: State ): string { return state.post.content || ''; } export function getDate( state: State ): Maybe< string > { return state.post.date || undefined; } export function getAuthorId( state: State ): Maybe< AuthorId > { return state.post.author || undefined; } export function getPermalink( state: State ): Maybe< Url > { return state.post.permalink || undefined; } export function getPermalinkTemplate( state: State ): string { return state.post.permalinkTemplate; } export function getFollowers( state: State ): ReadonlyArray< AuthorId > { return state.post.followers || EMPTY_ARRAY; } export function getFeaturedImageId( state: State ): Maybe< ImageId > { return state.post.imageId || undefined; } export function getFeaturedImageSrc( state: State ): Maybe< Url > { return state.post.imageSrc || undefined; } export function getStatus( state: State ): PostStatusSlug { return state.post.status; } export function getImages( state: State ): ReadonlyArray< Url > { return state.post.images || EMPTY_ARRAY; } export function getTerms( state: State, taxonomy: TaxonomySlug ): ReadonlyArray< Term > { return state.post.taxonomies[ taxonomy ] ?? EMPTY_ARRAY; } export function getQueryArgs( state: State ): ReadonlyArray< RegularQueryArg > { return state.post.permalinkQueryArgs; } export function isAutoShareEnabled( state: State ): boolean { return !! state.post.isAutoShareEnabled; } export function getAutoShareEndMode( state: State ): AutoShareEndModeId { return state.post.autoShareEndMode; } export function getAutomationSources( state: State ): AutomationSources { return state.post.automationSources; } export function getNetworkImageIds( state: State ): State[ 'post' ][ 'networkImageIds' ] { return state.post.networkImageIds; } export function getNetworkImageId( state: State, network: SocialNetworkName ): Maybe< ImageId > { return state.post.networkImageIds[ network ]; } export function getSeries( state: State ): ReadonlyArray< Series > { return state.post.series; }