49 lines
1.5 KiB
JavaScript
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 });
|
|
}
|