/**
* WordPress dependencies
*/
import { TextareaControl } from '@safe-wordpress/components';
import { useSelect, useDispatch } from '@safe-wordpress/data';
import { _x } from '@safe-wordpress/i18n';
/**
* External dependencies
*/
import { trim } from 'lodash';
import { createComment, isEmpty } from '@nelio-content/utils';
/**
* Internal dependencies
*/
import './style.scss';
import { store as NC_EDIT_POST } from '../../../store';
export const Input = (): JSX.Element => {
const [ value, setValue ] = useValue();
const save = useSave();
return (
{
if ( 'Enter' !== ev.key ) {
return;
}
ev.preventDefault();
save();
} }
/>
);
};
// =====
// HOOKS
// =====
const useValue = () => {
const value = useSelect(
( select ) => select( NC_EDIT_POST ).getEditorialCommentInputValue(),
[]
);
const { setEditorialCommentInputValue } = useDispatch( NC_EDIT_POST );
return [ value, setEditorialCommentInputValue ] as const;
};
const useSave = () => {
const [ value, setValue ] = useValue();
const { createEditorialComment } = useDispatch( NC_EDIT_POST );
const postId = useSelect(
( select ) => select( NC_EDIT_POST ).getPostId(),
[]
);
const postType = useSelect(
( select ) => select( NC_EDIT_POST ).getPostType(),
[]
);
if ( ! postId || ! postType ) {
return () => void null;
}
return () => {
const comment = trim( value );
if ( isEmpty( comment ) ) {
return;
}
void setValue( '' );
void createEditorialComment( {
...createComment( postId, postType ),
comment,
} );
};
};