diff --git a/docs/source/development.rst b/docs/source/development.rst index 2af8556ac..19ba7cc9b 100644 --- a/docs/source/development.rst +++ b/docs/source/development.rst @@ -572,6 +572,8 @@ You may also provide the fullname. If not present, we use the jid as fullname: The "chats" grouping -------------------- +Note, for MUC chat rooms, you need to use the "rooms" grouping instead. + get ~~~ @@ -653,12 +655,10 @@ get Returns an object representing a multi user chat box (room). It takes 3 parameters: -* the room JID +* the room JID (if not specified, all rooms will be returned). * the user's nickname (if not specified, the node part of the user's JID will be used). * boolean, indicating whether the room should be created if not found (default: `false`) -The last two parameters are optional. - .. code-block:: javascript var nick = 'dread-pirate-roberts'; diff --git a/src/converse-api.js b/src/converse-api.js index 326c7a023..a53ac4608 100644 --- a/src/converse-api.js +++ b/src/converse-api.js @@ -128,8 +128,15 @@ }, 'get': function (jids) { if (typeof jids === "undefined") { - converse.log("chats.get: You need to provide at least one JID", "error"); - return null; + var result = []; + converse.chatboxes.each(function (chatbox) { + // FIXME: Leaky abstraction from MUC. We need to add a + // base type for chat boxes, and check for that. + if (chatbox.get('type') !== 'chatroom') { + result.push(converse.wrappedChatBox(chatbox)); + } + }); + return result; } else if (typeof jids === "string") { return converse.wrappedChatBox(converse.chatboxes.getChatBox(jids, true)); } diff --git a/src/converse-muc.js b/src/converse-muc.js index 077e8dbf2..de7e73815 100755 --- a/src/converse-muc.js +++ b/src/converse-muc.js @@ -1432,13 +1432,20 @@ return _.map(jids, _.partial(_transform, _, nick, fetcher)); }, 'get': function (jids, nick, create) { + if (typeof jids === "undefined") { + var result = []; + converse.chatboxes.each(function (chatbox) { + if (chatbox.get('type') === 'chatroom') { + result.push(converse.wrappedChatBox(chatbox)); + } + }); + return result; + } var fetcher = _.partial(converse.chatboxviews.getChatBox.bind(converse.chatboxviews), _, create); if (!nick) { nick = Strophe.getNodeFromJid(converse.bare_jid); } - if (typeof jids === "undefined") { - throw new TypeError("rooms.get: You need to provide at least one JID"); - } else if (typeof jids === "string") { + if (typeof jids === "string") { return _transform(jids, nick, fetcher); } return _.map(jids, _.partial(_transform, _, nick, fetcher));