35 lines
1023 B
TypeScript
35 lines
1023 B
TypeScript
import { Injectable } from '@angular/core';
|
|
import { WebSocketService } from './websocket.service';
|
|
import { LogMessage } from '../message-types/log-message';
|
|
import { ProcessLogMessage } from '../message-types/process-log-message';
|
|
import { config } from '../config';
|
|
import { BehaviorSubject } from 'rxjs';
|
|
|
|
@Injectable()
|
|
export class ProcessLogService {
|
|
newLogs = new BehaviorSubject<LogMessage>(config.console.defaultLogs);
|
|
showLiveLogs = config.console.showLiveLogs;
|
|
|
|
constructor(private webSocketService: WebSocketService) {
|
|
this.webSocketService.connect();
|
|
this.webSocketService.observeKey<ProcessLogMessage>('process.log.new').subscribe(
|
|
message => this.newLogsHandler(message)
|
|
);
|
|
}
|
|
|
|
emitNewLogsIfNoLiveLogs(logs: LogMessage) {
|
|
if (!this.showLiveLogs) {
|
|
this.newLogs.next(logs);
|
|
}
|
|
}
|
|
|
|
newLogsHandler(message: ProcessLogMessage) {
|
|
if (this.showLiveLogs) {
|
|
this.newLogs.next({
|
|
stdout: message.stdout,
|
|
stderr: message.stderr
|
|
});
|
|
}
|
|
}
|
|
}
|