Browse Source

Wait before firing `roomsAutoJoined` event

JC Brand 4 years ago
parent
commit
9f0dfcdbdb
1 changed files with 13 additions and 14 deletions
  1. 13 14
      src/headless/converse-muc.js

+ 13 - 14
src/headless/converse-muc.js

@@ -2652,25 +2652,24 @@ converse.plugins.add('converse-muc', {
             return api.rooms.get(jid, attrs, true);
         };
 
-        /**
-         * Automatically join groupchats, based on the
+        /* Automatically join groupchats, based on the
          * "auto_join_rooms" configuration setting, which is an array
-         * of strings (groupchat JIDs) or objects (with groupchat JID and other
-         * settings).
+         * of strings (groupchat JIDs) or objects (with groupchat JID and other settings).
          */
-        function autoJoinRooms () {
-            api.settings.get('auto_join_rooms').forEach(groupchat => {
-                if (isString(groupchat)) {
-                    if (_converse.chatboxes.where({'jid': groupchat}).length) {
-                        return;
+        async function autoJoinRooms () {
+            await Promise.all(api.settings.get('auto_join_rooms').map(muc => {
+                if (isString(muc)) {
+                    if (_converse.chatboxes.where({'jid': muc}).length) {
+                        return Promise.resolve();
                     }
-                    api.rooms.open(groupchat);
-                } else if (isObject(groupchat)) {
-                    api.rooms.open(groupchat.jid, clone(groupchat));
+                    return api.rooms.open(muc);
+                } else if (isObject(muc)) {
+                    return api.rooms.open(muc.jid, clone(muc));
                 } else {
-                    log.error('Invalid groupchat criteria specified for "auto_join_rooms"');
+                    log.error('Invalid muc criteria specified for "auto_join_rooms"');
+                    return Promise.resolve();
                 }
-            });
+            }));
             /**
              * Triggered once any rooms that have been configured to be automatically joined,
              * specified via the _`auto_join_rooms` setting, have been entered.