mirror of https://github.com/OpenVidu/openvidu.git
openvidu-components: Refactored recording and broadcasting services
parent
e45aec750e
commit
421869d48e
|
@ -31,7 +31,6 @@ import { VideoType } from '../../models/video-type.model';
|
||||||
import { animate, style, transition, trigger } from '@angular/animations';
|
import { animate, style, transition, trigger } from '@angular/animations';
|
||||||
import { MatDrawerContainer, MatSidenav } from '@angular/material/sidenav';
|
import { MatDrawerContainer, MatSidenav } from '@angular/material/sidenav';
|
||||||
import { skip, Subscription } from 'rxjs';
|
import { skip, Subscription } from 'rxjs';
|
||||||
import { BroadcastingStatus } from '../../models/broadcasting.model';
|
|
||||||
import { SidenavMode } from '../../models/layout.model';
|
import { SidenavMode } from '../../models/layout.model';
|
||||||
import { PanelEvent, PanelType } from '../../models/panel.model';
|
import { PanelEvent, PanelType } from '../../models/panel.model';
|
||||||
import { Signal } from '../../models/signal.model';
|
import { Signal } from '../../models/signal.model';
|
||||||
|
@ -443,8 +442,8 @@ export class SessionComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
private subscribeToBroadcastingEvents() {
|
private subscribeToBroadcastingEvents() {
|
||||||
this.session.on('broadcastStarted', () => this.broadcastingService.updateStatus(BroadcastingStatus.STARTED));
|
this.session.on('broadcastStarted', () => this.broadcastingService.startBroadcasting());
|
||||||
this.session.on('broadcastStopped', () => this.broadcastingService.updateStatus(BroadcastingStatus.STOPPED));
|
this.session.on('broadcastStopped', () => this.broadcastingService.stopBroadcasting());
|
||||||
}
|
}
|
||||||
|
|
||||||
private startUpdateLayoutInterval() {
|
private startUpdateLayoutInterval() {
|
||||||
|
|
|
@ -15,23 +15,31 @@ export class BroadcastingService {
|
||||||
private broadcastingTimeInterval: NodeJS.Timer;
|
private broadcastingTimeInterval: NodeJS.Timer;
|
||||||
private broadcastingStatus = <BehaviorSubject<{ status: BroadcastingStatus; time?: Date } | undefined>>new BehaviorSubject(undefined);
|
private broadcastingStatus = <BehaviorSubject<{ status: BroadcastingStatus; time?: Date } | undefined>>new BehaviorSubject(undefined);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
this.broadcastingStatusObs = this.broadcastingStatus.asObservable();
|
this.broadcastingStatusObs = this.broadcastingStatus.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* Update the broadcasting status. This method is used by the OpenVidu Angular library to update the broadcasting status.
|
||||||
* @param status
|
* @param status {@link BroadcastingStatus}
|
||||||
*/
|
*/
|
||||||
updateStatus(status: BroadcastingStatus) {
|
updateStatus(status: BroadcastingStatus) {
|
||||||
if (status === BroadcastingStatus.STARTED) {
|
|
||||||
this.startBroadcastingTime();
|
|
||||||
} else {
|
|
||||||
this.stopBroadcastingTime();
|
|
||||||
}
|
|
||||||
this.broadcastingStatus.next({ status, time: this.broadcastingTime });
|
this.broadcastingStatus.next({ status, time: this.broadcastingTime });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
startBroadcasting() {
|
||||||
|
this.startBroadcastingTime();
|
||||||
|
this.updateStatus(BroadcastingStatus.STARTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
stopBroadcasting() {
|
||||||
|
this.stopBroadcastingTime();
|
||||||
|
this.updateStatus(BroadcastingStatus.STOPPED);
|
||||||
|
}
|
||||||
|
|
||||||
private startBroadcastingTime() {
|
private startBroadcastingTime() {
|
||||||
this.broadcastingTime = new Date();
|
this.broadcastingTime = new Date();
|
||||||
this.broadcastingTime.setHours(0, 0, 0, 0);
|
this.broadcastingTime.setHours(0, 0, 0, 0);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { DomSanitizer } from '@angular/platform-browser';
|
|
||||||
import { RecordingEvent } from 'openvidu-browser';
|
import { RecordingEvent } from 'openvidu-browser';
|
||||||
import { BehaviorSubject, Observable } from 'rxjs';
|
import { BehaviorSubject, Observable } from 'rxjs';
|
||||||
import { RecordingInfo, RecordingStatus } from '../../models/recording.model';
|
import { RecordingInfo, RecordingStatus } from '../../models/recording.model';
|
||||||
|
@ -23,16 +22,14 @@ export class RecordingService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
* @param actionService
|
|
||||||
* @param sanitizer
|
|
||||||
*/
|
*/
|
||||||
constructor(private actionService: ActionService, private sanitizer: DomSanitizer) {
|
constructor(private actionService: ActionService) {
|
||||||
this.recordingStatusObs = this.recordingStatus.asObservable();
|
this.recordingStatusObs = this.recordingStatus.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @param status {@link RecordingStatus}
|
||||||
* @param status
|
* Update the recording status. This method is used by the OpenVidu Angular library to update the recording status.
|
||||||
*/
|
*/
|
||||||
updateStatus(status: RecordingStatus) {
|
updateStatus(status: RecordingStatus) {
|
||||||
this.currentRecording = {
|
this.currentRecording = {
|
||||||
|
|
Loading…
Reference in New Issue