converting chrome refs to BrowserApi

This commit is contained in:
Kyle Spearrin 2018-01-12 11:09:30 -05:00
parent 1e11a89fc2
commit 8f438d818b
24 changed files with 91 additions and 48 deletions

View File

@ -1,4 +1,4 @@
import BrowserApi from '../browser/browserApi';
import { BrowserApi } from '../browser/browserApi';
import MainBackground from './main.background';

View File

@ -1,4 +1,4 @@
import BrowserApi from '../browser/browserApi';
import { BrowserApi } from '../browser/browserApi';
import MainBackground from './main.background';

View File

@ -43,7 +43,7 @@ import {
import Analytics from '../scripts/analytics';
import BrowserApi from '../browser/browserApi';
import { BrowserApi } from '../browser/browserApi';
import CommandsBackground from './commands.background';
import ContextMenusBackground from './contextMenus.background';

View File

@ -7,7 +7,7 @@ import {
PlatformUtilsService,
} from 'jslib/abstractions';
import BrowserApi from '../browser/browserApi';
import { BrowserApi } from '../browser/browserApi';
import MainBackground from './main.background';

View File

@ -1,4 +1,4 @@
export default class BrowserApi {
class BrowserApi {
static isSafariApi: boolean = (typeof safari !== 'undefined');
static isChromeApi: boolean = (typeof chrome !== 'undefined');
@ -72,4 +72,37 @@ export default class BrowserApi {
return null;
}
}
static isPopupOpen(): boolean {
if (BrowserApi.isChromeApi) {
return chrome.extension.getViews({ type: 'popup' }).length > 0;
} else if (BrowserApi.isSafariApi) {
return true; // TODO
} else {
return null;
}
}
static createNewTab(url: string): void {
if (BrowserApi.isChromeApi) {
chrome.tabs.create({ url: url });
} else if (BrowserApi.isSafariApi) {
return; // TODO
} else {
return;
}
}
static getAssetUrl(path: string): string {
if (BrowserApi.isChromeApi) {
return chrome.extension.getURL(path);
} else if (BrowserApi.isSafariApi) {
return './' + path; // TODO?
} else {
return null;
}
}
}
export { BrowserApi };
(window as any).BrowserApi = BrowserApi;

View File

@ -183,9 +183,8 @@ angular
params = providers[constants.twoFactorProvider.email];
$scope.twoFactorEmail = params.Email;
if (chrome.extension.getViews({ type: 'popup' }).length > 0 &&
!popupUtilsService.inSidebar($window) && !popupUtilsService.inTab($window) &&
!popupUtilsService.inPopout($window)) {
if (BrowserApi.isPopupOpen() && !popupUtilsService.inSidebar($window) &&
!popupUtilsService.inTab($window) && !popupUtilsService.inPopout($window)) {
SweetAlert.swal({
title: i18nService.twoStepLogin,
text: i18nService.popup2faCloseMessage,
@ -194,7 +193,7 @@ angular
cancelButtonText: i18nService.no
}, function (confirmed) {
if (confirmed) {
chrome.tabs.create({ url: '/popup/index.html?uilocation=tab#!/login' });
BrowserApi.createNewTab('/popup/index.html?uilocation=tab#!/login');
return;
}
else if (Object.keys(providers).length > 1) {

View File

@ -52,7 +52,7 @@ angular
$scope.recover = function () {
$analytics.eventTrack('Selected Recover');
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/lost-two-step-device/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/lost-two-step-device/');
};
function add(type) {

View File

@ -1,5 +1,7 @@
import * as template from './action-buttons.component.html';
import { BrowserApi } from '../../../browser/browserApi';
import { ConstantsService } from 'jslib/services/constants.service';
import PopupUtilsService from '../services/popupUtils.service';
@ -23,7 +25,7 @@ export class ActionButtonsController implements ng.IController {
this.$timeout(() => {
if (self.cipher.login.uri.startsWith('http://') || self.cipher.login.uri.startsWith('https://')) {
self.$analytics.eventTrack('Launched Website From Listing');
chrome.tabs.create({ url: self.cipher.login.uri });
BrowserApi.createNewTab(self.cipher.login.uri);
if (PopupUtilsService.inPopup(self.$window)) {
self.$window.close();
}

View File

@ -1,5 +1,7 @@
import * as template from './icon.component.html';
import { BrowserApi } from '../../../browser/browserApi';
import { CipherType } from 'jslib/enums/cipherType';
import { EnvironmentService } from 'jslib/abstractions/environment.service';
@ -68,7 +70,7 @@ export class IconController implements ng.IController {
try {
const url = new URL(hostnameUri);
this.image = this.iconsUrl + '/' + url.hostname + '/icon.png';
this.fallbackImage = chrome.extension.getURL('images/fa-globe.png');
this.fallbackImage = BrowserApi.getAssetUrl('images/fa-globe.png');
} catch (e) { }
}
} else {

View File

@ -23,7 +23,7 @@ export class PopOutController implements ng.IController {
}
}
if (chrome && chrome.windows && chrome.windows.create) {
if ((typeof chrome !== 'undefined') && chrome.windows && chrome.windows.create) {
if (href.indexOf('?uilocation=') > -1) {
href = href.replace('uilocation=popup', 'uilocation=popout')
.replace('uilocation=tab', 'uilocation=popout')
@ -44,13 +44,15 @@ export class PopOutController implements ng.IController {
if (PopupUtilsService.inPopup(this.$window)) {
this.$window.close();
}
} else if (chrome && chrome.tabs && chrome.tabs.create) {
} else if ((typeof chrome !== 'undefined') && chrome.tabs && chrome.tabs.create) {
href = href.replace('uilocation=popup', 'uilocation=tab')
.replace('uilocation=popout', 'uilocation=tab')
.replace('uilocation=sidebar', 'uilocation=tab');
chrome.tabs.create({
url: href,
});
} else if ((typeof safari !== 'undefined')) {
// TODO?
}
}
}

View File

@ -15,7 +15,7 @@ angular
$urlRouterProvider.otherwise(function ($injector, $location) {
var $state = $injector.get('$state');
if ((typeof chrome !== 'undefined') && !chrome.extension.getBackgroundPage()) {
if (!BrowserApi.getBackgroundPage()) {
$state.go('privateMode');
return;
}

View File

@ -1,9 +1,11 @@
import { BrowserApi } from '../../../browser/browserApi';
export class PrivateModeController implements ng.IController {
constructor($scope: any) {
$scope.privateModeMessage = chrome.i18n.getMessage('privateModeMessage');
$scope.learnMoreMessage = chrome.i18n.getMessage('learnMore');
$scope.learnMore = () => {
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/extension-wont-load-in-private-mode/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/extension-wont-load-in-private-mode/');
};
}
}

View File

@ -1,4 +1,4 @@
import BrowserApi from '../../../browser/browserApi';
import { BrowserApi } from '../../../browser/browserApi';
import { ConstantsService } from 'jslib/services/constants.service';

View File

@ -1,6 +1,6 @@
import * as template from './about.component.html';
import BrowserApi from '../../../browser/browserApi';
import { BrowserApi } from '../../../browser/browserApi';
export class AboutController {
version: string;

View File

@ -1,5 +1,7 @@
import * as template from './credits.component.html';
import { BrowserApi } from '../../../browser/browserApi';
export class CreditsController {
i18n: any;
@ -9,10 +11,7 @@ export class CreditsController {
learnMore() {
this.$analytics.eventTrack('Contribute Learn More');
chrome.tabs.create({
url: 'https://github.com/bitwarden/browser/blob/master/CONTRIBUTING.md',
});
BrowserApi.createNewTab('https://github.com/bitwarden/browser/blob/master/CONTRIBUTING.md');
}
}

View File

@ -1,5 +1,7 @@
import * as template from './help.component.html';
import { BrowserApi } from '../../../browser/browserApi';
export class HelpController {
i18n: any;
@ -9,22 +11,22 @@ export class HelpController {
email() {
this.$analytics.eventTrack('Selected Help Email');
chrome.tabs.create({ url: 'mailto:hello@bitwarden.com' });
BrowserApi.createNewTab('mailto:hello@bitwarden.com');
}
website() {
this.$analytics.eventTrack('Selected Help Website');
chrome.tabs.create({ url: 'https://bitwarden.com/contact/' });
BrowserApi.createNewTab('https://bitwarden.com/contact/');
}
tutorial() {
this.$analytics.eventTrack('Selected Help Tutorial');
chrome.tabs.create({ url: 'https://bitwarden.com/browser-start/' });
BrowserApi.createNewTab('https://bitwarden.com/browser-start/');
}
bug() {
this.$analytics.eventTrack('Selected Help Bug Report');
chrome.tabs.create({ url: 'https://github.com/bitwarden/browser' });
BrowserApi.createNewTab('https://github.com/bitwarden/browser');
}
}

View File

@ -1,5 +1,7 @@
import * as template from './premium.component.html';
import { BrowserApi } from '../../../browser/browserApi';
import { ApiService } from 'jslib/abstractions/api.service';
import { TokenService } from 'jslib/abstractions/token.service';
@ -35,7 +37,7 @@ export class PremiumController {
}, (confirmed: boolean) => {
this.$analytics.eventTrack('Clicked Purchase Premium');
if (confirmed) {
chrome.tabs.create({ url: 'https://vault.bitwarden.com/#/?premium=purchase' });
BrowserApi.createNewTab('https://vault.bitwarden.com/#/?premium=purchase');
}
});
}
@ -50,7 +52,7 @@ export class PremiumController {
}, (confirmed: boolean) => {
this.$analytics.eventTrack('Clicked Manage Membership');
if (confirmed) {
chrome.tabs.create({ url: 'https://vault.bitwarden.com/#/?premium=manage' });
BrowserApi.createNewTab('https://vault.bitwarden.com/#/?premium=manage');
}
});
}

View File

@ -1,6 +1,8 @@
import * as angular from 'angular';
import * as template from './settings.component.html';
import { BrowserApi } from '../../../browser/browserApi';
import { DeviceType } from 'jslib/enums/deviceType';
import { ConstantsService } from 'jslib/services/constants.service';
@ -116,7 +118,7 @@ export class SettingsController {
}, (confirmed: boolean) => {
this.$analytics.eventTrack('Clicked Change Password');
if (confirmed) {
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/change-your-master-password/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/change-your-master-password/');
}
});
}
@ -131,7 +133,7 @@ export class SettingsController {
}, (confirmed: boolean) => {
this.$analytics.eventTrack('Clicked Change Email');
if (confirmed) {
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/change-your-email/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/change-your-email/');
}
});
}
@ -146,16 +148,14 @@ export class SettingsController {
}, (confirmed: boolean) => {
this.$analytics.eventTrack('Clicked Two-step Login');
if (confirmed) {
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/setup-two-step-login/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/setup-two-step-login/');
}
});
}
rate() {
this.$analytics.eventTrack('Rate Extension');
chrome.tabs.create({
url: RateUrls[this.platformUtilsService.getDevice()],
});
BrowserApi.createNewTab(RateUrls[this.platformUtilsService.getDevice()]);
}
}

View File

@ -1,5 +1,7 @@
import * as template from './tools.component.html';
import { BrowserApi } from '../../../browser/browserApi';
import { EnvironmentService } from 'jslib/abstractions/environment.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
@ -22,20 +24,18 @@ export class ToolsController {
launchWebVault(createOrg: any) {
this.$analytics.eventTrack('Launch Web Vault' + (createOrg ? ' For Share' : ''));
chrome.tabs.create({ url: this.webVaultBaseUrl + '/#/' + (createOrg ? '?org=free' : '') });
BrowserApi.createNewTab(this.webVaultBaseUrl + '/#/' + (createOrg ? '?org=free' : ''));
}
launchAndroid() {
this.$analytics.eventTrack('Launch Android');
chrome.tabs.create({ url: 'https://play.google.com/store/apps/details?id=com.x8bit.bitwarden' });
BrowserApi.createNewTab('https://play.google.com/store/apps/details?id=com.x8bit.bitwarden');
}
launchiOS() {
this.$analytics.eventTrack('Launch iOS');
chrome.tabs.create({
url: 'https://itunes.apple.com/us/app/bitwarden-free-password-manager/' +
'id1137397744?mt=8',
});
BrowserApi.createNewTab('https://itunes.apple.com/us/app/bitwarden-free-password-manager/' +
'id1137397744?mt=8');
}
launchImport() {
@ -48,7 +48,7 @@ export class ToolsController {
}, (confirmed: boolean) => {
if (confirmed) {
this.$analytics.eventTrack('Launch Web Vault For Import');
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/import-data/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/import-data/');
}
});
}

View File

@ -27,7 +27,7 @@ angular
cancelButtonText: i18nService.cancel
}, function (confirmed) {
if (confirmed) {
chrome.tabs.create({ url: 'https://vault.bitwarden.com/#/?premium=purchase' });
BrowserApi.createNewTab('https://vault.bitwarden.com/#/?premium=purchase');
}
});
return;
@ -44,7 +44,7 @@ angular
cancelButtonText: i18nService.cancel
}, function (confirmed) {
if (confirmed) {
chrome.tabs.create({ url: 'https://help.bitwarden.com/article/update-encryption-key/' });
BrowserApi.createNewTab('https://help.bitwarden.com/article/update-encryption-key/');
}
});
}

View File

@ -208,7 +208,7 @@ angular
$scope.launchWebsite = function (cipher) {
if (cipher.login && cipher.login.uri) {
$analytics.eventTrack('Launched Website');
chrome.tabs.create({ url: cipher.login.uri });
BrowserApi.createNewTab(cipher.login.uri);
}
};

View File

@ -91,7 +91,7 @@ angular
$scope.launchWebsite = function (cipher) {
if (cipher.showLaunch) {
$analytics.eventTrack('Launched Website');
chrome.tabs.create({ url: cipher.login.uri });
BrowserApi.createNewTab(cipher.login.uri);
}
};
@ -133,7 +133,7 @@ angular
cancelButtonText: i18nService.cancel
}, function (confirmed) {
if (confirmed) {
chrome.tabs.create({ url: 'https://bitwarden.com' });
BrowserApi.createNewTab('https://bitwarden.com');
}
});
return;

View File

@ -216,7 +216,7 @@ angular
$scope.launchWebsite = function (cipher) {
if (cipher.login && cipher.login.uri) {
$analytics.eventTrack('Launched Website');
chrome.tabs.create({ url: cipher.login.uri });
BrowserApi.createNewTab(cipher.login.uri);
}
};

View File

@ -1,4 +1,4 @@
import BrowserApi from '../browser/browserApi';
import { BrowserApi } from '../browser/browserApi';
import { AppIdService } from 'jslib/abstractions/appId.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';