From 7f1f9ab4eebf91e06c9ae69fa3376b1648edade5 Mon Sep 17 00:00:00 2001
From: ubermanu <e.vodor@gmail.com>
Date: Fri, 19 Mar 2021 14:53:23 +0100
Subject: [PATCH] bugfix: await for subscriptions when connected

---
 src/plugins/converse-rai.js         | 15 ++++++++-------
 src/plugins/sib-subscribe-to-rai.js |  4 ++--
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js
index 7ad059d..3b5fb22 100644
--- a/src/plugins/converse-rai.js
+++ b/src/plugins/converse-rai.js
@@ -108,7 +108,7 @@ converse.plugins.add('converse-rai', {
        * @param {string|Array} jids
        * @returns {void}
        */
-      subscribe(jids) {
+      async subscribe(jids) {
         if (!api.settings.get('muc_subscribe_to_rai')) {
           log.error(`You must enable the 'muc_subscribe_to_rai' option before subscribing to a MUC.`);
           return;
@@ -118,15 +118,16 @@ converse.plugins.add('converse-rai', {
           jids = [jids];
         }
 
-        const muc_domains = jids.map(jid => Strophe.getDomainFromJid(jid));
+        const muc_domains = _.uniq(jids.map(jid => Strophe.getDomainFromJid(jid)));
 
-        _.uniq(muc_domains).forEach(muc_domain => {
-          const rai = $pres({ to: muc_domain, id: u.getUniqueId() }).c('rai', {
+        for (let domain of muc_domains) {
+          const rai = $pres({ to: domain, id: u.getUniqueId() }).c('rai', {
             'xmlns': Strophe.NS.RAI,
           });
-          api.send(rai);
-          log.debug(`Sent RAI stanza for domain "${muc_domain}"`);
-        });
+
+          await _converse.connection.send(rai);
+          log.debug(`Sent RAI stanza for domain "${domain}"`);
+        }
       },
     });
 
diff --git a/src/plugins/sib-subscribe-to-rai.js b/src/plugins/sib-subscribe-to-rai.js
index 100673b..404109f 100644
--- a/src/plugins/sib-subscribe-to-rai.js
+++ b/src/plugins/sib-subscribe-to-rai.js
@@ -57,8 +57,8 @@ converse.plugins.add('sib-subscribe-to-rai', {
       getProjects,
     ])).flat();
 
-    api.listen.on('connected', () => {
-      api.rooms.subscribe(userRooms);
+    api.listen.on('connected', async () => {
+      await api.rooms.subscribe(userRooms);
     });
 
     api.listen.on('chatRoomHasActivity', jid => {
-- 
GitLab