feat(RN): don't use local O/A for mute on React Native
With the update of react-native-webrtc to M67, the ability to stop the camera
when a track is disabled was introduced, so there is no longer a need for doing
a local O/A to remove the track for video muting.
When receiving presence, the XML is converted to JSON. In
the process, Strophe.getText is used, which calls its
xmlescape utility function. This is not desired as the
raw value is desired, especially for display name.
Note: this issue only affects presence as it is the only
place that call the helper packet2JSON, which is the only
place that calls Strophe.getText.
ref(recording): change implementation to match VideoSIPGW (#769)
* ref(recording): change implementation to match VideoSIPGW
VideoSIPGW takes in a chat room and uses instance variables
on the chat room. RecordingManager has been changed to
mirror this approach because of the case where jitsi is
deployed on a domain requiring authentication. In that
case, the initial chat room is created and fails, a
new chat room (connection) is created for authentication,
authentication is put onto the failed chat room, and the
failed chat room is used. As such, recordingManager
should not be tied to chat room creation itself but
rather tied to the first chat room.
* squash: use git mv to detect capitalization change
fix(migration): reject the data channel to restart it (#760)
* fix(migration): reject the data channel to restart it
Starting on chrome 63, an error occurs when renegotiating
with the new bridge on bridge migration when the SDP sections
do not match, which occurs when removing the data channel
section. Not doing the double renegotiate prevents the data
channel from being reopened. The way around this, while still
avoing the error, is to reject the data channel section instead
of removing it to trigger a new data channel.
* squash: reword comments
* Support layer suspension
Add support for a message which notifies the endpoint whether or not it
is selected (meaning its HD stream is in use). If it is not
selected and enableLayerSuspension is set to true then it will impose a
bandwidth limit in the SDP to suspend sending the higher layers.
* only add the IS_SELECTED_CHANGED listener in JingleSessionPC if layer
suspension is enabled
this prevents doing a local o/a when we don't need it
fix(migration): do not do double offer-answer for Chrome 63 and up (#755)
When switching bridges, removing the "data" section from the SDP
and doing a double offer-answer results in an error starting on
Chrome 63. So on 63 and up, do a single off-answer without
removing the "data" section.
Line no 194 : localTracks[i].stop(); to dispose(); (#750)
localTracks[i].stop();
As localTracks doesn't have stop function , coz of this line getting error and user was not able to left the room or unload
So changed it to :
localTracks[i].dispose();
The general idea is that, when we update/upgrade react-native in
jitsi-meet, it bumps flow-bin's version and we want to be consistent
across jitsi-meet & lib-jitsi-meet.
feat(recording): frontend logic can support live streaming and recording (#741)
* feat(recording): frontend logic can support live streaming and recording
Instead of either live streaming or recording, now both can live together.
The changes to facilitate such include the following:
- Remove the old recording.js module which allowed one recording at a time.
- Remove events for live stream url changes as the url is now part of a
sesssion and not fired independently.
- Availability of sipgw and recording are gone. Instead sessions have a
failure reason. For sipgw sessions, store that failure and emit it to
listeners.
- Create a new recordingManager singleton that can start/stop sessions
and handle updating known state of those sessions. Known state is
emitted through one event.
- Create a JibriSession model to encapsulate state of a session.
* update comments, use map to store sessions
* always pass in focusmucjid
* try to fix jibrisession docs and remove default null
feat: Exposes sending JSON payload through XMPP. (#723)
* feat: Exposes sending JSON payload through XMPP.
Incudes only the payload when firing events for JSON trannsported
through XMPP.
* squash: Addresses feedback.
* squash: Addresses more feedback.
fix(screensharing): set error type for cancelling extension install
When cancelling the prompt to install the extension, instead of
treating it as a generic error treat is as the cancel extension
error. This allows existing logic to trigger that will not show
an error message on cancel.
feat(recording): show the YouTube live stream URL (#736)
* feat(recording): show the YouTube live stream URL
- Pass you_tube_broadcast_id to Jibri so it can create a
YouTube link for the live stream.
- Emit the liveStreamViewURL (the YouTube link) when it
is received from the participant doing the recording.
* set member.liveStreamViewURL only when truthy
Will emit CONNECTION_ESTABLISHED event to fill up the gap where the lib
users are not able to tell whether or not the connection has been
established if there were no interrupted/restored events emitted.
Enables RTPStatsCollector for react-native. The getStats method was
supported long time ago, but the stats produced by the RTPStatsCollector
were not consumed. Now they are needed for the automated testing on RN.
Switches camera id to mandatory when using old gum flow. (#731)
* Switches camera id to mandatory when using old gum flow.
When it fails we retry with different resolutions, and if that doesn't work we remove device id and let gum to decide which device to use.
* Fixes comments.
* refactor packet2JSON to not use jquery
also added unit tests for it and switched to use chrome-headless instead
of phantomjs
* update package-lock
* squash: undo sha512 to sha1 conversion in package-lock