diff --git a/converse.js b/converse.js
index 4cdd2a954..6d73a45a4 100644
--- a/converse.js
+++ b/converse.js
@@ -162,7 +162,8 @@
this.set({
'user_id' : Strophe.getNodeFromJid(this.get('jid')),
'box_id' : hex_sha1(this.get('jid')),
- 'fullname' : this.get('fullname')
+ 'fullname' : this.get('fullname'),
+ 'portrait_url': this.get('portrait_url')
});
}
});
@@ -396,10 +397,13 @@
}, this);
},
- template: _.template(
+ template: _.template(
'
' +
'' +
@@ -538,7 +542,7 @@
return;
}
}
- xmppchat.chatboxesview.openChat(jid, xmppchat.fullname);
+ xmppchat.chatboxesview.openChat(jid);
}
});
@@ -755,12 +759,14 @@
},
onRoster: function (roster, room) {
- var controlboxview = xmppchat.chatboxesview.views.controlbox;
+ var controlboxview = xmppchat.chatboxesview.views.controlbox,
+ i;
+
if (controlboxview) {
controlboxview.roomspanel.trigger('update-rooms-list');
}
this.$el.find('.participant-list').empty();
- for (var i=0; i<_.size(roster); i++) {
+ for (i=0; i<_.size(roster); i++) {
this.$el.find('.participant-list').append('' + Strophe.unescapeNode(_.keys(roster)[i]) + '');
}
return true;
@@ -792,19 +798,14 @@
that = this;
if (_.indexOf(open_chats, 'controlbox') != -1) {
- this.renderChat('controlbox');
+ this.createChatRoom('controlbox');
}
_.each(open_chats, $.proxy(function (jid) {
if (jid != 'controlbox') {
if (_.str.include(jid, xmppchat.connection.muc_domain)) {
- this.renderChat(jid);
+ this.createChatRoom(jid);
} else {
- // XXX: Can this be optimised somehow? Would be nice to get
- // fullnames from xmppchat.Roster but it's not yet
- // populated at this stage...
- $.getJSON(portal_url + "/xmpp-userinfo?user_id=" + Strophe.getNodeFromJid(jid), function (data) {
- that.renderChat(jid, data.fullname);
- });
+ this.openChat(jid);
}
}
}, this));
@@ -814,7 +815,7 @@
return Strophe.getDomainFromJid(jid) === xmppchat.connection.muc_domain;
},
- renderChat: function (jid, name) {
+ createChatRoom: function (jid, data) {
var box, view;
if (jid === 'controlbox') {
box = new xmppchat.ControlBox({'id': jid, 'jid': jid});
@@ -823,12 +824,12 @@
});
} else {
if (this.isChatRoom(jid)) {
- box = new xmppchat.ChatRoom(jid, xmppchat.fullname.split(' ')[0])
+ box = new xmppchat.ChatRoom(jid, xmppchat.fullname.split(' ')[0]);
view = new xmppchat.ChatRoomView({
'model': box
});
} else {
- box = new xmppchat.ChatBox({'id': jid, 'jid': jid, 'fullname': name});
+ box = new xmppchat.ChatBox({'id': jid, 'jid': jid, 'fullname': data.fullname, 'portrait_url': data.portrait_url});
view = new xmppchat.ChatBoxView({
model: box
});
@@ -847,9 +848,11 @@
}
},
- openChat: function (jid, name) {
+ openChat: function (jid) {
if (!this.model.get(jid)) {
- this.renderChat(jid, name);
+ $.getJSON(portal_url + "/xmpp-userinfo?user_id=" + Strophe.getNodeFromJid(jid), $.proxy(function (data) {
+ view = this.createChatRoom(jid, data);
+ }, this));
} else {
this.showChat(jid);
}
@@ -878,17 +881,12 @@
fullname;
if (!view) {
- if (xmppchat.roster.get(bare_jid)) {
- fullname = xmppchat.roster.get(bare_jid).get('fullname');
- view = this.renderChat(bare_jid, fullname);
- } else {
- $.getJSON(portal_url + "/xmpp-userinfo?user_id=" + Strophe.getNodeFromJid(bare_jid), $.proxy(function (data) {
- view = this.renderChat(bare_jid, data.fullname);
- view.messageReceived(message);
- xmppchat.roster.addResource(bare_jid, resource);
- }, this));
- return;
- }
+ $.getJSON(portal_url + "/xmpp-userinfo?user_id=" + Strophe.getNodeFromJid(bare_jid), $.proxy(function (data) {
+ view = this.createChatRoom(jid, data);
+ view.messageReceived(message);
+ xmppchat.roster.addResource(bare_jid, resource);
+ }, this));
+ return;
} else if (!view.isVisible()) {
this.showChat(bare_jid);
}
@@ -934,7 +932,7 @@
tagName: 'dd',
openChat: function () {
- xmppchat.chatboxesview.openChat(this.model.get('jid'), this.model.get('fullname'));
+ xmppchat.chatboxesview.openChat(this.model.get('jid'));
},
removeContact: function () {