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() {