Lib-jitsi-meet uses Temasys on Internet Explorer and Safari so it does
not make sense to require its adapter.screenshare.js on React Native,
for example, where it fails anyway.
I added reporting of Promise's reject reason in b10a1fc while merging
jitsi/ss_postinstall_fix since Promise's reject function has such an
argument. Hristo Terezov disagreed with it because reason is undefined
in the use case and found it to be confusing so I'm reverting to what he
intended in the first place.
Simplify the source code by using some ES6 features such as arrow
functions to avoid the use of 'var self = this', the shorthand for
method definitions in object initializers.
Our JSHint configuration is not extensive and we have excluded multiple
files from linting. Additionally, we have seen JSHint to be unable to
parse newer ECMAScript features such as the object spread operator
(proposal).
On the other hand, we have seen ESLint to beautifully work on React and
React Native source code in addition to ES2015 and later. Introduce
ESLint alongside JSHint as an intermediate step to eventually switching
from JSHint to ESLint.
As our source code does not fully follow even the JSHint rules we have,
it is very difficult to introduce ESLint with many rules. At the
beginning, introduce it with as little rules as possible. Morever,
ESLint is able to automatically fix certain rule offenders so once we
have ESLint merged we can incrementally add new rules while keeping our
commits' modification on as little subjects as possible.
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.
Moves caching of selected endpoint out of data channel.
This currently fixes problem for participants joining in a room with other participants and trying to send initial value of selected local participant will throw an error. And fixes a potential problem if the UI can select participants before their video is available, before session initiated, can make local state with jvb inconsistent. Also if we want to have multiple selected endpoints or pinned participants and this is done before session-initiate caching should be done before creating data channel (currently selecting multiple is not possible).