From e1f60ab3c199cd89076252360fd04aa348fe545d Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Fri, 4 Jul 2025 17:52:57 +0200 Subject: [PATCH] backend: update ov-components room status signal handling to use recording egress data --- backend/src/helpers/ov-components-adapter.helper.ts | 12 +++++++++--- backend/src/services/frontend-event.service.ts | 11 ++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/backend/src/helpers/ov-components-adapter.helper.ts b/backend/src/helpers/ov-components-adapter.helper.ts index 2b97164..18aaba0 100644 --- a/backend/src/helpers/ov-components-adapter.helper.ts +++ b/backend/src/helpers/ov-components-adapter.helper.ts @@ -1,5 +1,6 @@ import { MeetRecordingInfo, MeetRecordingStatus } from '@typings-ce'; -import { SendDataOptions } from 'livekit-server-sdk'; +import { EgressInfo, EgressStatus, SendDataOptions } from 'livekit-server-sdk'; +import { RecordingHelper } from './recording.helper.js'; const enum OpenViduComponentsDataTopic { CHAT = 'chat', @@ -27,9 +28,14 @@ export class OpenViduComponentsAdapterHelper { return { payload, options }; } - static generateRoomStatusSignal(isRecordingStarted: boolean, participantSid?: string) { + static generateRoomStatusSignal(recordingEgress: EgressInfo[], participantSid?: string) { + const isRecordingActive = recordingEgress.some((egress) => egress.status === EgressStatus.EGRESS_ACTIVE); const payload = { - isRecordingStarted + isRecordingStarted: isRecordingActive, + recordingList: recordingEgress.map((egress) => { + const recInfo = RecordingHelper.toRecordingInfo(egress); + return OpenViduComponentsAdapterHelper.parseRecordingInfoToOpenViduComponents(recInfo); + }) }; const options = { diff --git a/backend/src/services/frontend-event.service.ts b/backend/src/services/frontend-event.service.ts index 561e618..9dd906e 100644 --- a/backend/src/services/frontend-event.service.ts +++ b/backend/src/services/frontend-event.service.ts @@ -45,18 +45,11 @@ export class FrontendEventService { this.logger.debug(`Sending room status signal for room ${roomId} to OpenVidu Components.`); try { - // Check if recording is started in the room - const activeEgressArray = await this.livekitService.getActiveEgress(roomId); - const isRecordingStarted = activeEgressArray.length > 0; - - // Skip if recording is not started - if (!isRecordingStarted) { - return; - } + const recordingEgress = await this.livekitService.getRecordingsEgress(roomId); // Construct the payload and signal options const { payload, options } = OpenViduComponentsAdapterHelper.generateRoomStatusSignal( - isRecordingStarted, + recordingEgress, participantSid );