소스 검색

HUE-9096 [doc] Fix js exception when opening share modal for an already shared document

Johan Ahlen 5 년 전
부모
커밋
d0dc38224c
2개의 변경된 파일49개의 추가작업 그리고 28개의 파일을 삭제
  1. 31 25
      desktop/core/src/desktop/js/doc/hueDocument.js
  2. 18 3
      desktop/core/src/desktop/js/doc/hueFileEntry.js

+ 31 - 25
desktop/core/src/desktop/js/doc/hueDocument.js

@@ -186,7 +186,7 @@ class HueDocument {
     });
   }
 
-  load(callback) {
+  load(successCallback, errorCallback) {
     const self = this;
     if (self.loading()) {
       return;
@@ -195,43 +195,49 @@ class HueDocument {
     self.loading(true);
     self.hasErrors(false);
 
-    const fetchDocumentsSuccessCallback = data => {
-      const readUsers = data.document.perms.read.users.map(user => user.id);
-      const writeUsers = data.document.perms.write.users.map(user => user.id);
-      const allUsers = readUsers.concat(writeUsers);
-      if (allUsers.length > 0) {
-        apiHelper.fetchUsersByIds({
-          userids: JSON.stringify(allUsers),
-          successCallback: response => {
-            response.users.forEach(user => {
-              // Needed for getting prettyusername of already shared users
-              self.idToUserMap[user.id] = user;
-            });
-            self.definition(data.document);
-          },
-          errorCallback: () => {}
-        });
-      } else {
-        self.definition(data.document);
-      }
-    };
+    const fetchDocumentsSuccessCallback = async data =>
+      new Promise(resolve => {
+        const readUsers = data.document.perms.read.users.map(user => user.id);
+        const writeUsers = data.document.perms.write.users.map(user => user.id);
+        const allUsers = readUsers.concat(writeUsers);
+        if (allUsers.length > 0) {
+          apiHelper.fetchUsersByIds({
+            userids: JSON.stringify(allUsers),
+            successCallback: response => {
+              response.users.forEach(user => {
+                // Needed for getting prettyusername of already shared users
+                self.idToUserMap[user.id] = user;
+              });
+              self.definition(data.document);
+              resolve();
+            },
+            errorCallback: () => {}
+          });
+        } else {
+          self.definition(data.document);
+          resolve();
+        }
+      });
 
     apiHelper
       .fetchDocument({
         uuid: self.fileEntry.definition().uuid
       })
-      .done(data => {
-        fetchDocumentsSuccessCallback(data);
+      .done(async data => {
+        await fetchDocumentsSuccessCallback(data);
         self.loading(false);
         self.loaded(true);
-        if (callback) {
-          callback();
+        if (successCallback) {
+          successCallback(this);
         }
       })
       .fail(() => {
         self.hasErrors(true);
         self.loading(false);
         self.loaded(true);
+        if (errorCallback) {
+          errorCallback();
+        }
       });
   }
 

+ 18 - 3
desktop/core/src/desktop/js/doc/hueFileEntry.js

@@ -410,9 +410,24 @@ class HueFileEntry {
     copyNext();
   }
 
-  loadDocument(callback) {
-    this.document(new HueDocument({ fileEntry: this }));
-    this.document().load(callback);
+  async loadDocument(successCallback, errorCallback) {
+    return new Promise((resolve, reject) => {
+      this.document(new HueDocument({ fileEntry: this }));
+      this.document().load(
+        () => {
+          if (successCallback) {
+            successCallback(this.document());
+          }
+          resolve(this.document());
+        },
+        err => {
+          if (errorCallback) {
+            errorCallback(err);
+          }
+          reject(err);
+        }
+      );
+    });
   }
 
   /**