Depending on the type of browser within which the library is executing,
we take the decision how many times to call getUserMedia (e.g. once for
audio and once for video on Firefox). Upon getting a result of the
call, we used to perform similar browser type checks. I see this as
repetition of logic which makes it difficult to add new browser types
(e.g. React Native). Try to examine the result of the call to
getUserMedia and thus avoid re-checkign the browser type.
Since (1) half of the disco uses check whether the feature in question
is supported, (2) the other half appears to not absolutely require
disco, and (3) disco needs to be explicitly included/required in order
to be supported, make disco completely optional.
Since half of the Settings functions check whether localStorage is
supported, adds the check to the other half to make localStorage
completely optional.
The function filter_special_chars does not have to throw a TypeError
when its argument text is null or undefined because (1) it can be argued
that neither of these two contains special characters and (2) it is much
more convenient to have the check in the function in question rather at
its multiple call sites.
Rename "stream" to "track" in RTC context plus fixes
Rename variables with "stream" in name which refer to JitsiTrack.
Rename TRACK ADDED/REMOVED events.
Try to reduce direct access to remoteTracks object.
Log warning message when track is overwritten.