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 1/2] 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 From afbaae04bf3f28b8f832b220e679458b1c9adef6 Mon Sep 17 00:00:00 2001 From: ubermanu <e.vodor@gmail.com> Date: Fri, 19 Mar 2021 15:00:36 +0100 Subject: [PATCH 2/2] move the userRooms promise resolution after we are connected --- src/plugins/sib-subscribe-to-rai.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/plugins/sib-subscribe-to-rai.js b/src/plugins/sib-subscribe-to-rai.js index 404109f..cc421d5 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,13 +52,15 @@ 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 () => { + + // @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); }); -- GitLab