Validate from address on form submit

This commit is contained in:
Amine Ben hammou
2019-07-31 10:54:34 +01:00
committed by Jack Kitterhing
parent a171aa69da
commit 486ef4fe67

View File

@@ -35,15 +35,12 @@ class NewsletterSend extends React.Component {
item: {}, item: {},
loading: true, loading: true,
thumbnailPromise: null, thumbnailPromise: null,
authorizedEmailAddresses: [],
}; };
} }
componentDidMount() { componentDidMount() {
jQuery.when( this.loadItem(this.props.match.params.id)
this.loadItem(this.props.match.params.id), .always(() => {
this.loadAuthorizedEmailAddresses()
).always(() => {
this.setState({ loading: false }); this.setState({ loading: false });
}); });
jQuery('#mailpoet_newsletter').parsley(); jQuery('#mailpoet_newsletter').parsley();
@@ -81,13 +78,14 @@ class NewsletterSend extends React.Component {
isValid = () => jQuery('#mailpoet_newsletter').parsley().isValid(); isValid = () => jQuery('#mailpoet_newsletter').parsley().isValid();
isValidFromAddress = () => { isValidFromAddress = async () => {
const fromAddress = this.state.item.sender_address;
if (window.mailpoet_mta_method !== 'MailPoet') { if (window.mailpoet_mta_method !== 'MailPoet') {
return true; return true;
} }
return this.state.authorizedEmailAddresses.indexOf(fromAddress) !== -1; const addresses = await this.loadAuthorizedEmailAddresses();
}; const fromAddress = this.state.item.sender_address;
return addresses.indexOf(fromAddress) !== -1;
}
showInvalidFromAddressError = () => { showInvalidFromAddressError = () => {
let errorMessage = ReactStringReplace( let errorMessage = ReactStringReplace(
@@ -170,17 +168,16 @@ class NewsletterSend extends React.Component {
}); });
}; };
loadAuthorizedEmailAddresses = () => { loadAuthorizedEmailAddresses = async () => {
if (window.mailpoet_mta_method !== 'MailPoet') { if (window.mailpoet_mta_method !== 'MailPoet') {
return jQuery.Deferred().resolve(); return [];
} }
return MailPoet.Ajax.post({ const response = await MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'mailer', endpoint: 'mailer',
action: 'getAuthorizedEmailAddresses', action: 'getAuthorizedEmailAddresses',
}).done((response) => {
this.setState({ authorizedEmailAddresses: response.data || [] });
}); });
return response.data || [];
}; };
handleSend = (e) => { handleSend = (e) => {
@@ -191,12 +188,13 @@ class NewsletterSend extends React.Component {
return jQuery('#mailpoet_newsletter').parsley().validate(); return jQuery('#mailpoet_newsletter').parsley().validate();
} }
if (!this.isValidFromAddress()) {
return this.showInvalidFromAddressError();
}
MailPoet.Modal.loading(true); MailPoet.Modal.loading(true);
return this.isValidFromAddress().then((valid) => {
if (!valid) {
this.showInvalidFromAddressError();
return MailPoet.Modal.loading(false);
}
return this.saveNewsletter(e).done(() => { return this.saveNewsletter(e).done(() => {
this.setState({ loading: true }); this.setState({ loading: true });
}) })
@@ -214,6 +212,7 @@ class NewsletterSend extends React.Component {
this.setState({ loading: false }); this.setState({ loading: false });
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}); });
});
}; };
sendNewsletter = newsletter => MailPoet.Ajax.post( sendNewsletter = newsletter => MailPoet.Ajax.post(