logs.component.ts raw
1 import { Component, inject, OnInit } from '@angular/core';
2 import { Router } from '@angular/router';
3 import { LoggerService, LogEntry, NavComponent } from '@common';
4 import { DatePipe } from '@angular/common';
5
6 @Component({
7 selector: 'app-logs',
8 templateUrl: './logs.component.html',
9 styleUrl: './logs.component.scss',
10 imports: [DatePipe],
11 })
12 export class LogsComponent extends NavComponent implements OnInit {
13 readonly #logger = inject(LoggerService);
14 readonly #router = inject(Router);
15
16 get logs(): LogEntry[] {
17 return this.#logger.logs;
18 }
19
20 ngOnInit() {
21 // Refresh logs from storage to get background script logs
22 this.#logger.refreshLogs();
23 }
24
25 async onRefresh() {
26 await this.#logger.refreshLogs();
27 }
28
29 async onClear() {
30 await this.#logger.clear();
31 }
32
33 getLevelClass(level: LogEntry['level']): string {
34 switch (level) {
35 case 'error':
36 return 'log-error';
37 case 'warn':
38 return 'log-warn';
39 case 'debug':
40 return 'log-debug';
41 default:
42 return 'log-info';
43 }
44 }
45
46 async onClickLock() {
47 this.#logger.logVaultLock();
48 await this.storage.lockVault();
49 this.#router.navigateByUrl('/vault-login');
50 }
51 }
52