Hide stats link if newsletter not sent yet

[MAILPOET-2218]
This commit is contained in:
Amine Ben hammou
2019-09-09 22:21:48 +01:00
committed by Jack Kitterhing
parent 4ce9f8b47e
commit 3917448ab5

View File

@@ -27,8 +27,11 @@ const messages = {
}; };
const SendingStatus = (props) => { const SendingStatus = (props) => {
const newsletterId = props.match.params.id; const [newsletter, setNewsletter] = React.useState({
const [newsletterSubject, setNewsletterSubject] = React.useState(''); id: props.match.params.id,
subject: '',
sent: false,
});
React.useEffect(() => { React.useEffect(() => {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
@@ -36,19 +39,22 @@ const SendingStatus = (props) => {
endpoint: 'newsletters', endpoint: 'newsletters',
action: 'get', action: 'get',
data: { data: {
id: newsletterId, id: newsletter.id,
}, },
}) })
.done((res) => setNewsletterSubject(res.data.subject)) .done((res) => setNewsletter({
id: newsletter.id,
subject: res.data.subject,
sent: res.data.sent_at !== null,
}))
.fail((res) => MailPoet.Notice.showApiErrorNotice(res)); .fail((res) => MailPoet.Notice.showApiErrorNotice(res));
}, [newsletterId]); }, [newsletter.id]);
return ( return (
<> <>
<h1>{MailPoet.I18n.t('sendingStatusTitle')}</h1> <h1>{MailPoet.I18n.t('sendingStatusTitle')}</h1>
<StatsLink <StatsLink
newsletterId={newsletterId} newsletter={newsletter}
newsletterSubject={newsletterSubject}
/> />
<SendingStatusListing location={props.location} params={props.match.params} /> <SendingStatusListing location={props.location} params={props.match.params} />
</> </>
@@ -99,17 +105,23 @@ SendingStatusListing.propTypes = {
}).isRequired, }).isRequired,
}; };
const StatsLink = ({ newsletterId, newsletterSubject }) => { const StatsLink = ({ newsletter }) => {
if (!newsletterId || !newsletterSubject) return null; if (!newsletter.id || !newsletter.subject || !newsletter.sent) return null;
return <p><Link to={`/stats/${newsletterId}`}>{ newsletterSubject }</Link></p>; return <p><Link to={`/stats/${newsletter.id}`}>{ newsletter.subject }</Link></p>;
}; };
StatsLink.propTypes = { StatsLink.propTypes = {
newsletterId: PropTypes.string, newsletter: PropTypes.shape({
newsletterSubject: PropTypes.string, id: PropTypes.string,
subject: PropTypes.string,
sent: PropTypes.bool,
}),
}; };
StatsLink.defaultProps = { StatsLink.defaultProps = {
newsletterId: null, newsletter: {
newsletterSubject: null, id: null,
subject: null,
sent: false,
},
}; };
const ListingItem = ({ const ListingItem = ({