import React, { useEffect, useState, useCallback } from 'react'; import MailPoet from 'mailpoet'; import { Spinner } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; import Preview from '../../common/preview.jsx'; import Modal from '../../common/modal/modal.jsx'; import blocksToFormBody from '../store/blocks_to_form_body.jsx'; const FormPreview = () => { const [form, setForm] = useState(null); const formBlocks = useSelect( (select) => select('mailpoet-form-editor').getFormBlocks(), [] ); const customFields = useSelect( (select) => select('mailpoet-form-editor').getAllAvailableCustomFields(), [] ); const { hidePreview } = useDispatch('mailpoet-form-editor'); const isPreview = useSelect( (select) => select('mailpoet-form-editor').getIsPreviewShown(), [] ); const loadFormPreviewFromServer = useCallback(() => { MailPoet.Ajax.post({ api_version: window.mailpoet_api_version, endpoint: 'forms', action: 'previewEditor', data: { body: blocksToFormBody(formBlocks, customFields), }, }).done((response) => { setForm(response.data); }); }, [formBlocks, customFields]); useEffect(() => { if (isPreview) { loadFormPreviewFromServer(); } }, [isPreview, loadFormPreviewFromServer]); if (!isPreview) return null; function onClose() { setForm(null); hidePreview(); } return ( {form === null && (
)} {form !== null && (

{MailPoet.I18n.t('successMessage')}

{MailPoet.I18n.t('errorMessage')}

)} ); }; export default FormPreview;