backend: update ov-components room status signal handling to use recording egress data

This commit is contained in:
Carlos Santos 2025-07-04 17:52:57 +02:00
parent 1ab0764ac4
commit e1f60ab3c1
2 changed files with 11 additions and 12 deletions

View File

@ -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 = {

View File

@ -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
);