diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js index 6d65c12033d82c70b1ffdc7ee89dac824fd05dd2..bbae7091ccc93f1a02fa721bb39caff9180d0de2 100644 --- a/src/plugins/converse-rai.js +++ b/src/plugins/converse-rai.js @@ -88,7 +88,7 @@ converse.plugins.add('converse-rai', { }, }, initialize() { - const { Strophe, _, $pres, u } = converse.env; + const { Strophe, _, $pres, u, sizzle } = converse.env; const _converse = this._converse; const { api } = _converse; @@ -129,45 +129,28 @@ converse.plugins.add('converse-rai', { }, }); + /** + * Triggers an event if a jid has activity. + * + * @param message + * @returns {boolean} + */ function mucActivityHandler(message) { - console.log('mucActivityHandler', message); - const from_jid = message.attributes.from?.nodevalue; - const room_jid = from_jid?.split('/')[0]; - let room = ''; - let ignore = false; + const rai = sizzle(`rai[xmlns="${Strophe.NS.RAI}"]`, message).pop(); - for (let i = 0; i < _converse.chatboxes.models.length; i++) { - if (_converse.chatboxes.models[i].id === room_jid) { - room = _converse.chatboxes.models[i].id; - break; - } - } - - if (room && from_jid && room_jid) { - if (from_jid === room_jid + '/' + room.get('nick')) { - ignore = true; - } - } - - if (message && !ignore) { - message.querySelectorAll('activity').forEach(activity => { - if (activity && activity.namespaceURI === Strophe.NS.RAI) { - const jid = activity.textContent; - // TODO: Give the chatroom object instead of the jid - api.trigger('chatRoomHasActivity', jid); - } + if (rai) { + rai.querySelectorAll('activity').forEach(activity => { + const jid = activity.textContent; + api.trigger('chatRoomHasActivity', jid); }); } return true; } - // TODO: On loading subscribe to all the ChatViews in navigation (into another plugin) + // Register our RAI handler api.listen.on('connected', () => { _converse.connection.addHandler(mucActivityHandler, null, 'message'); }); - - // TODO: Remove - // api.listen.on('send', stanza => console.log('send', stanza)); }, });