2
0
Эх сурвалжийг харах

Fixes #1089. When filtering by `online`, show all non-offline users

JC Brand 5 жил өмнө
parent
commit
ea54644a45

+ 3 - 2
CHANGES.md

@@ -3,8 +3,9 @@
 ## 6.0.0 (Unreleased)
 ## 6.0.0 (Unreleased)
 
 
 - #129: Add support for XEP-0156: Disovering Alternative XMPP Connection Methods. Only XML is supported for now.
 - #129: Add support for XEP-0156: Disovering Alternative XMPP Connection Methods. Only XML is supported for now.
-- #1691 Fix `collection.chatbox is undefined` errors
-- #1733 New message notifications for a minimized chat stack on top of each other
+- #1089: When filtering the roster for `online` users, show all non-offline users.
+- #1691: Fix `collection.chatbox is undefined` errors
+- #1733: New message notifications for a minimized chat stack on top of each other
 - Prevent editing of sent file uploads.
 - Prevent editing of sent file uploads.
 - Initial support for sending custom emojis. Currently only between Converse
 - Initial support for sending custom emojis. Currently only between Converse
   instances. Still working out a wire protocol for compatibility with other clients.
   instances. Still working out a wire protocol for compatibility with other clients.

+ 19 - 15
src/converse-rosterview.js

@@ -593,13 +593,14 @@ converse.plugins.add('converse-rosterview', {
                 return u.slideIn(this.contacts_el);
                 return u.slideIn(this.contacts_el);
             },
             },
 
 
+            /* Given a list of contacts, make sure they're filtered out
+             * (aka hidden) and that all other contacts are visible.
+             * If all contacts are hidden, then also hide the group title.
+             * @private
+             * @method _converse.RosterGroupView#filterOutContacts
+             * @param { Array } contacts
+             */
             filterOutContacts (contacts=[]) {
             filterOutContacts (contacts=[]) {
-                /* Given a list of contacts, make sure they're filtered out
-                 * (aka hidden) and that all other contacts are visible.
-                 *
-                 * If all contacts are hidden, then also hide the group
-                 * title.
-                 */
                 let shown = 0;
                 let shown = 0;
                 this.model.contacts.forEach(contact => {
                 this.model.contacts.forEach(contact => {
                     const contact_view = this.get(contact.get('id'));
                     const contact_view = this.get(contact.get('id'));
@@ -617,10 +618,15 @@ converse.plugins.add('converse-rosterview', {
                 }
                 }
             },
             },
 
 
+            /**
+             * Given the filter query "q" and the filter type "type",
+             * return a list of contacts that need to be filtered out.
+             * @private
+             * @method _converse.RosterGroupView#getFilterMatches
+             * @param { String } q - The filter query
+             * @param { String } type - The filter type
+             */
             getFilterMatches (q, type) {
             getFilterMatches (q, type) {
-                /* Given the filter query "q" and the filter type "type",
-                 * return a list of contacts that need to be filtered out.
-                 */
                 if (q.length === 0) {
                 if (q.length === 0) {
                     return [];
                     return [];
                 }
                 }
@@ -631,15 +637,13 @@ converse.plugins.add('converse-rosterview', {
                         // When filtering by chat state, we still want to
                         // When filtering by chat state, we still want to
                         // show requesting contacts, even though they don't
                         // show requesting contacts, even though they don't
                         // have the state in question.
                         // have the state in question.
-                        matches = this.model.contacts.filter(
-                            (contact) => !_.includes(contact.presence.get('show'), q) && !contact.get('requesting')
-                        );
+                        matches = this.model.contacts.filter(c => !_.includes(c.presence.get('show'), q) && !c.get('requesting'));
                     } else if (q === 'unread_messages') {
                     } else if (q === 'unread_messages') {
                         matches = this.model.contacts.filter({'num_unread': 0});
                         matches = this.model.contacts.filter({'num_unread': 0});
+                    } else if (q === 'online') {
+                        matches = this.model.contacts.filter(c => ["offline", "unavailable"].includes(c.presence.get('show')));
                     } else {
                     } else {
-                        matches = this.model.contacts.filter(
-                            (contact) => !_.includes(contact.presence.get('show'), q)
-                        );
+                        matches = this.model.contacts.filter(c => !_.includes(c.presence.get('show'), q));
                     }
                     }
                 } else  {
                 } else  {
                     matches = this.model.contacts.filter((contact) => {
                     matches = this.model.contacts.filter((contact) => {

+ 1 - 1
webpack.html

@@ -29,7 +29,7 @@
         muc_domain: 'conference.chat.example.org',
         muc_domain: 'conference.chat.example.org',
         muc_respect_autojoin: true,
         muc_respect_autojoin: true,
         password: 'secret',
         password: 'secret',
-        view_mode: 'overlayed',
+        view_mode: 'fullscreen',
         websocket_url: 'ws://chat.example.org:5380/xmpp-websocket',
         websocket_url: 'ws://chat.example.org:5380/xmpp-websocket',
         whitelisted_plugins: ['converse-debug'],
         whitelisted_plugins: ['converse-debug'],
     });
     });