import {Component, OnInit} from "@angular/core"; import {RepositoryService} from "./services/repository/repository.service"; import {MatSnackBar} from "@angular/material/snack-bar"; import {LoggingService} from "./services/logging/logging.service"; import {LogEntry, LogLevel} from "./services/logging/LogEntry"; import {environment} from "../environments/environment"; @Component({ selector: "app-root", templateUrl: "./app.component.html", styleUrls: ["./app.component.scss"] }) export class AppComponent implements OnInit { title = "mediarepo-ui"; constructor( private snackBar: MatSnackBar, private logger: LoggingService, private repoService: RepositoryService, ) { } async ngOnInit() { this.logger.logs.subscribe(entry => { this.logEntry(entry); switch (entry.getLevel()) { case LogLevel.Info: this.showInfo(entry.getMessage()); break; case LogLevel.Warn: this.showWarning(entry.getMessage()); break; case LogLevel.Error: this.showError(entry.getMessage()); break; } }); await this.repoService.loadRepositories(); } private showError(err: string) { this.snackBar.open(err, undefined, { panelClass: "app-error", duration: 2000, }); } private showWarning(err: string) { this.snackBar.open(err, undefined, { panelClass: "app-warn", duration: 2000, }); } private showInfo(info: string) { this.snackBar.open(info, undefined, { panelClass: "primary", duration: 2000, }); } private logEntry(entry: LogEntry) { if (!environment.production) { switch (entry.getLevel()) { case LogLevel.Trace: console.trace(entry.getMessage()); break; case LogLevel.Debug: console.debug(entry.getMessage()); break; case LogLevel.Info: console.info(entry.getMessage()); break; case LogLevel.Warn: console.warn(entry.getMessage()); break; } } if (entry.getLevel() == LogLevel.Error) { console.error(entry.getMessage(), entry.getError()); } } }