diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/panel/activities-panel/recording-activity/recording-activity.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/panel/activities-panel/recording-activity/recording-activity.component.ts index 5d390c0c..30062841 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/panel/activities-panel/recording-activity/recording-activity.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/panel/activities-panel/recording-activity/recording-activity.component.ts @@ -176,15 +176,15 @@ export class RecordingActivityComponent implements OnInit { private subscribeToRecordingStatus() { this.recordingStatusSubscription = this.recordingService.recordingStatusObs.subscribe( - (ev: { info: RecordingInfo; time?: Date }) => { + (ev?: { info: RecordingInfo; time?: Date }) => { if (ev?.info) { if (this.recordingStatus !== RecordingStatus.FAILED) { this.oldRecordingStatus = this.recordingStatus; } this.recordingStatus = ev.info.status; this.recordingAlive = ev.info.status === RecordingStatus.STARTED; + this.cd.markForCheck(); } - this.cd.markForCheck(); } ); } diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts index 419023f2..09ac4870 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/toolbar/toolbar.component.ts @@ -695,12 +695,15 @@ export class ToolbarComponent implements OnInit, OnDestroy, AfterViewInit { } private subscribeToRecordingStatus() { - this.recordingSubscription = this.recordingService.recordingStatusObs.subscribe((ev: { info: RecordingInfo; time?: Date }) => { - this.recordingStatus = ev.info.status; - if (ev.time) { - this.recordingTime = ev.time; + this.recordingSubscription = this.recordingService.recordingStatusObs.subscribe((ev?: { info: RecordingInfo; time?: Date }) => { + if (ev) { + this.recordingStatus = ev.info.status; + + if (ev?.time) { + this.recordingTime = ev.time; + } + this.cd.markForCheck(); } - this.cd.markForCheck(); }); } diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/recording/recording.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/recording/recording.service.ts index fc93d7fa..ad7134ce 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/recording/recording.service.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/recording/recording.service.ts @@ -11,12 +11,12 @@ export class RecordingService { /** * Recording status Observable which pushes the recording state in every update. */ - recordingStatusObs: Observable<{ info: RecordingInfo; time?: Date }>; + recordingStatusObs: Observable<{ info: RecordingInfo; time?: Date } | undefined>; private recordingTime: Date | undefined; private recordingTimeInterval: NodeJS.Timer; private currentRecording: RecordingInfo = { status: RecordingStatus.STOPPED }; - private recordingStatus = >new BehaviorSubject(undefined); + private recordingStatus = >new BehaviorSubject(undefined); private baseUrl = '/' + (!!window.location.pathname.split('/')[1] ? window.location.pathname.split('/')[1] + '/' : ''); @@ -106,9 +106,11 @@ export class RecordingService { this.recordingTime = new Date(); this.recordingTime.setHours(0, 0, 0, 0); this.recordingTimeInterval = setInterval(() => { - this.recordingTime.setSeconds(this.recordingTime.getSeconds() + 1); - this.recordingTime = new Date(this.recordingTime.getTime()); - this.recordingStatus.next({ info: this.currentRecording, time: this.recordingTime }); + if(this.recordingTime) { + this.recordingTime.setSeconds(this.recordingTime.getSeconds() + 1); + this.recordingTime = new Date(this.recordingTime.getTime()); + this.recordingStatus.next({ info: this.currentRecording, time: this.recordingTime }); + } }, 1000); }