فهرست منبع

Merge pull request #287 from gbonvehi/fix-pending-not-showing

Always show pending/requesting users in roster
JC Brand 10 سال پیش
والد
کامیت
cb09801f65
2فایلهای تغییر یافته به همراه47 افزوده شده و 3 حذف شده
  1. 9 3
      converse.js
  2. 38 0
      spec/controlbox.js

+ 9 - 3
converse.js

@@ -3228,10 +3228,16 @@
 
             showInRoster: function () {
                 var chatStatus = this.get('chat_status');
-                if (converse.show_only_online_users && chatStatus !== 'online')
-                    return false;
-                if (converse.hide_offline_users && chatStatus === 'offline')
+                if ((converse.show_only_online_users && chatStatus !== 'online')
+                    || (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 true;
             }
         });

+ 38 - 0
spec/controlbox.js

@@ -410,6 +410,44 @@
                 }, 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();
+                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 () {
                 runs($.proxy(function () {
                     _addContacts();