Add form loading state, remove errors and params
This commit is contained in:
@@ -17,6 +17,11 @@ define(
|
|||||||
mixins: [
|
mixins: [
|
||||||
Router.History
|
Router.History
|
||||||
],
|
],
|
||||||
|
getDefaultProps: function() {
|
||||||
|
return {
|
||||||
|
params: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
@@ -158,7 +163,7 @@ define(
|
|||||||
|
|
||||||
var formClasses = classNames(
|
var formClasses = classNames(
|
||||||
'mailpoet_form',
|
'mailpoet_form',
|
||||||
{ 'mailpoet_form_loading': this.state.loading }
|
{ 'mailpoet_form_loading': this.state.loading || this.props.loading }
|
||||||
);
|
);
|
||||||
|
|
||||||
var fields = this.props.fields.map(function(field, i) {
|
var fields = this.props.fields.map(function(field, i) {
|
||||||
|
@@ -22,15 +22,6 @@ define(
|
|||||||
Breadcrumb
|
Breadcrumb
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var messages = {
|
|
||||||
onUpdate: function() {
|
|
||||||
MailPoet.Notice.success(MailPoet.I18n.t('newsletterUpdated'));
|
|
||||||
},
|
|
||||||
onCreate: function() {
|
|
||||||
MailPoet.Notice.success(MailPoet.I18n.t('newsletterAdded'));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var NewsletterSend = React.createClass({
|
var NewsletterSend = React.createClass({
|
||||||
mixins: [
|
mixins: [
|
||||||
Router.History
|
Router.History
|
||||||
@@ -38,11 +29,23 @@ define(
|
|||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
fields: [],
|
fields: [],
|
||||||
errors: [],
|
|
||||||
item: {},
|
item: {},
|
||||||
loading: false,
|
loading: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
getFieldsByNewsletter: function(newsletter) {
|
||||||
|
switch(newsletter.type) {
|
||||||
|
case 'notification': return NotificationNewsletterFields;
|
||||||
|
case 'welcome': return WelcomeNewsletterFields;
|
||||||
|
default: return StandardNewsletterFields;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isAutomatedNewsletter: function() {
|
||||||
|
return this.state.item.type !== 'standard';
|
||||||
|
},
|
||||||
|
isValid: function() {
|
||||||
|
return jQuery('#mailpoet_newsletter').parsley().isValid();
|
||||||
|
},
|
||||||
componentDidMount: function() {
|
componentDidMount: function() {
|
||||||
if(this.isMounted()) {
|
if(this.isMounted()) {
|
||||||
this.loadItem(this.props.params.id);
|
this.loadItem(this.props.params.id);
|
||||||
@@ -76,23 +79,11 @@ define(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getFieldsByNewsletter: function(newsletter) {
|
|
||||||
switch(newsletter.type) {
|
|
||||||
case 'notification': return NotificationNewsletterFields;
|
|
||||||
case 'welcome': return WelcomeNewsletterFields;
|
|
||||||
default: return StandardNewsletterFields;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isValid: function() {
|
|
||||||
return jQuery('#mailpoet_newsletter').parsley().isValid();
|
|
||||||
},
|
|
||||||
isAutomatedNewsletter: function() {
|
|
||||||
return this.state.item.type !== 'standard';
|
|
||||||
},
|
|
||||||
handleSend: function() {
|
handleSend: function() {
|
||||||
if(!this.isValid()) {
|
if(!this.isValid()) {
|
||||||
jQuery('#mailpoet_newsletter').parsley().validate();
|
jQuery('#mailpoet_newsletter').parsley().validate();
|
||||||
} else {
|
} else {
|
||||||
|
this.setState({ loading: true });
|
||||||
|
|
||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
@@ -111,6 +102,7 @@ define(
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
}).done((response) => {
|
}).done((response) => {
|
||||||
|
this.setState({ loading: false });
|
||||||
if(response.result === true) {
|
if(response.result === true) {
|
||||||
this.history.pushState(null, '/');
|
this.history.pushState(null, '/');
|
||||||
MailPoet.Notice.success(
|
MailPoet.Notice.success(
|
||||||
@@ -131,6 +123,7 @@ define(
|
|||||||
},
|
},
|
||||||
handleSave: function(e) {
|
handleSave: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
this.setState({ loading: true });
|
||||||
|
|
||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
@@ -141,10 +134,12 @@ define(
|
|||||||
|
|
||||||
if(response.result === true) {
|
if(response.result === true) {
|
||||||
this.history.pushState(null, '/');
|
this.history.pushState(null, '/');
|
||||||
messages.onUpdate();
|
MailPoet.Notice.success(
|
||||||
|
MailPoet.I18n.t('newsletterUpdated')
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
if(response.errors.length > 0) {
|
if(response.errors) {
|
||||||
this.setState({ errors: response.errors });
|
MailPoet.Notice.error(response.errors);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -160,9 +155,6 @@ define(
|
|||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
getParams: function() {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
render: function() {
|
render: function() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@@ -174,8 +166,7 @@ define(
|
|||||||
id="mailpoet_newsletter"
|
id="mailpoet_newsletter"
|
||||||
fields={ this.state.fields }
|
fields={ this.state.fields }
|
||||||
item={ this.state.item }
|
item={ this.state.item }
|
||||||
params={ this.getParams() }
|
loading={ this.state.loading }
|
||||||
errors= { this.state.errors }
|
|
||||||
onChange={this.handleFormChange}
|
onChange={this.handleFormChange}
|
||||||
onSubmit={this.handleSave}
|
onSubmit={this.handleSave}
|
||||||
>
|
>
|
||||||
|
Reference in New Issue
Block a user