瀏覽代碼

HUE-6400 [assist] Fix deep loading of S3 paths that has folders on subsequent pages

Johan Ahlen 8 年之前
父節點
當前提交
6458ecb
共有 1 個文件被更改,包括 16 次插入3 次删除
  1. 16 3
      desktop/core/src/desktop/static/desktop/js/assist/assistS3Entry.js

+ 16 - 3
desktop/core/src/desktop/static/desktop/js/assist/assistS3Entry.js

@@ -134,14 +134,21 @@ var AssistS3Entry = (function () {
       return;
     }
 
+    var nextName = folders.shift();
     var findNextAndLoadDeep = function () {
-      var nextName = folders.shift();
       var foundEntry = $.grep(self.entries(), function (entry) {
         return entry.definition.name === nextName && entry.definition.type === 'dir';
       });
+
       if (foundEntry.length === 1) {
         foundEntry[0].loadDeep(folders, callback);
-      } else if (! self.hasErrors()) {
+      } else if (self.hasMorePages) {
+        self.fetchMore(function () {
+          findNextAndLoadDeep();
+        }, function () {
+          callback(self);
+        });
+      } else {
         callback(self);
       }
     };
@@ -180,7 +187,7 @@ var AssistS3Entry = (function () {
     }
   };
 
-  AssistS3Entry.prototype.fetchMore = function () {
+  AssistS3Entry.prototype.fetchMore = function (successCallback, errorCallback) {
     var self = this;
     if (!self.hasMorePages || self.loadingMore()) {
       return;
@@ -206,9 +213,15 @@ var AssistS3Entry = (function () {
           })
         })));
         self.loadingMore(false);
+        if (successCallback) {
+          successCallback();
+        }
       },
       errorCallback: function () {
         self.hasErrors(true);
+        if (errorCallback) {
+          errorCallback();
+        }
       }
     });
   };