bitwarden-estensione-browser/src/app/accounts/lock.component.ts

75 lines
3.0 KiB
TypeScript
Raw Normal View History

import {
Component,
NgZone,
OnDestroy,
} from '@angular/core';
import {
ActivatedRoute,
Router,
} from '@angular/router';
2018-02-10 04:47:53 +01:00
import { CryptoService } from 'jslib/abstractions/crypto.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
2019-02-13 16:06:58 +01:00
import { LockService } from 'jslib/abstractions/lock.service';
2018-02-10 04:47:53 +01:00
import { MessagingService } from 'jslib/abstractions/messaging.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
import { StorageService } from 'jslib/abstractions/storage.service';
2018-02-10 04:47:53 +01:00
import { UserService } from 'jslib/abstractions/user.service';
import { ConstantsService } from 'jslib/services/constants.service';
2018-04-05 05:01:40 +02:00
import { LockComponent as BaseLockComponent } from 'jslib/angular/components/lock.component';
2018-02-10 04:47:53 +01:00
@Component({
selector: 'app-lock',
templateUrl: 'lock.component.html',
2018-02-10 04:47:53 +01:00
})
2019-01-08 06:21:28 +01:00
export class LockComponent extends BaseLockComponent implements OnDestroy {
private reloadInterval: number = null;
constructor(router: Router, i18nService: I18nService,
2018-04-05 05:01:40 +02:00
platformUtilsService: PlatformUtilsService, messagingService: MessagingService,
userService: UserService, cryptoService: CryptoService,
private ngZone: NgZone, private route: ActivatedRoute,
2019-02-13 16:06:58 +01:00
storageService: StorageService, lockService: LockService) {
super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,
storageService, lockService);
2018-02-24 19:48:55 +01:00
}
2019-01-08 06:21:28 +01:00
async ngOnInit() {
await super.ngOnInit();
this.route.queryParams.subscribe((params) => {
2019-02-25 20:27:20 +01:00
if (params.refresh === 'true' && !this.lockService.pinLocked) {
// Refresh the renderer window when locked to enure that all purged memory is cleaned up
this.ngZone.runOutsideAngular(() => {
this.reloadInterval = window.setInterval(async () => {
let doRefresh = false;
const lastActive = await this.storageService.get<number>(ConstantsService.lastActiveKey);
if (lastActive != null) {
const diffSeconds = (new Date()).getTime() - lastActive;
// Don't refresh if they are still active in the window
doRefresh = diffSeconds >= 5000;
}
if (doRefresh) {
window.clearInterval(this.reloadInterval);
this.reloadInterval = null;
window.location.reload(true);
}
}, 10000);
});
this.router.navigate([], {
relativeTo: this.route,
queryParams: {},
replaceUrl: true,
});
}
});
}
ngOnDestroy() {
if (this.reloadInterval != null) {
window.clearInterval(this.reloadInterval);
}
}
2018-02-10 04:47:53 +01:00
}