diff --git a/ghost/admin/app/services/theme-management.js b/ghost/admin/app/services/theme-management.js index 3d5dfd8897..c37f99a438 100644 --- a/ghost/admin/app/services/theme-management.js +++ b/ghost/admin/app/services/theme-management.js @@ -30,13 +30,26 @@ export default class ThemeManagementService extends Service { allPosts = this.store.peekAll('post'); - availablePreviewTypes = [{ - name: 'homepage', - label: 'Homepage' - }, { - name: 'post', - label: 'Post' - }]; + get availablePreviewTypes() { + const previewTypes = [{ + name: 'homepage', + label: 'Homepage' + }]; + + // in case we haven't loaded any posts so far + if (!this.latestPublishedPost) { + this.loadLastPostTask.perform(); + } + + if (this.latestPublishedPost) { + previewTypes.push({ + name: 'post', + label: 'Post' + }); + } + + return previewTypes; + } get latestPublishedPost() { return this.allPosts.toArray().filterBy('status', 'published').sort((a, b) => { @@ -170,6 +183,11 @@ export default class ThemeManagementService extends Service { } } + @task + *loadLastPostTask() { + yield this.store.query('post', {filter: 'status:published', order: 'published_at DESC', limit: 1}); + } + @task *updatePreviewHtmlTask() { // skip during testing because we don't have mocks for the front-end @@ -182,10 +200,10 @@ export default class ThemeManagementService extends Service { if (this.previewType === 'post') { // in case we haven't loaded any posts so far if (!this.latestPublishedPost) { - yield this.store.query('post', {filter: 'status:published', order: 'published_at DESC', limit: 1}); + this.loadLastPostTask.perform(); } - frontendUrl = this.latestPublishedPost.url; + frontendUrl = this.latestPublishedPost?.url || ''; } const previewResponse = yield this.frontend.fetch(frontendUrl, { diff --git a/ghost/admin/app/templates/settings/announcement-bar/index.hbs b/ghost/admin/app/templates/settings/announcement-bar/index.hbs index 35fcda8ca4..fb815d1300 100644 --- a/ghost/admin/app/templates/settings/announcement-bar/index.hbs +++ b/ghost/admin/app/templates/settings/announcement-bar/index.hbs @@ -2,17 +2,19 @@

Announcement bar

-
- - {{svg-jar "arrow-down-small"}} -
+ {{#if (gt this.themeManagement.availablePreviewTypes.length 1)}} +
+ + {{svg-jar "arrow-down-small"}} +
+ {{/if}}
diff --git a/ghost/admin/app/templates/settings/design/index.hbs b/ghost/admin/app/templates/settings/design/index.hbs index e872a1c704..46eac344f8 100644 --- a/ghost/admin/app/templates/settings/design/index.hbs +++ b/ghost/admin/app/templates/settings/design/index.hbs @@ -2,17 +2,19 @@

Site design

-
- - {{svg-jar "arrow-down-small"}} -
+ {{#if (gt this.themeManagement.availablePreviewTypes.length 1)}} +
+ + {{svg-jar "arrow-down-small"}} +
+ {{/if}}