// SPDX-FileCopyrightText: 2024 John Livingston // // SPDX-License-Identifier: AGPL-3.0-only import { converse, api } from '../../../src/headless/core.js' import './components/muc-terms.js' const { sizzle } = converse.env converse.plugins.add('livechat-converse-terms', { dependencies: ['converse-muc'], initialize () { api.listen.on('parseMUCMessage', (stanza, attrs) => { const livechatTerms = sizzle('x-livechat-terms', stanza) if (!livechatTerms.length) { return attrs } return Object.assign( attrs, { x_livechat_terms: livechatTerms[0].getAttribute('type') } ) }) }, overrides: { ChatRoom: { onMessage: function onMessage (attrs) { if (!attrs.x_livechat_terms) { return this.__super__.onMessage(attrs) } // We received a x-livechat-terms message, we don't forward it to standard onMessage, // but we just update the room attribute. const type = attrs.x_livechat_terms if (type !== 'global' && type !== 'muc') { console.error('Invalid x-livechat-terms type: ', type) return } // console.info('Received a x-livechat-terms message', attrs) const options = {} options['x_livechat_terms_' + type] = attrs this.set(options) // this will be displayed by the livechat-converse-muc-terms custom element, // which is inserted in the DOM by the muc.js template overload. } } } })