diff --git a/src/call/Call.js b/src/call/Call.js index f57a1f2fcccbb01ec79198d1fdb710eea9d19a27..307c86f86d05bba4b08b1d8e5ad104d5a4fc08c7 100644 --- a/src/call/Call.js +++ b/src/call/Call.js @@ -132,8 +132,10 @@ class Call { member.mediaContainer = element; if (participantId) { - const callParticipantData = this._checkCallParticipantData(participantId); - callParticipantData.mediaContainer = element; + const callParticipantData = this._checkCallParticipantData(participantId, !element); + if (callParticipantData) { + callParticipantData.mediaContainer = element; + } } } @@ -1375,7 +1377,7 @@ class Call { this._remoteScreenSharer = null; } - if (this._audioCtx) { + if (this._audioCtx && this._audioCtx.state !== 'closed') { this._audioCtx.close(); this._audioCtx = null; } @@ -1617,8 +1619,8 @@ class Call { return mediaElement; } - _checkCallParticipantData = (participantId) => { - if (!this._callParticipantsData[participantId]) { + _checkCallParticipantData = (participantId, skipCreate) => { + if (!this._callParticipantsData[participantId] && !skipCreate) { this._callParticipantsData[participantId] = new CallParticipantData(participantId, this._audioCtx); this._callParticipantsData[participantId].mute = this._speakerMuted; const member = this.findParticipant(participantId);