From 3d45ea92e2097c9211e735830f9ac667ae7d1393 Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Wed, 22 Jan 2025 15:29:25 +0100 Subject: [PATCH] Make send button independent on MailPoet [MAILPOET-6429] --- .../MailPoet/EditorPageRenderer.php | 6 ++++++ .../src/components/header/send-button.tsx | 17 ++++++----------- packages/js/email-editor/src/store/types.ts | 1 + 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EditorPageRenderer.php b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EditorPageRenderer.php index e4905a656b..be76ff26b7 100644 --- a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EditorPageRenderer.php +++ b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EditorPageRenderer.php @@ -11,6 +11,7 @@ use MailPoet\EmailEditor\Engine\Settings_Controller; use MailPoet\EmailEditor\Engine\Theme_Controller; use MailPoet\EmailEditor\Engine\User_Theme; use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as EditorInitController; +use MailPoet\Entities\NewsletterEntity; use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Settings\SettingsController as MailPoetSettings; use MailPoet\Settings\UserFlagsController; @@ -77,6 +78,10 @@ class EditorPageRenderer { if (!$post instanceof \WP_Post || $post->post_type !== EditorInitController::MAILPOET_EMAIL_POST_TYPE) { // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps return; } + $newsletter = $this->newslettersRepository->findOneBy(['wpPost' => $postId]); + if (!$newsletter instanceof NewsletterEntity) { + return; + } $this->dependencyNotice->checkDependenciesAndEventuallyShowNotice(); // load analytics (mixpanel) library @@ -148,6 +153,7 @@ class EditorPageRenderer { 'user_theme_post_id' => $this->userTheme->get_user_theme_post()->ID, 'urls' => [ 'listings' => admin_url('admin.php?page=mailpoet-newsletters'), + 'send' => admin_url('admin.php?page=mailpoet-newsletters#/send/' . $newsletter->getId()), ], ] ); diff --git a/packages/js/email-editor/src/components/header/send-button.tsx b/packages/js/email-editor/src/components/header/send-button.tsx index 5b68d039f5..bdf7160507 100644 --- a/packages/js/email-editor/src/components/header/send-button.tsx +++ b/packages/js/email-editor/src/components/header/send-button.tsx @@ -3,7 +3,6 @@ */ import { __ } from '@wordpress/i18n'; import { Button } from '@wordpress/components'; -import { useEntityProp } from '@wordpress/core-data'; import { applyFilters } from '@wordpress/hooks'; import { useSelect } from '@wordpress/data'; import { @@ -14,30 +13,26 @@ import { /** * Internal dependencies */ -import { MailPoetEmailData, storeName } from '../../store'; +import { storeName } from '../../store'; import { useEditorMode } from '../../hooks'; import { recordEvent } from '../../events'; export function SendButton( { validateContent, isContentInvalid } ) { - const [ mailpoetEmail ] = useEntityProp( - 'postType', - 'mailpoet_email', - 'mailpoet_data' - ); - const { isDirty } = useEntitiesSavedStatesIsDirty(); - const { hasEmptyContent, isEmailSent } = useSelect( + const { hasEmptyContent, isEmailSent, urls } = useSelect( ( select ) => ( { hasEmptyContent: select( storeName ).hasEmptyContent(), isEmailSent: select( storeName ).isEmailSent(), + urls: select( storeName ).getUrls(), } ), [] ); - const mailpoetEmailData: MailPoetEmailData = mailpoetEmail; function sendAction() { - window.location.href = `admin.php?page=mailpoet-newsletters#/send/${ mailpoetEmailData.id }`; + if ( urls.send ) { + window.location.href = urls.send; + } } const [ editorMode ] = useEditorMode(); diff --git a/packages/js/email-editor/src/store/types.ts b/packages/js/email-editor/src/store/types.ts index e4c4937644..a4ca3fb1aa 100644 --- a/packages/js/email-editor/src/store/types.ts +++ b/packages/js/email-editor/src/store/types.ts @@ -166,6 +166,7 @@ export type EmailEditorLayout = { }; export type EmailEditorUrls = { + send?: string; listings: string; };