openvidu-components: Refactored recording and broadcasting services

pull/780/head
Carlos Santos 2023-02-22 13:07:47 +01:00
parent e45aec750e
commit 421869d48e
3 changed files with 20 additions and 16 deletions

View File

@ -31,7 +31,6 @@ import { VideoType } from '../../models/video-type.model';
import { animate, style, transition, trigger } from '@angular/animations';
import { MatDrawerContainer, MatSidenav } from '@angular/material/sidenav';
import { skip, Subscription } from 'rxjs';
import { BroadcastingStatus } from '../../models/broadcasting.model';
import { SidenavMode } from '../../models/layout.model';
import { PanelEvent, PanelType } from '../../models/panel.model';
import { Signal } from '../../models/signal.model';
@ -443,8 +442,8 @@ export class SessionComponent implements OnInit, OnDestroy {
}
private subscribeToBroadcastingEvents() {
this.session.on('broadcastStarted', () => this.broadcastingService.updateStatus(BroadcastingStatus.STARTED));
this.session.on('broadcastStopped', () => this.broadcastingService.updateStatus(BroadcastingStatus.STOPPED));
this.session.on('broadcastStarted', () => this.broadcastingService.startBroadcasting());
this.session.on('broadcastStopped', () => this.broadcastingService.stopBroadcasting());
}
private startUpdateLayoutInterval() {

View File

@ -15,23 +15,31 @@ export class BroadcastingService {
private broadcastingTimeInterval: NodeJS.Timer;
private broadcastingStatus = <BehaviorSubject<{ status: BroadcastingStatus; time?: Date } | undefined>>new BehaviorSubject(undefined);
/**
* @internal
*/
constructor() {
this.broadcastingStatusObs = this.broadcastingStatus.asObservable();
}
/**
* @internal
* @param status
* Update the broadcasting status. This method is used by the OpenVidu Angular library to update the broadcasting status.
* @param status {@link BroadcastingStatus}
*/
updateStatus(status: BroadcastingStatus) {
if (status === BroadcastingStatus.STARTED) {
this.startBroadcastingTime();
} else {
this.stopBroadcastingTime();
}
this.broadcastingStatus.next({ status, time: this.broadcastingTime });
}
startBroadcasting() {
this.startBroadcastingTime();
this.updateStatus(BroadcastingStatus.STARTED);
}
stopBroadcasting() {
this.stopBroadcastingTime();
this.updateStatus(BroadcastingStatus.STOPPED);
}
private startBroadcastingTime() {
this.broadcastingTime = new Date();
this.broadcastingTime.setHours(0, 0, 0, 0);

View File

@ -1,5 +1,4 @@
import { Injectable } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { RecordingEvent } from 'openvidu-browser';
import { BehaviorSubject, Observable } from 'rxjs';
import { RecordingInfo, RecordingStatus } from '../../models/recording.model';
@ -23,16 +22,14 @@ export class RecordingService {
/**
* @internal
* @param actionService
* @param sanitizer
*/
constructor(private actionService: ActionService, private sanitizer: DomSanitizer) {
constructor(private actionService: ActionService) {
this.recordingStatusObs = this.recordingStatus.asObservable();
}
/**
* @internal
* @param status
* @param status {@link RecordingStatus}
* Update the recording status. This method is used by the OpenVidu Angular library to update the recording status.
*/
updateStatus(status: RecordingStatus) {
this.currentRecording = {