From d2a44c4c1802352e11f7c158783db7d4df96a277 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Mon, 29 Jan 2018 11:17:06 +0100 Subject: [PATCH] Fixes #1003 Don't list MUC domain in rooms list. --- CHANGES.md | 1 + src/converse-muc.js | 37 +++++++++++++++++++++++-------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 9d08455c5..1db9becb4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,7 @@ - #993 `moment.format` is not a function error when sending a message. - #994 TypeError when using the `user.login` API. - #995 `ChildNode.replaceWith` is not available in Internet Explorer or Safari. Use `Node.replaceChild` instead. +- #1003 Don't list MUC domain in rooms list. ## 3.3.1 (2018-01-18) diff --git a/src/converse-muc.js b/src/converse-muc.js index ac065bd91..56ac373d3 100644 --- a/src/converse-muc.js +++ b/src/converse-muc.js @@ -1241,6 +1241,7 @@ // so we don't send out a presence stanza again. return this; } + const stanza = $pres({ 'from': _converse.connection.jid, 'to': this.getRoomJIDAndNick(nick) @@ -2649,6 +2650,26 @@ this.removeSpinner(); }, + roomStanzaItemToHTMLElement (room) { + if (!u.isValidJID(room.getAttribute('jid'), '@')) { + // Some XMPP servers return the MUC service in + // the list of rooms (see #1003). + return null; + } + const name = Strophe.unescapeNode( + room.getAttribute('name') || + room.getAttribute('jid') + ); + const div = document.createElement('div'); + div.innerHTML = tpl_room_item({ + 'name': name, + 'jid': room.getAttribute('jid'), + 'open_title': __('Click to open this room'), + 'info_title': __('Show more information on this room') + }); + return div.firstChild; + }, + onRoomsFound (iq) { /* Handle the IQ stanza returned from the server, containing * all its public rooms. @@ -2661,21 +2682,9 @@ available_chatrooms.innerHTML = tpl_rooms_results({ 'feedback_text': __('Rooms found') }); - const div = document.createElement('div'); const fragment = document.createDocumentFragment(); - for (let i=0; i fragment.appendChild(child)); available_chatrooms.appendChild(fragment); const input_el = this.el.querySelector('input#show-rooms'); input_el.classList.remove('hidden')