Browse Source

HUE-6783 [home] Don't close the modals until all files marked for deletion are actually deleted

Enrico Berti 8 years ago
parent
commit
ec67867

+ 26 - 23
desktop/core/src/desktop/static/desktop/js/document/hueFileEntry.js

@@ -236,6 +236,7 @@ var HueFileEntry = (function () {
     });
 
     self.entriesToDelete = ko.observableArray();
+    self.deletingEntries = ko.observable(false);
 
     self.selected = ko.observable(false);
 
@@ -636,32 +637,34 @@ var HueFileEntry = (function () {
 
   HueFileEntry.prototype.removeDocuments = function (deleteForever) {
     var self = this;
-    if (self.app === 'documents') {
-      if (self.entriesToDelete().indexOf(self) !== -1) {
-        self.activeEntry(self.parent);
-      }
+    if (self.entriesToDelete().indexOf(self) !== -1) {
+      self.activeEntry(self.parent);
+    }
 
-      var deleteNext = function () {
-        if (self.entriesToDelete().length > 0) {
-          var nextUuid = self.entriesToDelete().shift().definition().uuid;
-          self.apiHelper.deleteDocument({
-            uuid: nextUuid,
-            skipTrash: deleteForever,
-            successCallback: function () {
-              deleteNext();
-            },
-            errorCallback: function () {
-              self.activeEntry().load();
-            }
-          });
-        } else {
-          huePubSub.publish('assist.document.refresh');
-          self.activeEntry().load();
-        }
-      };
+    var deleteNext = function () {
+      if (self.entriesToDelete().length > 0) {
+        var nextUuid = self.entriesToDelete().shift().definition().uuid;
+        self.apiHelper.deleteDocument({
+          uuid: nextUuid,
+          skipTrash: deleteForever,
+          successCallback: function () {
+            deleteNext();
+          },
+          errorCallback: function () {
+            self.activeEntry().load();
+            $('#deleteEntriesModal').modal('hide');
+            self.deletingEntries(false);
+          }
+        });
+      } else {
+        self.deletingEntries(false);
+        huePubSub.publish('assist.document.refresh');
+        $('#deleteEntriesModal').modal('hide');
+        self.activeEntry().load();
+      }
     };
+    self.deletingEntries(true);
     deleteNext();
-    $('#deleteEntriesModal').modal('hide');
   };
 
 

+ 1 - 1
desktop/core/src/desktop/templates/document_browser.mako

@@ -285,7 +285,7 @@ from desktop.views import _ko
         <!-- /ko -->
         <!-- ko if: entriesToDelete().length > 0 -->
         <input type="button" class="btn" data-dismiss="modal" value="${ _('Cancel') }">
-        <input type="submit" data-bind="click: function() { if (isTrash() || isTrashed()) { removeDocuments(true) } else { moveToTrash() } }" class="btn btn-danger" value="${_('Yes')}"/>
+        <input type="submit" data-bind="click: function() { if (isTrash() || isTrashed()) { removeDocuments(true) } else { moveToTrash() } }, disable: deletingEntries" class="btn btn-danger disable-feedback" value="${_('Yes')}"/>
         <!-- /ko -->
       </div>
       <!-- /ko -->