Splits send method into smaller chunks

This commit is contained in:
Vlad
2018-04-11 19:50:48 -04:00
parent f019eaf38e
commit 1cc28eb607

View File

@@ -117,112 +117,117 @@ define(
e.preventDefault(); e.preventDefault();
if (!this.isValid()) { if (!this.isValid()) {
jQuery('#mailpoet_newsletter').parsley().validate(); return jQuery('#mailpoet_newsletter').parsley().validate();
} else { }
MailPoet.Modal.loading(true);
this.saveNewsletter(e).done(() => { MailPoet.Modal.loading(true);
this.setState({ loading: true });
}).done((response) => { return this.saveNewsletter(e).done(() => {
switch (response.data.type) { this.setState({ loading: true });
case 'notification': })
case 'welcome': .done((response) => {
return MailPoet.Ajax.post({ switch (response.data.type) {
api_version: window.mailpoet_api_version, case 'notification':
endpoint: 'newsletters', case 'welcome':
action: 'setStatus', return this.activateNewsletter(response);
data: { default:
id: this.props.params.id, return this.sendNewsletter(response);
status: 'active', }
}, })
}).done((response2) => { .fail((err) => {
// save template in recently sent category this.showError(err);
this.saveTemplate(response, () => { this.setState({ loading: false });
// redirect to listing based on newsletter type MailPoet.Modal.loading(false);
this.context.router.push(`/${this.state.item.type || ''}`); });
const opts = this.state.item.options; },
// display success message depending on newsletter type sendNewsletter: function sendNewsletter(newsletter) {
if (response2.data.type === 'welcome') { return MailPoet.Ajax.post(
MailPoet.Notice.success( Hooks.applyFilters(
MailPoet.I18n.t('welcomeEmailActivated') 'mailpoet_newsletters_send_server_request_parameters',
); {
MailPoet.trackEvent('Emails > Welcome email activated', { api_version: window.mailpoet_api_version,
'MailPoet Free version': window.mailpoet_version, endpoint: 'sendingQueue',
'List type': opts.event, action: 'add',
Delay: `${opts.afterTimeNumber} ${opts.afterTimeType}`, data: {
}); newsletter_id: this.state.item.id,
} else if (response2.data.type === 'notification') { },
MailPoet.Notice.success( },
MailPoet.I18n.t('postNotificationActivated') this.state.item
); )
MailPoet.trackEvent('Emails > Post notifications activated', { ).done((response) => {
'MailPoet Free version': window.mailpoet_version, // save template in recently sent category
Frequency: opts.intervalType, this.saveTemplate(newsletter, () => {
}); // redirect to listing based on newsletter type
} this.context.router.push(Hooks.applyFilters('mailpoet_newsletters_send_server_request_response_redirect', `/${this.state.item.type || ''}`, this.state.item));
MailPoet.Modal.loading(false); const customResponse = Hooks.applyFilters('mailpoet_newsletters_send_server_request_response', this.state.item, response);
}); if (_.isFunction(customResponse)) {
}).fail((err) => { customResponse();
this.showError(err); } else if (response.data.status === 'scheduled') {
this.setState({ loading: false }); MailPoet.Notice.success(
MailPoet.Modal.loading(false); MailPoet.I18n.t('newsletterHasBeenScheduled')
}); );
default: MailPoet.trackEvent('Emails > Newsletter sent', {
return MailPoet.Ajax.post( scheduled: true,
Hooks.applyFilters( 'MailPoet Free version': window.mailpoet_version,
'mailpoet_newsletters_send_server_request_parameters', });
{ } else {
api_version: window.mailpoet_api_version, MailPoet.Notice.success(
endpoint: 'sendingQueue', MailPoet.I18n.t('newsletterBeingSent')
action: 'add', );
data: { MailPoet.trackEvent('Emails > Newsletter sent', {
newsletter_id: this.state.item.id, scheduled: false,
}, 'MailPoet Free version': window.mailpoet_version,
}, });
this.state.item
)
)
.done((response2) => {
// save template in recently sent category
this.saveTemplate(response, () => {
// redirect to listing based on newsletter type
this.context.router.push(Hooks.applyFilters('mailpoet_newsletters_send_server_request_response_redirect', `/${this.state.item.type || ''}`, this.state.item));
const customResponse = Hooks.applyFilters('mailpoet_newsletters_send_server_request_response', this.state.item, response2);
if (_.isFunction(customResponse)) {
customResponse();
} else if (response2.data.status === 'scheduled') {
MailPoet.Notice.success(
MailPoet.I18n.t('newsletterHasBeenScheduled')
);
MailPoet.trackEvent('Emails > Newsletter sent', {
scheduled: true,
'MailPoet Free version': window.mailpoet_version,
});
} else {
MailPoet.Notice.success(
MailPoet.I18n.t('newsletterBeingSent')
);
MailPoet.trackEvent('Emails > Newsletter sent', {
scheduled: false,
'MailPoet Free version': window.mailpoet_version,
});
}
MailPoet.Modal.loading(false);
});
})
.fail((err) => {
this.showError(err);
this.setState({ loading: false });
MailPoet.Modal.loading(false);
});
} }
})
.fail((err) => {
this.showError(err);
this.setState({ loading: false });
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}); });
} }).fail((err) => {
return false; this.showError(err);
this.setState({ loading: false });
MailPoet.Modal.loading(false);
});
},
activateNewsletter: function activateEmail(newsletter) {
return MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'newsletters',
action: 'setStatus',
data: {
id: this.props.params.id,
status: 'active',
},
}).done((response) => {
// save template in recently sent category
this.saveTemplate(newsletter, () => {
// redirect to listing based on newsletter type
this.context.router.push(`/${this.state.item.type || ''}`);
const opts = this.state.item.options;
// display success message depending on newsletter type
if (response.data.type === 'welcome') {
MailPoet.Notice.success(
MailPoet.I18n.t('welcomeEmailActivated')
);
MailPoet.trackEvent('Emails > Welcome email activated', {
'MailPoet Free version': window.mailpoet_version,
'List type': opts.event,
Delay: `${opts.afterTimeNumber} ${opts.afterTimeType}`,
});
} else if (response.data.type === 'notification') {
MailPoet.Notice.success(
MailPoet.I18n.t('postNotificationActivated')
);
MailPoet.trackEvent('Emails > Post notifications activated', {
'MailPoet Free version': window.mailpoet_version,
Frequency: opts.intervalType,
});
}
MailPoet.Modal.loading(false);
});
}).fail((err) => {
this.showError(err);
this.setState({ loading: false });
MailPoet.Modal.loading(false);
});
}, },
handleResume: function handleResume(e) { handleResume: function handleResume(e) {
e.preventDefault(); e.preventDefault();