diff --git a/src/plugins/muc-views/modals/muc-list.js b/src/plugins/muc-views/modals/muc-list.js index 2dd37f560e..cd9844eb03 100644 --- a/src/plugins/muc-views/modals/muc-list.js +++ b/src/plugins/muc-views/modals/muc-list.js @@ -86,7 +86,7 @@ export default class MUCListModal extends BaseModal { 'server_placeholder': this.model.get('muc_domain') || __('conference.example.org'), 'items': this.items, 'loading_items': this.loading_items, - 'openRoom': ev => this.openRoom(ev), + 'openItem': ev => this.openItem(ev), 'setDomainFromEvent': ev => this.setDomainFromEvent(ev), 'submitForm': ev => this.showRooms(ev), 'toggleRoomInfo': ev => this.toggleRoomInfo(ev) @@ -97,12 +97,31 @@ export default class MUCListModal extends BaseModal { return __('Query for Groupchats'); } - openRoom (ev) { + openRoom (jid, name) { + this.modal.hide(); + api.rooms.open(jid, {'name': name}, true); + } + + onInfoReceived (iq, jid, name) { + const identity = sizzle('query identity', iq).pop(); + if (identity.getAttribute('category') === 'conference') { + this.openRoom(jid, name); + } else { + this.model.setDomain(jid); + } + } + + openItem (ev) { ev.preventDefault(); const jid = ev.target.getAttribute('data-room-jid'); const name = ev.target.getAttribute('data-room-name'); - this.modal.hide(); - api.rooms.open(jid, {'name': name}, true); + const iq = $iq({ + 'to': this.model.get('muc_domain'), + 'from': api.connection.get().jid, + 'type': "get" + }).c("query", {xmlns: Strophe.NS.DISCO_INFO}); + api.sendIQ(iq) + .then(iq => this.onInfoReceived(iq, jid, name)) } toggleRoomInfo (ev) { @@ -111,6 +130,9 @@ export default class MUCListModal extends BaseModal { } onDomainChange () { + this.querySelector('.form-control').value = this.model.get('muc_domain'); + this.items = []; + this.model.save('feedback_text', ''); api.settings.get('auto_list_rooms') && this.updateRoomsList(); } diff --git a/src/plugins/muc-views/templates/muc-list.js b/src/plugins/muc-views/templates/muc-list.js index b1231e1071..bfa6d2db02 100644 --- a/src/plugins/muc-views/templates/muc-list.js +++ b/src/plugins/muc-views/templates/muc-list.js @@ -34,7 +34,7 @@ const tplItem = (o, item) => {
  • + + ${i18n_title_list_rooms} + `, + ]; return html`