From 4ebc5a2e161c7e4ce38dc730f7ac3c97b37f2781 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Fri, 4 Jul 2025 15:43:01 +0200 Subject: [PATCH] frontend: add onRoomCreated event handler to manage room preferences updates --- .../video-room/video-room.component.html | 1 + .../pages/video-room/video-room.component.ts | 28 +++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.html b/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.html index 70d303a..f8b254a 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.html +++ b/frontend/projects/shared-meet-components/src/lib/pages/video-room/video-room.component.html @@ -133,6 +133,7 @@ (onParticipantLeft)="onParticipantLeft($event)" (onRecordingStartRequested)="onRecordingStartRequested($event)" (onRecordingStopRequested)="onRecordingStopRequested($event)" + (onRoomCreated)="onRoomCreated($event)" > @if (features().canModerateRoom) {
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 9b6565b..d70503c 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 @@ -23,16 +23,27 @@ import { SessionStorageService, WebComponentManagerService } from '@lib/services'; -import { ParticipantRole, WebComponentEvent, WebComponentOutboundEventMessage } from '@lib/typings/ce'; +import { + MeetRoomPreferences, + ParticipantRole, + WebComponentEvent, + WebComponentOutboundEventMessage +} from '@lib/typings/ce'; +import { MeetSignalType } from '@lib/typings/ce/event.model'; + import { ApiDirectiveModule, + DataPacket_Kind, OpenViduComponentsUiModule, OpenViduService, ParticipantLeftEvent, ParticipantLeftReason, ParticipantModel, RecordingStartRequestedEvent, - RecordingStopRequestedEvent + RecordingStopRequestedEvent, + RemoteParticipant, + Room, + RoomEvent } from 'openvidu-components-angular'; @Component({ @@ -100,6 +111,19 @@ export class VideoRoomComponent implements OnInit, OnDestroy { this.wcManagerService.stopCommandsListener(); } + onRoomCreated(room: Room) { + room.on( + RoomEvent.DataReceived, + (payload: Uint8Array, participant?: RemoteParticipant, _?: DataPacket_Kind, topic?: string) => { + const event = JSON.parse(new TextDecoder().decode(payload)); + if (topic === MeetSignalType.MEET_ROOM_PREFERENCES_UPDATED) { + const roomPreferences: MeetRoomPreferences = event.preferences; + this.featureConfService.setRoomPreferences(roomPreferences); + } + } + ); + } + get isAdmin(): boolean { return this.authService.isAdmin(); }