Always show pending/requesting users in roster

Even if show_only_online_users or hide_offline_users
are set, show users that are pending or requesting
This commit is contained in:
Guillermo Bonvehí 2014-12-10 21:32:59 -03:00
parent 303a412b38
commit 2354a27832
2 changed files with 55 additions and 2 deletions

View File

@ -3228,10 +3228,24 @@
showInRoster: function () { showInRoster: function () {
var chatStatus = this.get('chat_status'); var chatStatus = this.get('chat_status');
if (converse.show_only_online_users && chatStatus !== 'online') if (converse.show_only_online_users && chatStatus !== 'online') {
// If pending or requesting, show
if ((this.get('ask') === 'subscribe')
|| (this.get('subscription') === 'from')
|| (this.get('requesting') === true)) {
return true;
}
return false; return false;
if (converse.hide_offline_users && chatStatus === 'offline') }
if (converse.hide_offline_users && chatStatus === 'offline') {
// If pending or requesting, show
if ((this.get('ask') === 'subscribe')
|| (this.get('subscription') === 'from')
|| (this.get('requesting') === true)) {
return true;
}
return false; return false;
}
return true; return true;
} }
}); });

View File

@ -410,6 +410,45 @@
}, converse)); }, converse));
}, converse)); }, converse));
it("are shown in the roster when show_only_online_users", $.proxy(function () {
converse.show_only_online_users = true;
runs(function () {
_addContacts();
});
waits(50);
spyOn(this.rosterview, 'update').andCallThrough();
runs($.proxy(function () {
expect(this.rosterview.$el.is(':visible')).toEqual(true);
expect(this.rosterview.update).toHaveBeenCalled();
}, converse));
waits(300); // Needed, due to debounce
runs ($.proxy(function () {
expect(this.rosterview.$el.find('dd:visible').length).toBe(3);
expect(this.rosterview.$el.find('dt:visible').length).toBe(1);
}, converse));
converse.show_only_online_users = false;
}, converse));
it("are shown in the roster when hide_offline_users", $.proxy(function () {
converse.hide_offline_users = true;
runs(function () {
_addContacts();
});
waits(50);
spyOn(this.rosterview, 'update').andCallThrough();
waits(50);
runs($.proxy(function () {
expect(this.rosterview.$el.is(':visible')).toEqual(true);
expect(this.rosterview.update).toHaveBeenCalled();
}, converse));
waits(300); // Needed, due to debounce
runs ($.proxy(function () {
expect(this.rosterview.$el.find('dd:visible').length).toBe(3);
expect(this.rosterview.$el.find('dt:visible').length).toBe(1);
}, converse));
converse.hide_offline_users = false;
}, converse));
it("can be removed by the user", $.proxy(function () { it("can be removed by the user", $.proxy(function () {
runs($.proxy(function () { runs($.proxy(function () {
_addContacts(); _addContacts();