From 103d69502d686fc47c5826433456b1c5a7360af5 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sat, 29 Jan 2022 07:44:41 +0100
Subject: [PATCH] downloading an archive with OCRed documents - works!

---
 app/components/button/download.hbs          | 11 +++++++++++
 app/components/commander/action_buttons.hbs | 20 ++++++--------------
 app/components/commander/action_buttons.js  | 11 +++++++++--
 app/components/commander/index.js           |  4 ++--
 4 files changed, 28 insertions(+), 18 deletions(-)
 create mode 100644 app/components/button/download.hbs

diff --git a/app/components/button/download.hbs b/app/components/button/download.hbs
new file mode 100644
index 0000000..8398150
--- /dev/null
+++ b/app/components/button/download.hbs
@@ -0,0 +1,11 @@
+<button
+  class="btn btn-success"
+  {{on "click" @onDownloadNodes}}
+  type="button">
+    {{#if @inProgress }}
+      <Spinner @inProgress={{@inProgress}} />
+    {{else}}
+       <i class="fa fa-download"></i>
+    {{/if}}
+  Download
+</button>
\ No newline at end of file
diff --git a/app/components/commander/action_buttons.hbs b/app/components/commander/action_buttons.hbs
index e4bf903..7a48b35 100644
--- a/app/components/commander/action_buttons.hbs
+++ b/app/components/commander/action_buttons.hbs
@@ -7,13 +7,9 @@
         <i class="fa fa-edit"></i>
       Rename
     </button>
-    <button
-      class="btn btn-success"
-      {{on "click" this.onDownloadNodes}}
-      type="button">
-        <i class="fa fa-download"></i>
-      Download
-    </button>
+    <Button::Download
+      @inProgress={{this.download_in_progress}}
+      @onDownloadNodes={{this.onDownloadNodes}} />
     <button
       class="btn btn-danger mx-5"
       type="button"
@@ -22,13 +18,9 @@
       Delete
     </button>
   {{else if this.multiple_nodes_selected}}
-    <button
-      class="btn btn-success"
-      {{on "click" this.onDownloadNodes}}
-      type="button">
-        <i class="fa fa-download"></i>
-      Download
-    </button>
+    <Button::Download
+      @inProgress={{this.download_in_progress}}
+      @onDownloadNodes={{this.onDownloadNodes}} />
     <button
       class="btn btn-danger mx-5"
       type="button"
diff --git a/app/components/commander/action_buttons.js b/app/components/commander/action_buttons.js
index d0ac8f0..c32c086 100644
--- a/app/components/commander/action_buttons.js
+++ b/app/components/commander/action_buttons.js
@@ -1,5 +1,6 @@
 import Component from '@glimmer/component';
 import { action } from '@ember/object';
+import { tracked } from '@glimmer/tracking';
 
 
 export default class ActionButtonsComponent extends Component {
@@ -11,6 +12,9 @@ export default class ActionButtonsComponent extends Component {
       folder whose content is currenlty being displayed
     `selectedNodes` - array of selected nodes
   */
+  @tracked download_in_progress = false;
+
+
   get one_node_selected() {
     return this.args.selectedNodes.length === 1;
   }
@@ -27,9 +31,12 @@ export default class ActionButtonsComponent extends Component {
   }
 
   @action
-  onDownloadNodes() {
-    this.args.onDownloadNodes(
+  async onDownloadNodes() {
+    this.download_in_progress = true;
+    await this.args.onDownloadNodes(
       this.args.selectedNodes
     );
+    this.download_in_progress = false;
   }
+
 }
diff --git a/app/components/commander/index.js b/app/components/commander/index.js
index bcf6270..902c568 100644
--- a/app/components/commander/index.js
+++ b/app/components/commander/index.js
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
 import { tracked } from '@glimmer/tracking';
 import { A } from '@ember/array';
 import { action } from '@ember/object';
-import { inject as service } from '@ember/service';
+import { service } from '@ember/service';
 
 
 export default class CommanderComponent extends Component {
@@ -180,7 +180,7 @@ export default class CommanderComponent extends Component {
 
   @action
   onDownloadNodes(selected_nodes) {
-    this.requests.downloadNodes(selected_nodes);
+    return this.requests.downloadNodes(selected_nodes);
   }
 
   @action
-- 
GitLab