/** * External dependencies */ import type { Maybe, PostId } from '@nelio-content/types'; /** * Internal dependencies */ import type { EditorContext, Post, RelatedPostStatus, State } from '../types'; export function isNewTask( state: State ): boolean { return !! state.status.isNewTask; } export function isVisible( state: State ): boolean { return !! state.status.isVisible; } export function isSaving( state: State ): boolean { return !! state.status.isSaving; } export function getValidationError( state: State ): string { return state.status.error; } export function getPost( state: State ): Maybe< Post > { return state.status.relatedPost.post; } export function getPostId( state: State ): Maybe< PostId > { return state.status.relatedPost.post?.id; } export function getRelatedPostStatus( state: State ): RelatedPostStatus { return state.status.relatedPost.status; } export function getEditorContext( state: State ): EditorContext { return state.status.context; } export function isDirty( state: State ): boolean { const { source: prevTask } = state.status; const { attributes: task } = state; const dirty = prevTask?.task !== task.task || prevTask?.assigneeId !== task.assigneeId || prevTask?.dateType !== task.dateType || prevTask?.dateValue !== task.dateValue || prevTask?.color !== task.color; return ! state.status.isNewTask && dirty; } export function getCustomOnSave( state: State ): State[ 'status' ][ 'onSave' ] { return state.status.onSave; }