diff --git a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/components/session/session.component.ts b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/components/session/session.component.ts index d27d105db..464023608 100644 --- a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/components/session/session.component.ts +++ b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/components/session/session.component.ts @@ -13,27 +13,17 @@ import { ViewChild } from '@angular/core'; -import { ILogger } from '../../models/logger.model'; import { animate, style, transition, trigger } from '@angular/animations'; import { MatDrawerContainer, MatSidenav } from '@angular/material/sidenav'; import { skip, Subject, takeUntil } from 'rxjs'; -import { SidenavMode } from '../../models/layout.model'; -import { PanelStatusInfo, PanelType } from '../../models/panel.model'; import { DataTopic } from '../../models/data-topic.model'; +import { SidenavMode } from '../../models/layout.model'; +import { ILogger } from '../../models/logger.model'; +import { PanelStatusInfo, PanelType } from '../../models/panel.model'; import { RoomStatusData } from '../../models/room.model'; import { ActionService } from '../../services/action/action.service'; import { BroadcastingService } from '../../services/broadcasting/broadcasting.service'; // import { CaptionService } from '../../services/caption/caption.service'; -import { ChatService } from '../../services/chat/chat.service'; -import { OpenViduComponentsConfigService } from '../../services/config/directive-config.service'; -import { LayoutService } from '../../services/layout/layout.service'; -import { LoggerService } from '../../services/logger/logger.service'; -import { OpenViduService } from '../../services/openvidu/openvidu.service'; -import { PanelService } from '../../services/panel/panel.service'; -import { ParticipantService } from '../../services/participant/participant.service'; -import { RecordingService } from '../../services/recording/recording.service'; -import { TranslateService } from '../../services/translate/translate.service'; -import { VirtualBackgroundService } from '../../services/virtual-background/virtual-background.service'; import { DataPacket_Kind, DisconnectReason, @@ -48,9 +38,18 @@ import { } from 'livekit-client'; import { ParticipantLeftEvent, ParticipantLeftReason, ParticipantModel } from '../../models/participant.model'; import { RecordingStatus } from '../../models/recording.model'; -import { TemplateManagerService, SessionTemplateConfiguration } from '../../services/template/template-manager.service'; +import { ChatService } from '../../services/chat/chat.service'; +import { OpenViduComponentsConfigService } from '../../services/config/directive-config.service'; +import { LayoutService } from '../../services/layout/layout.service'; +import { LoggerService } from '../../services/logger/logger.service'; +import { OpenViduService } from '../../services/openvidu/openvidu.service'; +import { PanelService } from '../../services/panel/panel.service'; +import { ParticipantService } from '../../services/participant/participant.service'; +import { RecordingService } from '../../services/recording/recording.service'; +import { SessionTemplateConfiguration, TemplateManagerService } from '../../services/template/template-manager.service'; +import { TranslateService } from '../../services/translate/translate.service'; import { ViewportService } from '../../services/viewport/viewport.service'; -import { E2eeService } from '../../services/e2ee/e2ee.service'; +import { VirtualBackgroundService } from '../../services/virtual-background/virtual-background.service'; import { safeJsonParse } from '../../utils/utils'; /** @@ -141,7 +140,6 @@ export class SessionComponent implements OnInit, OnDestroy { private cd: ChangeDetectorRef, private templateManagerService: TemplateManagerService, protected viewportService: ViewportService, - private e2eeService: E2eeService ) { this.log = this.loggerSrv.get('SessionComponent'); this.setupTemplates(); @@ -445,23 +443,6 @@ export class SessionComponent implements OnInit, OnDestroy { ); } - // private subscribeToCaptionLanguage() { - // this.captionLanguageSubscription = this.captionService.captionLangObs.subscribe(async (langOpt) => { - // if (this.captionService.areCaptionsEnabled()) { - // // Unsubscribe all streams from speech to text and re-subscribe with new language - // this.log.d('Re-subscribe from STT because of language changed to ', langOpt.lang); - // await this.openviduService.unsubscribeRemotesFromSTT(); - // await this.openviduService.subscribeRemotesToSTT(langOpt.lang); - // } - // }); - // } - - // private subscribeToParticipantNameChanged() { - // this.room.on(RoomEvent.ParticipantNameChanged, (name: string, participant: RemoteParticipant | LocalParticipant) => { - // console.log('ParticipantNameChanged', participant); - // }); - // } - private subscribeToDataMessage() { this.room.on( RoomEvent.DataReceived, @@ -485,10 +466,6 @@ export class SessionComponent implements OnInit, OnDestroy { const participantIdentity = storedParticipant?.identity || ''; const participantName = storedParticipant?.name || ''; - if (this.e2eeService.isEnabled) { - payload = await this.decryptIfNeeded(topic, payload, participantIdentity); - } - const rawText = decoder.decode(payload); this.log.d('DataReceived (raw)', { topic }); @@ -580,18 +557,18 @@ export class SessionComponent implements OnInit, OnDestroy { } } - private async decryptIfNeeded(topic: string | undefined, payload: Uint8Array, identity: string): Promise { - if (topic === DataTopic.CHAT && this.e2eeService.isEnabled) { - try { - return await this.e2eeService.decryptOrMask(payload, identity, JSON.stringify({ message: '******' })); - } catch (e) { - this.log.e('Error decrypting payload, using masked fallback', e); - // In case of decryption error, return a masked JSON so subsequent parsing won't crash - return new TextEncoder().encode(JSON.stringify({ message: '******' })); - } - } - return payload; - } + // private async decryptIfNeeded(topic: string | undefined, payload: Uint8Array, identity: string): Promise { + // if (topic === DataTopic.CHAT && this.e2eeService.isEnabled) { + // try { + // return await this.e2eeService.decryptOrMask(payload, identity, JSON.stringify({ message: '******' })); + // } catch (e) { + // this.log.e('Error decrypting payload, using masked fallback', e); + // // In case of decryption error, return a masked JSON so subsequent parsing won't crash + // return new TextEncoder().encode(JSON.stringify({ message: '******' })); + // } + // } + // return payload; + // } private subscribeToReconnection() { this.room.on(RoomEvent.Reconnecting, () => { diff --git a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/chat/chat.service.ts b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/chat/chat.service.ts index 8d99527bb..096118616 100644 --- a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/chat/chat.service.ts +++ b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/chat/chat.service.ts @@ -1,19 +1,18 @@ import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs/internal/Observable'; import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; +import { Observable } from 'rxjs/internal/Observable'; -import { ILogger } from '../../models/logger.model'; import { ChatMessage } from '../../models/chat.model'; +import { ILogger } from '../../models/logger.model'; import { INotificationOptions } from '../../models/notification-options.model'; +import { DataTopic } from '../../models/data-topic.model'; +import { PanelType } from '../../models/panel.model'; import { ActionService } from '../action/action.service'; import { LoggerService } from '../logger/logger.service'; -import { DataTopic } from '../../models/data-topic.model'; import { PanelService } from '../panel/panel.service'; import { ParticipantService } from '../participant/participant.service'; -import { PanelType } from '../../models/panel.model'; import { TranslateService } from '../translate/translate.service'; -import { E2eeService } from '../e2ee/e2ee.service'; /** * @internal @@ -33,7 +32,6 @@ export class ChatService { private panelService: PanelService, private actionService: ActionService, private translateService: TranslateService, - private e2eeService: E2eeService ) { this.log = this.loggerSrv.get('ChatService'); this.chatMessages$ = this._messageList.asObservable(); @@ -64,7 +62,6 @@ export class ChatService { /** * Sends a chat message through the data channel. - * If E2EE is enabled, the message will be encrypted before sending. * * @param message The message text to send */ @@ -74,13 +71,10 @@ export class ChatService { try { // Create message payload const payload = JSON.stringify({ message: plainTextMessage }); - const plainData: Uint8Array = new TextEncoder().encode(payload); - - // Encrypt data if E2EE is enabled (Uint8Array → Uint8Array) - const dataToSend: Uint8Array = await this.e2eeService.encrypt(plainData); + const data: Uint8Array = new TextEncoder().encode(payload); // Send through data channel - await this.participantService.publishData(dataToSend, { topic: DataTopic.CHAT, reliable: true }); + await this.participantService.publishData(data, { topic: DataTopic.CHAT, reliable: true }); // Add to local message list this.addMessage(plainTextMessage, true, this.participantService.getMyName()!); diff --git a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/openvidu/openvidu.service.ts b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/openvidu/openvidu.service.ts index 7d0f1b939..507eefb41 100644 --- a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/openvidu/openvidu.service.ts +++ b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/services/openvidu/openvidu.service.ts @@ -124,8 +124,6 @@ export class OpenViduService { if (needsE2EEConfig) { // Create worker using the copied livekit-client e2ee worker from assets roomOptions.encryption = this.buildE2EEOptions(); - // !This config enables the data channel encryption - // (roomOptions as any).encryption = this.buildE2EEOptions(); } this.room = new Room(roomOptions);