From a890f0b707c39c35c895db926dd4a9cdf97a341f Mon Sep 17 00:00:00 2001
From: "Fabien \"egg\" O'Carroll"
Date: Fri, 7 Apr 2023 12:54:31 +0700
Subject: [PATCH] Updated the posts export button to be a GhTaskButton
refs https://github.com/TryGhost/Team/issues/2935
This allows us to track the state with a loading spinner and a
success/error message on completion. This is expecially important for
larger sites where the download can take a long time, and users are
unsure if something is happening.
---
ghost/admin/app/components/settings/analytics.hbs | 4 +---
ghost/admin/app/components/settings/analytics.js | 9 ++++++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/ghost/admin/app/components/settings/analytics.hbs b/ghost/admin/app/components/settings/analytics.hbs
index 4c808e648f..b82481018e 100644
--- a/ghost/admin/app/components/settings/analytics.hbs
+++ b/ghost/admin/app/components/settings/analytics.hbs
@@ -110,9 +110,7 @@
Download a CSV file of all your post data for easy analysis in one place
-
+
diff --git a/ghost/admin/app/components/settings/analytics.js b/ghost/admin/app/components/settings/analytics.js
index c7f40b0625..34d4ca4fc4 100644
--- a/ghost/admin/app/components/settings/analytics.js
+++ b/ghost/admin/app/components/settings/analytics.js
@@ -2,6 +2,7 @@ import Component from '@glimmer/component';
import ghostPaths from 'ghost-admin/utils/ghost-paths';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
+import {task} from 'ember-concurrency';
export default class Analytics extends Component {
@service settings;
@@ -16,13 +17,15 @@ export default class Analytics extends Component {
this.settings.emailTrackOpens = !this.settings.emailTrackOpens;
}
- @action
- exportData() {
+ @task
+ *exportPostsTask() {
let exportUrl = ghostPaths().url.api('posts/export');
let downloadParams = new URLSearchParams();
downloadParams.set('limit', 'all');
- this.utils.downloadFile(`${exportUrl}?${downloadParams.toString()}`);
+ yield this.utils.fetchAndDownloadFile(`${exportUrl}?${downloadParams.toString()}`);
+
+ return true;
}
@action