From d330a36e9e04af65a47caa59a9688cb8682b1425 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 1 Dec 2023 15:52:36 +0200 Subject: [PATCH 1/4] Email preview: ensure sending latest post content as preview --- .../blocks/subscriptions/email-preview.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js b/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js index bdbd0c0945749..cd898e36b86ee 100644 --- a/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js +++ b/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js @@ -11,7 +11,8 @@ import { TextControl, Icon, } from '@wordpress/components'; -import { useSelect } from '@wordpress/data'; +import { useSelect, useDispatch } from '@wordpress/data'; +import { store as editorStore } from '@wordpress/editor'; import { useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import './email-preview.scss'; @@ -23,15 +24,23 @@ export default function EmailPreview( { isModalOpen, closeModal } ) { const [ emailSending, setEmailSending ] = useState( false ); const [ errorMessage, setErrorMessage ] = useState( false ); const postId = useSelect( select => select( 'core/editor' ).getCurrentPostId() ); + const { __unstableSaveForPreview } = useDispatch( editorStore ); const [ isSmall ] = useBreakpointMatch( 'sm' ); const { tracks } = useAnalytics(); - const sendEmailPreview = () => { + const sendEmailPreview = async () => { tracks.recordEvent( 'jetpack_send_email_preview', { post_id: postId, } ); setEmailSending( true ); + + // Save post revision so that we send what they see in the editor, and not what previous draft/revision might've saved + // Introduced at GB 16.3 at https://github.com/WordPress/gutenberg/pull/44971 + if ( typeof __unstableSaveForPreview === 'function' ) { + await __unstableSaveForPreview(); + } + apiFetch( { path: '/wpcom/v2/send-email-preview/', method: 'POST', From 99d6c4a74ddb12b770d90587bb1b4d9b7578def4 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 1 Dec 2023 15:53:34 +0200 Subject: [PATCH 2/4] changelog --- .../plugins/jetpack/changelog/update-email-preview-save-draft | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/plugins/jetpack/changelog/update-email-preview-save-draft diff --git a/projects/plugins/jetpack/changelog/update-email-preview-save-draft b/projects/plugins/jetpack/changelog/update-email-preview-save-draft new file mode 100644 index 0000000000000..b8d8cbec571b7 --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-email-preview-save-draft @@ -0,0 +1,4 @@ +Significance: patch +Type: bugfix + +Fix sending email preview if content in the editor is different from latest in the database. From 52e5d4f83c24211d9267141889a8a43c3f0157d9 Mon Sep 17 00:00:00 2001 From: Miguel Lezama Date: Fri, 1 Dec 2023 11:53:59 -0300 Subject: [PATCH 3/4] Update comment --- .../jetpack/extensions/blocks/subscriptions/email-preview.js | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js b/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js index cd898e36b86ee..29ab233d2664e 100644 --- a/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js +++ b/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js @@ -37,6 +37,7 @@ export default function EmailPreview( { isModalOpen, closeModal } ) { // Save post revision so that we send what they see in the editor, and not what previous draft/revision might've saved // Introduced at GB 16.3 at https://github.com/WordPress/gutenberg/pull/44971 + // @todo Remove the `if` check and `else` branch once WP 6.4 is the minimum supported version if ( typeof __unstableSaveForPreview === 'function' ) { await __unstableSaveForPreview(); } From b0668e57e0323b5293dc74fe94b91ed6e744afcd Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 1 Dec 2023 20:15:57 +0200 Subject: [PATCH 4/4] Update comment --- .../jetpack/extensions/blocks/subscriptions/email-preview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js b/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js index 29ab233d2664e..b108995852ec1 100644 --- a/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js +++ b/projects/plugins/jetpack/extensions/blocks/subscriptions/email-preview.js @@ -37,7 +37,7 @@ export default function EmailPreview( { isModalOpen, closeModal } ) { // Save post revision so that we send what they see in the editor, and not what previous draft/revision might've saved // Introduced at GB 16.3 at https://github.com/WordPress/gutenberg/pull/44971 - // @todo Remove the `if` check and `else` branch once WP 6.4 is the minimum supported version + // @todo Remove the `if` check once WP 6.4 is the minimum supported version if ( typeof __unstableSaveForPreview === 'function' ) { await __unstableSaveForPreview(); }