diff --git a/projects/plugins/jetpack/changelog/update-subscriptions-skip-modal b/projects/plugins/jetpack/changelog/update-subscriptions-skip-modal new file mode 100644 index 0000000000000..2e357ea143d80 --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-subscriptions-skip-modal @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Newsletters: allow skipping modals with URL query param diff --git a/projects/plugins/jetpack/modules/subscriptions/subscribe-modal/subscribe-modal.js b/projects/plugins/jetpack/modules/subscriptions/subscribe-modal/subscribe-modal.js index 1360693915fa8..e2b084cda60bc 100644 --- a/projects/plugins/jetpack/modules/subscriptions/subscribe-modal/subscribe-modal.js +++ b/projects/plugins/jetpack/modules/subscriptions/subscribe-modal/subscribe-modal.js @@ -3,13 +3,28 @@ const { domReady } = wp; domReady( () => { const modal = document.querySelector( '.jetpack-subscribe-modal' ); const modalDismissedCookie = 'jetpack_post_subscribe_modal_dismissed'; + const skipUrlParam = 'jetpack_skip_subscription_popup'; function hasEnoughTimePassed() { const lastDismissed = localStorage.getItem( modalDismissedCookie ); return lastDismissed ? Date.now() - lastDismissed > Jetpack_Subscriptions.modalInterval : true; } - if ( ! modal || ! hasEnoughTimePassed() ) { + // Subscriber ended up here e.g. from emails: + // we won't show the modal to them in future since they most likely are already a subscriber. + function skipModal() { + const url = new URL( window.location.href ); + if ( url.searchParams.has( skipUrlParam ) ) { + url.searchParams.delete( skipUrlParam ); + window.history.replaceState( {}, '', url ); + storeCloseTimestamp(); + return true; + } + + return false; + } + + if ( ! modal || ! hasEnoughTimePassed() || skipModal() ) { return; } diff --git a/projects/plugins/jetpack/modules/subscriptions/subscribe-overlay/subscribe-overlay.js b/projects/plugins/jetpack/modules/subscriptions/subscribe-overlay/subscribe-overlay.js index 936b5840c80fb..83eae23686338 100644 --- a/projects/plugins/jetpack/modules/subscriptions/subscribe-overlay/subscribe-overlay.js +++ b/projects/plugins/jetpack/modules/subscriptions/subscribe-overlay/subscribe-overlay.js @@ -3,10 +3,25 @@ const { domReady } = wp; domReady( function () { const overlay = document.querySelector( '.jetpack-subscribe-overlay' ); const overlayDismissedCookie = 'jetpack_post_subscribe_overlay_dismissed'; + const skipUrlParam = 'jetpack_skip_subscription_popup'; const hasOverlayDismissedCookie = document.cookie && document.cookie.indexOf( overlayDismissedCookie ) > -1; - if ( ! overlay || hasOverlayDismissedCookie ) { + // Subscriber ended up here e.g. from emails: + // we won't show the overlay to them in future since they most likely are already a subscriber. + function skipOverlay() { + const url = new URL( window.location.href ); + if ( url.searchParams.has( skipUrlParam ) ) { + url.searchParams.delete( skipUrlParam ); + window.history.replaceState( {}, '', url ); + setOverlayDismissedCookie(); + return true; + } + + return false; + } + + if ( ! overlay || hasOverlayDismissedCookie || skipOverlay() ) { return; }