/** * @module converse-headlines-view * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ import '../chatview/index.js'; import HeadlinesBoxViewMixin from './view.js'; import { HeadlinesPanelMixin, HeadlinesPanelView } from './panel.js'; import { _converse, api, converse } from '@converse/headless/core'; function onChatBoxViewsInitialized () { const views = _converse.chatboxviews; _converse.chatboxes.on('add', item => { if (!views.get(item.get('id')) && item.get('type') === _converse.HEADLINES_TYPE) { views.add(item.get('id'), new _converse.HeadlinesBoxView({ model: item })); } }); } converse.plugins.add('converse-headlines-view', { /* Plugin dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before * this plugin. * * If the setting "strict_plugin_dependencies" is set to true, * an error will be raised if the plugin is not found. By default it's * false, which means these plugins are only loaded opportunistically. * * NB: These plugins need to have already been loaded by the bundler */ dependencies: ['converse-headlines', 'converse-chatview'], overrides: { ControlBoxView: { renderControlBoxPane () { this.__super__.renderControlBoxPane.apply(this, arguments); this.renderHeadlinesPanel(); } } }, initialize () { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ _converse.ControlBoxView && Object.assign(_converse.ControlBoxView.prototype, HeadlinesPanelMixin); _converse.HeadlinesBoxView = _converse.ChatBoxView.extend(HeadlinesBoxViewMixin); _converse.HeadlinesPanel = HeadlinesPanelView; api.listen.on('chatBoxViewsInitialized', onChatBoxViewsInitialized); } });