2020-12-04 22:05:43 +01:00
|
|
|
/**
|
|
|
|
* @copyright 2020, the Converse.js contributors
|
|
|
|
* @license Mozilla Public License (MPLv2)
|
|
|
|
*/
|
2021-03-24 11:59:09 +01:00
|
|
|
import "shared/components/brand-heading";
|
2020-12-04 23:12:09 +01:00
|
|
|
import "../chatview/index.js";
|
2021-01-22 15:31:59 +01:00
|
|
|
import './loginpanel.js';
|
2021-03-17 11:18:40 +01:00
|
|
|
import './navback.js';
|
2021-06-28 10:56:37 +02:00
|
|
|
import ControlBox from './model.js';
|
2020-12-04 22:05:43 +01:00
|
|
|
import ControlBoxToggle from './toggle.js';
|
2021-02-22 20:53:59 +01:00
|
|
|
import ControlBoxView from './controlbox.js';
|
2021-01-22 15:31:59 +01:00
|
|
|
import controlbox_api from './api.js';
|
2020-12-04 22:05:43 +01:00
|
|
|
import log from '@converse/headless/log';
|
|
|
|
import { _converse, api, converse } from '@converse/headless/core';
|
2021-06-28 10:56:37 +02:00
|
|
|
import { addControlBox, clearSession, disconnect, onChatBoxesFetched } from './utils.js';
|
2020-12-04 22:05:43 +01:00
|
|
|
|
2021-03-19 11:36:19 +01:00
|
|
|
import './styles/_controlbox.scss';
|
|
|
|
|
2020-12-04 22:05:43 +01:00
|
|
|
|
|
|
|
converse.plugins.add('converse-controlbox', {
|
|
|
|
/* 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 via require.js.
|
|
|
|
*/
|
|
|
|
dependencies: ['converse-modal', 'converse-chatboxes', 'converse-chat', 'converse-rosterview', 'converse-chatview'],
|
|
|
|
|
|
|
|
enabled (_converse) {
|
|
|
|
return !_converse.api.settings.get('singleton');
|
|
|
|
},
|
|
|
|
|
|
|
|
overrides: {
|
|
|
|
// Overrides mentioned here will be picked up by converse.js's
|
|
|
|
// plugin architecture they will replace existing methods on the
|
|
|
|
// relevant objects or classes.
|
|
|
|
//
|
|
|
|
// New functions which don't exist yet can also be added.
|
|
|
|
|
|
|
|
ChatBoxes: {
|
|
|
|
model (attrs, options) {
|
|
|
|
if (attrs && attrs.id == 'controlbox') {
|
2021-06-28 10:56:37 +02:00
|
|
|
return new ControlBox(attrs, options);
|
2020-12-04 22:05:43 +01:00
|
|
|
} else {
|
|
|
|
return this.__super__.model.apply(this, arguments);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
initialize () {
|
|
|
|
api.settings.extend({
|
|
|
|
allow_logout: true,
|
|
|
|
allow_user_trust_override: true,
|
|
|
|
default_domain: undefined,
|
|
|
|
locked_domain: undefined,
|
|
|
|
show_controlbox_by_default: false,
|
|
|
|
sticky_controlbox: false
|
|
|
|
});
|
|
|
|
|
|
|
|
api.promises.add('controlBoxInitialized');
|
|
|
|
Object.assign(api, controlbox_api);
|
|
|
|
|
2020-12-08 12:54:14 +01:00
|
|
|
_converse.ControlBoxView = ControlBoxView;
|
2021-06-28 10:56:37 +02:00
|
|
|
_converse.ControlBox = ControlBox;
|
2020-12-04 22:05:43 +01:00
|
|
|
_converse.ControlBoxToggle = ControlBoxToggle;
|
|
|
|
|
|
|
|
/******************** Event Handlers ********************/
|
|
|
|
api.listen.on('chatBoxesFetched', onChatBoxesFetched);
|
|
|
|
api.listen.on('cleanup', () => delete _converse.controlboxtoggle);
|
|
|
|
api.listen.on('clearSession', clearSession);
|
|
|
|
api.listen.on('will-reconnect', disconnect);
|
|
|
|
|
|
|
|
api.waitUntil('chatBoxViewsInitialized')
|
|
|
|
.then(addControlBox)
|
|
|
|
.catch(e => log.fatal(e));
|
|
|
|
}
|
|
|
|
});
|