Commit 4026248c authored by JC Brand's avatar JC Brand

converse-muc: Fixes concerning room occupants.

- Fixed a sessionStorage caching bug caused by putting the nickname (which is
  liable to change) in the cache key.
- Clear the occupants sessionStorage when closing a chat room.
parent 69e20682
...@@ -304,7 +304,7 @@ ...@@ -304,7 +304,7 @@
return converse.chatboxviews.showChat( return converse.chatboxviews.showChat(
_.extend(settings, { _.extend(settings, {
'type': 'chatroom', 'type': 'chatroom',
'affiliation': undefined 'affiliation': null
}) })
); );
}; };
...@@ -338,14 +338,8 @@ ...@@ -338,14 +338,8 @@
this.model.on('change:affiliation', this.renderHeading, this); this.model.on('change:affiliation', this.renderHeading, this);
this.model.on('change:name', this.renderHeading, this); this.model.on('change:name', this.renderHeading, this);
this.occupantsview = new converse.ChatRoomOccupantsView({ this.createOccupantsView();
model: new converse.ChatRoomOccupants({nick: this.model.get('nick')})
});
var id = b64_sha1('converse.occupants'+converse.bare_jid+this.model.get('id')+this.model.get('nick'));
this.occupantsview.model.browserStorage = new Backbone.BrowserStorage.session(id);
this.occupantsview.chatroomview = this;
this.render(); this.render();
this.occupantsview.model.fetch({add:true});
var nick = this.model.get('nick'); var nick = this.model.get('nick');
if (!nick) { if (!nick) {
this.checkForReservedNick(); this.checkForReservedNick();
...@@ -363,6 +357,19 @@ ...@@ -363,6 +357,19 @@
converse.emit('chatRoomOpened', this); converse.emit('chatRoomOpened', this);
}, },
createOccupantsView: function () {
/* Create the ChatRoomOccupantsView Backbone.View
*/
this.occupantsview = new converse.ChatRoomOccupantsView({
model: new converse.ChatRoomOccupants()
});
var id = b64_sha1('converse.occupants'+converse.bare_jid+this.model.get('jid'));
this.occupantsview.model.browserStorage = new Backbone.BrowserStorage.session(id);
this.occupantsview.chatroomview = this;
this.occupantsview.render();
this.occupantsview.model.fetch({add:true});
},
insertIntoDOM: function () { insertIntoDOM: function () {
var view = converse.chatboxviews.get("controlbox"); var view = converse.chatboxviews.get("controlbox");
if (view) { if (view) {
...@@ -411,7 +418,7 @@ ...@@ -411,7 +418,7 @@
'show_toolbar': converse.show_toolbar, 'show_toolbar': converse.show_toolbar,
'label_message': __('Message') 'label_message': __('Message')
})) }))
.append(this.occupantsview.render().$el); .append(this.occupantsview.$el);
this.renderToolbar(tpl_chatroom_toolbar); this.renderToolbar(tpl_chatroom_toolbar);
this.$content = this.$el.find('.chat-content'); this.$content = this.$el.find('.chat-content');
} }
...@@ -842,6 +849,10 @@ ...@@ -842,6 +849,10 @@
* (String) exit_msg: Optional message to indicate your * (String) exit_msg: Optional message to indicate your
* reason for leaving. * reason for leaving.
*/ */
this.occupantsview.model.reset();
this.occupantsview.model.browserStorage._clear();
delete this.occupantsview;
if (!converse.connection.connected) { if (!converse.connection.connected) {
// Don't send out a stanza if we're not connected. // Don't send out a stanza if we're not connected.
this.cleanup(); this.cleanup();
...@@ -1647,8 +1658,6 @@ ...@@ -1647,8 +1658,6 @@
'label_occupants': __('Occupants') 'label_occupants': __('Occupants')
}) })
); );
// TODO: don't allow the widget if members-only room and
// not room owner.
if (converse.allow_muc_invitations) { if (converse.allow_muc_invitations) {
return this.initInviteWidget(); return this.initInviteWidget();
} }
......
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