Make teardown a function

This commit is contained in:
JC Brand 2019-06-01 15:37:18 +02:00
parent 7b11d85503
commit dc58e6d47f
3 changed files with 31 additions and 36 deletions

View File

@ -431,14 +431,6 @@ converse.plugins.add('converse-minimize', {
return this.el;
},
tearDown () {
this.model.off("add", this.onChanged);
this.model.off("destroy", this.removeChat);
this.model.off("change:minimized", this.onChanged);
this.model.off('change:num_unread', this.updateUnreadMessagesCounter);
return this;
},
initToggle () {
const storage = _converse.config.get('storage'),
id = `converse.minchatstoggle${_converse.bare_jid}`;

View File

@ -408,6 +408,27 @@ function initClientConfig () {
}
function tearDown () {
_converse.api.trigger('beforeTearDown');
if (!_.isUndefined(_converse.bosh_session)) {
_converse.bosh_session.destroy();
delete _converse.bosh_session;
}
if (!_.isUndefined(_converse.session)) {
_converse.session.destroy();
delete _converse.session;
}
window.removeEventListener('click', _converse.onUserActivity);
window.removeEventListener('focus', _converse.onUserActivity);
window.removeEventListener('keypress', _converse.onUserActivity);
window.removeEventListener('mousemove', _converse.onUserActivity);
window.removeEventListener(_converse.unloadevent, _converse.onUserActivity);
window.clearInterval(_converse.everySecondTrigger);
_converse.api.trigger('afterTearDown');
return _converse;
}
function clearSession () {
if (!_.isUndefined(_converse.bosh_session)) {
_converse.bosh_session.destroy();
@ -835,7 +856,7 @@ _converse.initialize = async function (settings, callback) {
_converse.api.trigger('will-reconnect');
_converse.connection.reconnecting = true;
_converse.tearDown();
tearDown();
_converse.api.user.login(null, null, true);
}, 2000);
@ -850,7 +871,7 @@ _converse.initialize = async function (settings, callback) {
_converse.log('DISCONNECTED');
delete _converse.connection.reconnecting;
_converse.connection.reset();
_converse.tearDown();
tearDown();
clearSession();
/**
* Triggered after converse.js has disconnected from the XMPP server.
@ -1363,22 +1384,6 @@ _converse.initialize = async function (settings, callback) {
}
};
this.tearDown = function () {
_converse.api.trigger('beforeTearDown');
if (!_.isUndefined(_converse.bosh_session)) {
_converse.bosh_session.destroy();
}
window.removeEventListener('click', _converse.onUserActivity);
window.removeEventListener('focus', _converse.onUserActivity);
window.removeEventListener('keypress', _converse.onUserActivity);
window.removeEventListener('mousemove', _converse.onUserActivity);
window.removeEventListener(_converse.unloadevent, _converse.onUserActivity);
window.clearInterval(_converse.everySecondTrigger);
_converse.api.trigger('afterTearDown');
return _converse;
};
// Initialization
// --------------
// This is the end of the initialize method.
@ -1440,7 +1445,7 @@ _converse.api = {
if (_converse.connection) {
_converse.connection.disconnect();
} else {
_converse.tearDown();
tearDown();
clearSession();
}
},
@ -1541,7 +1546,7 @@ _converse.api = {
if (!_.isUndefined(_converse.connection)) {
_converse.connection.disconnect();
} else {
_converse.tearDown();
tearDown();
}
// Recreate all the promises
Object.keys(_converse.promises).forEach(addPromise);

View File

@ -81,14 +81,6 @@ converse.plugins.add('converse-muc', {
dependencies: ["converse-chatboxes", "converse-disco", "converse-controlbox"],
overrides: {
tearDown () {
const { _converse } = this.__super__,
groupchats = this.chatboxes.where({'type': _converse.CHATROOMS_TYPE});
groupchats.forEach(gc => u.safeSave(gc, {'connection_status': converse.ROOMSTATUS.DISCONNECTED}));
this.__super__.tearDown.call(this, arguments);
},
ChatBoxes: {
model (attrs, options) {
const { _converse } = this.__super__;
@ -1646,6 +1638,12 @@ converse.plugins.add('converse-muc', {
/************************ BEGIN Event Handlers ************************/
_converse.api.listen.on('beforeTearDown', () => {
const groupchats = _converse.chatboxes.where({'type': _converse.CHATROOMS_TYPE});
groupchats.forEach(gc => u.safeSave(gc, {'connection_status': converse.ROOMSTATUS.DISCONNECTED}));
});
_converse.api.listen.on('addClientFeatures', () => {
if (_converse.allow_muc) {
_converse.api.disco.own.features.add(Strophe.NS.MUC);