2021-03-17 10:37:19 +01:00
|
|
|
import { _converse, converse } from "@converse/headless/core";
|
|
|
|
|
|
|
|
const u = converse.env.utils;
|
2020-12-04 22:05:43 +01:00
|
|
|
|
|
|
|
export function addControlBox () {
|
2021-01-25 16:07:42 +01:00
|
|
|
const m = _converse.chatboxes.add(new _converse.ControlBox({'id': 'controlbox'}));
|
|
|
|
_converse.chatboxviews.get('controlbox')?.setModel();
|
|
|
|
return m;
|
2020-12-04 22:05:43 +01:00
|
|
|
}
|
2021-03-17 10:37:19 +01:00
|
|
|
|
2021-03-17 11:18:40 +01:00
|
|
|
export function showControlBox (ev) {
|
|
|
|
ev?.preventDefault?.();
|
2021-03-17 10:37:19 +01:00
|
|
|
const controlbox = _converse.chatboxes.get('controlbox') || addControlBox();
|
|
|
|
u.safeSave(controlbox, {'closed': false});
|
|
|
|
}
|
2021-03-17 11:18:40 +01:00
|
|
|
|
|
|
|
export function navigateToControlBox (jid) {
|
|
|
|
showControlBox();
|
|
|
|
const model = _converse.chatboxes.get(jid);
|
|
|
|
u.safeSave(model, {'hidden': true});
|
|
|
|
}
|
2021-06-28 10:56:37 +02:00
|
|
|
|
|
|
|
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 });
|
|
|
|
}
|