import React from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { cancelReplyCompose } from 'soapbox/actions/compose'; import { openModal, closeModal } from 'soapbox/actions/modals'; import { checkComposeContent } from 'soapbox/components/modal-root'; import { Modal } from 'soapbox/components/ui'; import { useAppDispatch, useCompose } from 'soapbox/hooks'; import ComposeForm from '../../../compose/components/compose-form'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, confirm: { id: 'confirmations.cancel.confirm', defaultMessage: 'Discard' }, cancelEditing: { id: 'confirmations.cancel_editing.confirm', defaultMessage: 'Cancel editing' }, }); interface IComposeModal { onClose: (type?: string) => void, } const ComposeModal: React.FC = ({ onClose }) => { const intl = useIntl(); const dispatch = useAppDispatch(); const compose = useCompose('compose-modal'); const { id: statusId, privacy, in_reply_to: inReplyTo, quote } = compose!; const onClickClose = () => { if (checkComposeContent(compose)) { dispatch(openModal('CONFIRM', { icon: require('@tabler/icons/trash.svg'), heading: statusId ? : , message: statusId ? : , confirm: intl.formatMessage(statusId ? messages.cancelEditing : messages.confirm), onConfirm: () => { dispatch(closeModal('COMPOSE')); dispatch(cancelReplyCompose()); }, })); } else { onClose('COMPOSE'); } }; const renderTitle = () => { if (statusId) { return ; } else if (privacy === 'direct') { return ; } else if (inReplyTo) { return ; } else if (quote) { return ; } else { return ; } }; return ( ); }; export default ComposeModal;