diff --git a/src/angular/components/password-history.component.ts b/src/angular/components/password-history.component.ts new file mode 100644 index 0000000000..350dc6ed78 --- /dev/null +++ b/src/angular/components/password-history.component.ts @@ -0,0 +1,32 @@ +import { ToasterService } from 'angular2-toaster'; +import { Angulartics2 } from 'angulartics2'; + +import { OnInit } from '@angular/core'; + +import { CipherService } from '../../abstractions/cipher.service'; +import { I18nService } from '../../abstractions/i18n.service'; +import { PlatformUtilsService } from '../../abstractions/platformUtils.service'; + +import { PasswordHistoryView } from '../../models/view/passwordHistoryView'; + +export class PasswordHistoryComponent implements OnInit { + cipherId: string; + history: PasswordHistoryView[] = []; + + constructor(protected cipherService: CipherService, protected analytics: Angulartics2, + protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService, + protected toasterService: ToasterService, private win: Window) { } + + async ngOnInit() { + const cipher = await this.cipherService.get(this.cipherId); + const decCipher = await cipher.decrypt(); + this.history = decCipher.passwordHistory == null ? [] : decCipher.passwordHistory; + } + + copy(password: string) { + this.analytics.eventTrack.next({ action: 'Copied Password History' }); + const copyOptions = this.win != null ? { doc: this.win.document } : null; + this.platformUtilsService.copyToClipboard(password, copyOptions); + this.toasterService.popAsync('info', null, this.i18nService.t('valueCopied', this.i18nService.t('password'))); + } +} diff --git a/src/angular/components/view.component.ts b/src/angular/components/view.component.ts index a7325893dc..15a773b23c 100644 --- a/src/angular/components/view.component.ts +++ b/src/angular/components/view.component.ts @@ -27,6 +27,7 @@ import { LoginUriView } from '../../models/view/loginUriView'; export class ViewComponent implements OnDestroy { @Input() cipherId: string; @Output() onEditCipher = new EventEmitter(); + @Output() onViewCipherPasswordHistory = new EventEmitter(); cipher: CipherView; showPassword: boolean; @@ -159,6 +160,11 @@ export class ViewComponent implements OnDestroy { a.downloading = false; } + viewHistory() { + this.analytics.eventTrack.next({ action: 'View Password History' }); + this.onViewCipherPasswordHistory.emit(this.cipher); + } + private cleanUp() { this.totpCode = null; this.cipher = null;