diff --git a/src/headless/converse-muc.js b/src/headless/converse-muc.js index 4fbe3b758..8dc782051 100644 --- a/src/headless/converse-muc.js +++ b/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.