diff --git a/src/DecryptionFailureTracker.js b/src/DecryptionFailureTracker.js index 069d06bbd1..b1c6a71289 100644 --- a/src/DecryptionFailureTracker.js +++ b/src/DecryptionFailureTracker.js @@ -36,6 +36,10 @@ export default class DecryptionFailureTracker { // [eventId]: true }; + // Set to an interval ID when `start` is called + checkInterval = null; + trackInterval = null; + // Spread the load on `Analytics` by sending at most 1 event per // `TRACK_INTERVAL_MS`. static TRACK_INTERVAL_MS = 1000; @@ -82,27 +86,28 @@ export default class DecryptionFailureTracker { /** * Start checking for and tracking failures. - * @return {function} a function that clears state and causes DFT to stop checking for - * and tracking failures. */ start() { - const checkInterval = setInterval( + this.checkInterval = setInterval( () => this.checkFailures(Date.now()), DecryptionFailureTracker.CHECK_INTERVAL_MS, ); - const trackInterval = setInterval( + this.trackInterval = setInterval( () => this.trackFailure(), DecryptionFailureTracker.TRACK_INTERVAL_MS, ); + } - return () => { - clearInterval(checkInterval); - clearInterval(trackInterval); + /** + * Clear state and stop checking for and tracking failures. + */ + stop() { + clearInterval(this.checkInterval); + clearInterval(this.trackInterval); - this.failures = []; - this.failuresToTrack = []; - }; + this.failures = []; + this.failuresToTrack = []; } /** diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 8b36658de4..2794e81788 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1318,10 +1318,10 @@ export default React.createClass({ // tracked events across sessions. // dft.loadTrackedEventHashMap(); - const stopDft = dft.start(); + dft.start(); // When logging out, stop tracking failures and destroy state - cli.on("Session.logged_out", stopDft); + cli.on("Session.logged_out", () => dft.stop()); cli.on("Event.decrypted", (e) => dft.eventDecrypted(e)); const krh = new KeyRequestHandler(cli);