Sfoglia il codice sorgente

Make sure identities resolve before sending them to activity().

David Renshaw 8 anni fa
parent
commit
43c180c247
1 ha cambiato i file con 11 aggiunte e 6 eliminazioni
  1. 11 6
      sandstorm.js

+ 11 - 6
sandstorm.js

@@ -108,12 +108,17 @@ if (isSandstorm && Meteor.isServer) {
     Meteor.wrapAsync((done) => {
       return Promise.all(users.map((user) => {
         return httpBridge.getSavedIdentity(user.id).then((response) => {
-          return { identity: response.identity,
-                   mentioned: !!user.mentioned,
-                   subscribed: !!user.subscribed,
-                 };
-        }).catch(() => {
-          // Ignore identities that fail to restore. Probably they have lost access to the board.
+          // Call getProfile() to make sure that the identity successfully resolves.
+          // (In C++ we would instead call whenResolved() here.)
+          const identity = response.identity;
+          return identity.getProfile().then(() => {
+            return { identity,
+                     mentioned: !!user.mentioned,
+                     subscribed: !!user.subscribed,
+                   };
+          }).catch(() => {
+            // Ignore identities that fail to resolve. Probably they have lost access to the board.
+          });
         });
       })).then((maybeUsers) => {
         const users = maybeUsers.filter((u) => !!u);