Stop the MatrixClient when the MatrixChat is unmounted

The MatrixClient never gets unmounted in the real app, but I've been working on
some tests which would rather like to be able to create and destroy MatrixChats
and not have the clients hang around forever.
This commit is contained in:
Richard van der Hoff 2016-04-12 18:38:10 +01:00
parent f9785f68af
commit 1361333fdc

View file

@ -183,6 +183,7 @@ module.exports = React.createClass({
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
this._stopMatrixClient();
dis.unregister(this.dispatcherRef); dis.unregister(this.dispatcherRef);
document.removeEventListener("keydown", this.onKeyDown); document.removeEventListener("keydown", this.onKeyDown);
window.removeEventListener("focus", this.onFocus); window.removeEventListener("focus", this.onFocus);
@ -258,12 +259,7 @@ module.exports = React.createClass({
window.localStorage.setItem("mx_hs_url", hsUrl); window.localStorage.setItem("mx_hs_url", hsUrl);
window.localStorage.setItem("mx_is_url", isUrl); window.localStorage.setItem("mx_is_url", isUrl);
} }
Notifier.stop(); this._stopMatrixClient();
UserActivity.stop();
Presence.stop();
MatrixClientPeg.get().stopClient();
MatrixClientPeg.get().removeAllListeners();
MatrixClientPeg.unset();
this.notifyNewScreen('login'); this.notifyNewScreen('login');
this.replaceState({ this.replaceState({
logged_in: false, logged_in: false,
@ -722,6 +718,16 @@ module.exports = React.createClass({
}); });
}, },
// stop all the background processes related to the current client
_stopMatrixClient: function() {
Notifier.stop();
UserActivity.stop();
Presence.stop();
MatrixClientPeg.get().stopClient();
MatrixClientPeg.get().removeAllListeners();
MatrixClientPeg.unset();
},
onKeyDown: function(ev) { onKeyDown: function(ev) {
/* /*
// Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers // Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers