Commit 01f576e5 authored by JC Brand's avatar JC Brand

Return all rooms or private chat when caling `get` without arguments

parent be122af3
...@@ -572,6 +572,8 @@ You may also provide the fullname. If not present, we use the jid as fullname: ...@@ -572,6 +572,8 @@ You may also provide the fullname. If not present, we use the jid as fullname:
The "chats" grouping The "chats" grouping
-------------------- --------------------
Note, for MUC chat rooms, you need to use the "rooms" grouping instead.
get get
~~~ ~~~
...@@ -653,12 +655,10 @@ get ...@@ -653,12 +655,10 @@ get
Returns an object representing a multi user chat box (room). Returns an object representing a multi user chat box (room).
It takes 3 parameters: 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). * 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`) * boolean, indicating whether the room should be created if not found (default: `false`)
The last two parameters are optional.
.. code-block:: javascript .. code-block:: javascript
var nick = 'dread-pirate-roberts'; var nick = 'dread-pirate-roberts';
......
...@@ -128,8 +128,15 @@ ...@@ -128,8 +128,15 @@
}, },
'get': function (jids) { 'get': function (jids) {
if (typeof jids === "undefined") { if (typeof jids === "undefined") {
converse.log("chats.get: You need to provide at least one JID", "error"); var result = [];
return null; 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") { } else if (typeof jids === "string") {
return converse.wrappedChatBox(converse.chatboxes.getChatBox(jids, true)); return converse.wrappedChatBox(converse.chatboxes.getChatBox(jids, true));
} }
......
...@@ -1432,13 +1432,20 @@ ...@@ -1432,13 +1432,20 @@
return _.map(jids, _.partial(_transform, _, nick, fetcher)); return _.map(jids, _.partial(_transform, _, nick, fetcher));
}, },
'get': function (jids, nick, create) { '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); var fetcher = _.partial(converse.chatboxviews.getChatBox.bind(converse.chatboxviews), _, create);
if (!nick) { if (!nick) {
nick = Strophe.getNodeFromJid(converse.bare_jid); nick = Strophe.getNodeFromJid(converse.bare_jid);
} }
if (typeof jids === "undefined") { if (typeof jids === "string") {
throw new TypeError("rooms.get: You need to provide at least one JID");
} else if (typeof jids === "string") {
return _transform(jids, nick, fetcher); return _transform(jids, nick, fetcher);
} }
return _.map(jids, _.partial(_transform, _, nick, fetcher)); return _.map(jids, _.partial(_transform, _, nick, fetcher));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment