diff --git a/converse.js b/converse.js
index e0a58eb28..f48f44baa 100644
--- a/converse.js
+++ b/converse.js
@@ -348,7 +348,7 @@
};
this.showLoginButton = function () {
- var view = converse.chatboxesview.views.controlbox;
+ var view = converse.chatboxesview.get('controlbox');
if (typeof view.loginpanel !== 'undefined') {
view.loginpanel.showLoginButton();
}
@@ -1759,7 +1759,7 @@
'box_id' : hex_sha1(jid)
});
if (!chatroom.get('connected')) {
- converse.chatboxesview.views[jid].connect(null);
+ converse.chatboxesview.get(jid).connect(null);
}
}
});
@@ -2351,7 +2351,7 @@
onChatRoomRoster: function (roster, room) {
this.renderChatArea();
- var controlboxview = converse.chatboxesview.views.controlbox,
+ var controlboxview = converse.chatboxesview.get('controlbox'),
roster_size = _.size(roster),
$participant_list = this.$el.find('.participant-list'),
participants = [], keys = _.keys(roster), i;
@@ -2466,10 +2466,12 @@
el: '#conversejs',
initialize: function () {
- // boxesviewinit
- this.views = {};
+ var views = {};
+ this.get = function (id) { return views[id]; };
+ this.set = function (id, view) { views[id] = view; };
+
this.model.on("add", function (item) {
- var view = this.views[item.get('id')];
+ var view = this.get(item.get('id'));
if (!view) {
if (item.get('chatroom')) {
view = new converse.ChatRoomView({'model': item});
@@ -2479,7 +2481,7 @@
} else {
view = new converse.ChatBoxView({model: item});
}
- this.views[item.get('id')] = view;
+ this.set(item.get('id'), view);
} else {
delete view.model; // Remove ref to old model to help garbage collection
view.model = item;
diff --git a/spec/chatbox.js b/spec/chatbox.js
index e032af005..2cd5ae389 100644
--- a/spec/chatbox.js
+++ b/spec/chatbox.js
@@ -79,8 +79,8 @@
it("can be closed by clicking a DOM element with class 'close-chatbox-button'", $.proxy(function () {
var chatbox = utils.openChatBoxes(1)[0],
- controlview = this.chatboxesview.views.controlbox, // The controlbox is currently open
- chatview = this.chatboxesview.views[chatbox.get('jid')];
+ controlview = this.chatboxesview.get('controlbox'), // The controlbox is currently open
+ chatview = this.chatboxesview.get(chatbox.get('jid'));
spyOn(chatview, 'closeChat').andCallThrough();
spyOn(controlview, 'closeChat').andCallThrough();
spyOn(converse, 'emit');
@@ -141,7 +141,7 @@
var contact_jid = mock.cur_names[2].replace(' ','.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid);
var chatbox = this.chatboxes.get(contact_jid);
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
expect(chatbox).toBeDefined();
expect(view).toBeDefined();
var $toolbar = view.$el.find('ul.chat-toolbar');
@@ -153,7 +153,7 @@
var contact_jid = mock.cur_names[2].replace(' ','.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid);
var chatbox = this.chatboxes.get(contact_jid);
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
var $toolbar = view.$el.find('ul.chat-toolbar');
var $textarea = view.$el.find('textarea.chat-textarea');
expect($toolbar.children('li.toggle-smiley').length).toBe(1);
@@ -213,7 +213,7 @@
var contact_jid = mock.cur_names[2].replace(' ','.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid);
var chatbox = this.chatboxes.get(contact_jid);
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
var $toolbar = view.$el.find('ul.chat-toolbar');
expect($toolbar.children('li.toggle-otr').length).toBe(1);
// Register spies
@@ -239,7 +239,7 @@
var contact_jid = mock.cur_names[2].replace(' ','.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid);
var chatbox = this.chatboxes.get(contact_jid);
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
var $toolbar = view.$el.find('ul.chat-toolbar');
var callButton = $toolbar.find('.toggle-call');
@@ -278,7 +278,7 @@
runs($.proxy(function () {
// Check that the chatbox and its view now exist
var chatbox = this.chatboxes.get(sender_jid);
- var chatboxview = this.chatboxesview.views[sender_jid];
+ var chatboxview = this.chatboxesview.get(sender_jid);
expect(chatbox).toBeDefined();
expect(chatboxview).toBeDefined();
// Check that the message was received and check the
@@ -311,7 +311,7 @@
var one_day_ago = new Date(new Date().setDate(new Date().getDate()-1));
var message = 'This is a day old message';
var chatbox = this.chatboxes.get(contact_jid);
- var chatboxview = this.chatboxesview.views[contact_jid];
+ var chatboxview = this.chatboxesview.get(contact_jid);
var $chat_content = chatboxview.$el.find('.chat-content');
var msg_obj;
var msg_txt;
@@ -380,7 +380,7 @@
waits(250);
runs(function () {
expect(converse.emit).toHaveBeenCalledWith('onChatBoxFocused', jasmine.any(Object));
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
var message = 'This message is sent from this chatbox';
spyOn(view, 'sendMessage').andCallThrough();
view.$el.find('.chat-textarea').text(message);
@@ -396,7 +396,7 @@
it("are sanitized to prevent Javascript injection attacks", $.proxy(function () {
var contact_jid = mock.cur_names[0].replace(' ','.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid);
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
var message = 'This message contains markup';
spyOn(view, 'sendMessage').andCallThrough();
view.$el.find('.chat-textarea').text(message);
@@ -413,7 +413,7 @@
it("'/clear' can be used to clear messages in a conversation", $.proxy(function () {
spyOn(converse, 'emit');
var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
- var view = this.chatboxesview.views[contact_jid];
+ var view = this.chatboxesview.get(contact_jid);
var message = 'This message is another sent from this chatbox';
// Lets make sure there is at least one message already
// (e.g for when this test is run on its own).
diff --git a/spec/chatroom.js b/spec/chatroom.js
index 14668bef0..91c509b0a 100644
--- a/spec/chatroom.js
+++ b/spec/chatroom.js
@@ -24,7 +24,7 @@
waits(300);
runs(function () {
// Open a new chatroom
- var roomspanel = converse.chatboxesview.views.controlbox.roomspanel;
+ var roomspanel = converse.chatboxesview.get('controlbox').roomspanel;
var $input = roomspanel.$el.find('input.new-chatroom-name');
var $nick = roomspanel.$el.find('input.new-chatroom-nick');
var $server = roomspanel.$el.find('input.new-chatroom-server');
@@ -42,7 +42,7 @@
});
it("shows users currently present in the room", $.proxy(function () {
- var chatroomview = this.chatboxesview.views['lounge@muc.localhost'],
+ var chatroomview = this.chatboxesview.get('lounge@muc.localhost'),
$participant_list;
var roster = {}, room = {}, i;
for (i=0; i-1; i--) {
chatbox = converse.chatboxes.models[i];
- converse.chatboxesview.views[chatbox.get('id')].closeChat();
+ converse.chatboxesview.get(chatbox.get('id')).closeChat();
}
return this;
};
@@ -22,11 +22,11 @@
var i, chatbox, num_chatboxes = converse.chatboxes.models.length;
for (i=num_chatboxes-1; i>-1; i--) {
chatbox = converse.chatboxes.models[i];
- converse.chatboxesview.views[chatbox.get('id')].closeChat();
- converse.chatboxesview.views[chatbox.get('id')].$el.remove();
+ converse.chatboxesview.get(chatbox.get('id')).closeChat();
+ converse.chatboxesview.get(chatbox.get('id')).$el.remove();
}
- converse.chatboxesview.views.controlbox.closeChat();
- converse.chatboxesview.views.controlbox.$el.remove();
+ converse.chatboxesview.get('controlbox').closeChat();
+ converse.chatboxesview.get('controlbox').$el.remove();
return this;
};
@@ -66,13 +66,13 @@
};
utils.openContactsPanel = function () {
- var cbview = converse.chatboxesview.views.controlbox;
+ var cbview = converse.chatboxesview.get('controlbox');
var $tabs = cbview.$el.find('#controlbox-tabs');
$tabs.find('li').first().find('a').click();
};
utils.openRoomsPanel = function () {
- var cbview = converse.chatboxesview.views.controlbox;
+ var cbview = converse.chatboxesview.get('controlbox');
var $tabs = cbview.$el.find('#controlbox-tabs');
$tabs.find('li').last().find('a').click();
};
@@ -91,7 +91,7 @@
};
utils.clearChatBoxMessages = function (jid) {
- var view = converse.chatboxesview.views[jid];
+ var view = converse.chatboxesview.get(jid);
view.$el.find('.chat-content').empty();
view.model.messages.reset().localStorage._clear();
};