Create the WC transactional email only when it's first invoked [MAILPOET-2514]

This commit is contained in:
wxa
2019-11-06 18:19:59 +03:00
committed by Jack Kitterhing
parent eef0610e00
commit a38d08eb7c
6 changed files with 21 additions and 21 deletions

View File

@ -98,9 +98,10 @@ class NewsletterTypes extends React.Component {
'MailPoet Free version': window.mailpoet_version,
'Email type': 'wc_transactional',
});
let emailId = window.mailpoet_woocommerce_transactional_email_id;
if (!window.mailpoet_woocommerce_customizer_enabled) {
try {
await MailPoet.Ajax.post({
const response = await MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'settings',
action: 'set',
@ -108,12 +109,13 @@ class NewsletterTypes extends React.Component {
'woocommerce.use_mailpoet_editor': 1,
},
});
emailId = response.data.woocommerce.transactional_email_id;
} catch (response) {
MailPoet.Notice.showApiErrorNotice(response, { scroll: true });
return;
}
}
window.location.href = `?page=mailpoet-newsletter-editor&id=${window.mailpoet_woocommerce_transactional_email_id}`;
window.location.href = `?page=mailpoet-newsletter-editor&id=${emailId}`;
};
createNewsletter = (type) => {

View File

@ -13,6 +13,7 @@ use MailPoet\Models\ScheduledTask;
use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\Functions as WPFunctions;
class Settings extends APIEndpoint {
@ -26,6 +27,9 @@ class Settings extends APIEndpoint {
/** @var AuthorizedEmailsController */
private $authorized_emails_controller;
/** @var TransactionalEmails */
private $wc_transactional_emails;
public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_SETTINGS,
];
@ -34,11 +38,13 @@ class Settings extends APIEndpoint {
public function __construct(
SettingsController $settings,
Bridge $bridge,
AuthorizedEmailsController $authorized_emails_controller
AuthorizedEmailsController $authorized_emails_controller,
TransactionalEmails $wc_transactional_emails
) {
$this->settings = $settings;
$this->bridge = $bridge;
$this->authorized_emails_controller = $authorized_emails_controller;
$this->wc_transactional_emails = $wc_transactional_emails;
}
function get() {
@ -88,6 +94,10 @@ class Settings extends APIEndpoint {
if ($old_subscribe_old_woocommerce_customers !== $new_subscribe_old_woocommerce_customers) {
$this->onSubscribeOldWoocommerceCustomersChange();
}
if (!empty($new_settings['woocommerce']['use_mailpoet_editor'])) {
$this->wc_transactional_emails->init();
}
}
private function onSubscribeOldWoocommerceCustomersChange() {

View File

@ -50,7 +50,7 @@ class NewsletterEditor {
function render() {
$newsletter_id = (isset($_GET['id']) ? (int)$_GET['id'] : 0);
$woocommerce_template_id = (int)$this->settings->get('woocommerce.transactional_email_id', null);
$woocommerce_template_id = (int)$this->settings->get(TransactionalEmails::SETTING_EMAIL_ID, null);
if (
$woocommerce_template_id
&& $newsletter_id === $woocommerce_template_id

View File

@ -16,6 +16,7 @@ use MailPoet\Settings\UserFlagsController;
use MailPoet\Util\Installation;
use MailPoet\Util\License\License;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\DateTime;
use MailPoet\WP\Functions as WPFunctions;
@ -162,7 +163,7 @@ class Newsletters {
$data['is_new_user'] = $this->installation->isNewInstallation();
$data['sent_newsletters_count'] = (int)Newsletter::where('status', Newsletter::STATUS_SENT)->count();
$data['woocommerce_customizer_enabled'] = (bool)$this->settings->get('woocommerce.use_mailpoet_editor');
$data['woocommerce_transactional_email_id'] = $this->settings->get('woocommerce.transactional_email_id');
$data['woocommerce_transactional_email_id'] = $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID);
$this->wp->wpEnqueueScript('jquery-ui');
$this->wp->wpEnqueueScript('jquery-ui-datepicker');

View File

@ -31,7 +31,6 @@ use MailPoet\Subscribers\NewSubscriberNotificationMailer;
use MailPoet\Subscribers\Source;
use MailPoet\Subscription\Captcha;
use MailPoet\Util\Helpers;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\Functions as WPFunctions;
class Populator {
@ -50,16 +49,12 @@ class Populator {
/** @var FeaturesController */
private $flags_controller;
/** @var TransactionalEmails */
private $wc_transactional_emails;
function __construct(
SettingsController $settings,
WPFunctions $wp,
Captcha $captcha,
ReferralDetector $referralDetector,
FeaturesController $flags_controller,
TransactionalEmails $wc_transactional_emails
FeaturesController $flags_controller
) {
$this->settings = $settings;
$this->wp = $wp;
@ -147,7 +142,6 @@ class Populator {
'FarmersMarket',
];
$this->flags_controller = $flags_controller;
$this->wc_transactional_emails = $wc_transactional_emails;
}
function up() {
@ -173,7 +167,6 @@ class Populator {
$this->scheduleSubscriberLinkTokens();
$this->detectReferral();
$this->updateFormsSuccessMessages();
$this->initWooCommerceTransactionalEmails();
$this->moveGoogleAnalyticsFromPremium();
}
@ -724,11 +717,4 @@ class Populator {
private function detectReferral() {
$this->referralDetector->detect();
}
private function initWooCommerceTransactionalEmails() {
$feature_enabled = $this->flags_controller->isSupported(FeaturesController::WC_TRANSACTIONAL_EMAILS_CUSTOMIZER);
if ($feature_enabled) {
$this->wc_transactional_emails->init();
}
}
}

View File

@ -5,6 +5,7 @@ namespace MailPoet\WooCommerce;
use MailPoet\Config\Renderer;
use MailPoet\Features\FeaturesController;
use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\TransactionalEmails;
class Settings {
@ -43,7 +44,7 @@ class Settings {
}
echo $this->renderer->render('woocommerce/settings_overlay.html', [
'woocommerce_template_id' => $this->settings->get('woocommerce.transactional_email_id'),
'woocommerce_template_id' => $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID),
]);
}
}