Due to local storage limitations we might end up making the URL huge
when we save the state there. Avoid the issue at the root by never
storing URLs in that case.
Closes: https://github.com/jitsi/jitsi-meet/issues/11567
AV moderation does not work on brerakout rooms.
Since some of the options in the "breakoutRooms" config section no
longer apply, I moved the relevant ones to a new "participantsPane"
section.
This works together with the broader "notifications" config option. One
might choose to leave the existing option unespecified *thus allowing
all notifications) and then use this new one to be explicit about which
ones to disable.
It's about to become very confusing, since we are going to add actual
local recordings with video.
This feature was never fully finalizeed since it required manual
processing of the files, as they were not uploaded anywhere.
In addition, unless one opens the local audio device without any audio
processing first, any tracks opened later will have audio proceessing
turned on, something not desirable for the scenario this feature was
designed for in the first place: podcasts.
This feature will likely come back as a JaaS demo / MVP where the local
recording is made outside of the Jitsi Meet iframe.
See multiple participants on stage
Pin and unpin to stage
Automatic selection of participants to be displayed on the stage filmstrip based on dominant speaker changes
Make Filmstrip a reusable component. Used by MainFilmstrip (old functionality) and the new StageFilmstrip
Rename DominantSpeakerName to StageParticipantNameLabel
Active border now showed only for the dominant speaker (no longer for the pinned participant)
Hide video from the vertical filmstrip for the participants on stage
Update video constraints
Updated pinned indicator
Show GIF menu in reactions menu
Search GIFs using the GIPHY API
Show GIFs as images in chat
Show GIFs on the thumbnail of the participant that sent it
Move GIF focus using up/ down arrows and send with Enter
Added analytics
Make conference info and toolbar appear on top of the filmstrip
After a breakpoint, filmstrip pushes over the stage view instead of appearing on top
On user resize make tiles wider; after a breakpoint show grid view in the filmstrip
On filmstrip visibility toggle animate stage view resize
Added config for filmstrip with disableResizableFilmstrip
* feat: Handles hidden-from-recorder from jwt.
Hides the participant that has this flag in jwt from the recorder. A hidden meeting moderator.
Makes sure follows me works and no tracks are being added.
* squash: Skips showing notification when disabling
local audio and video.
* squash: Fixes comments.
* squash: Updates with ljm changes.
This notification is missing in the array. If array is selectively defined, no pop-up notification is received when participant requests to join the meeting.
Added config to choose between recording and always mode
Created function to check if feature should be used
Removed check from stop feature as it now checks if the feature was previously on
Only get video track on feature start
- add possibility to allow execution of the button's routine besides triggering
`toolbarButtonClicked` API event
- keep backwards compatibility
- get rid of `ToolbarButton`
* feat: Use source name based receiver constraints
* add sourceNameSignaling feature flag to config
* move source name specific variables into if block
* ensure sourceName is defined in constraints
* use source name for selectedSources
* use selector to find video track by participant id
* add selector to encapsulate logic to get track source name
* refactor getTrackSourceNameByMediaTypeAndParticipant selector
* rename variable
* move flags config into Feature Flags section
* do not set constraints for local large video
* rename prioritizedSources to onStageSources
* fix flow error
* refactor visibleRemoteTrackSourceNames to a constant
* use selector to get feature flags
* rename selector function
* fix flow error
* add selector for sourceNameSignaling feature flag
* feat: Drops hide self-view setting from profile tab.
* feat: Moves function for disableSelfView value in base/settings.
* squash: Drops notification.
* feat: Move hide self view option in more tab.
* feat: Move hide self view option in more tab.
* feat: Adds option to disable self view UI settings.
* squash: Disable settings when controlled from config.
* fix: Fixes disable moderation sounds in meeting.
Moderators in the meeting were sending presence update after one moderator turn it on, which even my result a inconsistent state and flipping the state between moderators several times.
* squash: Adds option to disable reaction moderation.
Added config option disableSelfView. This disables it on web and native
Added button on local video menu and toggle in settings on web to change the setting
- implement breakout-rooms
- integrated into the participants panel
- managed by moderators
- moderators can send participants to breakout-rooms
- participants can join breakout rooms by themselve
- participants can leave breakout rooms anytime
Co-authored-by: Robert Pintilii <robert.pin9@gmail.com>
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
* Initial implementation; Happy flow
* Maybe revert this
* Functional prototype
* feat(facial-expressions): get stream when changing background effect and use presenter effect with camera
* add(facial-expressions): array that stores the expressions durin the meeting
* refactor(facial-expressions): capture imagebitmap from stream with imagecapture api
* add(speaker-stats): expression label
* fix(facial-expression): expression store
* revert: expression leabel on speaker stats
* add(facial-expressions): broadcast of expression when it changes
* feat: facial expression handling on prosody
* fix(facial-expressions): get the right track when opening and closing camera
* add(speaker-stats): facial expression column
* fix(facial-expressions): allow to start facial recognition only after joining conference
* fix(mod_speakerstats_component): storing last emotion in speaker stats component and sending it
* chore(facial-expressions): change detection from 2000ms to 1000ms
* add(facial-expressions): send expression to server when there is only one participant
* feat(facial-expressions): store expresions as a timeline
* feat(mod_speakerstats_component): store facial expresions as a timeline
* fix(facial-expressions): stop facial recognition only when muting video track
* fix(facial-expressions): presenter mode get right track to detect face
* add: polyfils for image capture for firefox and safari
* refactor(facial-expressions): store expressions by counting them in a map
* chore(facial-expressions): remove manually assigning the backend for tenserflowjs
* feat(facial-expressions): move face-api from main thread to web worker
* fix(facial-expressions): make feature work on firefox and safari
* feat(facial-expressions): camera time tracker
* feat(facial-expressions): camera time tracker in prosody
* add(facial-expressions): expressions time as TimeElapsed object in speaker stats
* fix(facial-expresions): lower the frequency of detection when tf uses cpu backend
* add(facial-expressions): duration to the expression and send it with durantion when it is done
* fix(facial-expressions): prosody speaker stats covert fro string to number and bool values set by xmpp
* refactor(facial-expressions): change expressions labels from text to emoji
* refactor(facial-expressions): remove camera time tracker
* add(facial-expressions): detection time interval
* chore(facial-expressions): add docs and minor refactor of the code
* refactor(facial-expressions): put timeout in worker and remove set interval in main thread
* feat(facial-expressions): disable feature in the config
* add(facial-expressions): tooltips of labels in speaker stats
* refactor(facial-expressions): send facial expressions function and remove some unused functions and console logs
* refactor(facial-expressions): rename action type when a change is done to the track by the virtual backgrounds to be used in facial expressions middleware
* chore(facial-expressions): order imports and format some code
* fix(facial-expressions): rebase issues with newer master
* fix(facial-expressions): package-lock.json
* fix(facial-expression): add commented default value of disableFacialRecognition flag and short description
* fix(facial-expressions): change disableFacialRecognition to enableFacialRecognition flag in config
* fix: resources load-test package-lock.json
* fix(facial-expressions): set and get facial expressions only if facial recognition enabled
* add: facial recognition resources folder in .eslintignore
* chore: package-lock update
* fix: package-lock.json
* fix(facial-expressions): gpu memory leak in the web worker
* fix(facial-expressions): set cpu time interval for detection to 6000ms
* chore(speaker-stats): fix indentation
* chore(facial-expressions): remove empty lines between comments and type declarations
* fix(facial-expressions): remove camera timetracker
* fix(facial-expressions): remove facialRecognitionAllowed flag
* fix(facial-expressions): remove sending interval time to worker
* refactor(facial-expression): middleware
* fix(facial-expression): end tensor scope after setting backend
* fix(facial-expressions): sending info back to worker only on facial expression message
* fix: lint errors
* refactor(facial-expressions): bundle web worker using webpack
* fix: deploy-facial-expressions command in makefile
* chore: fix load test package-lock.json and package.json
* chore: sync package-lock.json
Co-authored-by: Mihai-Andrei Uscat <mihai.uscat@8x8.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
* 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
* 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
* 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
- 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