From 4b891ace403995d54bf46e56131c9472ead71b1a Mon Sep 17 00:00:00 2001
From: ubermanu <e.vodor@gmail.com>
Date: Tue, 16 Mar 2021 03:38:50 +0100
Subject: [PATCH] fix muc activity handler

---
 src/plugins/converse-rai.js | 43 +++++++++++--------------------------
 1 file changed, 13 insertions(+), 30 deletions(-)

diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js
index 6d65c12..bbae709 100644
--- a/src/plugins/converse-rai.js
+++ b/src/plugins/converse-rai.js
@@ -88,7 +88,7 @@ converse.plugins.add('converse-rai', {
     },
   },
   initialize() {
-    const { Strophe, _, $pres, u } = converse.env;
+    const { Strophe, _, $pres, u, sizzle } = converse.env;
     const _converse = this._converse;
     const { api } = _converse;
 
@@ -129,45 +129,28 @@ converse.plugins.add('converse-rai', {
       },
     });
 
+    /**
+     * Triggers an event if a jid has activity.
+     *
+     * @param message
+     * @returns {boolean}
+     */
     function mucActivityHandler(message) {
-      console.log('mucActivityHandler', message);
-      const from_jid = message.attributes.from?.nodevalue;
-      const room_jid = from_jid?.split('/')[0];
-      let room = '';
-      let ignore = false;
+      const rai = sizzle(`rai[xmlns="${Strophe.NS.RAI}"]`, message).pop();
 
-      for (let i = 0; i < _converse.chatboxes.models.length; i++) {
-        if (_converse.chatboxes.models[i].id === room_jid) {
-          room = _converse.chatboxes.models[i].id;
-          break;
-        }
-      }
-
-      if (room && from_jid && room_jid) {
-        if (from_jid === room_jid + '/' + room.get('nick')) {
-          ignore = true;
-        }
-      }
-
-      if (message && !ignore) {
-        message.querySelectorAll('activity').forEach(activity => {
-          if (activity && activity.namespaceURI === Strophe.NS.RAI) {
-            const jid = activity.textContent;
-            // TODO: Give the chatroom object instead of the jid
-            api.trigger('chatRoomHasActivity', jid);
-          }
+      if (rai) {
+        rai.querySelectorAll('activity').forEach(activity => {
+          const jid = activity.textContent;
+          api.trigger('chatRoomHasActivity', jid);
         });
       }
 
       return true;
     }
 
-    // TODO: On loading subscribe to all the ChatViews in navigation (into another plugin)
+    // Register our RAI handler
     api.listen.on('connected', () => {
       _converse.connection.addHandler(mucActivityHandler, null, 'message');
     });
-
-    // TODO: Remove
-    // api.listen.on('send', stanza => console.log('send', stanza));
   },
 });
-- 
GitLab