From 9701fb8388932dc9f84d75b4d95e571f424dafc3 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sun, 21 Nov 2021 07:26:53 +0100
Subject: [PATCH] UX feedback up file upload (show user uploadd document
 immediately as it is available)

---
 app/components/button/upload.js             |  4 ++++
 app/components/commander/action_buttons.hbs |  3 ++-
 app/components/commander/index.hbs          |  1 +
 app/components/commander/index.js           | 12 ++++++++++++
 4 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/app/components/button/upload.js b/app/components/button/upload.js
index 2f10ec2..d0e25d0 100644
--- a/app/components/button/upload.js
+++ b/app/components/button/upload.js
@@ -48,6 +48,10 @@ export default class UploadButtonComponent extends Component {
         node: this.args.node,
         lang: "deu"
       }).then((doc) => {
+        // notify commander component so that it
+        // can already show new document model to the user
+        this.args.onCreateDocumentModel(doc);
+        // continue with actual file upload
         this._uploadFile({doc, file});
       });
 
diff --git a/app/components/commander/action_buttons.hbs b/app/components/commander/action_buttons.hbs
index 037a828..e21ae35 100644
--- a/app/components/commander/action_buttons.hbs
+++ b/app/components/commander/action_buttons.hbs
@@ -37,7 +37,8 @@
   {{else}}
     {{! No nodes are currently selected }}
     <Button::Upload
-      @node={{@node}} />
+      @node={{@node}}
+      @onCreateDocumentModel={{@onCreateDocumentModel}} />
 
     <button
       class="btn btn-success"
diff --git a/app/components/commander/index.hbs b/app/components/commander/index.hbs
index 39bd354..f7c8281 100644
--- a/app/components/commander/index.hbs
+++ b/app/components/commander/index.hbs
@@ -4,6 +4,7 @@
       @openNewFolderModal={{this.openNewFolderModal}}
       @openRenameModal={{this.openRenameModal}}
       @openConfirmDeletionModal={{this.openConfirmDeletionModal}}
+      @onCreateDocumentModel={{this.onCreateDocumentModel}}
       @selectedNodes={{this.selected_nodes}}
       @node={{@node}} />
 
diff --git a/app/components/commander/index.js b/app/components/commander/index.js
index 4821c48..d8cf35a 100644
--- a/app/components/commander/index.js
+++ b/app/components/commander/index.js
@@ -70,6 +70,18 @@ export default class CommanderComponent extends Component {
     this.__deleted_records = deleted_records;
   }
 
+  @action
+  onCreateDocumentModel(new_record) {
+    /*
+    Invoked by Upload component when new document model was created.
+
+    Note that at this point in time, document's model is created
+    on serverside, however file was not (or have not been?) uploaded yet.
+    */
+    this.new_records.push(new_record);
+    this.__new_record = new_record; // workaround of ember bug
+  }
+
   @action
   onViewModeChange(new_view_mode) {
     this.view_mode = new_view_mode;
-- 
GitLab