This repository has been archived on 2022-09-21. You can view files and clone it, but cannot push or open issues or pull requests.
converse.js/src/plugins/controlbox/utils.js

49 lines
1.5 KiB
JavaScript

import { _converse, converse } from "@converse/headless/core";
const u = converse.env.utils;
export function addControlBox () {
const m = _converse.chatboxes.add(new _converse.ControlBox({'id': 'controlbox'}));
_converse.chatboxviews.get('controlbox')?.setModel();
return m;
}
export function showControlBox (ev) {
ev?.preventDefault?.();
const controlbox = _converse.chatboxes.get('controlbox') || addControlBox();
u.safeSave(controlbox, {'closed': false});
}
export function navigateToControlBox (jid) {
showControlBox();
const model = _converse.chatboxes.get(jid);
u.safeSave(model, {'hidden': true});
}
export function disconnect () {
/* Upon disconnection, set connected to `false`, so that if
* we reconnect, "onConnected" will be called,
* to fetch the roster again and to send out a presence stanza.
*/
const view = _converse.chatboxviews.get('controlbox');
view.model.set({ 'connected': false });
return view;
}
export function clearSession () {
const chatboxviews = _converse?.chatboxviews;
const view = chatboxviews && chatboxviews.get('controlbox');
if (view) {
u.safeSave(view.model, { 'connected': false });
if (view?.controlbox_pane) {
view.controlbox_pane.remove();
delete view.controlbox_pane;
}
}
}
export function onChatBoxesFetched () {
const controlbox = _converse.chatboxes.get('controlbox') || addControlBox();
controlbox.save({ 'connected': true });
}