fix(ParticipantConnectionStatus): fix case when muted arrives late
Fixes an issue where the user would end up stuck in disconnected if
the video muted signalling arrived after the timeout. Also reactors
the way how the output status is figured out.
fix(ParticipantConnectionStatus): status from JVB is true by default
If there was no notification from the JVB about the connectivity status
it means it's connected. That's because the bridge does not send any
notification unless there is a problem.
fix(ParticipantConnStatus): get in sync with JVB status
When the remote track which caused to transit to the disconnected status
is removed from the conference the current status received through
the data channels should be used to avoid getting out of sync by missing
"muted"/"unmuted" events sequence.
Usually the track removed is replaced by the new one(in our use cases),
but the new track is always added unmuted. Now if the connection gets
restored in the meantime while the track is being signalled then
the 'muted/unmuted' event sequence may be missed and the participant
might be blocked in the "disconnected" state forever.
The timeout will be configurable though
'peerDisconnectedThroughRtcTimeout' conference config option. It has
not been document in the public API on purpose.
feat(ParticipantConnectionStatus): take advantage of RTC mute/unmute
'onmute'/'onunmute' event of MediaStreamTrack can be used to detect that
the remote user is having connectivity issues, because no video data is
received. We check if those are in sync with the signalling and if not
trigger connection interrupted updates with small delay.