Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 1x 1x 2x 2x 1x 1x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x | /**
 * handle app inactivity trigger
 */
export default class InactivityDetector {
    constructor(config, loggerService) {
        this.config = config;
        this.logger = loggerService.getLogger().child({label: 'InactivityDetector'});
        this.INACTIVITY_DELAY_MIN = this.config.inactivityDelayMin || 3;
    }
 
    onInactivity() {
        InactivityDetector.timer = null;
        for (const handler of InactivityDetector.onInactivityListeners) {
            try {
                handler();
            } catch (exception) {
                this.logger.warn(`onInactivity handler error : ${exception.message}`);
            }
        }
    }
 
    activityTic() {
        const {onInactivity, INACTIVITY_DELAY_MIN, logger} = this;
        if (InactivityDetector.timer !== null) {
            clearTimeout(InactivityDetector.timer);
        }
        if (InactivityDetector.onInactivityListeners.length > 0) {
            if (InactivityDetector.timer === null) { // first time only
                logger.info(`setTimeout(${INACTIVITY_DELAY_MIN} min, ...) with ${InactivityDetector.onInactivityListeners.length} listeners`)
            }
            InactivityDetector.timer = setTimeout(onInactivity.bind(this), INACTIVITY_DELAY_MIN * 60000);
        }
    }
 
    registerOnInactivityListener(listener) {
        InactivityDetector.onInactivityListeners.push(listener)
    }
}
InactivityDetector.timer = null;
InactivityDetector.onInactivityListeners = []; |