import { Component, NgZone, OnDestroy, } from '@angular/core'; import { ActivatedRoute, Router, } from '@angular/router'; import { ApiService } from 'jslib-common/abstractions/api.service'; import { BroadcasterService } from 'jslib-common/abstractions/broadcaster.service'; import { CryptoService } from 'jslib-common/abstractions/crypto.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; import { MessagingService } from 'jslib-common/abstractions/messaging.service'; import { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service'; import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service'; import { PolicyService } from 'jslib-common/abstractions/policy.service'; import { StateService } from 'jslib-common/abstractions/state.service'; import { SyncService } from 'jslib-common/abstractions/sync.service'; const BroadcasterSubscriptionId = 'SetPasswordComponent'; import { SetPasswordComponent as BaseSetPasswordComponent, } from 'jslib-angular/components/set-password.component'; @Component({ selector: 'app-set-password', templateUrl: 'set-password.component.html', }) export class SetPasswordComponent extends BaseSetPasswordComponent implements OnDestroy { constructor(apiService: ApiService, i18nService: I18nService, cryptoService: CryptoService, messagingService: MessagingService, passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService, policyService: PolicyService, router: Router, syncService: SyncService, route: ActivatedRoute, private broadcasterService: BroadcasterService, private ngZone: NgZone, stateService: StateService) { super(i18nService, cryptoService, messagingService, passwordGenerationService, platformUtilsService, policyService, router, apiService, syncService, route, stateService); } get masterPasswordScoreWidth() { return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20; } get masterPasswordScoreColor() { switch (this.masterPasswordScore) { case 4: return 'success'; case 3: return 'primary'; case 2: return 'warning'; default: return 'danger'; } } get masterPasswordScoreText() { switch (this.masterPasswordScore) { case 4: return this.i18nService.t('strong'); case 3: return this.i18nService.t('good'); case 2: return this.i18nService.t('weak'); default: return this.masterPasswordScore != null ? this.i18nService.t('weak') : null; } } async ngOnInit() { await super.ngOnInit(); this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { this.ngZone.run(() => { switch (message.command) { case 'windowHidden': this.onWindowHidden(); break; default: } }); }); } ngOnDestroy() { this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); } onWindowHidden() { this.showPassword = false; } }