diff --git a/dist/converse.js b/dist/converse.js index 889d9966c..cd97f8bd6 100644 --- a/dist/converse.js +++ b/dist/converse.js @@ -64630,25 +64630,18 @@ _converse_core__WEBPACK_IMPORTED_MODULE_0__["default"].plugins.add('converse-dis this.items.fetch(); }, - getIdentity(category, type) { + async getIdentity(category, type) { /* Returns a Promise which resolves with a map indicating - * whether a given identity is provided. + * whether a given identity is provided by this entity. * * Parameters: * (String) category - The identity category * (String) type - The identity type */ - const entity = this; - return new Promise((resolve, reject) => { - function fulfillPromise() { - const model = entity.identities.findWhere({ - 'category': category, - 'type': type - }); - resolve(model); - } - - entity.waitUntilFeaturesDiscovered.then(fulfillPromise).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL)); + await this.waitUntilFeaturesDiscovered; + return this.identities.findWhere({ + 'category': category, + 'type': type }); }, @@ -66590,26 +66583,26 @@ _converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].plugins.add('converse-muc return this.getRoomFeatures(); }, - async getRoomIdentity() { - const _ref = await Promise.all([_converse.api.disco.getIdentity('conference', 'text', this.get('jid')), _converse.api.disco.getFields(this.get('jid'))]), - _ref2 = _slicedToArray(_ref, 2), - identity = _ref2[0], - fields = _ref2[1]; + async getRoomFeatures() { + let identity; + try { + identity = await _converse.api.disco.getIdentity('conference', 'text', this.get('jid')); + } catch (e) { + // Getting the identity probably failed because this room doesn't exist yet. + return _converse.log(e, Strophe.LogLevel.ERROR); + } + + const fields = await _converse.api.disco.getFields(this.get('jid')); this.save({ 'name': identity && identity.get('name'), 'description': _.get(fields.findWhere({ 'var': "muc#roominfo_description" }), 'attributes.value') }); - }, + const features = await _converse.api.disco.getFeatures(this.get('jid')); - async getRoomFeatures() { - // XXX: not sure whet the right place is to get the room identitiy - this.getRoomIdentity(); - - const features = await _converse.api.disco.getFeatures(this.get('jid')), - attrs = _.extend(_.zipObject(_converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].ROOM_FEATURES, _.map(_converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].ROOM_FEATURES, _.stubFalse)), { + const attrs = _.extend(_.zipObject(_converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].ROOM_FEATURES, _.map(_converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].ROOM_FEATURES, _.stubFalse)), { 'fetched': moment().format() }); diff --git a/src/headless/converse-disco.js b/src/headless/converse-disco.js index 1be75bcd3..6303ada44 100644 --- a/src/headless/converse-disco.js +++ b/src/headless/converse-disco.js @@ -64,26 +64,18 @@ converse.plugins.add('converse-disco', { this.items.fetch(); }, - getIdentity (category, type) { + async getIdentity (category, type) { /* Returns a Promise which resolves with a map indicating - * whether a given identity is provided. + * whether a given identity is provided by this entity. * * Parameters: * (String) category - The identity category * (String) type - The identity type */ - const entity = this; - return new Promise((resolve, reject) => { - function fulfillPromise () { - const model = entity.identities.findWhere({ - 'category': category, - 'type': type - }); - resolve(model); - } - entity.waitUntilFeaturesDiscovered - .then(fulfillPromise) - .catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL)); + await this.waitUntilFeaturesDiscovered; + return this.identities.findWhere({ + 'category': category, + 'type': type }); }, diff --git a/src/headless/converse-muc.js b/src/headless/converse-muc.js index 9526a5caf..7b51b37fc 100644 --- a/src/headless/converse-muc.js +++ b/src/headless/converse-muc.js @@ -502,26 +502,25 @@ converse.plugins.add('converse-muc', { return this.getRoomFeatures(); }, - async getRoomIdentity () { - const [identity, fields] = await Promise.all([ - _converse.api.disco.getIdentity('conference', 'text', this.get('jid')), - _converse.api.disco.getFields(this.get('jid')) - ]); + async getRoomFeatures () { + let identity; + try { + identity = await _converse.api.disco.getIdentity('conference', 'text', this.get('jid')); + } catch (e) { + // Getting the identity probably failed because this room doesn't exist yet. + return _converse.log(e, Strophe.LogLevel.ERROR); + } + const fields = await _converse.api.disco.getFields(this.get('jid')); this.save({ 'name': identity && identity.get('name'), 'description': _.get(fields.findWhere({'var': "muc#roominfo_description"}), 'attributes.value') }); - }, - - async getRoomFeatures () { - // XXX: not sure whet the right place is to get the room identitiy - this.getRoomIdentity(); - const features = await _converse.api.disco.getFeatures(this.get('jid')), - attrs = _.extend( - _.zipObject(converse.ROOM_FEATURES, _.map(converse.ROOM_FEATURES, _.stubFalse)), - {'fetched': moment().format()} - ); + const features = await _converse.api.disco.getFeatures(this.get('jid')); + const attrs = _.extend( + _.zipObject(converse.ROOM_FEATURES, _.map(converse.ROOM_FEATURES, _.stubFalse)), + {'fetched': moment().format()} + ); features.each(feature => { const fieldname = feature.get('var'); if (!fieldname.startsWith('muc_')) {