From 2986bd1e291e97ea073b5a6028886160c26183cf Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 4 Jan 2018 16:49:58 -0500 Subject: [PATCH] browserUtilsService.isViewOpen --- .../abstractions/browserUtils.service.ts | 1 + src/services/browserUtils.service.ts | 19 +++++++++++++++++++ src/services/lock.service.ts | 19 +------------------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/services/abstractions/browserUtils.service.ts b/src/services/abstractions/browserUtils.service.ts index d23b76e057..412dd65eae 100644 --- a/src/services/abstractions/browserUtils.service.ts +++ b/src/services/abstractions/browserUtils.service.ts @@ -14,4 +14,5 @@ export interface BrowserUtilsService { inTab(theWindow: Window): boolean; inPopout(theWindow: Window): boolean; inPopup(theWindow: Window): boolean; + isViewOpen(): boolean; } diff --git a/src/services/browserUtils.service.ts b/src/services/browserUtils.service.ts index aa18ac6a88..d023558b0a 100644 --- a/src/services/browserUtils.service.ts +++ b/src/services/browserUtils.service.ts @@ -212,4 +212,23 @@ export default class BrowserUtilsService implements BrowserUtilsServiceInterface return theWindow.location.search === '' || theWindow.location.search.indexOf('uilocation=') === -1 || theWindow.location.search.indexOf('uilocation=popup') > -1; } + + isViewOpen(): boolean { + const popupOpen = chrome.extension.getViews({ type: 'popup' }).length > 0; + const tabOpen = chrome.extension.getViews({ type: 'tab' }).length > 0; + const sidebarView = this.sidebarViewName(); + const sidebarOpen = sidebarView != null && chrome.extension.getViews({ type: sidebarView }).length > 0; + + return popupOpen || tabOpen || sidebarOpen; + } + + private sidebarViewName(): string { + if ((window as any).chrome.sidebarAction && this.isFirefox()) { + return 'sidebar'; + } else if (this.isOpera() && (typeof opr !== 'undefined') && opr.sidebarAction) { + return 'sidebar_panel'; + } + + return null; + } } diff --git a/src/services/lock.service.ts b/src/services/lock.service.ts index f65d1d5a8d..7f5f56e559 100644 --- a/src/services/lock.service.ts +++ b/src/services/lock.service.ts @@ -29,12 +29,7 @@ export default class LockService { } async checkLock(): Promise { - const popupOpen = chrome.extension.getViews({ type: 'popup' }).length > 0; - const tabOpen = chrome.extension.getViews({ type: 'tab' }).length > 0; - const sidebarView = this.sidebarViewName(); - const sidebarOpen = sidebarView != null && chrome.extension.getViews({ type: sidebarView }).length > 0; - - if (popupOpen || tabOpen || sidebarOpen) { + if (this.browserUtilsService.isViewOpen()) { // Do not lock return; } @@ -77,16 +72,4 @@ export default class LockService { this.cipherService.clearCache(); this.collectionService.clearCache(); } - - // Helpers - - private sidebarViewName(): string { - if ((window as any).chrome.sidebarAction && this.browserUtilsService.isFirefox()) { - return 'sidebar'; - } else if (this.browserUtilsService.isOpera() && (typeof opr !== 'undefined') && opr.sidebarAction) { - return 'sidebar_panel'; - } - - return null; - } }