diff options
-rw-r--r-- | src/utils/signaling.js | 12 | ||||
-rw-r--r-- | src/utils/webrtc/webrtc.js | 5 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/utils/signaling.js b/src/utils/signaling.js index c0d1fbb52..85d37ca3c 100644 --- a/src/utils/signaling.js +++ b/src/utils/signaling.js @@ -1280,7 +1280,17 @@ Signaling.Standalone.prototype.processRoomListEvent = function(data) { Signaling.Standalone.prototype.processRoomParticipantsEvent = function(data) { switch (data.event.type) { case 'update': - this._trigger('usersChanged', [data.event.update.users || []]) + if (data.event.update.all) { + // With `"all": true` + if (data.event.update.incall === 0) { + this._trigger('allUsersChangedInCallToDisconnected') + } else { + console.error('Unknown room participant event', data) + } + } else { + // With updated user list + this._trigger('usersChanged', [data.event.update.users || []]) + } this._trigger('participantListChanged') break case 'flags': diff --git a/src/utils/webrtc/webrtc.js b/src/utils/webrtc/webrtc.js index 49d268147..d3044c529 100644 --- a/src/utils/webrtc/webrtc.js +++ b/src/utils/webrtc/webrtc.js @@ -543,6 +543,11 @@ export default function initWebRtc(signaling, _callParticipantCollection, _local }) usersInCallChanged(signaling, usersInCallMapping) }) + signaling.on('allUsersChangedInCallToDisconnected', function() { + // "End meeting for all" was used, we don't have a user list but everyone disconnects from the call + usersInCallMapping = {} + usersInCallChanged(signaling, usersInCallMapping) + }) signaling.on('participantFlagsChanged', function(event) { /** * event { |