Use more consistent start/stop pattern

This commit is contained in:
Luke Barnard 2018-06-15 17:58:43 +01:00
parent 488cc416cf
commit b0a2772889
2 changed files with 17 additions and 12 deletions

View File

@ -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 = [];
};
}
/**

View File

@ -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);