Jelajahi Sumber

Bugfix. Remove highlight from roster item when chatbox is closed.

JC Brand 6 tahun lalu
induk
melakukan
b8107afa0e
2 mengubah file dengan 20 tambahan dan 20 penghapusan
  1. 11 9
      dist/converse.js
  2. 9 11
      src/converse-rosterview.js

+ 11 - 9
dist/converse.js

@@ -59683,12 +59683,10 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_4__["default"].plugins
         if (_converse.isUniView()) {
         if (_converse.isUniView()) {
           const chatbox = _converse.chatboxes.get(this.model.get('jid'));
           const chatbox = _converse.chatboxes.get(this.model.get('jid'));
 
 
-          if (chatbox) {
-            if (chatbox.get('hidden')) {
-              this.el.classList.remove('open');
-            } else {
-              this.el.classList.add('open');
-            }
+          if (chatbox && chatbox.get('hidden') || !chatbox) {
+            this.el.classList.remove('open');
+          } else {
+            this.el.classList.add('open');
           }
           }
         }
         }
       },
       },
@@ -60278,15 +60276,19 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_4__["default"].plugins
     /* -------- Event Handlers ----------- */
     /* -------- Event Handlers ----------- */
 
 
     _converse.api.listen.on('chatBoxesInitialized', () => {
     _converse.api.listen.on('chatBoxesInitialized', () => {
-      _converse.chatboxes.on('change:hidden', chatbox => {
+      function highlightRosterItem(chatbox) {
         const contact = _converse.roster.findWhere({
         const contact = _converse.roster.findWhere({
           'jid': chatbox.get('jid')
           'jid': chatbox.get('jid')
         });
         });
 
 
         if (!_.isUndefined(contact)) {
         if (!_.isUndefined(contact)) {
-          contact.trigger('highlight', contact);
+          contact.trigger('highlight');
         }
         }
-      });
+      }
+
+      _converse.chatboxes.on('destroy', chatbox => highlightRosterItem(chatbox));
+
+      _converse.chatboxes.on('change:hidden', chatbox => highlightRosterItem(chatbox));
     });
     });
 
 
     function initRoster() {
     function initRoster() {

+ 9 - 11
src/converse-rosterview.js

@@ -485,12 +485,10 @@ converse.plugins.add('converse-rosterview', {
                  */
                  */
                 if (_converse.isUniView()) {
                 if (_converse.isUniView()) {
                     const chatbox = _converse.chatboxes.get(this.model.get('jid'));
                     const chatbox = _converse.chatboxes.get(this.model.get('jid'));
-                    if (chatbox) {
-                        if (chatbox.get('hidden')) {
-                            this.el.classList.remove('open');
-                        } else {
-                            this.el.classList.add('open');
-                        }
+                    if ((chatbox && chatbox.get('hidden')) || !chatbox) {
+                        this.el.classList.remove('open');
+                    } else {
+                        this.el.classList.add('open');
                     }
                     }
                 }
                 }
             },
             },
@@ -1009,16 +1007,16 @@ converse.plugins.add('converse-rosterview', {
             }
             }
         });
         });
 
 
-
         /* -------- Event Handlers ----------- */
         /* -------- Event Handlers ----------- */
         _converse.api.listen.on('chatBoxesInitialized', () => {
         _converse.api.listen.on('chatBoxesInitialized', () => {
-
-            _converse.chatboxes.on('change:hidden', (chatbox) => {
+            function highlightRosterItem (chatbox) {
                 const contact = _converse.roster.findWhere({'jid': chatbox.get('jid')});
                 const contact = _converse.roster.findWhere({'jid': chatbox.get('jid')});
                 if (!_.isUndefined(contact)) {
                 if (!_.isUndefined(contact)) {
-                    contact.trigger('highlight', contact);
+                    contact.trigger('highlight');
                 }
                 }
-            });
+            }
+            _converse.chatboxes.on('destroy', chatbox => highlightRosterItem(chatbox));
+            _converse.chatboxes.on('change:hidden', chatbox => highlightRosterItem(chatbox));
         });
         });
 
 
         function initRoster () {
         function initRoster () {