diff --git a/assets/js/src/newsletters/automatic_emails/listings.jsx b/assets/js/src/newsletters/automatic_emails/listings.jsx index 8b09e64896..b45319286e 100644 --- a/assets/js/src/newsletters/automatic_emails/listings.jsx +++ b/assets/js/src/newsletters/automatic_emails/listings.jsx @@ -5,6 +5,7 @@ import ListingHeading from 'newsletters/listings/heading.jsx'; import FeatureAnnouncement from 'announcements/feature_announcement.jsx'; import { checkMailerStatus, addStatsCTAAction } from 'newsletters/listings/utils.jsx'; import Statistics from 'newsletters/listings/statistics.jsx'; +import NewsletterTypes from 'newsletters/types.jsx'; import SubscribersLimitNotice from 'notices/subscribers_limit_notice.jsx'; import classNames from 'classnames'; import MailPoet from 'mailpoet'; @@ -165,6 +166,7 @@ class Listings extends React.Component { super(props); this.state = { eventCounts: {}, + newslettersCount: undefined, }; this.afterGetItems = this.afterGetItems.bind(this); } @@ -384,23 +386,37 @@ class Listings extends React.Component { {this.renderWarning()} - + {this.state.newslettersCount === 0 && ( + type.slug === 'woocommerce'} + showHeader={false} + /> + )} + {this.state.newslettersCount !== 0 && ( + { + if (!state.loading) { + const total = state.groups.reduce((count, group) => (count + group.count), 0); + this.setState({ newslettersCount: total }); + } + this.afterGetItems(state); + }} + /> + )} ); } diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx index 18af0aa299..9419b14b53 100644 --- a/assets/js/src/newsletters/listings/notification.jsx +++ b/assets/js/src/newsletters/listings/notification.jsx @@ -11,6 +11,7 @@ import { checkCronStatus, checkMailerStatus, } from 'newsletters/listings/utils.jsx'; +import NewsletterTypes from 'newsletters/types.jsx'; import classNames from 'classnames'; import MailPoet from 'mailpoet'; @@ -171,6 +172,13 @@ class NewsletterListNotification extends React.Component { }).isRequired, }; + constructor(props) { + super(props); + this.state = { + newslettersCount: undefined, + }; + } + updateStatus = (e) => { // make the event persist so that we can still override the selected value // in the ajax callback @@ -343,23 +351,38 @@ class NewsletterListNotification extends React.Component { - { checkMailerStatus(state); checkCronStatus(state); }} - /> + {this.state.newslettersCount === 0 && ( + type.slug === 'notification'} + showHeader={false} + /> + )} + {this.state.newslettersCount !== 0 && ( + { + if (!state.loading) { + const total = state.groups.reduce((count, group) => (count + group.count), 0); + this.setState({ newslettersCount: total }); + } + checkMailerStatus(state); + checkCronStatus(state); + }} + /> + )} ); } diff --git a/assets/js/src/newsletters/listings/standard.jsx b/assets/js/src/newsletters/listings/standard.jsx index 6bb0a2608d..819d64dd26 100644 --- a/assets/js/src/newsletters/listings/standard.jsx +++ b/assets/js/src/newsletters/listings/standard.jsx @@ -15,6 +15,7 @@ import { checkCronStatus, checkMailerStatus, } from 'newsletters/listings/utils.jsx'; +import NewsletterTypes from 'newsletters/types.jsx'; import SubscribersLimitNotice from 'notices/subscribers_limit_notice.jsx'; import { GlobalContext } from 'context/index.jsx'; @@ -183,6 +184,13 @@ class NewsletterListStandard extends React.Component { }).isRequired, }; + constructor(props) { + super(props); + this.state = { + newslettersCount: undefined, + }; + } + renderItem = (newsletter, actions, meta) => { const rowClasses = classNames( 'manage-column', @@ -237,23 +245,38 @@ class NewsletterListStandard extends React.Component { - { checkMailerStatus(state); checkCronStatus(state); }} - /> + {this.state.newslettersCount === 0 && ( + type.slug === 'standard'} + showHeader={false} + /> + )} + {this.state.newslettersCount !== 0 && ( + { + if (!state.loading) { + const total = state.groups.reduce((count, group) => (count + group.count), 0); + this.setState({ newslettersCount: total }); + } + checkMailerStatus(state); + checkCronStatus(state); + }} + /> + )} ); } diff --git a/assets/js/src/newsletters/listings/welcome.jsx b/assets/js/src/newsletters/listings/welcome.jsx index 4d1f544f70..a591507d6e 100644 --- a/assets/js/src/newsletters/listings/welcome.jsx +++ b/assets/js/src/newsletters/listings/welcome.jsx @@ -13,6 +13,7 @@ import { checkCronStatus, checkMailerStatus, } from 'newsletters/listings/utils.jsx'; +import NewsletterTypes from 'newsletters/types.jsx'; import SubscribersLimitNotice from 'notices/subscribers_limit_notice.jsx'; import classNames from 'classnames'; @@ -166,6 +167,13 @@ class NewsletterListWelcome extends React.Component { }).isRequired, }; + constructor(props) { + super(props); + this.state = { + newslettersCount: undefined, + }; + } + updateStatus = (e) => { // make the event persist so that we can still override the selected value // in the ajax callback @@ -359,23 +367,38 @@ class NewsletterListWelcome extends React.Component { - { checkMailerStatus(state); checkCronStatus(state); }} - /> + {this.state.newslettersCount === 0 && ( + type.slug === 'welcome'} + showHeader={false} + /> + )} + {this.state.newslettersCount !== 0 && ( + { + if (!state.loading) { + const total = state.groups.reduce((count, group) => (count + group.count), 0); + this.setState({ newslettersCount: total }); + } + checkMailerStatus(state); + checkCronStatus(state); + }} + /> + )} ); }