Skip to content

Commit bfaa7e4

Browse files
committed
Add roomviews.get API method
1 parent 0fc5112 commit bfaa7e4

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

dist/converse.js

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53246,7 +53246,7 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].plugins
5324653246
this.roomspanel = new _converse.RoomsPanel({
5324753247
'model': new (_converse.RoomsPanelModel.extend({
5324853248
'id': `converse.roomspanel${_converse.bare_jid}`,
53249-
// Required by web storage
53249+
// Required by web storage
5325053250
'browserStorage': new Backbone.BrowserStorage[_converse.config.get('storage')](`converse.roomspanel${_converse.bare_jid}`)
5325153251
}))()
5325253252
});
@@ -55392,6 +55392,43 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].plugins
5539255392
* @memberOf _converse.api
5539355393
*/
5539455394
'roomviews': {
55395+
/**
55396+
* Retrieves a groupchat (aka chatroom) view. The chat should already be open.
55397+
*
55398+
* @method _converse.api.roomviews.get
55399+
* @param {String|string[]} name - e.g. '[email protected]' or
55400+
55401+
* @returns {Backbone.View} Backbone.View representing the groupchat
55402+
*
55403+
* @example
55404+
* // To return a single view, provide the JID of the groupchat
55405+
* const view = _converse.api.roomviews.get('[email protected]');
55406+
*
55407+
* @example
55408+
* // To return an array of views, provide an array of JIDs:
55409+
* const views = _converse.api.roomviews.get(['[email protected]', '[email protected]']);
55410+
*
55411+
* @example
55412+
* // To return views of all open groupchats, call the method without any parameters::
55413+
* const views = _converse.api.roomviews.get();
55414+
*
55415+
*/
55416+
get(jids) {
55417+
if (_.isArray(jids)) {
55418+
const views = _converse.api.chatviews.get(jids);
55419+
55420+
return views.filter(v => v.model.get('type') === _converse.CHATROOMS_TYPE);
55421+
} else {
55422+
const view = _converse.api.chatviews.get(jids);
55423+
55424+
if (view.model.get('type') === _converse.CHATROOMS_TYPE) {
55425+
return view;
55426+
} else {
55427+
return null;
55428+
}
55429+
}
55430+
},
55431+
5539555432
/**
5539655433
* Lets you close open chatrooms.
5539755434
*

src/converse-muc-views.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ converse.plugins.add('converse-muc-views', {
6363
}
6464
this.roomspanel = new _converse.RoomsPanel({
6565
'model': new (_converse.RoomsPanelModel.extend({
66-
'id': `converse.roomspanel${_converse.bare_jid}`, // Required by web storage
66+
'id': `converse.roomspanel${_converse.bare_jid}`, // Required by web storage
6767
'browserStorage': new Backbone.BrowserStorage[_converse.config.get('storage')](
6868
`converse.roomspanel${_converse.bare_jid}`)
6969
}))()
@@ -2083,6 +2083,40 @@ converse.plugins.add('converse-muc-views', {
20832083
* @memberOf _converse.api
20842084
*/
20852085
'roomviews': {
2086+
/**
2087+
* Retrieves a groupchat (aka chatroom) view. The chat should already be open.
2088+
*
2089+
* @method _converse.api.roomviews.get
2090+
* @param {String|string[]} name - e.g. '[email protected]' or
2091+
2092+
* @returns {Backbone.View} Backbone.View representing the groupchat
2093+
*
2094+
* @example
2095+
* // To return a single view, provide the JID of the groupchat
2096+
* const view = _converse.api.roomviews.get('[email protected]');
2097+
*
2098+
* @example
2099+
* // To return an array of views, provide an array of JIDs:
2100+
* const views = _converse.api.roomviews.get(['[email protected]', '[email protected]']);
2101+
*
2102+
* @example
2103+
* // To return views of all open groupchats, call the method without any parameters::
2104+
* const views = _converse.api.roomviews.get();
2105+
*
2106+
*/
2107+
get (jids) {
2108+
if (_.isArray(jids)) {
2109+
const views = _converse.api.chatviews.get(jids);
2110+
return views.filter(v => v.model.get('type') === _converse.CHATROOMS_TYPE)
2111+
} else {
2112+
const view = _converse.api.chatviews.get(jids);
2113+
if (view.model.get('type') === _converse.CHATROOMS_TYPE) {
2114+
return view;
2115+
} else {
2116+
return null;
2117+
}
2118+
}
2119+
},
20862120
/**
20872121
* Lets you close open chatrooms.
20882122
*

0 commit comments

Comments
 (0)