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