diff --git a/assets/js/src/form_editor/components/preview.jsx b/assets/js/src/form_editor/components/preview.jsx
index a6b068130d..12b694dc41 100644
--- a/assets/js/src/form_editor/components/preview.jsx
+++ b/assets/js/src/form_editor/components/preview.jsx
@@ -10,6 +10,7 @@ import { useDispatch, useSelect } from '@wordpress/data';
import Preview from '../../common/preview/preview.jsx';
import Modal from '../../common/modal/modal.jsx';
import { blocksToFormBodyFactory } from '../store/blocks_to_form_body.jsx';
+import mapFormDataBeforeSaving from '../store/map_form_data_before_saving.jsx';
import { onChange } from '../../common/functions';
function getFormType(settings) {
@@ -30,8 +31,9 @@ function getFormType(settings) {
}
const getPreviewType = () => (window.localStorage.getItem('mailpoet_form_preview_last_preview_type') || 'desktop');
+
const FormPreview = () => {
- const [form, setForm] = useState(null);
+ const [formPersisted, setFormPersisted] = useState(false);
const [iframeLoaded, setIframeLoaded] = useState(false);
const formBlocks = useSelect(
@@ -57,7 +59,7 @@ const FormPreview = () => {
[]
);
- const loadFormPreviewFromServer = useCallback(() => {
+ const saveFormDataForPreview = useCallback(() => {
const blocksToFormBody = blocksToFormBodyFactory(
editorSettings.colors,
editorSettings.fontSizes,
@@ -68,26 +70,25 @@ const FormPreview = () => {
endpoint: 'forms',
action: 'previewEditor',
data: {
+ ...mapFormDataBeforeSaving(formData),
body: blocksToFormBody(formBlocks),
- settings: formData.settings,
},
- }).done((response) => {
- setForm(response.data);
+ }).done(() => {
+ setFormPersisted(true);
});
}, [formBlocks, customFields, formData, editorSettings.colors, editorSettings.fontSizes]);
useEffect(() => {
if (isPreview) {
- loadFormPreviewFromServer();
+ saveFormDataForPreview();
}
setIframeLoaded(false);
- }, [isPreview, loadFormPreviewFromServer]);
-
+ }, [isPreview, saveFormDataForPreview]);
if (!isPreview) return null;
function onClose() {
- setForm(null);
+ setFormPersisted(false);
hidePreview();
}
@@ -117,12 +118,12 @@ const FormPreview = () => {
fullScreen
contentClassName="mailpoet_form_preview_modal"
>
- {form === null && (
+ {!formPersisted && (
)}
- {form !== null && (
+ {formPersisted && (
<>