diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js index 7ad059de4d5464925d5be470622ab3bb13c0fbbc..3b5fb22e17e9741874ded24f9440e2a1f4edf6c2 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 100673b5502c84303413f30da8b9e4018e2bd356..cc421d5b5fd78b2d38125e9b8f32101f40693329 100644 --- a/src/plugins/sib-subscribe-to-rai.js +++ b/src/plugins/sib-subscribe-to-rai.js @@ -7,7 +7,8 @@ converse.plugins.add('sib-subscribe-to-rai', { dependencies: [ 'converse-rai', ], - async initialize() { + initialize() { + const { log } = converse.env; const _converse = this._converse; const { api } = _converse; @@ -51,14 +52,16 @@ converse.plugins.add('sib-subscribe-to-rai', { }, 250); }); - // @MattJ Here userRooms is an array of each jabberID the user is on. - let userRooms = (await Promise.all([ - getCircles, - getProjects, - ])).flat(); + api.listen.on('connected', async () => { - api.listen.on('connected', () => { - api.rooms.subscribe(userRooms); + // @MattJ Here userRooms is an array of each jabberID the user is on. + let userRooms = (await Promise.all([ + getCircles, + getProjects, + ])).flat(); + + log.info(`User rooms: ${userRooms.join(', ')}`); + await api.rooms.subscribe(userRooms); }); api.listen.on('chatRoomHasActivity', jid => {