From fb057a5823fbc48dbd68a08738a111cdd57701d0 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Tue, 21 Mar 2023 16:30:50 +0100 Subject: [PATCH] openvidu-components: Refactored Participant model --- .../lib/components/session/session.component.ts | 10 +++++----- .../src/lib/models/participant.model.ts | 14 +++++++------- .../src/lib/services/openvidu/openvidu.service.ts | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts index 2524a7f7..99f3b4aa 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/session/session.component.ts @@ -300,9 +300,9 @@ export class SessionComponent implements OnInit, OnDestroy { private subscribeToConnectionCreatedAndDestroyed() { this.session.on('connectionCreated', async (event: ConnectionEvent) => { const connectionId = event.connection?.connectionId; - const newNickname: string = this.participantService.getNicknameFromConnectionData(event.connection.data); + const connectionNickname: string = this.participantService.getNicknameFromConnectionData(event.connection.data); const isRemoteConnection: boolean = !this.openviduService.isMyOwnConnection(connectionId); - const isCameraConnection: boolean = !newNickname?.includes(`_${VideoType.SCREEN}`); + const isCameraConnection: boolean = !connectionNickname?.includes(`_${VideoType.SCREEN}`); const nickname = this.participantService.getMyNickname(); const data = event.connection?.data; @@ -310,9 +310,9 @@ export class SessionComponent implements OnInit, OnDestroy { // Adding participant when connection is created and it's not screen this.participantService.addRemoteConnection(connectionId, data, null); - //Sending nicnkanme signal to new participants - if (this.openviduService.needSendNicknameSignal(nickname)) { - const data = { clientData: this.participantService.getMyNickname() }; + //Sending nicnkanme signal to new connection + if (this.openviduService.myNicknameHasBeenChanged()) { + const data = { clientData: nickname }; await this.openviduService.sendSignal(Signal.NICKNAME_CHANGED, [event.connection], data); } } diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/models/participant.model.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/models/participant.model.ts index fa21f44c..92d69191 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/models/participant.model.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/models/participant.model.ts @@ -21,7 +21,7 @@ export interface StreamModel { /** * The streamManager object from openvidu-browser library.{@link https://docs.openvidu.io/en/stable/api/openvidu-browser/classes/StreamManager.html} */ - streamManager: StreamManager; + streamManager: StreamManager | undefined; /** * Whether the stream is enlarged or not */ @@ -29,7 +29,7 @@ export interface StreamModel { /** * Unique identifier of the stream */ - connectionId: string; + connectionId: string | undefined; /** * The participant object */ @@ -68,7 +68,7 @@ export abstract class ParticipantAbstractModel { isMutedForcibly: boolean; constructor(props: ParticipantProperties, model?: StreamModel) { - this.id = props.id ? props.id : Math.random().toString(32).replace('.','_'); + this.id = props.id || Math.random().toString(32).replace('.','_'); this.local = props.local; this.nickname = props.nickname; this.colorProfile = !!props.colorProfile ? props.colorProfile : `hsl(${Math.random() * 360}, 100%, 80%)`; @@ -76,9 +76,9 @@ export abstract class ParticipantAbstractModel { let streamModel: StreamModel = { connected: model ? model.connected : true, type: model ? model.type : VideoType.CAMERA, - streamManager: model ? model.streamManager : null, + streamManager: model?.streamManager, videoEnlarged: model ? model.videoEnlarged : false, - connectionId: model ? model.connectionId : null, + connectionId: model?.connectionId, participant: this }; this.streams.set(streamModel.type, streamModel); @@ -113,7 +113,7 @@ export abstract class ParticipantAbstractModel { private isCameraAudioActive(): boolean { const cameraConnection = this.getCameraConnection(); if (cameraConnection?.connected) { - return cameraConnection.streamManager?.stream?.audioActive; + return cameraConnection.streamManager?.stream?.audioActive || false; } return false; } @@ -132,7 +132,7 @@ export abstract class ParticipantAbstractModel { isScreenAudioActive(): boolean { const screenConnection = this.getScreenConnection(); if (screenConnection?.connected) { - return screenConnection?.streamManager?.stream?.audioActive; + return screenConnection?.streamManager?.stream?.audioActive || false; } return false; } diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts index d902b8eb..427aba3c 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts @@ -557,7 +557,7 @@ export class OpenViduService { /** * @internal */ - needSendNicknameSignal(): boolean { + myNicknameHasBeenChanged(): boolean { const participantService = this.injector.get(ParticipantService); let oldNickname: string = ""; try {