From 9036beb3f370a95c2d190754bd1009658c01cdeb Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 18 Sep 2020 12:07:18 +0200 Subject: [PATCH] fix: correctly start and stop autolock timer --- app/assets/javascripts/services/autolock_service.ts | 5 +++++ app/assets/javascripts/ui_models/app_state.ts | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/services/autolock_service.ts b/app/assets/javascripts/services/autolock_service.ts index cea78b53e..81b6f5db1 100644 --- a/app/assets/javascripts/services/autolock_service.ts +++ b/app/assets/javascripts/services/autolock_service.ts @@ -81,6 +81,10 @@ export class AutolockService { */ beginWebFocusPolling() { this.pollFocusInterval = setInterval(() => { + if (document.hidden) { + /** Native event listeners will have fired */ + return; + } const hasFocus = document.hasFocus(); if (hasFocus && this.lastFocusState === 'hidden') { this.documentVisibilityChanged(true); @@ -150,6 +154,7 @@ export class AutolockService { return date; }; this.lockAfterDate = addToNow(interval / MILLISECONDS_PER_SECOND); + clearTimeout(this.lockTimeout); this.lockTimeout = setTimeout(() => { this.cancelAutoLockTimer(); this.lockApplication(); diff --git a/app/assets/javascripts/ui_models/app_state.ts b/app/assets/javascripts/ui_models/app_state.ts index e381e0f5c..e55bd8d1d 100644 --- a/app/assets/javascripts/ui_models/app_state.ts +++ b/app/assets/javascripts/ui_models/app_state.ts @@ -56,17 +56,16 @@ export class AppState { this.$timeout = $timeout; this.$rootScope = $rootScope; this.application = application; - this.registerVisibilityObservers(); this.addAppEventObserver(); this.streamNotesAndTags(); - const onVisibilityChange = () => { + this.onVisibilityChange = () => { const visible = document.visibilityState === "visible"; const event = visible ? AppStateEvent.WindowDidFocus : AppStateEvent.WindowDidBlur; this.notifyEvent(event); } - this.onVisibilityChange = onVisibilityChange.bind(this); + this.registerVisibilityObservers(); } deinit() {