Avoid duplicating entities

This commit is contained in:
JC Brand 2018-06-07 15:27:11 +02:00
parent 6126781d83
commit 5954cd8f29
3 changed files with 23 additions and 12 deletions

16
dist/converse.js vendored
View File

@ -66487,9 +66487,15 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
const jid = item.getAttribute('jid'); const jid = item.getAttribute('jid');
if (_.isUndefined(this.items.get(jid))) { if (_.isUndefined(this.items.get(jid))) {
this.items.create({ const entity = _converse.disco_entities.get(jid);
'jid': jid
}); if (entity) {
this.items.add(entity);
} else {
this.items.create({
'jid': jid
});
}
} }
}); });
}, },
@ -66941,9 +66947,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
* (String) entity_jid - The JID of the entity which might have the identity * (String) entity_jid - The JID of the entity which might have the identity
*/ */
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
_converse.api.waitUntil('discoInitialized').then(() => { _converse.api.disco.entities.get(entity_jid, true).then(entity => resolve(entity.getIdentity(category, type)));
_converse.api.disco.entities.get(entity_jid, true).then(entity => resolve(entity.getIdentity(category, type)));
});
}).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL)); }).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
} }

View File

@ -14,7 +14,11 @@
describe("Whenever converse.js queries a server for its features", function () { describe("Whenever converse.js queries a server for its features", function () {
it("stores the features it receives", mock.initConverseWithAsync(function (done, _converse) { it("stores the features it receives",
mock.initConverseWithPromises(
null, ['discoInitialized'], {},
function (done, _converse) {
var IQ_stanzas = _converse.connection.IQ_stanzas; var IQ_stanzas = _converse.connection.IQ_stanzas;
var IQ_ids = _converse.connection.IQ_ids; var IQ_ids = _converse.connection.IQ_ids;
test_utils.waitUntil(function () { test_utils.waitUntil(function () {

View File

@ -138,7 +138,12 @@
} }
const jid = item.getAttribute('jid'); const jid = item.getAttribute('jid');
if (_.isUndefined(this.items.get(jid))) { if (_.isUndefined(this.items.get(jid))) {
this.items.create({'jid': jid}); const entity = _converse.disco_entities.get(jid);
if (entity) {
this.items.add(entity);
} else {
this.items.create({'jid': jid});
}
} }
}); });
}, },
@ -514,10 +519,8 @@
* (String) entity_jid - The JID of the entity which might have the identity * (String) entity_jid - The JID of the entity which might have the identity
*/ */
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
_converse.api.waitUntil('discoInitialized').then(() => { _converse.api.disco.entities.get(entity_jid, true)
_converse.api.disco.entities.get(entity_jid, true) .then((entity) => resolve(entity.getIdentity(category, type)));
.then((entity) => resolve(entity.getIdentity(category, type)));
})
}).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL)); }).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
} }
} }