2021-05-11 16:09:36 +02:00
|
|
|
/**
|
|
|
|
* @copyright The Converse.js contributors
|
|
|
|
* @license Mozilla Public License (MPLv2)
|
|
|
|
*/
|
|
|
|
import XMPPStatus from './status.js';
|
|
|
|
import status_api from './api.js';
|
|
|
|
import { _converse, api, converse } from '@converse/headless/core';
|
2022-04-07 11:08:00 +02:00
|
|
|
import {
|
|
|
|
addStatusToMUCJoinPresence,
|
|
|
|
initStatus,
|
|
|
|
onEverySecond,
|
|
|
|
onUserActivity,
|
|
|
|
registerIntervalHandler,
|
|
|
|
sendCSI
|
|
|
|
} from './utils.js';
|
2021-05-11 16:09:36 +02:00
|
|
|
|
2022-04-04 13:14:17 +02:00
|
|
|
const { Strophe } = converse.env;
|
|
|
|
|
|
|
|
Strophe.addNamespace('IDLE', 'urn:xmpp:idle:1');
|
|
|
|
|
2021-05-11 16:09:36 +02:00
|
|
|
|
|
|
|
converse.plugins.add('converse-status', {
|
|
|
|
|
|
|
|
initialize () {
|
|
|
|
|
|
|
|
api.settings.extend({
|
|
|
|
auto_away: 0, // Seconds after which user status is set to 'away'
|
|
|
|
auto_xa: 0, // Seconds after which user status is set to 'xa'
|
|
|
|
csi_waiting_time: 0, // Support for XEP-0352. Seconds before client is considered idle and CSI is sent out.
|
|
|
|
default_state: 'online',
|
2022-04-04 13:14:17 +02:00
|
|
|
idle_presence_timeout: 300, // Seconds after which an idle presence is sent
|
2021-05-11 16:09:36 +02:00
|
|
|
priority: 0,
|
|
|
|
});
|
|
|
|
api.promises.add(['statusInitialized']);
|
|
|
|
|
|
|
|
_converse.XMPPStatus = XMPPStatus;
|
|
|
|
_converse.onUserActivity = onUserActivity;
|
|
|
|
_converse.onEverySecond = onEverySecond;
|
|
|
|
_converse.sendCSI = sendCSI;
|
|
|
|
_converse.registerIntervalHandler = registerIntervalHandler;
|
|
|
|
|
|
|
|
Object.assign(_converse.api.user, status_api);
|
|
|
|
|
2022-04-04 13:14:17 +02:00
|
|
|
if (api.settings.get("idle_presence_timeout") > 0) {
|
|
|
|
api.listen.on('addClientFeatures', () => api.disco.own.features.add(Strophe.NS.IDLE));
|
|
|
|
}
|
|
|
|
|
2021-05-11 16:09:36 +02:00
|
|
|
api.listen.on('presencesInitialized', (reconnecting) => {
|
|
|
|
if (!reconnecting) {
|
|
|
|
_converse.registerIntervalHandler();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
api.listen.on('clearSession', () => {
|
|
|
|
if (_converse.shouldClearCache() && _converse.xmppstatus) {
|
|
|
|
_converse.xmppstatus.destroy();
|
|
|
|
delete _converse.xmppstatus;
|
|
|
|
api.promises.add(['statusInitialized']);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
api.listen.on('connected', () => initStatus(false));
|
|
|
|
api.listen.on('reconnected', () => initStatus(true));
|
2022-04-07 11:08:00 +02:00
|
|
|
api.listen.on('constructedMUCPresence', addStatusToMUCJoinPresence);
|
2021-05-11 16:09:36 +02:00
|
|
|
}
|
|
|
|
});
|