From 3140e4d66d5afde2eceaf1cdb93fb99903e11df3 Mon Sep 17 00:00:00 2001 From: Daniel Gasienica Date: Wed, 21 Mar 2018 15:17:32 -0400 Subject: [PATCH] Implement basic `IdleListener` --- js/modules/idle_listener.js | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 js/modules/idle_listener.js diff --git a/js/modules/idle_listener.js b/js/modules/idle_listener.js new file mode 100644 index 000000000..d7ce3ba37 --- /dev/null +++ b/js/modules/idle_listener.js @@ -0,0 +1,39 @@ +const desktopIdle = require('desktop-idle'); +const EventEmitter = require('events'); + + +const POLL_INTERVAL_MS = 10 * 1000; +const IDLE_THRESHOLD_MS = POLL_INTERVAL_MS; + +class IdleListener extends EventEmitter { + constructor() { + super(); + this.intervalId = null; + } + + start() { + this.stop(); + this.intervalId = setInterval(() => { + const idleDuration = desktopIdle.getIdleTime(); + const isIdle = idleDuration >= (IDLE_THRESHOLD_MS / 1000); + if (!isIdle) { + return; + } + + this.emit('idle', { idleDuration }); + + }, POLL_INTERVAL_MS); + } + + stop() { + if (!this.intervalId) { + return; + } + + clearInterval(this.intervalId); + } +} + +module.exports = { + IdleListener, +};