feat: Clean up immediately when room is not joined.
When receiving error like max occupants reached we have not joined the room, and there is no point of sending presence unavailable and check and clean after 5 secs.
* feat(visitors): Visitors chat.
For messages coming from visitors, which are not in the current room we need to supply a display name.
Mark messages with custom display name as coming from guest.
* feat: Adds a visitors version to conferenceIQ.
* ref: Inline onMucMemberLeft (has nothing to do with "moderator" and is broken).
* fix: Use isFocus instead of just reading the resource.
* ref: Inline onParticipantLeft.
* ref: Add _ to private function names.
* ref: Remove redundant function.
* ref: Initialize focusComponent once.
* ref: Remove two copies of "options".
* ref: Simplify the focusJid flow.
* ref: Rename focusCompoonent to targetJid.
* fix: Only retry on "invalid session" errors
We used to fire FOCUS_DISCONNECTED (which doesn't have anything to do
with anything disconnecting) and then retrying. This is not necessary
because FOCUS_DISCONNECTED is a fatal error and the client schedules
a reload of it's own (and we want the client reload as opposed to the
conference-request retry in case e.g. the shard has changed).
* ref: Remove use of visitorFocus.
* ref: Remove graceful shutdown handling (never used in backend).
* feat: Support conference request over HTTP.
* ref: eslint cleanup.
* fix: Add max timeout 2 minutes.
Remove support for legacy endpoint based signaling. (#2147)
* Remove support for legacy endpoint based signaling and make source-name signaling as the only signaling mode. The legacy screensharing mode will no longer be supported. The client will still be able to process remote presence sent in the old format to support interop with very old mobile clients and jigasi that do not support source-name signaling.
* remove code related to presenter mode.
fix: Cleanups JitsiConference on reservation and max user failures. @damencho (#1986)
* Revert "fix: Cleans up rooms after failure to join."
This reverts commit f23372dd88.
* fix: Cleanups JitsiConference on reservation and max user failures.
* fix: Set affiliation.
XEP-0045:
Affiliations are granted, revoked, and maintained based on the user’s bare JID, not the nick as with roles.
* squash: Fixes own revokeOwner.
feat: Adds a property to JitsiParticipant is hidden from recorder. (#1889)
* feat: Adds a property to JitsiParticipant is hidden from recorder.
When hiddenFromRecorder is enable in config we check the presence for the flag (the jwt identity part).
* squash: Fixes comments.
* feat: Adds events for session-add, session-remove and session-accept.
* feat: Refactor updating presence for audio/video mute and video type.
This brings few changes and fixes. Thew initial presence will always miss audioMuted and videoMuted value, those will be added on session accept. All updates to presence are done on sessionAccept, on source-add or on source-remove and the only one not signalled when camera track is replaced by video track and vice versa.
This change brings more presence updates when number of participants are below startAudioMuted/startVideoMuted, but when participants are above those numbers we get less presence update. This is important for big meetings.
Fixes wrong videoMuted state, as replace track and mute are both executed in promise, sometimes the replace-track one finishes first and when the mute one is resolved there is no conference object in the track to be able to update the presence (hitting this when we pass the startAudioMuted threshold).
* squash: Put back the tracks for _setTrackMuteStatus and _setNewVideoType.
* squash: Fix line length.
* squash: Fix skip sending presence twice.
* squash: Adds the error to the error callback.
* squash: Fix newJingleErrorHandler.
If leaving a room results in a timeout, we wouldn't be cleaning up the EMUC
state, which will prevent us from joining the room again, as it would detect it
as a duplicate.
fix(avmoderation,breakout-rooms) dispose handlers when leaving
Both of this features listen for events in the XMPP connection. Thus, if we join
another meeting over the same connection we might still receive some events on
the old event handler.
Stop listening for events from the components as soon as the leave operation is
triggered.
feat(conference) Implement audio/video mute disable when sender limit is reached.
Jicofo sends a presence when the audio/video sender limit is reaced in the conference. The client can then proceed to disable the audio and video mute buttons when this occurs.
They are companion rooms created in a separate MUC. The room relationship is
maintained by a Prosody plugin.
All signalling happens through the breakout rooms MUC component.
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
...to advertise track's muted state and the video type.
For now, if the source name signaling flag is enabled, both legacy and
new <SourceInfo> element will be used at the same time. This is to be
able to interoperate with legacy clients and start testing the new
format at the same time. Whenever possible <SourceInfo> will be used
as main source of truth with the fallback to legacy <audiomuted/>,
<videomuted/> and <videotype/> elements.
* fix(xmpp): use text parameter instead of attr for message
bug: msg with elementName != 'body' ->
Cannot read property 'appendChild' of null
fix leads to another problem - there is some magic in the 'c' function:
"This function moves the current element pointer to the child,
unless text is provided"
apply the same magic here. will be removed in the next commit
* fix(xmpp): do not rely on internals of Strophe.c
* squash: Fixes tests.
Co-authored-by: damencho <damencho@jitsi.org>
* feat: Audio/Video moderation.
* squash: Fix docs.
* squash: Adds some warning logs when execution is rejected.
* squash: Changes a field name in the message for adding jid to whitelist.
* squash: Send to participants only message about approval.
Skips sending the whole list.
* squash: Fixes tests.
* squash: Adds more logs.
* feat: Separates enable/disable by media type.
Adds actor to the messages to inform who enabled it.
* squash: Fixes log line.
* squash: Fixes comments.
* squash: Fixes log messages.
* squash: Fixes comments.
* feat: Video type camera is default value of missing, skip it in presence.
We skip sending initial video type camera if it is already missing from presence, if it changes we send the last value.
We also are dropping the namespace as it is not used anywhere and just increases presence size.
* feat: A/V muted is default so we can skip adding it initially to the presence.
Dropping the namespace as it is not used anywhere and that reduces size.
* squash: Drops unused setting.
* squash: Adds a config option to enable skipping the muted state.