Adds hooks to override send action and response

This commit is contained in:
Vlad
2018-03-28 18:38:57 -04:00
parent 8728a69e69
commit f1effc30ba

View File

@@ -13,7 +13,7 @@ define(
'jquery', 'jquery',
'common/thumbnail.jsx', 'common/thumbnail.jsx',
'common/loading.jsx', 'common/loading.jsx',
'wp-js-hooks' 'wp-js-hooks',
], ],
( (
React, React,
@@ -54,7 +54,7 @@ define(
switch (newsletter.type) { switch (newsletter.type) {
case 'notification': return NotificationNewsletterFields; case 'notification': return NotificationNewsletterFields;
case 'welcome': return WelcomeNewsletterFields; case 'welcome': return WelcomeNewsletterFields;
default: return Hooks.applyFilters('mailpoet_newsletters_send_newsletter_fields', newsletter, StandardNewsletterFields); default: return Hooks.applyFilters('mailpoet_newsletters_send_newsletter_fields', StandardNewsletterFields, newsletter);
} }
}, },
isValid: function isValid() { isValid: function isValid() {
@@ -167,20 +167,29 @@ define(
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}); });
default: default:
return MailPoet.Ajax.post({ return MailPoet.Ajax.post(
api_version: window.mailpoet_api_version, Hooks.applyFilters(
endpoint: 'sendingQueue', 'mailpoet_newsletters_send_server_request_parameters',
action: 'add', {
data: { api_version: window.mailpoet_api_version,
newsletter_id: this.props.params.id, endpoint: 'sendingQueue',
}, action: 'add',
}).done((response2) => { data: {
newsletter_id: this.state.item.id,
},
},
this.state.item
)
)
.done((response2) => {
// save template in recently sent category // save template in recently sent category
this.saveTemplate(response, () => { this.saveTemplate(response, () => {
// redirect to listing based on newsletter type // redirect to listing based on newsletter type
this.context.router.push(`/${this.state.item.type || ''}`); this.context.router.push(`/${this.state.item.type || ''}`);
const customResponse = Hooks.applyFilters('mailpoet_newsletters_send_server_request_response', this.state.item, response2);
if (response2.data.status === 'scheduled') { if (_.isFunction(customResponse)) {
customResponse();
} else if (response2.data.status === 'scheduled') {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('newsletterHasBeenScheduled') MailPoet.I18n.t('newsletterHasBeenScheduled')
); );
@@ -331,7 +340,8 @@ define(
const sendButtonOptions = this.getSendButtonOptions(); const sendButtonOptions = this.getSendButtonOptions();
let breadcrumb = Hooks.applyFilters('mailpoet_newsletters_send_breadcrumb', this.state.item.type, 'send'); let breadcrumb = Hooks.applyFilters('mailpoet_newsletters_send_breadcrumb', this.state.item.type, 'send');
breadcrumb = (breadcrumb !== this.state.item.type) ? breadcrumb : <Breadcrumb step="send" />; breadcrumb = (breadcrumb !== this.state.item.type) ?
breadcrumb : <Breadcrumb step="send" />;
return ( return (
<div> <div>