Update all vcards that might be associated with an occupant

This commit is contained in:
JC Brand 2018-05-25 15:55:34 +02:00
parent d920c2a86c
commit ab4d0204f3
2 changed files with 12 additions and 6 deletions

View File

@ -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();
}

View File

@ -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!");
}