Fixed a timing issue with keepalive.
When loading a page with an existing session, the roster view's elements were being added too early, resulting in event handlers not being properly registered.
This commit is contained in:
parent
95a77e3f92
commit
bab04a4d97
79
converse.js
79
converse.js
@ -667,14 +667,6 @@
|
||||
this.features = new this.Features();
|
||||
this.enableCarbons();
|
||||
this.initStatus($.proxy(function () {
|
||||
this.roster = new converse.RosterContacts();
|
||||
this.roster.browserStorage = new Backbone.BrowserStorage[this.storage](
|
||||
b64_sha1('converse.contacts-'+this.bare_jid));
|
||||
|
||||
var rostergroups = new this.RosterGroups();
|
||||
rostergroups.browserStorage = new Backbone.BrowserStorage[this.storage](
|
||||
b64_sha1('converse.roster.groups'+this.bare_jid));
|
||||
this.rosterview = new this.RosterView({model: rostergroups});
|
||||
|
||||
this.chatboxes.onConnected();
|
||||
this.connection.roster.get(function () {});
|
||||
@ -1623,6 +1615,21 @@
|
||||
initialize: function (cfg) {
|
||||
cfg.$parent.append(this.$el);
|
||||
this.$tabs = cfg.$parent.parent().find('#controlbox-tabs');
|
||||
this.initRoster();
|
||||
},
|
||||
|
||||
initRoster: function () {
|
||||
/* We initialize the roster, which will appear inside the
|
||||
* Contacts Panel.
|
||||
*/
|
||||
converse.roster = new converse.RosterContacts();
|
||||
converse.roster.browserStorage = new Backbone.BrowserStorage[converse.storage](
|
||||
b64_sha1('converse.contacts-'+converse.bare_jid));
|
||||
var rostergroups = new converse.RosterGroups();
|
||||
rostergroups.browserStorage = new Backbone.BrowserStorage[converse.storage](
|
||||
b64_sha1('converse.roster.groups'+converse.bare_jid));
|
||||
converse.rosterview = new converse.RosterView({model: rostergroups});
|
||||
converse.rosterview.render().fetch().update();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
@ -1656,7 +1663,6 @@
|
||||
this.$el.html(widgets);
|
||||
this.$el.find('.search-xmpp ul').append(markup);
|
||||
this.$el.append(converse.rosterview.$el);
|
||||
converse.rosterview.update(); // Will render live filter if needed.
|
||||
return this;
|
||||
},
|
||||
|
||||
@ -3622,6 +3628,16 @@
|
||||
return this;
|
||||
},
|
||||
|
||||
addContact: function (contact) {
|
||||
var view = new converse.RosterContactView({model: contact});
|
||||
this.add(contact.get('id'), view);
|
||||
view = this.positionContact(contact).render();
|
||||
if (this.model.get('state') === CLOSED) {
|
||||
view.$el.hide();
|
||||
}
|
||||
this.$el.show();
|
||||
},
|
||||
|
||||
positionContact: function (contact) {
|
||||
/* Place the contact's DOM element in the correct alphabetical
|
||||
* position amongst the other contacts in this group.
|
||||
@ -3703,16 +3719,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
addContact: function (contact) {
|
||||
var view = new converse.RosterContactView({model: contact});
|
||||
this.add(contact.get('id'), view);
|
||||
view = this.positionContact(contact).render();
|
||||
if (this.model.get('state') === CLOSED) {
|
||||
view.$el.hide();
|
||||
}
|
||||
this.$el.show();
|
||||
},
|
||||
|
||||
onContactGroupChange: function (contact) {
|
||||
var in_this_group = _.contains(contact.get('groups'), this.model.get('name'));
|
||||
var cid = contact.get('id');
|
||||
@ -3774,12 +3780,16 @@
|
||||
converse.roster.on("remove", this.update, this);
|
||||
this.model.on("add", this.onGroupAdd, this);
|
||||
this.model.on("reset", this.reset, this);
|
||||
this.render();
|
||||
this.model.fetch({
|
||||
silent: true,
|
||||
success: $.proxy(this.positionFetchedGroups, this)
|
||||
});
|
||||
converse.roster.fetch({add: true});
|
||||
},
|
||||
|
||||
update: function () {
|
||||
// XXX: Is this still being used/valid?
|
||||
var $count = $('#online-count');
|
||||
$count.text('('+converse.roster.getNumOnlineContacts()+')');
|
||||
if (!$count.is(':visible')) {
|
||||
$count.show();
|
||||
}
|
||||
return this.showHideFilter();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
@ -3791,6 +3801,15 @@
|
||||
return this;
|
||||
},
|
||||
|
||||
fetch: function () {
|
||||
this.model.fetch({
|
||||
silent: true,
|
||||
success: $.proxy(this.positionFetchedGroups, this)
|
||||
});
|
||||
converse.roster.fetch({add: true});
|
||||
return this;
|
||||
},
|
||||
|
||||
changeFilterType: function (ev) {
|
||||
if (ev && ev.preventDefault) { ev.preventDefault(); }
|
||||
this.clearFilter();
|
||||
@ -3864,16 +3883,6 @@
|
||||
return this;
|
||||
},
|
||||
|
||||
update: function () {
|
||||
// XXX: Is this still being used/valid?
|
||||
var $count = $('#online-count');
|
||||
$count.text('('+converse.roster.getNumOnlineContacts()+')');
|
||||
if (!$count.is(':visible')) {
|
||||
$count.show();
|
||||
}
|
||||
return this.showHideFilter();
|
||||
},
|
||||
|
||||
reset: function () {
|
||||
converse.roster.reset();
|
||||
this.removeAll();
|
||||
|
Loading…
Reference in New Issue
Block a user