fix(conference) Fix different bugs with startMuted policy. (#2777)
* fix(conference) Fix different bugs with startMuted policy.
If the user changes mute state after joining the call and before the other participats join the call, make sure those state changes are honored.
* feat(startMuted) Ignore startMuted in Jingle from focus.
Apply startMuted policy based on startMuted setting in room meta data.
Moderator settings and AV moderation settings will now be propagated to new endpoints joining the call through room meta data.
Advertise a new capability 'start-muted-room-metadata' to Jicofo for feature detection.
It doesn't get translated in the TS build, for one.
Script I used:
```python
import os
for (dirpath, dirnames, filenames) in os.walk('.'):
if '.git' in dirpath:
continue
if 'node_modules' in dirpath:
continue
if 'dist' in dirpath:
continue
if 'types' in dirpath:
continue
for filename in filenames:
path = os.path.join(dirpath, filename)
if not path.endswith('.js') and not path.endswith('.ts'):
continue
#print(path)
with open(path, 'r+') as f:
#print(f)
data = f.read()
if '__filename' in data:
p, ext = os.path.splitext(path)
txt = f"'{p[2:]}'"
print(txt)
data = data.replace('__filename', txt) # Assign the result back to data
f.seek(0)
f.write(data)
f.truncate()
```
fix(quality-control) Fix receiver constraints for default case.
When the application doesn't set receiver constraints, generate default constraints in the source-name mode.
Cleanup code related to the endpoint based video constraint handling for p2p connection.
This is the first step in adding support for multiple
streams per endpoint. Each source(stream?) needs to have
an identifier. For now always generate the 0 index name
until the machinery for sending more than 1 stream is put
in place.
* send only MSID attribute
* add feature flag for source name signaling
* log a msg if source name signaling is enabled
Instead of logging the full IQs for Jingle messages like session-initiate, source-add and source-remove which can be very long, log just the formatted source information.
* feat: Support plain endpoint ID.
Support the ID of the owner of sources being encoded directly instead of
using the full JID.
* feat: Support JSON-encoded sources.
* feat: Advertise support for JSON-encoded sources.
fix(JingleSession): Move the ssrc identifier generation to LocalSdpMunger.
When a msid attribute is missing in the 'a=ssrc' line, use the local endpoint id as an indentifier. Move this generation logic to LocalSdpMunger. Also suppress notifying Jicfo of a ssrc change on Firefox when the change is a result of the media being suspended on the jvb connection.
feat: Support the urn:xmpp:extdisco:2 namespace specified by XEP-0215 (#1472)
* Support the urn:xmpp:extdisco:2 namespace specified by XEP-0125
* squash: Fix lint errors and drop unused code.
Co-authored-by: Jasper Hugo <jasper@jasperhugo.com>
* fix: Fix shuffling turn servers.
In the Fisher-Yates shuffle we want to choose 0 <= j <= i. The existing
implementation always swaps the two elements in a 2-element array.
fix(strophe.jingle.js): exception on ICE config modification
If ICE config object gets modified while there's any native
PeerConnection instance holding a reference, it will cause
an exception about final object being modified.
It happens when trying to reconnect XMPP Websocket on RN and
is caused by the fact that new TURN config is fetched after
the connection is re-established.
* Update reference to Prosody bugtracker.
* Updated refernce to Prosody module.
* Remove unused child element.
The child element in the query suggests that a specific host is being requested. Neither
the Prosody implementation nor the XEP-0215 specification defines this element. Its
inclusion is ignored by the XEP-0215 server implementation.
* wip: initial version of the new AnalyticsAdapter.
* ref: Restructures the ICE duration and state change events.
* ref: Restructures the JitsiLocalTrack events.
* ref: Restructures the TTFM events.
* ref: Updates the user feedback event.
* ref: Restructures the _CONNECTION_TIMES_ and TTFM events.
* ref: Restructures the BRIDGE_DOWN and NO_DATA_FROM_SOURCE events.
* ref: Restructures the FOCUS_LEFT event.
* ref: Restructures the DATA_CHANNEL_OPEN event.
* ref: Removes the ICE_FAILED event (it is a duplicate of a state change event).
* ref: Restructures the device list events.
Uses one event per device, since the new format does not allow non-atomic attributes.
* fix: Does not obey "unmute" commands from the focus.
* ref: Restructures the "remotely muted" event.
* ref: Restructures the CONFERENCE_ERROR events.
* ref: Removes the CONNECTION_INTERRUPTED event
We can use ICE_STATE_CHANGED instead.
* ref: Renames isreconnect to isReconnect.
* ref: Removes the CONNECTION_RESTORED event. Use ICE state changes instead.
* ref: Restructures the p2p events.
* ref: Restructures the jingle events.
* ref: Restructures the RTP statistics event.
* ref: Restructures the CONNECTION_FAILED and DISCONNECTED events.
* ref: Restructures the getUserMedia analytics events.
* ref: Cleans up AnalyticsEvents and restructures some of the events.
* fix: Adds error logs to the analytics adapter.
* ref: Refactor Statistics.sendEventToAll
Renames to sendEventAndLog, supports the object-based API, uses the
function where appropriate.
* fix: Addresses PR feedback.
* fix: Addresses Lyubomir's feedback.
* ref: Remove unused functions, adds documentation.
* feat: Adds a Statistics.sendAnalytics shortcut.
* ref: Uses the conference name as the default containerId.
* fix: Adrdesses Lenny's feedback.
* fix: Addresses more feedback.
* fix: Uses 'operational' as the default event type.
* doc: Updates the documentation.
* fix: Fixes adding of permanent properties.
* ref: Uses consistent naming for events' attributes.
Uses "_" as a separator instead of camel case or ".".
* feat: Adds the conference name as a permanent property automatically.
* ref: Don't expose Setting.machineId.
* fix: Adds a "p2p" attribute to jingle events.
* ref: Uses "action" instead of "name".
* ref: Uses underscore in events' attribute names.
* ref: Logs a message to the logger/console
instead of callstats in sendAnalyticsAndLog().
* ref: Simplifies the logic for handling an incoming jingle session-initiate.
* fix: Don't redundantly log cross region
information under a field name called "label".
* cleanup: Simplifies code. Adds the userAgent as a permanent property
for statistics (so that the client doesn't have to).
* ref: Names the parameter which specifies the name of the event "eventName".
* ref: Extracts event names to AnalyticsEvents.
* ref: Exports and imports constants individually.
* fix: Fixes CONNECTION_TIMES event names.
* ref: Arranges constants alphabetically.
* ref: Adds line breaks.
* revert: Reverts be665cbff7.
* ref: Renames "peerjid".
* ref: Refactors the initialization of a peer connection.
* feat: Re-implements the A/B test for the "suspend video" feature.
* squash: Deep copy.
* ref: Renames forceSuspendVideo to abtestSuspendVideo.