Update auto-logout to recognize idle time in background (#6593)
* Fix wording of autoLogoutTimeLimitDescription * AppStateController and update auto-logout functionalityfeature/default_network_editable
parent
08e8fb21dc
commit
28c4001f52
@ -0,0 +1,73 @@ |
||||
const ObservableStore = require('obs-store') |
||||
const extend = require('xtend') |
||||
|
||||
class AppStateController { |
||||
/** |
||||
* @constructor |
||||
* @param opts |
||||
*/ |
||||
constructor (opts = {}) { |
||||
const {initState, onInactiveTimeout, preferencesStore} = opts |
||||
const {preferences} = preferencesStore.getState() |
||||
|
||||
this.onInactiveTimeout = onInactiveTimeout || (() => {}) |
||||
this.store = new ObservableStore(extend({ |
||||
timeoutMinutes: 0, |
||||
}, initState)) |
||||
this.timer = null |
||||
|
||||
preferencesStore.subscribe(state => { |
||||
this._setInactiveTimeout(state.preferences.autoLogoutTimeLimit) |
||||
}) |
||||
|
||||
this._setInactiveTimeout(preferences.autoLogoutTimeLimit) |
||||
} |
||||
|
||||
/** |
||||
* Sets the last active time to the current time |
||||
* @return {void} |
||||
*/ |
||||
setLastActiveTime () { |
||||
this._resetTimer() |
||||
} |
||||
|
||||
/** |
||||
* Sets the inactive timeout for the app |
||||
* @param {number} timeoutMinutes the inactive timeout in minutes |
||||
* @return {void} |
||||
* @private |
||||
*/ |
||||
_setInactiveTimeout (timeoutMinutes) { |
||||
this.store.putState({ |
||||
timeoutMinutes, |
||||
}) |
||||
|
||||
this._resetTimer() |
||||
} |
||||
|
||||
/** |
||||
* Resets the internal inactive timer |
||||
* |
||||
* If the {@code timeoutMinutes} state is falsy (i.e., zero) then a new |
||||
* timer will not be created. |
||||
* |
||||
* @return {void} |
||||
* @private |
||||
*/ |
||||
_resetTimer () { |
||||
const {timeoutMinutes} = this.store.getState() |
||||
|
||||
if (this.timer) { |
||||
clearTimeout(this.timer) |
||||
} |
||||
|
||||
if (!timeoutMinutes) { |
||||
return |
||||
} |
||||
|
||||
this.timer = setTimeout(() => this.onInactiveTimeout(), timeoutMinutes * 60 * 1000) |
||||
} |
||||
} |
||||
|
||||
module.exports = AppStateController |
||||
|
Loading…
Reference in new issue