/**
* WordPress dependencies
*/
import { Button } from '@safe-wordpress/components';
import { useSelect, useDispatch } from '@safe-wordpress/data';
import { _x } from '@safe-wordpress/i18n';
/**
* External dependencies
*/
import { store as NC_DATA } from '@nelio-content/data';
import { store as NC_TASK_EDITOR } from '@nelio-content/task-editor';
/**
* Internal dependencies
*/
import './style.scss';
import { store as NC_EDIT_POST } from '../../../store';
export const TaskCreator = (): JSX.Element => {
const hasPresets = useHasPresets();
const canCreateTasks = useCanCreateTasks();
const { openTaskPresetLoader } = useDispatch( NC_EDIT_POST );
const createTask = useTaskCreator();
return (
{ hasPresets && (
) }
);
};
// =====
// HOOKS
// =====
const usePost = () =>
useSelect( ( select ) => select( NC_EDIT_POST ).getPost(), [] );
const useCanCreateTasks = () => {
const post = usePost();
return useSelect(
( select ) =>
select( NC_DATA ).canCurrentUserCreateTasksRelatedToPost( post ),
[ post ]
);
};
const useHasPresets = () =>
useSelect( ( select ) => !! select( NC_DATA ).getTaskPresets().length, [] );
const useTaskCreator = () => {
const post = usePost();
const { openNewTaskEditor } = useDispatch( NC_TASK_EDITOR );
return () =>
openNewTaskEditor(
{
dateType:
'publish' !== post.status ? 'predefined-offset' : undefined,
dateValue: 'publish' !== post.status ? '0' : undefined,
},
{ post, context: 'post' }
);
};