* In order to be able to customize the background of the chat
it had not be displayed inside of a dialog. This also removes
the need to extensively use 'TouchmoveHack' component.
* Adds the ability to change panes (Chat vs Polls) using the keyboard.
* Adds accessibility attributes to panes.
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* # Conflicts:
# react/features/filmstrip/components/web/Thumbnail.js
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* fix(translation) Reverted changes to translation parameter
Reverted param name change on translation
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* fix(lang): update German translation (#10188)
Signed-off-by: Christoph Settgast <csett86@web.de>
* Update Virtual Background Model (#9867)
* update virtual background
* remove comments
* remove general model
* fix(lang): update French translation (#10239)
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* Update Occitan (#10240)
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* feat(reactions) Added metrics for disable reaction sounds
Reordered reactions middleware alphabetically
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail
Co-authored-by: robertpin <robert.pin9@gmail.com>
Co-authored-by: csett86 <csett86@web.de>
Co-authored-by: Roshan Pulapura <81193065+rpulapura@users.noreply.github.com>
Co-authored-by: gpatel-fr <44170243+gpatel-fr@users.noreply.github.com>
Co-authored-by: Mejans <61360811+Mejans@users.noreply.github.com>
- created `ClearableInpu`t component on web & native
- added `ClearableInput` component to participants pane and used it for search in participants list
- update `AddPeopleDialog` to use `ClearableInput`
Video quality label now becomes "performance settings".
All CSS for labels is moved to JS.
Overflow menu button is also changed to "performance settings".
* feat: Hides prejoin screen on conference in progress event.
We enter the conference view as early as possible on conference in progress as the joined event can be late in a big conference.
Also, we show conference view only when joining is in progress, for example, the with the lobby enabled where we try to join but fail, we do not want to show the conference view for a fraction of a second before showing lobby screen.
* squash: Drops CONFERENCE_JOIN_IN_PROGRESS.
* squash: Updates ljm with the new JitsiConference event.
* squash: Adds some debugs to the github action.
Easier to catch problems with package-lock.json file.
This is a stop-gap approach to remove the AtlasKit notifications stack.
Instead of using a AK FlagGroup to render our notifications (Flag components)
in, create our own container and use a fake FlagGroupContext provider, which is
what FlagGroup uses to control what flags can be dismissed.
Since we now render all notifications, the web part has been refactored to make
sure all notifications get a timer.
Added animations
Renamed DrawerPortal to JitsiPortal
Redesigned notifications
Changed notification text and icons color and added collared ribbon
We make the request for dynamic branding as soon as possible so
at the time of the request the config is not yet added to the store.
In order to fix this we get the jass brandingDataUrl &
dynamicBrandingUrl directly from the config.
Changed screen capture to non effect. Effects are used to alter the stream, this feature does not need to alter the stream, it just needs access to it
Changed image diff library. Previous library diff’ed the whole image, the new one has en early return threshold
Use ImageCaptureAPI to take the screenshot. Added polyfill for it and polyfill for createImageBitmap
Added analytics
Since iOS 15 we really need the audio stream to exist, so make sure we don't
destroy it even when "everyone starts muted" is set, we'll just mute it.
Fixes: https://github.com/jitsi/jitsi-meet/issues/10053
Signals that the bridge channel is open. It may take a few ms to get established
after the conference join, so applications might be interested in using it once
ready.
* feat(av-moderation) Ask to Unmute and remove from Whitelist
Make Ask to Unmute work without moderation
Add remove from moderation whitelist functionality
* chore(deps) lib-jitsi-meet@latest
* feat(av-moderation) Remove from moderation whitelist functionality (#1729)
* fix(chore) corrected typo in log message
* fix(e2ee) replace nullish coalescing with or
* fix(e2ee) restore initial key when RATCHET_WINDOW_SIZE reached
3b8baa9d3b...0646bc3403
Co-authored-by: Дамян Минков <damencho@jitsi.org>
* fix(av-moderation) Improve advanced moderation
Hide moderator label on disasbleModeratorIndicator
- On disasbleModeratorIndicator config hide moderator label from participants pane
Add Ask to Unmute button to mobile web
* Fix lint error
In iOS 15 we observe that not creating the audio track early may result in not
getting audio after unmuting for the first time.
Creating the audio track early means the first unmute doesn't need to add the
track to the conference, resulting in a much faster operation.
Note that creating the track early doesn't mean we will start unmuted, the track
will be muted.
Fixes: https://github.com/jitsi/jitsi-meet/issues/9996
On iOS 15 Bluetooth devices are reported twice for some reason, one with the
normal type "Bluetooth" but another type without a know (to me) type, and the
uid ends in "-reference".
While we send those unkwno devices to JS, we were not filtering them properly.
This patch skips them altogether.
Updated participants list to:
- show Moderator label
- show correct status icons (red for force muted)
- show participants in the right order
Updated moderation to:
- show moderation menu at all times
- make moderation options functional
Updated notifications:
- fixed raise hand to show name
- display moderator rights granted
Updated mute/ stop video for all dialogs to include moderation toggles
Added ask to unmute button
Fix comments on ask to unmute
Co-authored-by: robertpin <robert.pin9@gmail.com>
* Register shortcuts on mount
* Changed icon for reactions menu
* Enable reactions by default
* Fix unreadCount bug
When having unread messages and sending a reaction the unread count now shows the correct count
* Fix overflow menu bottom color when reactions are enabled
* Revert raise hand icon
* Update raise hand functionality
On desktop show raise button with arrow for reactions. Only show raise hand in the reactions menu on mobile
* Fix lint error
Add required prop to ToolboxButtonWithIcon
* Legacy support for enable reactions
If disableReactions is undefined treat it as true
* Remove unnecessary code
* Fix unread counter showing negative count
* Fix unreadCount with reactions
UnreadCount ignores all reactions messages
* Fixed typo
* Fix background color
In the case of the recorder we were not taking into account that the
local thumbnail is not visible. This was braking the rendering and
positioning of the thumbnails in tile view.
Jibri was hitting a problem where it reloads and in certain cases (remote user is screensharing) we hit this participant undefined, which stops reload and stops recording.
It is still not obvious why we try to render this on leaving the conference and for a participant that is not in the conference ... this re-render should not happen as this component should be removed from its parent when the participant is not existing.
* Update moderation in effect notifications
Only display one notification for each media type. Display notification for keyboard shortcuts as well
* Update muted remotely notification
Display name of moderator in the notification
* Fix indentation on moderation menu
* Update text for video moderation
* Added moderator label in participant pane
* Update microphone icon in participant list
For participants that speak, or are noisy, but aren't dominant speaker, the icon in the participant list will look the same as the dominant speaker icon but will not change their position in the list
* Added sound for asked to unmute notification
* Code review changes
* Code review changes
Use simple var instead of function for audio media state
* Move constants to constants file
* Moved constants from notifications to av-moderation
- on ipads, long touch open dialog now opens the context menu to the left of the thumbnail as expected
- on ipads, now we close context menus on tap out
- fix case when participant context menu's height > tileview videos' height causing scroll on videos pane
- keep toolbox open while the overflow menu is shown
- keep remote participant video thumbnail in filmstrip visible even if toolbox is hidden, if context menu is opened
- Fix bug where toolbox could be completely disabled
* fix(participant-pane) Use the sorted participant list from redux instead of sorting it on every render making it better performant. Match the participant order with that of the order in the filmstrip. Also move the participants with raised hand to the top of the list.
* ref(filmstrip) Move enableThumbnailReordering flag to testing section.
* fix(participants) Add new selectors for getting sorted participants.
* Add configuration to disable removing raised hand on dominant speaker change
* Fix lint problem
* Avoid dispatching unnecessary action
* Fix lint problem
Creating a preview of the same audio/video track kills the tracks that is already being shared in the conference. Therefore, disable camera/mic selection in the settings dialog while the user is in the call. The devices are selectable from the prejoin screen settings dialog.
* feat(responsive-ui): Keep aspect ratio for filmstrip self view on mobile web
Right now filmstrip displays self view in landscape mode.
With these changes the aspect ratio of the self view will be maintained
so on portrait mode the thumbnail will be displayed vertically.
Of course this makes sense only on mobile web.
* Code review
* Fix height
viewableItems always comes in order and indexes are always ascending. In
addition, if the array comes empty (I saw it happen on Android at least, when
scrolling like a maniac) we'd calculate the right value, instead of Infinity.
On mobile Safari, when a user joins both audio and video muted, browser doesn't playout the remote audio because of a webkit bug. As a workaround, always add the audio track to peerconnection and then mute the track if needed.
* Fix: removed web actions from common middlewares
* Fixed raise hand sound
Fix sound to play on raise not lower and work on keyboard shortcut as well
* Fixed reaction keyboard shortcuts
Register shortcuts only when there's more than one participant
* Enforce reactions feature flag on reaction received
* Disable reactions by default on native
* Enable reactions on native by default
* Sort props alphabetically
* Created isreactionsEnabled function
* Remove unused imports
* Fix. No longer show toolbox on reactions and jibri
On message received don't show toolbox for jibri
* Fix isReactionsEnabled function for native
On native check for flag and config option as well
* Added sounds for reactions
* Updated reactions list
* Added reactions to sound settings
* Added support for multiple sounds
* Added feature flag for sounds
* Updated sound settings
Moved reactions toggle at the top of the list
* Added disable reaction sounds notification
* Added reaction button zoom for burst intensity
* Fixed raise hand sound
* Fixed register sounds for reactions
* Changed boo emoji
* Updated sounds
* Fixed lint errors
* Fixed reaction sounds file names
* Fix raise hand sound
Play sound only on raise hand not on lower hand
* Fixed types for sound constants
* Fixed type for raise hand sound constant
* feat(Filmstrip): Reorder the visible participants in the filmstrip.
The participants are ordered alphabetically and the endpoints with screenshares, shared-videos and dominant speakers (in that order) are bumped to the top of the list. The local participant is also moved to the top left corner as opposed to the bottom right corner.
* squash: Implement review comments.
* squash: store alphabetically sorted list in redux and move shared videos to top.
* squash: Use the DEFAULT_REMOTE_DISPLAY_NAME from interfaceConfig for users without a display name.
* feat(av-moderation) raised hand ask to unmute aria-label
* feat(av-moderation) fixed test
* feat(av-moderation) added id for notification buttons
* feat(av-moderation) fixed lint error
* feat(av-moderation) added id for non raised hand participant
* feat(av-moderation) added extra id naming for ask to unmute button and participant items
* feat(av-moderation) fixed lint errors
* feat(av-moderation) changed id to participantID
* feat(av-moderation) removed semicolon
* squash: Drop unused id for participantItem.
* squash: Drop unused fields for raisedHand.
Co-authored-by: Дамян Минков <damencho@jitsi.org>
* feat(polls) Added boilerplate code for polls feature
* feat(polls) Implemented simple poll creation and answer modals in web app
feat(polls) Added button to create a poll in toolbar
feat(polls) Added Modal to answer an incoming poll
feat(polls) Implemented basic client-side sending and reception of polls
feat(polls): linked Poll creation to poll answering
fix(polls) Linted code
feat(polls.create) Added fields for question and answers (#3)
* feat(polls.create) Added fields for question and answers + keyboard navigation
* feat(polls.create) Minor changes, added some comments
feat(PollAnswer Component): Component to display modal to answer poll #1 (#2)
* fix(polls) removing necessity of current_poll_id variable
* fix(polls) linting, polls are now updated when an answer is sent
* feat(polls answer) added translation
* fix(polls answer) remove extra comments, fixed typo
* improvement (polls answer) use useSelector instead of mapStateToProps. cleaner code
* fix (polls create) renamed sender to senderId
* fix (polls answer) turned arrow function into useCallBack
feat(PollResults Component): Component to display poll results (#1)
* feat(PollResults Component): fist version of the component
* feat(detailed votes): Display the detailed results of a poll
* feat(Poll results): Use display name instead of ids in detailed results mode
* fix(Poll): change title to question
* fix(Poll type): import Poll type from types.js
* fix(Poll): change title to question
* fix(Poll): get participants out of the map
* fix(Poll): replace filter with find
feat(polls.create) Added "+" and "x" buttons in poll creation form + improved keyboard navigation a bit
feat (polls) Answer modal now display results in real time after validation or skip
feat(polls.create) Minor improvements to poll creation form
feat(poll result) Added default message when trying to display no answer
fix (polls) result windows is now small by default
fix (polls) sanitizes imports to allow startup on react native
* feat(polls.native) Implemented native toolbar button & poll create modal
feat( poll native) added poll creation button in native toolbar
improvement(polls) only one file used for PollCreateButton
feat (polls native) added an example dialog
feat (polls native) added possibility to create and delete options in poll creation
improvement (polls) better styling for PollCreateDialog
* feat(polls) Added ability to drag&drop answers in web poll creation form
* feat(polls) Added native poll answer modal + chat integration, refactored components
Merge branch 'polls-native' of https://github.com/jade-guiton/jitsi-meet into polls-native
improvement (poll) Better styling for poll answer, now uses icons
feat(poll.PollResults): Add native version of PollResults
feat(poll.PollResults): Post results in chat in Native
fix(poll.PollResults): Fix linter error in ChatMessage
feat(polls.native) Improved styling for native poll answer dialog (required some internal changes)
* fix(polls) Heavily refactored and added bars to poll results, other minor changes
fix(poll.create): Move title to Dialog title
feat(poll.create) Minor changes to poll creation / answer dialogs
fix(poll.create) Refactored and improved translations
feat(poll) Improved CSS for modals in web version
fix(poll.pollcreate): Fix button size in native
fix(polls) Refactored poll results component and other minor changes
fix (polls) remove double import
refactor(poll) Heavily refactored poll results (native + web)
feat(polls.results) Added percentage bars and vote counts in web poll results, minor changes to mobile poll results
* fix(polls) Fixes and linting
fix(polls) Reformatted and fixed some linter and Flow errors
fix(polls.results) Fixed voter list border appearing with 0 voters
* feat(polls): Add modal with detailed votes that can be open from the result summary in the chat
* fix(polls) Fixes, refactorings, and minor design changes
feat(polls.results): Refactored poll chat message and improved design in web app
feat(polls.results) Same as last commit, but for mobile version
refactor(polls.results) Refactored PollResultsMessage and removed unnecessary prop in PollResults
fix(polls.results) Fixed all remaining linter and Flow errors
improvement(polls) removed console logs, added comments
fix (polls) linting
fix(polls.results) Fixed bug with poll chat message displaying the wrong name
feat(polls.results) Minor improvement on poll results display (web)
fix(poll.results): Use getParticipantDisplayName to get participant name and avoid empty string as name
* Feat(poll.results): Remember voters names to display after they left the conference (#10)
* feat(poll.results): Add the sender name in Poll object to remember names if participants leave the conference. Names are also updated if changed
* refactor(poll.results): Refactor the memorization of the names of voters to use the same logic as in the chat
* refactor(poll.results): use Map instead of Array.From(
* refactor(poll.answer): change the way names are stored in poll answers to persist if participant left the call
* Update react/features/polls/components/AbstractPollAnswerDialog.js
* Update react/features/polls/components/AbstractPollCreateDialog.js
* refactor(poll.answer): use voterName instead of senderName to avoid confusion with senderId the id of the sender of the poll
* improvement(polls) Simplified poll answer voter name logic
Co-authored-by: Fabien Zucchet <fabien.zucchet@student-cs.fr>
Co-authored-by: Jade Guiton <guiton.jade@gmail.com>
* fix(poll.native): Fix UI overflow when asking long questions & long options in the mobile app (#11)
Co-authored-by: Fabien Zucchet <fabien.zucchet@student-cs.fr>
* fix(polls) Fixed close button behavior in answer and results dialog (#12)
* fix(polls) Fixed close button behavior in answer and results dialog
* fix(polls) Fixed linter error
* fix(polls) Added a poll queue to avoid overwriting open modals (#13)
* fix(polls) Added a poll queue to avoid overwriting open modals
* fix(polls) Updated documentation for action RECEIVE_POLL
* Refactor(poll.chatresults): Add message in chat with hidden results until the participant has answered (#14)
* refactor(poll.chat): Display poll results in chat when the poll is created instead of when the participant has ansered
* refactor(poll.chat): Hide results until the participant has answered, skipped or canceled a responde to the poll
* Use getParticipantDisplayName instead of only getStore()
* Hide results also in native
* fix(polls) Fixed previous merge
Co-authored-by: Fabien Zucchet <fabien.zucchet@student-cs.fr>
Co-authored-by: Jade Guiton <jade.guiton@centralesupelec.fr>
* minor improvements (polls)
refactor (polls) uniformized string for command names
refactor (polls) changed pollId type to number everywhere
* feat(polls) Added persistence to polls using sendMessage instead of sendCommandOnce (#16)
* feat(polls) Using sendMessage instead of sendCommandOnce, switched poll IDs to string, and ability to receive old polls from backend
* improvement(polls) Linted everything, fixed Flow errors, and added Prosody plugin for polls
* improvement(polls) Historic polls are now displayed in chronological order
* (polls) Minor improvements (#17)
* renaming (polls) Renaming senderId -> voterID for voters
* improvement (polls) sender's name is now provided with poll
* comments (polls) updated comments for senderName types
* fix(polls) Finished merging with json-messages feature
* fix(polls) Fixed incorrect json-message sent with 0 polls
Co-authored-by: Jade Guiton <guiton.jade@gmail.com>
* Move polls to tab (#23)
* Draft(polls): Move polls to polls-pane ; first version for web
* Draft(polls): Move polls to polls-pane ; clean styled.js and remove Participant objects
* fix missing newline at the end of file
* Change behaviour to allow answer poll later
* Fix(polls): change pollId type from number to string for consistency
* feat(polls-pane): Ability to answer to a poll in polls-pane
* feat(polls-pane): Ability to create to a poll in polls-pane
* feat (polls.pane) display a notification when a new poll arrives
* refactor(polls-pane): Update CSS to have a design closer to the mockups
* fix(poll.vote count): Fix votes counting when computing percentage
* fix(poll.vote count): Fix votes counting when computing percentage
* refresh fork with jitsi/jitsi-meet
* design (polls) Better look for poll creation
* refactor(polls pane): Move polls-pane as a chat tab
* Remove the first version of the polls-pane and the button to open it
* Fix notifications and typo
* Translate new polls tab in chat
* Change polls_pane to polls-pane
* Remove unless functions
* Remove usage of styled.js
* Improve responsiveness
* Separate web and native logic
* Remove Create a Poll button in web toolbox
* improvement (polls) added auto scrolling to bottom when a new poll arrives
* Add tabs to swicth between polls and chat in native
* Add AbstractPollsPane
* Add AbstractPollCreate
* Add AbstractPollAnswer
* Add PollAnswer, PollItem and PollList for native
* Add PollCreate for native
* Remove dialogs in web and native
* Remove dialog queue
* Remove useless files
* Move _polls.scss outside dialog folder
* Add possibility to skip answer
* Add (useless for now) see details link
* Add possibility to show detailed results for a poll
* Resize progress bar to make details display
* refactor, design (polls) better style to native design chat
* fix (polls) Removed unecessary files
* translate (polls) added french translation to empty polls
* design fix (polls.native) 'show details' now correctly switch between progress bar and voters mode
* Change See detailed results for Show details and add cursor: pointer
* Fix progress bars not aligned with text
* fix (polls.native) added autoselection of newly created option
* Remove poll answer
* improvement(polls.create) Improved web poll creation form marginally
* improvement(polls.change) Simplified answer removal by reusing poll-answer command
* fix linter
* Fix(translation): update translation
Co-authored-by: Fabien Zucchet <fabien.zucchet@student-cs.fr>
Co-authored-by: spineki <marras.antoine@gmail.com>
Co-authored-by: Fabien Zucchet <fabien.zucchet@viarezo.fr>
* Merge pull request #22 from jade-guiton/polls-with-notification
feat (polls) chat notification badge now display the sum of unread messages and unread polls
fix(translation): Fix missing translation
Fix flow error
* Cleaned up, fixed, and uniformized translations
* Small improvements to PollAnswer and PollResult + Much refactoring
Specifically:
- "Change vote" button now says "Vote" if voting was skipped
- Clicking on "Change vote" resets the voting form to the last submitted answers instead of a blank slate
- The "answered" field of Polls was replaced by "showResults" and "lastVote"
- The "setAnsweredStatus" action was replaced by "registerVote" and "retractVote"
- Some newly unreachable/useless code was removed
- "showDetails" state is now handled by AbstractPollResults instead of PollItem
* fix(polls tab): change tab underline color to #525252
* fix(poll create): Enforce at least two options to create a poll
* fix(poll create): change 'remove option' color to #E04757
* fix(poll create): Update Poll create CSS to adapt to design
* fix(poll answer): Adapt CSS to make poll answer closer to mockup
* fix(poll result): Udpdate poll result CSS to match mockups
* fix(poll result): Udpdate poll result CSS to match mockups
* fix(poll create): Display 'remove option' only when there is at least 3 options
* fix(polls button): Add hover, active, focus and disabled state to polls buttons
* Last improvements for web
* Native design fixes
* Fix rebase issue in land/main.json
* Fix french translation after rebase
* Fixmobile behaviour
* Fixed keyboard navigation in web poll creation form
* Fixed Flow error related to "no polls" icon in PollsList
* fix(polls): Enabled polls Prosody module in Debian config files
* doc(polls) Added comments to the Prosody module code
* fix(polls): Switched from using an internal LJM event to ones from the public API
* Capitalize I of setIsPollsTabFocused
* extract the 2 button modes into a const
* remove extra new lines
* Rename CLOSE_POLL_TAB for POLL_TAB_CLOSED for clarity
* Rename answers2 for answersParsed for clarity
* use switch instead of if/else chain
* improve syntax for localId fetching
* Refactor: Use BUTTON_MODE.CONTAINED variable instead of 'contained'
* Disable send poll button if not enough data is provided in the form (#30)
* Feat: Add notification badge on chat and poll tabs (#31)
* Feat: Add notification badge on chat and poll tabs
* Add badge equivalent for native
* Update displayNameForm text to mention polls (#34)
* Disable polls UI with a config in config.js (#33)
* Change remove option text color from red to grey (#32)
Co-authored-by: spineki <marras.antoine@gmail.com>
Co-authored-by: Fabien Zucchet <fabien.zucchet@student-cs.fr>
Co-authored-by: Fabien Zucchet <80532941+fabienzucchet@users.noreply.github.com>
Co-authored-by: Fabien Zucchet <fabien.zucchet@viarezo.fr>
* Additional setting to add search to speaker stats
* Add translation for speaker stats search placeholder
* Unset speaker stats search input autocomplete
* Fix lint errors for speaker stats search
* Change setting to disableSpeakerStatsSearch
* Better Object.prototype.hasOwnProperty.call alternative
* Make SpeakerStatsSearch a functional component
* Align header with input and use material-ui styles instead of scss and remove SpeakerStats header and fix dialog close
* Resolve code style remark in SpeakerStats constructor
* Resolve component empty return value remark in SpeakerStatsSearch
* Resolve get config property in outside function remark in SpeakerStatsSearch
* Resolve unnecessary anonymous function remark in SpeakerStatsSearch
When participants panel is open and we approve a participant to unmute, the notification was not hidden as we were not correctly updating the state. We were expecting a participant object, but an id of the participant was used.
When there are only 2 participants in a call, don't show the remote thumbnail,
unless the `disable1On1Mode` config option is set or the local participant pin
themselves.
Some options were missing on the mobile side, notably calltsts
enableDisplayNameInStats and enableEmailInStats. Now the same logic will be used
in web and mobile.
- Fixed background color for all participants context menus
- Removed connection status from ReactVideoMenu and added it for local participants
- Removed AVModeration comments on mobile
- Show on stage option visible only when participants pane is closed
It is not 100% clear to me when it happens, but I think it could happen
in some race condition where a track is unmuted when it's being disposed
or something around those lines.
The fact is that any muted tracks are disposed by replaceLocalTrack(track.jitsiTrack, null) and they should not be used anymore.
Supposedly fixes a crash:
Failed to add local track to conference Track has been already disposed
- Fixed react native community slider to work on both android and ios
- Removed InviteButton from native menus
- Fixed buttons spacing in native OverflowMenu
- Participant context menu details are shown only for remote participants
With react-native-webrtc 1.89.2 the remote SDP is properly updated before
onaddstream is fired so it's no longer needed.
Also, for readability, IPv6 address synthesis has been moved to a standalone
utils file.
- Remove button list from interface_config.js since it has been deprecated for a
while
- Alphabetically sort buttons in config.js and constants.js to make it easier to
add / remove items
- Add missing invite and toggle-camera buttons to default constants
- Remove no longer existing "fodeviceselection" button
Fixes: https://github.com/jitsi/jitsi-meet/issues/9605
* Created desktop reactions menu
Moved raise hand functionality to reactions menu
* Added reactions to chat
* Added animations
* Added reactions to the web mobile version
Redesigned the overflow menu. Added the reactions menu and reactions animations
* Make toolbar visible on animation start
* Bug fix
* Cleanup
* Fixed overflow menu desktop
* Revert mobile menu changes
* Removed unused CSS
* Fixed iOS safari issue
* Fixed overflow issue on mobile
* Added keyboard shortcuts for reactions
* Disabled double tap zoom on reaction buttons
* Refactored actions
* Updated option symbol for keyboard shortcuts
* Actions refactor
* Refactor
* Fixed linting errors
* Updated BottomSheet
* Added reactions on native
* Code cleanup
* Code review refactor
* Color fix
* Hide reactions on one participant
* Removed console log
* Lang fix
* Update schortcuts
* fix(participants): Change from array to Map
* fix(unload): optimise
* feat: Introduces new states for e2ee feature.
Stores everyoneSupportsE2EE and everyoneEnabledE2EE to minimize looping through participants list.
squash: Uses participants map and go over the elements only once.
* feat: Optimizes isEveryoneModerator to do less frequent checks in all participants.
* fix: Drops deep equal from participants pane and uses the map.
* fix(SharedVideo): isVideoPlaying
* fix(participants): Optimise isEveryoneModerator
* fix(e2e): Optimise everyoneEnabledE2EE
* fix: JS errors.
* ref(participants): remove getParticipants
* fix(participants): Prepare for PR.
* fix: Changes participants pane to be component.
The functional component was always rendered:
`prev props: {} !== {} :next props`.
* feat: Optimization to skip participants list on pane closed.
* fix: The participants list shows and the local participant.
* fix: Fix wrong action name for av-moderation.
* fix: Minimizes the number of render calls of av moderation notification.
* fix: Fix iterating over remote participants.
* fix: Fixes lint error.
* fix: Reflects participant updates for av-moderation.
* fix(ParticipantPane): to work with IDs.
* fix(av-moderation): on PARTCIPANT_UPDATE
* fix(ParticipantPane): close delay.
* fix: address code review comments
* fix(API): mute-everyone
* fix: bugs
* fix(Thumbnail): on mobile.
* fix(ParticipantPane): Close context menu on click.
* fix: Handles few error when local participant is undefined.
* feat: Hides AV moderation if not supported.
* fix: Show mute all video.
* fix: Fixes updating participant for av moderation.
Co-authored-by: damencho <damencho@jitsi.org>
* feat(toolbox) allow any toolbox button to be displayed as main
fixes the previous behaviour where only a certain set of buttons were whitelisted for being displayed in the main toolbar
* code review
* code review - fix avatar icon position
* feat: Change the screenshare capture fps from UI.
Add the ability to change the capture frame rate for screenshare from the UI. The fps becomes effective only on screen shares that are started after the setting is changed.
* squash: add missing JSDOCs and translations for frames-per-second.
* fix(virtual-background): Fix resize action and prevent mirror behaviour on desktop share as a virtual background.
Co-authored-by: tudordan7 <tudor.pop@decagon.tech>
* feat: Initial UI part for A/V moderation.
Based on https://github.com/jitsi/jitsi-meet/pull/7779
Co-authored-by: Gabriel Imre <gabriel.lucaci@8x8.com>
* feat: Hides context menu in p2p or only moderators in the meeting.
* feat: Show notifications on enable/disable.
* feat(moderation): Add buttons to participant list & notifications
* fix(moderation): Fix raised hand participant leaving
* feat(moderation): Add support for video moderation
* feat(moderation): Add mute all video to context menu
* feat(moderation): Redo participants list 'More menu'
* fix: Fixes clearing av_moderation table.
* fix: Start moderation context menu
* fix(moderation): Show notification if unapproved participant tries to start CS
Co-authored-by: Gabriel Imre <gabriel.lucaci@8x8.com>
Co-authored-by: Vlad Piersec <vlad.piersec@8x8.com>
* feat(vpaas, recording): Show recording link to recording initiator
This applies only for jaas users for now but is easily extensible.
Changed the recording sharing icon according to ui design.
* fix(vpaas, recording): Guard for deployment info
If we mute a video in Youtube it is stored in the current browser session and if someone shares a video it will start muted and we don't have the control to unmute it.
Previously gravatars (external resources) were preloaded even if
disableThirdPartyRequests was set to true in the config, as the
config may be empty at the time of preloading.
Closes: #5670
Signed-off-by: Christoph Settgast <csett86@web.de>
The client now listens for changes to lastN, selectedEndpoints and maxReceiverVideoQuality in redux to trigger sending bridge message in the new format. This fixes an issue where the stage view <-> tile view changes prompt two receiver constraints messages to be sent, first with the maxHeight update and then with the selected endpoints update.
Unpin the screenshare when the screensharing participant leaves. Switch to tile view if no other participant was pinned before screenshare was auto-pinned, pin the previously pinned participant otherwise.
* fix(authentication) login dialog now closes when connection is established
* fix(authentication) fixed shibboleth auth
* fix(authentication) renamed authenticateExternal func to authenticate and updated its logic
* fix(authentication)removed logindialog.js and created actions.any
* fix(authentication) removed focus from externalauthwindow
* fix(authentication) removed private sign from some actions and added openLoginDialog to actions.any
* fix(authentication) exported all from actions.any
* fix(authentication) reverted change regarding externalAuth
* fix(authentication) fixed indentation
In https://github.com/jitsi/jitsi-meet/pull/8673 we inadvertently removed the
backwards compatibility code which would show the security button when the
"info" button is configured in interface_config. The security button replaced
the info button.
Set higher preference for screenshare over dominant speaker when trying to elect a participant for large-video. This prevents the dominant speaker from taking over the stage when a user toggles tile view on and off while a screenshare is in progress.
Promise.allSettled is supported from RN 0.63 onwards and is not supported on the current version, use a polyfill for that shims Promise.allSettled if its unavailable or noncompliant.
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
The majority of the code is in the WASM file, the JS is just 9KB.
It's so little, in fact, that the performance hint for the main bundle didn't
have to be adjusted.
The majority of the code is in the WASM file and models, this is just a few KB.
It's so little, in fact, that the performance hint for the main bundle didn't
have to be adjusted.
Do not add the muted audio tracks to peerconnection until the user unmutes the first time. This applies to startSilent, startWithAudioMuted and startAudioMuted/startVideoMuted config.js settings.
* Update dateUtil.js
* version up moment
* exclude unnecessary languages in Moment.js from webpack
* add Occitan of Moment.js
* Fixed auto-formatting
* add require missing by mistake
* Only show more numbers link if multiple numbers are available
* Fixed some linter errors
* Try to make flow happy
* Fixed another linter error
* Another try to make eslint happy
* Silence eslint
* Added new config to enable individual sharing features
* make config values url friendly
* Add new setting to whitelist
* Fixed some linter issues
* Fixed more linter issues
* Fixed merge error
* Check if interfaceConfig is defined
* Only show more numbers link if there is more than one number
* Add buttons to send messages/set nickname.
* Redesign message/nickname inputs.
* Pin messages to the input.
* Add keyboard avoider for Safari.
* Make chat content scrollable on mobile.
* feat(conference): Enable forced reload of client on bridge failure.
Force the client to reload when the bridge that is handling the media goes down.
This mitigates issues seen on the bridge because of a client re-joining the call with the same endpointId, BWE issues, etc.
This behavior is configurable through 'enableForcedReload' setting in config.js.
The client skips the pre-join page when the page reloads.
* squash: refactor the restart logic.
* squash: fix description
* squash: dispatch conferenceWillLeave action before reload.
* Enforce fixed column number at various width breakpoints.
* Bring back the filmstrip at small sizes but hide it.
* Change default maximum columns to 7.
* Fix toolbox buttons not displaying properly when chat is open.
* Open chat in fullscreen dialog past custom thresholds when mobile/desktop toolbox would become unusable due to chat
* Remove mobile chat check when displaying toolbox
It appears that at the time of this writing, creating audio tracks blocks
the browser's main thread for a long time on safari. Wasn't able to confirm
which part of track creation does the blocking exactly, but not creating
the tracks seems to help and makes the UI much more responsive.
* Show recording started notification to the initiator
* Translate 'recording.on' language key for English and Turkish
Translate 'liveStreaming.on' language key for English and Turkish
Due to how the filmstrip size if computed I don't think there is a good way to
animate the change in size, so just ignore the toolbar, it will be hidden soon
enough.
* Add option to open Etherpad on join
For sites that focus on collaborative editing during meetings, add
an option which, when set, will automatically open etherpad when a
participant joins.
* Add openSharedDocumentOnJoin to config whitelist
This also adds some config file doc comments about the option,
including a note about the choice not to honor it in the mobile app.
* feat: Exposes a method for checking is remote track received and played.
Used for some tests in torture.
* squash: Drop not matching string.
Duplicate translation key with not matching content.
* squash: Moves torture specific functions to features/base/testing.
Listens for media events from the video tag of the large video and stores them in redux.
* squash: Fix comments.
* feat: Listens for media events from the video tag of the remote videos and stores them in redux.
* squash: Fix undefined videoTrack if between switches.
While the base URL remains configurable, this patch reverts back to using
Gravatar.
We noticed high latency with libravatar and contacted them. They are in the
process of migrarting to a better infrastructure (it's a single personal server
at the moment) so we'll re-evaluate once that has happened.
As for why not leave the default and change it on the meet.jit.si installation,
we don't want to kill their server :-)
As per @fremzy, the "Save Logs" feature generates a json
file with a bevy of technical information about the
meeting. This log contains the server name, server IP
address, participant's IP addresses (only in p2p sessions)
e.t.c. While this may be a useful feature for the
admin-like 'moderator', it creates unnecessary exposure
when made readily available to all users in the meeting.
This commit fixes#8036 by a config.js option to enable
the link (disabled by default), thus giving the owner of
the deployment the choice of enabling it or not.
When trying to auto pin screenshare, always select the endpoint even though it happens to be the large video participant in redux. The auto pin screenshare logic kicks in after the track is added. If the screenshare endpoint is not among the forwarded endpoints from the bridge, it needs to be selected again.
Do not resize the desktop share to 720p by default when the desktop track resolution is higher than 720p. This is causing bluriness when presenter is turned on.
Remove the 'detail' contentHint setting for the desktop+presenter canvas stream as it forcing chrome to send only 5 fps stream for high resolution desktop tracks.
Move the desktop resizing logic behind a config.js option - videoQuality.resizeDesktopForPresenter.
There is no need for setting the availability of desktop sharing anymore. It can
now be detected on the spot.
The reson for the previous code was that way back when browser extensions were
needed, it was possible to start a conference without desktopo sharing support
and get it afterwards. This is no longer the case.
...so that the text is more readable in the presenter mode. Chrome by
default uses 'detail' for screen sharing. I went with the 'text' here,
because the docs[1] say "may take advantage of encoder tools that
optimize for text rendering." - whether that's good specifically for
the presenter mode I don't know. It looked good for me when tested
on Chrome.
https://www.w3.org/TR/mst-content-hint/
Change the preferredVideoQuality and maxReceiverVideoQuality values to Ultra HD resolutions. The requested resolution can be as high as 4K to facilitate VPaaS customers to request 4K. The sender video resolution will always max out at the value specified in the video constraints from config.js settings.
- Don't initialize handler's is their API key is not set
- Don't swallow exceptions when creating handlers
- Don't remove all handlers if an external one fails
- Dispose the analytics subsystem if no handlers are registered
Get the existing HTMLVideoElement for large video instead of creating a new video element for capturing the screenshot.
This should prevent the video player from getting displayed on mobile Safari.
Ever since https://github.com/facebook/react-native/pull/23674 landed it has
been possible to run timers in the background, assuming your app is allowed to
run in the background already, as is our case. So, stop using the library on
iOS, which will avoid creatring needless backgound tasks.
Adapt to E2EE changes in lib-jitsi-meet. Notably:
---
e2ee: introduce per-participant randomly generated keys
This the second stage in our E2EE journey.
Instead of using a single pre-shared passphrase for deriving the key used for
E2EE, we now establish a secure E2EE communication channel amongst peers.
This channel is implemented using libolm, using XMPP groupchat or JVB channels
as the transport.
Once the secure E2EE channel has been established each participant will generate
a random 32 byte key and exchange it over this channel.
Keys are rotated (well, just re-created at the moment) when a participant joins
or leaves.
---
When you join a conference that needs an authenticated moderator, as a guest, Jitsi Meet will continuously try and connect to the meeting every 5 seconds. Avoid starting the native call integration more than once.
Fixes: https://github.com/jitsi/jitsi-meet/issues/6260
* Resolves#7501
- Automatically copy invite URL after creating a room
* Resolves#7501
- Automatically copy invite URL after creating a room
* - Adding config flag to enable the feature
Allows to adjust thresholds which control the video quality level
in the thumbnail view.
Changes the default behaviour to request the SD (360p) resolution only
when the thumbnails are at least 360 pixels tall and the height of
720 is required for the high quality level.
The thresholds can be configured with the 'videoQuality.minHeightForQualityLvl'
config property. Check the description in the config.js for more details.
* Adds a dropdown indicator which displays the status of the internet connection.
* It uses the same data as `https://network.callstats.io`.
* The algorithm for the strings displayed to the user is also the one used on `network.callstas.io`.
Does not skip passing jwt even when malformed to allow getting the error, terminating the connection and showing the warning. We were not passing jwt when malformed and were successfully joining a conference for deployments where no token is allowed.
This adds the ability to configure hiding the logo on the deep linking page.
HIDE_DEEP_LINKING_LOGO defaults to false in the config.
The implementation also defaults to showing the logo if HIDE_DEEP_LINKING_LOGO
is missing from the config.
Add a config option with the default value of 2, which will cap the max recv video quality to SD if there's more than 2 participants in the conference while in the tile view mode.
* Adding responsive to jitsi logo, buttons and hiding some part of the interface
* moving media types thresholds to variables and apply only to screen
* hide chrome extension banner on very small view
* Hide filmstrip only on desktop narrow windows
Display name for lobby operations notifications are taken from the list of knocking participants which is available only to moderators. In case of not all moderators the notifications were broken.
Adds an extra 'options' argument to the register method which
allows to use deep equality instead of a shallow one when comparing
the current and the previous selections.
Part of [1] replaces a `setPreferredVideoQuality` call with a
`setMaxReceiverVideoQuality` call. The change was part of a bigger
changeset that adds logic that tries to adjust the max based on reduced
ui turned on or off and allow to set prefered through the config.
However, by calling `setMaxReceiverVideoQuality` instead of
`setPreferredVideoQuality`, the new feature overrides the lower
resolution requested by tile-view earlier in some occasions.
This PR reverts back to using `setPreferredVideoQuality` instead of
`setMaxReceiverVideoQuality` as this achieves the same result without
overwriting the max set by the tile-view.
NOTE that this is a quick-fix and all the handling related to setting
the receive resolution will be reworked soon.
[1]: 7d513738d2
The maxaveragebitrate parameter to be used by Opus can be configured
through the new opusMaxAvgBitrate config option. Values are restricted
by Opus to integers between 6000 to 510000. Works for non-p2p only.
move option to Audio section, add documentation
Co-authored-by: plokta <dev@plokta.eu>