瀏覽代碼

Update all vcards that might be associated with an occupant

JC Brand 7 年之前
父節點
當前提交
ab4d0204f3
共有 2 個文件被更改,包括 12 次插入6 次删除
  1. 11 5
      src/converse-muc.js
  2. 1 1
      src/converse-vcard.js

+ 11 - 5
src/converse-muc.js

@@ -985,13 +985,18 @@
                 },
 
                 onAvatarChanged () {
-                    const vcard = _converse.vcards.findWhere({'jid': this.get('from')});
-                    if (!vcard) { return; }
-
                     const hash = this.get('image_hash');
-                    if (hash && vcard.get('image_hash') !== hash) {
-                        _converse.api.vcard.update(vcard);
+                    const vcards = [];
+                    if (this.get('jid')) {
+                        vcards.push(this.updateVCard(_converse.vcards.findWhere({'jid': this.get('jid')})));
                     }
+                    vcards.push(this.updateVCard(_converse.vcards.findWhere({'jid': this.get('from')})));
+
+                    _.forEach(_.filter(vcards, undefined), (vcard) => {
+                        if (hash && vcard.get('image_hash') !== hash) {
+                            _converse.api.vcard.update(vcard);
+                        }
+                    });
                 },
 
                 getDisplayName () {
@@ -1032,6 +1037,7 @@
                             // Remove absent occupants who've been removed from
                             // the members lists.
                             const occupant = this.findOccupant({'jid': removed_jid});
+                            if (!occupant) { return; }
                             if (occupant.get('show') === 'offline') {
                                 occupant.destroy();
                             }

+ 1 - 1
src/converse-vcard.js

@@ -142,7 +142,7 @@
                         if (_.isString(model)) {
                             return getVCard(_converse, model);
                         } else if (!model.get('vcard_updated') || force) {
-                            const jid = model.get('jid') || model.get('muc_jid');
+                            const jid = model.get('jid');
                             if (!jid) {
                                 throw new Error("No JID to get vcard for!");
                             }