From 96dd1a11374f039dd0e883eaef448c5a5c0ee116 Mon Sep 17 00:00:00 2001 From: juancarmore Date: Fri, 25 Jul 2025 22:12:36 +0200 Subject: [PATCH] frontend: refactor playRecording method to generate recording URL and open it in a new tab --- .../console/recordings/recordings.component.ts | 4 ++-- .../room-recordings/room-recordings.component.ts | 4 ++-- .../lib/pages/video-room/video-room.component.ts | 4 +--- .../lib/services/recording-manager.service.ts | 16 ++++++++-------- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/frontend/projects/shared-meet-components/src/lib/pages/console/recordings/recordings.component.ts b/frontend/projects/shared-meet-components/src/lib/pages/console/recordings/recordings.component.ts index 5e0d90e..a704d90 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/console/recordings/recordings.component.ts +++ b/frontend/projects/shared-meet-components/src/lib/pages/console/recordings/recordings.component.ts @@ -122,8 +122,8 @@ export class RecordingsComponent implements OnInit { await this.loadRecordings(filters); } - private playRecording(recording: MeetRecordingInfo) { - this.recordingService.playRecording(recording.recordingId); + private async playRecording(recording: MeetRecordingInfo) { + await this.recordingService.playRecording(recording.recordingId); } private downloadRecording(recording: MeetRecordingInfo) { diff --git a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts index 833f64f..ab15ba6 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts +++ b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts @@ -130,8 +130,8 @@ export class RoomRecordingsComponent implements OnInit { await this.loadRecordings(); } - private playRecording(recording: MeetRecordingInfo) { - this.recordingService.playRecording(recording.recordingId); + private async playRecording(recording: MeetRecordingInfo) { + await this.recordingService.playRecording(recording.recordingId); } private downloadRecording(recording: MeetRecordingInfo) { diff --git a/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.ts b/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.ts index 5276dd0..5dd7254 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.ts +++ b/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.ts @@ -410,9 +410,7 @@ export class VideoRoomComponent implements OnInit { async onViewRecordingsClicked(recordingId?: any) { if (recordingId) { - const privateAccess = await this.authService.isUserAuthenticated(); - const { url } = await this.recordingService.generateRecordingUrl(recordingId, privateAccess); - window.open(url, '_blank'); + await this.recordingService.playRecording(recordingId); } else { window.open(`/room/${this.roomId}/recordings?secret=${this.roomSecret}`, '_blank'); } diff --git a/frontend/projects/shared-meet-components/src/lib/services/recording-manager.service.ts b/frontend/projects/shared-meet-components/src/lib/services/recording-manager.service.ts index ece449f..85e465f 100644 --- a/frontend/projects/shared-meet-components/src/lib/services/recording-manager.service.ts +++ b/frontend/projects/shared-meet-components/src/lib/services/recording-manager.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { ShareRecordingDialogComponent } from '@lib/components'; -import { HttpService, ParticipantTokenService } from '@lib/services'; +import { AuthService, HttpService, ParticipantTokenService } from '@lib/services'; import { MeetRecordingFilters, MeetRecordingInfo, RecordingPermissions } from '@lib/typings/ce'; import { getValidDecodedToken } from '@lib/utils'; -import { ActionService, LoggerService } from 'openvidu-components-angular'; +import { LoggerService } from 'openvidu-components-angular'; @Injectable({ providedIn: 'root' @@ -24,7 +24,7 @@ export class RecordingManagerService { protected loggerService: LoggerService, private httpService: HttpService, protected participantService: ParticipantTokenService, - private actionService: ActionService, + protected authService: AuthService, protected dialog: MatDialog ) { this.log = this.loggerService.get('OpenVidu Meet - RecordingManagerService'); @@ -215,14 +215,14 @@ export class RecordingManagerService { } /** - * Plays a recording by opening a dialog with the recording player + * Plays a recording by generating a URL and opening it in a new tab * * @param recordingId - The ID of the recording to play - * @param secret - Optional secret for accessing the recording */ - playRecording(recordingId: string, secret?: string) { - const recordingUrl = this.getRecordingMediaUrl(recordingId, secret); - this.actionService.openRecordingPlayerDialog(recordingUrl); + async playRecording(recordingId: string) { + const privateAccess = await this.authService.isUserAuthenticated(); + const { url } = await this.generateRecordingUrl(recordingId, privateAccess); + window.open(url, '_blank'); } /**