From 4f9116707c031b407860f10dfd4740e04f034be4 Mon Sep 17 00:00:00 2001 From: juancarmore Date: Tue, 18 Nov 2025 14:22:02 +0100 Subject: [PATCH] frontend: update room configuration methods to accept partial configurations and improve handling of optional properties --- .../room-config/room-config.component.html | 2 +- .../room-config/room-config.component.ts | 40 ++++++++++--------- .../services/meeting/meeting-lobby.service.ts | 2 +- .../src/lib/services/room.service.ts | 2 +- .../src/lib/services/wizard-state.service.ts | 10 ++--- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-config/room-config.component.html b/meet-ce/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-config/room-config.component.html index d117c2eb..fdc50563 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-config/room-config.component.html +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/pages/console/rooms/room-wizard/steps/room-config/room-config.component.html @@ -100,7 +100,7 @@ step.id === 'recording'); + const recordingStep = this.wizardService.steps().find((step) => step.id === 'recording'); if (!recordingStep) return; if (isEnabled) { @@ -72,15 +70,21 @@ export class RoomConfigComponent implements OnDestroy { } // Disable recording automatically - recordingStep.formGroup.patchValue({ - recordingEnabled: 'disabled' - }, { emitEvent: true }); + recordingStep.formGroup.patchValue( + { + recordingEnabled: 'disabled' + }, + { emitEvent: true } + ); } else { // Restore the previous recording state when E2EE is disabled if (this.recordingStateBeforeE2EE !== null) { - recordingStep.formGroup.patchValue({ - recordingEnabled: this.recordingStateBeforeE2EE - }, { emitEvent: true }); + recordingStep.formGroup.patchValue( + { + recordingEnabled: this.recordingStateBeforeE2EE + }, + { emitEvent: true } + ); // Clear the saved state this.recordingStateBeforeE2EE = null; @@ -95,15 +99,15 @@ export class RoomConfigComponent implements OnDestroy { onVirtualBackgroundToggleChange(event: any): void { const isEnabled = event.checked; - this.configForm.patchValue({ virtualBackgroundsEnabled: isEnabled }); + this.configForm.patchValue({ virtualBackgroundEnabled: isEnabled }); } get chatEnabled(): boolean { return this.configForm.value.chatEnabled || false; } - get virtualBackgroundsEnabled(): boolean { - return this.configForm.value.virtualBackgroundsEnabled ?? false; + get virtualBackgroundEnabled(): boolean { + return this.configForm.value.virtualBackgroundEnabled ?? false; } get e2eeEnabled(): boolean { diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/services/meeting/meeting-lobby.service.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/services/meeting/meeting-lobby.service.ts index 56676b18..439a26f6 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/services/meeting/meeting-lobby.service.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/services/meeting/meeting-lobby.service.ts @@ -92,7 +92,7 @@ export class MeetingLobbyService { this.state.roomSecret = this.roomService.getRoomSecret(); this.state.room = await this.roomService.getRoom(this.state.roomId); this.state.roomClosed = this.state.room.status === MeetRoomStatus.CLOSED; - this.state.isE2EEEnabled = this.state.room.config.e2ee?.enabled || false; + this.state.isE2EEEnabled = this.state.room.config.e2ee.enabled; // If E2EE is enabled, require e2eeKey if (this.state.isE2EEEnabled) { diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/services/room.service.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/services/room.service.ts index fab2ad23..526e24dc 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/services/room.service.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/services/room.service.ts @@ -225,7 +225,7 @@ export class RoomService { * @param config - The room config to be saved. * @returns A promise that resolves when the config have been saved. */ - async updateRoomConfig(roomId: string, config: MeetRoomConfig): Promise { + async updateRoomConfig(roomId: string, config: Partial): Promise { this.log.d('Saving room config', config); const path = `${this.ROOMS_API}/${roomId}/config`; await this.httpService.putRequest(path, { config }); diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts index e368fc07..a0644d63 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/services/wizard-state.service.ts @@ -157,8 +157,8 @@ export class RoomWizardStateService { isActive: editMode, // Only active in edit mode isVisible: true, formGroup: this.formBuilder.group({ - recordingEnabled: initialRoomOptions.config!.recording.enabled ? 'enabled' : 'disabled', - allowAccessTo: initialRoomOptions.config!.recording.allowAccessTo + recordingEnabled: initialRoomOptions.config!.recording!.enabled ? 'enabled' : 'disabled', + allowAccessTo: initialRoomOptions.config!.recording!.allowAccessTo }) }, { @@ -188,9 +188,9 @@ export class RoomWizardStateService { isActive: false, isVisible: true, formGroup: this.formBuilder.group({ - chatEnabled: initialRoomOptions.config!.chat.enabled, - virtualBackgroundsEnabled: initialRoomOptions.config!.virtualBackground.enabled, - e2eeEnabled: initialRoomOptions.config!.e2ee?.enabled ?? false + chatEnabled: initialRoomOptions.config!.chat!.enabled, + virtualBackgroundEnabled: initialRoomOptions.config!.virtualBackground!.enabled, + e2eeEnabled: initialRoomOptions.config!.e2ee!.enabled }) } ];