From d4cf0fe3389b3aa05d40f1cfcd90f2630d4a2db7 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 6 Oct 2017 00:05:08 -0400 Subject: [PATCH] manage ui location for popup app --- gulpfile.js | 2 +- src/manifest.json | 2 +- .../app/accounts/accountsLoginTwoFactorController.js | 6 ++++-- src/popup/app/current/currentController.js | 2 +- src/popup/app/global/mainController.js | 1 + src/popup/app/vault/vaultController.js | 2 +- src/popup/app/vault/vaultViewFolderController.js | 2 +- src/services/lockService.js | 3 ++- src/services/utilsService.js | 10 +++++++++- 9 files changed, 21 insertions(+), 9 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 9e77eb1fdd..f628d64aae 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -351,7 +351,7 @@ function dist(edge, cb) { var sidebarActionManifestObj = { "default_title": "bitwarden", - "default_panel": "popup/index.html?sidebar=true", + "default_panel": "popup/index.html?uilocation=sidebar", "default_icon": "images/icon19.png" }; diff --git a/src/manifest.json b/src/manifest.json index 3c9abb0ee5..9dac519b89 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -62,7 +62,7 @@ "38": "images/icon38.png" }, "default_title": "bitwarden", - "default_popup": "popup/index.html" + "default_popup": "popup/index.html?uilocation=popup" }, "permissions": [ "tabs", diff --git a/src/popup/app/accounts/accountsLoginTwoFactorController.js b/src/popup/app/accounts/accountsLoginTwoFactorController.js index 2ceb8d892f..229adf8315 100644 --- a/src/popup/app/accounts/accountsLoginTwoFactorController.js +++ b/src/popup/app/accounts/accountsLoginTwoFactorController.js @@ -175,7 +175,9 @@ params = providers[constants.twoFactorProvider.email]; $scope.twoFactorEmail = params.Email; - if (chrome.extension.getViews({ type: 'popup' }).length > 0 && !utilsService.inSidebar($window)) { + if (chrome.extension.getViews({ type: 'popup' }).length > 0 && + !utilsService.inSidebar($window) && + !utilsService.inTab($window)) { SweetAlert.swal({ title: i18nService.twoStepLogin, text: i18nService.popup2faCloseMessage, @@ -184,7 +186,7 @@ cancelButtonText: i18nService.no }, function (confirmed) { if (confirmed) { - chrome.tabs.create({ url: '/popup/index.html#!/login' }); + chrome.tabs.create({ url: '/popup/index.html?uilocation=tab#!/login' }); return; } else if (Object.keys(providers).length > 1) { diff --git a/src/popup/app/current/currentController.js b/src/popup/app/current/currentController.js index 19a519c980..6369ad1f10 100644 --- a/src/popup/app/current/currentController.js +++ b/src/popup/app/current/currentController.js @@ -79,7 +79,7 @@ angular if (totpCode && utilsService.isFirefox()) { utilsService.copyToClipboard(totpCode, document); } - if (!utilsService.inSidebar($window)) { + if (utilsService.inPopup($window)) { $window.close(); } }, function () { diff --git a/src/popup/app/global/mainController.js b/src/popup/app/global/mainController.js index 62b3985d8d..75fe2f0701 100644 --- a/src/popup/app/global/mainController.js +++ b/src/popup/app/global/mainController.js @@ -33,6 +33,7 @@ angular } } + href = href.replace('uilocation=popup', 'uilocation=tab').replace('uilocation=sidebar', 'uilocation=tab'); chrome.tabs.create({ url: href }); }; diff --git a/src/popup/app/vault/vaultController.js b/src/popup/app/vault/vaultController.js index 005113da68..efdc99782d 100644 --- a/src/popup/app/vault/vaultController.js +++ b/src/popup/app/vault/vaultController.js @@ -178,7 +178,7 @@ if (login.uri.startsWith('http://') || login.uri.startsWith('https://')) { $analytics.eventTrack('Launched Website From Listing'); chrome.tabs.create({ url: login.uri }); - if (!utilsService.inSidebar($window)) { + if (utilsService.inPopup($window)) { $window.close(); } } diff --git a/src/popup/app/vault/vaultViewFolderController.js b/src/popup/app/vault/vaultViewFolderController.js index ece5ed6f05..aa3b7ed5f5 100644 --- a/src/popup/app/vault/vaultViewFolderController.js +++ b/src/popup/app/vault/vaultViewFolderController.js @@ -136,7 +136,7 @@ if (login.uri.startsWith('http://') || login.uri.startsWith('https://')) { $analytics.eventTrack('Launched Website From Listing'); chrome.tabs.create({ url: login.uri }); - if (!utilsService.inSidebar($window)) { + if (utilsService.inPopup($window)) { $window.close(); } } diff --git a/src/services/lockService.js b/src/services/lockService.js index d77b1adab3..7322b372ef 100644 --- a/src/services/lockService.js +++ b/src/services/lockService.js @@ -24,10 +24,11 @@ function initLockService(self) { self.lastLockCheck = now; var popupOpen = chrome.extension.getViews({ type: 'popup' }).length > 0; + var tabOpen = chrome.extension.getViews({ type: 'tab' }).length > 0; var sidebarView = sidebarViewName(self.utilsService); var sidebarOpen = sidebarView && chrome.extension.getViews({ type: sidebarView }).length > 0; - if (popupOpen || sidebarOpen) { + if (popupOpen || tabOpen || sidebarOpen) { // Do not lock return; } diff --git a/src/services/utilsService.js b/src/services/utilsService.js index 4f64d4931f..58a862d9d6 100644 --- a/src/services/utilsService.js +++ b/src/services/utilsService.js @@ -229,7 +229,15 @@ function initUtilsService() { }; UtilsService.prototype.inSidebar = function (theWindow) { - return theWindow.location.search && theWindow.location.search.indexOf('sidebar=true') > -1; + return theWindow.location.search && theWindow.location.search.indexOf('uilocation=sidebar') > -1; + }; + + UtilsService.prototype.inTab = function (theWindow) { + return theWindow.location.search && theWindow.location.search.indexOf('uilocation=tab') > -1; + }; + + UtilsService.prototype.inPopup = function (theWindow) { + return theWindow.location.search && theWindow.location.search.indexOf('uilocation=popup') > -1; }; function validIpAddress(ipString) {