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,56 +117,30 @@ define(
e.preventDefault();
if (!this.isValid()) {
jQuery('#mailpoet_newsletter').parsley().validate();
} else {
return jQuery('#mailpoet_newsletter').parsley().validate();
}
MailPoet.Modal.loading(true);
this.saveNewsletter(e).done(() => {
return this.saveNewsletter(e).done(() => {
this.setState({ loading: true });
}).done((response) => {
})
.done((response) => {
switch (response.data.type) {
case 'notification':
case 'welcome':
return MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'newsletters',
action: 'setStatus',
data: {
id: this.props.params.id,
status: 'active',
},
}).done((response2) => {
// save template in recently sent category
this.saveTemplate(response, () => {
// 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 (response2.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 (response2.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,
});
return this.activateNewsletter(response);
default:
return this.sendNewsletter(response);
}
MailPoet.Modal.loading(false);
});
}).fail((err) => {
})
.fail((err) => {
this.showError(err);
this.setState({ loading: false });
MailPoet.Modal.loading(false);
});
default:
},
sendNewsletter: function sendNewsletter(newsletter) {
return MailPoet.Ajax.post(
Hooks.applyFilters(
'mailpoet_newsletters_send_server_request_parameters',
@@ -180,16 +154,15 @@ define(
},
this.state.item
)
)
.done((response2) => {
).done((response) => {
// save template in recently sent category
this.saveTemplate(response, () => {
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));
const customResponse = Hooks.applyFilters('mailpoet_newsletters_send_server_request_response', this.state.item, response2);
const customResponse = Hooks.applyFilters('mailpoet_newsletters_send_server_request_response', this.state.item, response);
if (_.isFunction(customResponse)) {
customResponse();
} else if (response2.data.status === 'scheduled') {
} else if (response.data.status === 'scheduled') {
MailPoet.Notice.success(
MailPoet.I18n.t('newsletterHasBeenScheduled')
);
@@ -208,21 +181,53 @@ define(
}
MailPoet.Modal.loading(false);
});
})
.fail((err) => {
}).fail((err) => {
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,
});
}
})
.fail((err) => {
MailPoet.Modal.loading(false);
});
}).fail((err) => {
this.showError(err);
this.setState({ loading: false });
MailPoet.Modal.loading(false);
});
}
return false;
},
handleResume: function handleResume(e) {
e.preventDefault();