diff --git a/assets/js/src/newsletters/send.jsx b/assets/js/src/newsletters/send.jsx index 6913a901bf..418eacecde 100644 --- a/assets/js/src/newsletters/send.jsx +++ b/assets/js/src/newsletters/send.jsx @@ -33,6 +33,7 @@ const NewsletterSend = createReactClass({ // eslint-disable-line react/prefer-es fields: [], item: {}, loading: true, + thumbnailPromise: null, }; }, @@ -63,6 +64,10 @@ const NewsletterSend = createReactClass({ // eslint-disable-line react/prefer-es } }, + getThumbnailPromise: function getThumbnailPromise(url) { + return this.state.thumbnailPromise ? this.state.thumbnailPromise : fromUrl(url); + }, + isValid: function isValid() { return jQuery('#mailpoet_newsletter').parsley().isValid(); }, @@ -78,10 +83,12 @@ const NewsletterSend = createReactClass({ // eslint-disable-line react/prefer-es id, }, }).done((response) => { + const thumbnailPromise = response.data.status === 'draft' ? this.getThumbnailPromise(response.meta.preview_url) : null; this.setState({ loading: false, item: response.data, fields: this.getFieldsByNewsletter(response.data), + thumbnailPromise, }); }).fail(() => { this.setState({ @@ -94,7 +101,8 @@ const NewsletterSend = createReactClass({ // eslint-disable-line react/prefer-es }, saveTemplate: function saveTemplate(response, done) { - fromUrl(response.meta.preview_url) + const thumbnailPromise = this.getThumbnailPromise(response.meta.preview_url); + thumbnailPromise .then((thumbnail) => { MailPoet.Ajax.post({ api_version: window.mailpoet_api_version, diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index 37272ffcfa..01654261ae 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -66,10 +66,16 @@ class Newsletters extends APIEndpoint { $newsletter = $newsletter ->withSegments() ->withOptions() - ->withSendingQueue() - ->asArray(); - $newsletter = $this->wp->applyFilters('mailpoet_api_newsletters_get_after', $newsletter); - return $this->successResponse($newsletter); + ->withSendingQueue(); + + $preview_url = NewsletterUrl::getViewInBrowserUrl( + NewsletterUrl::TYPE_LISTING_EDITOR, + $newsletter, + Subscriber::getCurrentWPUser() + ); + + $newsletter = $this->wp->applyFilters('mailpoet_api_newsletters_get_after', $newsletter->asArray()); + return $this->successResponse($newsletter, ['preview_url' => $preview_url]); } }