From 4308947893749530b9aa43c754086d60fd308a47 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 13 Apr 2018 22:08:24 -0400 Subject: [PATCH] private mode component --- src/popup/app-routing.module.ts | 6 ++++++ src/popup/app.component.ts | 6 ++++++ src/popup/app.module.ts | 9 ++++---- src/popup/private-mode.component.html | 6 ++++++ src/popup/private-mode.component.ts | 24 ++++++++++++++++++++++ src/popup/scss/base.scss | 4 ++++ src/popup/services/launch-guard.service.ts | 7 +++++++ src/popup/services/services.module.ts | 6 +++--- src/popup/vault/current-tab.component.html | 4 ++-- 9 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 src/popup/private-mode.component.html create mode 100644 src/popup/private-mode.component.ts diff --git a/src/popup/app-routing.module.ts b/src/popup/app-routing.module.ts index e991f1b6cd..d09db52783 100644 --- a/src/popup/app-routing.module.ts +++ b/src/popup/app-routing.module.ts @@ -18,6 +18,7 @@ import { TwoFactorOptionsComponent } from './accounts/two-factor-options.compone import { TwoFactorComponent } from './accounts/two-factor.component'; import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; import { PasswordGeneratorComponent } from './generator/password-generator.component'; +import { PrivateModeComponent } from './private-mode.component'; import { ExportComponent } from './settings/export.component'; import { FolderAddEditComponent } from './settings/folder-add-edit.component'; import { FoldersComponent } from './settings/folders.component'; @@ -175,6 +176,11 @@ const routes: Routes = [ canActivate: [AuthGuardService], data: { state: 'options' }, }, + { + path: 'private-mode', + component: PrivateModeComponent, + data: { state: 'private-mode' }, + }, { path: 'tabs', component: TabsComponent, diff --git a/src/popup/app.component.ts b/src/popup/app.component.ts index 559ddf5c6b..88a68385ef 100644 --- a/src/popup/app.component.ts +++ b/src/popup/app.component.ts @@ -1,3 +1,5 @@ +import { BrowserApi } from '../browser/browserApi'; + import { ToasterConfig, ToasterContainerComponent, @@ -65,6 +67,10 @@ export class AppComponent implements OnInit { private changeDetectorRef: ChangeDetectorRef, private ngZone: NgZone) { } ngOnInit() { + if (BrowserApi.getBackgroundPage() == null) { + return; + } + this.ngZone.runOutsideAngular(() => { window.onmousemove = () => this.recordActivity(); window.onmousedown = () => this.recordActivity(); diff --git a/src/popup/app.module.ts b/src/popup/app.module.ts index a5ac551e70..568af3cad2 100644 --- a/src/popup/app.module.ts +++ b/src/popup/app.module.ts @@ -14,8 +14,6 @@ import { FormsModule } from '@angular/forms'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { AppComponent } from './app.component'; - import { EnvironmentComponent } from './accounts/environment.component'; import { HintComponent } from './accounts/hint.component'; import { HomeComponent } from './accounts/home.component'; @@ -24,8 +22,10 @@ import { LoginComponent } from './accounts/login.component'; import { RegisterComponent } from './accounts/register.component'; import { TwoFactorOptionsComponent } from './accounts/two-factor-options.component'; import { TwoFactorComponent } from './accounts/two-factor.component'; +import { AppComponent } from './app.component'; import { PasswordGeneratorHistoryComponent } from './generator/password-generator-history.component'; import { PasswordGeneratorComponent } from './generator/password-generator.component'; +import { PrivateModeComponent } from './private-mode.component'; import { ExportComponent } from './settings/export.component'; import { FolderAddEditComponent } from './settings/folder-add-edit.component'; import { FoldersComponent } from './settings/folders.component'; @@ -102,6 +102,7 @@ import { IconComponent } from 'jslib/angular/components/icon.component'; PasswordGeneratorHistoryComponent, PopOutComponent, PremiumComponent, + PrivateModeComponent, RegisterComponent, SearchCiphersPipe, SettingsComponent, @@ -113,9 +114,7 @@ import { IconComponent } from 'jslib/angular/components/icon.component'; TwoFactorComponent, ViewComponent, ], - entryComponents: [ - - ], + entryComponents: [], providers: [], bootstrap: [AppComponent], }) diff --git a/src/popup/private-mode.component.html b/src/popup/private-mode.component.html new file mode 100644 index 0000000000..f01efc966a --- /dev/null +++ b/src/popup/private-mode.component.html @@ -0,0 +1,6 @@ +
+

{{privateModeMessage}}

+ +
diff --git a/src/popup/private-mode.component.ts b/src/popup/private-mode.component.ts new file mode 100644 index 0000000000..4fd4bc7915 --- /dev/null +++ b/src/popup/private-mode.component.ts @@ -0,0 +1,24 @@ +import { BrowserApi } from '../browser/browserApi'; + +import { + Component, + OnInit, +} from '@angular/core'; + +@Component({ + selector: 'app-private-mode', + templateUrl: 'private-mode.component.html', +}) +export class PrivateModeComponent implements OnInit { + privateModeMessage: string; + learnMoreMessage: string; + + ngOnInit() { + this.privateModeMessage = chrome.i18n.getMessage('privateModeMessage'); + this.learnMoreMessage = chrome.i18n.getMessage('learnMore'); + } + + learnMore() { + BrowserApi.createNewTab('https://help.bitwarden.com/article/extension-wont-load-in-private-mode/'); + } +} diff --git a/src/popup/scss/base.scss b/src/popup/scss/base.scss index 3749eba8a7..bcc1301475 100644 --- a/src/popup/scss/base.scss +++ b/src/popup/scss/base.scss @@ -76,6 +76,10 @@ textarea { resize: vertical; } +main { + height: 100%; +} + content::-webkit-scrollbar { width: 10px; height: 10px; diff --git a/src/popup/services/launch-guard.service.ts b/src/popup/services/launch-guard.service.ts index b60b99ecda..0f045482fa 100644 --- a/src/popup/services/launch-guard.service.ts +++ b/src/popup/services/launch-guard.service.ts @@ -1,3 +1,5 @@ +import { BrowserApi } from '../../browser/browserApi'; + import { Injectable } from '@angular/core'; import { CanActivate, @@ -12,6 +14,11 @@ export class LaunchGuardService implements CanActivate { constructor(private cryptoService: CryptoService, private userService: UserService, private router: Router) { } async canActivate() { + if (BrowserApi.getBackgroundPage() == null) { + this.router.navigate(['private-mode']); + return false; + } + const isAuthed = await this.userService.isAuthenticated(); if (!isAuthed) { return true; diff --git a/src/popup/services/services.module.ts b/src/popup/services/services.module.ts index a7062f1cd4..6a92bbf131 100644 --- a/src/popup/services/services.module.ts +++ b/src/popup/services/services.module.ts @@ -73,10 +73,10 @@ export function initFactory(i18nService: I18nService, storageService: StorageSer window.document.body.classList.add('body-sm'); } - stateService.save(ConstantsService.disableFaviconKey, - await storageService.get(ConstantsService.disableFaviconKey)); - if (BrowserApi.getBackgroundPage() != null) { + stateService.save(ConstantsService.disableFaviconKey, + await storageService.get(ConstantsService.disableFaviconKey)); + window.document.documentElement.classList.add('locale_' + i18nService.translationLocale); authService.init(); diff --git a/src/popup/vault/current-tab.component.html b/src/popup/vault/current-tab.component.html index 955c0113af..2188d4535e 100644 --- a/src/popup/vault/current-tab.component.html +++ b/src/popup/vault/current-tab.component.html @@ -30,8 +30,8 @@ -
-

{{'autoFillInfo' | i18n}}

+
+

{{'autoFillInfo' | i18n}}