Commit Graph

3136 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé c730676ce6 fix(lang,notifications) make join notification text more generic 2021-09-02 16:49:04 +02:00
Saúl Ibarra Corretgé 76a53b039f fix(notifications) throttle join notifications for 2 seconds 2021-09-02 16:49:04 +02:00
Hristo Terezov dfd53f4041 fix(rn,ParticipantPane) optimize
Use a FlatList to avoid loading all participants at once.
2021-09-02 14:13:32 +02:00
Saúl Ibarra Corretgé 221cf67d0a fix(sounds) fix reaction sound names
- Remove unicode charcters from filenames
- Simplify code for copying them to the iOS SDK
2021-09-02 12:21:53 +02:00
Saúl Ibarra Corretgé 20a1833c6c fix(rn,filmstrip) simplify code
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.
2021-09-01 23:35:44 +02:00
Saúl Ibarra Corretgé 36f604aab8 fix(rn,filmstrip) avoid fast scroll trigggering visibility notifications
An item won't be considered visible until it has been visible for 500ms.
2021-09-01 23:35:44 +02:00
Saúl Ibarra Corretgé 8db6e783f1 fix(rn,external_api) skip participant notifications when not in a meeting 2021-09-01 23:35:06 +02:00
Saúl Ibarra Corretgé 7b4a426ad2 fix(rn,logging) skip some logs on mobile 2021-09-01 23:35:06 +02:00
Saúl Ibarra Corretgé a687907105 fix(lastn) debounce updating last N
When joining a large meeting every participant join would trigger an attempt of
an update. Try to minimize the amount of calls.
2021-09-01 23:35:06 +02:00
Saúl Ibarra Corretgé 5dc03f56f6 fix(notifications) skip participant joined notifications before we join 2021-09-01 20:12:44 +02:00
tmoldovan8x8 83a1ee1182
task(rn, android): update dropbox logic to retrieve refresh token 2021-09-01 15:21:03 +03:00
Saúl Ibarra Corretgé 0a6872733e fix(video-layout) fix getMaxColumnCount on mobile
interfaceConfig does not exist.
2021-09-01 14:13:30 +02:00
Saúl Ibarra Corretgé 5249998ec5 fix(rn,humbnail) add key prop to array items
Fixes a React warning
2021-09-01 14:12:13 +02:00
Saúl Ibarra Corretgé 18e2232e9e fix(toolbox) fix warning due to missing key prop 2021-09-01 13:41:43 +02:00
Дамян Минков 5c299bcd46 feat: Prints an error log for errors in child components render methods. 2021-08-31 23:31:00 -05:00
Jaya Allamsetty b9866e3464 fix(tracks) Fix mobile safari issue with startMuted.
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.
2021-08-31 17:04:08 -04:00
hmuresan bec9920c79 chore(dropbox-web) Accommodate short-lived access token 2021-08-31 16:25:29 +03:00
robertpin 5367d43c26
fix(reactions) fix reactions bugs
* 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
2021-08-31 13:00:27 +02:00
hmuresan 74026e743c fix(toolbar-buttons) Hide/show invite button based on toolbarButtons 2021-08-31 12:18:10 +03:00
Hristo Terezov a2bac9c3ac fix(filmstrip): sort alphabetically. 2021-08-30 11:32:16 -05:00
Hristo Terezov aff976d53d fix(mobile-pagination):incorrect number of columns 2021-08-30 11:32:16 -05:00
Hristo Terezov c2ffcdc67e fix(mobile-pagination): Disable bounce effect. 2021-08-30 11:32:16 -05:00
Hristo Terezov bb670fd90d Apply suggestions from code review
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-08-30 11:32:16 -05:00
Hristo Terezov b31ed40309 fix(mobile-pagination): address PR review comments 2021-08-30 11:32:16 -05:00
Hristo Terezov 7dd43d93b6 feat(filmstrip-pagination): mobile support. 2021-08-30 11:32:16 -05:00
Saúl Ibarra Corretgé 37acce3764 fix(config) add enableReactions to whitelist 2021-08-30 15:32:58 +02:00
Jaya Allamsetty 9013b01df6 fix(filmstrip): Always sort the participants alphabetically.
Reorder the sub-groups (shares, speakers and rest of the participants) always on dominant speaker changes and when participants join or leave.
2021-08-26 18:28:10 -04:00
Jaya Allamsetty 7827c3d1ad fix(filmstrip): Move thumbnails reordering behind a config.js flag.
enableThumbnailReordering flag (enabled by default) will be used to check if the thumbnails needs to be reodred in the UI.
2021-08-26 18:28:10 -04:00
Jaya Allamsetty 751d9a9b8e fix(KeyboardShortcut): pin the correct participants when number keys are used. 2021-08-26 18:28:10 -04:00
Tudor D. Pop eb4aefbca1
fix(virtual-background) upload bkg image on poor connection 2021-08-26 15:33:43 +02:00
hmuresan 6c40329f6a feat(branding) Add premeeting background image overwrite 2021-08-26 15:14:57 +03:00
Saúl Ibarra Corretgé b15f1d190d fix(chat) avoid emojifying URLs
Fixes: https://github.com/jitsi/jitsi-meet/issues/9661
2021-08-25 11:43:20 -05:00
Saúl Ibarra Corretgé e67db2381e Update setup.web.js 2021-08-25 17:22:50 +02:00
Saúl Ibarra Corretgé 11382cfda6 fix(local-storage) use local storage on WebKit when not in an iframe
There should be no need to use the workaround when visiting the site normally.
2021-08-25 17:22:50 +02:00
Saúl Ibarra Corretgé 248865ad3f fix(rn) enable reactions by default 2021-08-25 16:38:20 +02:00
Horatiu Muresan 7966c8f88f
feat(errors) Expose errors through Iframe API (#9801) 2021-08-25 15:23:40 +03:00
hmuresan a892d5fed1 fix(pre-meeting) Hide invite button for JaaS 2021-08-25 11:09:56 +03:00
Hristo Terezov 88a11b9f3e fix(TileView): not showing all participants. 2021-08-24 15:40:29 -05:00
Дамян Минков bcc326c150 fix: Fixes undefined errors in MeetingParticipant - Item and ContextMenu. 2021-08-24 14:38:54 -05:00
Дамян Минков e348270099 Revert "fix: Fixes reloads after enabling AV moderation."
This reverts commit 38f9c97f40.
2021-08-24 14:38:54 -05:00
Дамян Минков fc59cdbdbe fix: Fixes showing awaiting AV moderation after grant moderator. 2021-08-24 14:38:54 -05:00
Saúl Ibarra Corretgé 59ef5c4789 feat(e2ee) add support for WebRTC Encoded Transform
An alternative to Insertable Streams, currently implemented in Safarii / WebKit.

https://w3c.github.io/webrtc-encoded-transform/

It's currently behind a config flag, both in Safari and here.

Fixes: https://github.com/jitsi/jitsi-meet/issues/9585
2021-08-24 17:43:20 +02:00
hmuresan b6b943e7de feat(lobby) Add sound for participant knocking 2021-08-24 18:01:10 +03:00
Calin Chitu 9d5024cc5d fix(authentication) fixed close on cancel click 2021-08-24 15:39:56 +02:00
hmuresan 8b23265a50 fix(notifications) Add timeout for video/audio lost notifs 2021-08-24 16:30:02 +03:00
robertpin 605ce9db62 Added default state to persistance 2021-08-24 10:07:44 +03:00
Дамян Минков e63b3016c9 feat: Allow AV moderation for p2p users. 2021-08-23 09:43:53 -05:00
Дамян Минков 4d07d4ae76 feat: Always show AV moderation. 2021-08-23 09:43:53 -05:00
Дамян Минков 2616e126fb feat: Show footer context menu in p2p. 2021-08-23 09:43:53 -05:00
Дамян Минков 38f9c97f40 fix: Fixes reloads after enabling AV moderation. 2021-08-23 09:43:53 -05:00
robertpin c7a91e1974
feat(reaction-sounds) Added sounds for reactions (#9775)
* 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
2021-08-23 12:57:56 +03:00
Saúl Ibarra Corretgé 08177af182
fix(rn,amplitude) update Amplitude SDK on RN
Amplitude has gone back to having a separate package for RN, so switch to it.
2021-08-20 15:24:34 +02:00
Avram Tudor 1ad9046a38
Improve premeeting screens ux (#9726)
* feat(prejoin) move invite to toolbar section

* feat(premeeting) redesign prejoin and lobby screens

* code review changes

* fix prejoin flicker and avatar id

* fix password error message and native lobby dialog close position
2021-08-20 11:53:11 +03:00
Avram Tudor 49a73ac446
fix(jaas) do not redirect to plan limit page on auth errors (#9746) 2021-08-20 11:36:09 +03:00
Avram Tudor 8e4a22bdbf
fix(moderation) fix ui styles for advanced moderation context menu (#9758) 2021-08-20 11:23:37 +03:00
Saúl Ibarra Corretgé ddbf334930 fix(e2ee) fix showing not supported warning when alone 2021-08-19 17:19:00 +02:00
Saúl Ibarra Corretgé cd5f2b483f fix(e2ee) show entire content at all times 2021-08-19 17:19:00 +02:00
Saúl Ibarra Corretgé 27e4e862fd feat(xmpp) remove clientNode config option 2021-08-19 13:28:58 +02:00
Avram Tudor 4b3d92dcbd
fix(moderation) highlight dominant speaker (#9750) 2021-08-19 14:08:30 +03:00
Saúl Ibarra Corretgé 5c1e2b4bd2 fix(AudioRoutePickerDialog) add proper margin 2021-08-19 10:47:53 +02:00
Avram Tudor d41c597446
fix(moderation) hide status icons on hover (#9747) 2021-08-19 11:32:36 +03:00
Jaya Allamsetty 40099e97ec
feat(Filmstrip): Reorder the visible participants in the filmstrip. (#9707)
* 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.
2021-08-18 18:34:01 -04:00
Calin Chitu cf49af1a9f fix(participants-pane) fixed participants pane button toggled state 2021-08-18 12:39:27 -05:00
Avram Tudor 6d3a4b920b
fix(moderation) display green mic icon only for active speaker (#9744) 2021-08-18 15:10:16 +03:00
Avram Tudor 595df524b0
fix(participants) sort participants alphabetically (#9741) 2021-08-18 14:29:41 +03:00
Avram Tudor 9914a5d14a
fix(share-video) fix links not being trimmed (#9740) 2021-08-18 12:09:04 +03:00
Дамян Минков fbf9d489f0 fix: Fixes an error with configuration without analytics.
Fixes an error `Cannot convert undefined or null to object` on load.
2021-08-17 12:54:29 -05:00
AJ-عجائب البرمجة 8106fb06e4
fix(rn,sidebar) fix not appearing on RTL languages 2021-08-17 13:15:22 +02:00
Calin Chitu 036ef0f387 fix(video-menu) fixed position for horizontal filmstrip view 2021-08-17 13:54:54 +03:00
Calinteodor 307699a34c
feat(toolbox) added android screen share flag
Fixes issue #9435
2021-08-17 13:42:29 +03:00
tmoldovan8x8 c23375793e
fix(rn): import React from react package 2021-08-17 13:14:20 +03:00
hmuresan 4dc642fb4d feat(callstats) Add `callStatsConfigParams` config 2021-08-16 13:15:44 +03:00
Andrei Gavrilescu d47e67c28c
fix(screen-share): never mute audio screen share track #9725 2021-08-16 12:24:01 +03:00
Calinteodor e40d4a48b8
feat(av-moderation) id and aria-label updates for av-moderation test (#9592)
* 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>
2021-08-15 00:27:18 -05:00
Jade Guiton 8c82c0f56e
feat(polls) Ability to create polls inside Jitsi (#9166)
* 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>
2021-08-14 08:29:42 -05:00
dimitardelchev93 c123ff9e15
feat: Add search to speaker stats (#9510)
* 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
2021-08-13 11:10:05 -05:00
Andrei Gavrilescu e45cab9a80
feat(transcribing): configurable transcription language (#9684)
* configurable transcription language

* merge conflict

* set default config value

* fix lint
2021-08-09 12:29:50 +03:00
Дамян Минков 6f44368647 fix(av-moderation): Fixes approving and dismissing the notification.
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.
2021-08-06 15:04:26 -05:00
Saúl Ibarra Corretgé 1433a1ee5d feat(rn,filmstrip) add 1on1 mode
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.
2021-08-06 13:31:00 +02:00
Pierre d6b5687828
fix(misc) fix typeof comparison to undefined 2021-08-06 09:51:54 +02:00
Saúl Ibarra Corretgé 0419c5a15b fix(rn,video-quality) fix not selecting any endpoint on mobile
The concept of "visible participants" is not yet implemented.
2021-08-05 17:28:33 +02:00
hmuresan dda1f3c5ba fix(recording-label) fix recording label behavior 2021-08-05 17:56:12 +03:00
hmuresan 6f41ef75d7 fix(notifications) Fix hiding audio/video lost notification 2021-08-05 16:36:13 +03:00
Calin Chitu 8bbee7d1dc feat(toolbox) updated menu items order, dividers for mobile 2021-08-05 11:56:44 +02:00
Saúl Ibarra Corretgé 465e7f1458 fix(conference) unify conference options
Some options were missing on the mobile side, notably calltsts
enableDisplayNameInStats and enableEmailInStats. Now the same logic will be used
in web and mobile.
2021-08-04 15:32:03 +02:00
Calinteodor 4e43a31ec9
fix(rn,bottom-sheet) fixed surface color
Also fix properly showing the remote menu.
2021-08-04 15:11:32 +02:00
Calinteodor 3c2ad24652
fix(shared-video,video-menu) add ability to stop shared video from video menu
Specifically, in the bottom sheet (on mobile) and participants pane.
2021-08-04 10:51:05 +02:00
Avram Tudor e421a119e1
feat(share-video) Allow sharing direct video links (mp4 etc) on mobile (#9511)
* feat(share-video) Allow sharing direct video links (mp4 etc) on mobile

* fix linting

* code review
2021-08-02 15:55:52 +03:00
Hristo Terezov 619acaca24 fix(Filmstrip): Send only visible endpoints to jvb 2021-07-30 11:44:16 -05:00
Calin Chitu bc9f5773fb feat(participants-pane) changed to standard header 2021-07-30 16:07:48 +02:00
Andrei Gavrilescu d0be8dcf9d
fix(external-api): persist audio output device 2021-07-30 14:51:47 +03:00
Calinteodor efc5c9dabe
feat(participants-pane) hide admit all if less than 2 participants
- Fixed admitMultiple action for mobile
- Added token color for button
- Hide Admit all button if less than 2 knocking participants
2021-07-30 11:48:06 +02:00
Calinteodor d22fc88ae3
feat(participants-pane) context menu ui fixes
- 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
2021-07-30 11:46:49 +02:00
Mihai-Andrei Uscat 9ee75038b6
fix(Toolbar): Fix toolbar not hiding on mobile 2021-07-30 11:37:45 +03:00
Pawel Domas 907b51925d fix(prejoin): disposed track was added to the conference
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
2021-07-28 09:00:54 -05:00
Calinteodor d6c821d524
feat(participants-pane) updates
- 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
2021-07-27 16:08:33 +02:00
Saúl Ibarra Corretgé eb16f93153 fix(rn,polyfills) remove no longer needed hack
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.
2021-07-26 16:16:27 +02:00
Saúl Ibarra Corretgé bac0a55421 fix(config) add missing buttons to default constants
- 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
2021-07-26 15:33:38 +02:00
hmuresan 1c8103c444 fix(dropbox-recording) Prevent start recording when no dropbox token 2021-07-26 16:20:05 +03:00
Calin Chitu 0f8fa4f059 feat(participants-pane) removed getIsParticipantAudioMuted 2021-07-22 12:54:16 -05:00
Hristo Terezov becaf0806a fix(ShareDesktopButton): typo. 2021-07-22 11:32:44 -05:00
hmuresan 5b77d722d7 fix(toolbox) add back toggle camera button 2021-07-22 16:20:45 +03:00
hmuresan f4cde2192e fix(toolbar-buttons) Attempt fix Meet in integration 2021-07-22 16:18:56 +03:00
Hristo Terezov e91df47d1b fix(ShareDesktopButton): getParticipants reference 2021-07-22 07:37:50 -05:00
robertpin 2d04f3852c
fix(reactions) Moved reactions behind feature flag 2021-07-22 13:17:42 +03:00
Mihai-Andrei Uscat 2209394d09
feat(Filmstrip): Collapse filmstrip to avoid toolbar overlap on mobile 2021-07-22 09:37:44 +03:00
George Politis 75edfc1fab
fix: Normalize the tenant part of the URL. (#9577)
This PR normalises the tenant part of the URL. For example, the following URL

    https://jitsi-meet.example.com/something@example.com/something@example.com

is converted to

    https://jitsi-meet.example.com/somethingexample.com/somethingexample.com

whereas before it was converted to

    https://jitsi-meet.example.com/something@example.com/somethingexample.com

i.e. the tenant part was not normalised
2021-07-21 18:48:08 +01:00
Calin Chitu 8c20dd8e47 feat(native-participants-pane) removed everyonemoderator from footer context menu 2021-07-21 12:32:10 -05:00
Calin Chitu fefe451180 feat(native-participants-pane) updated slider volume private prop 2021-07-21 12:32:10 -05:00
Calin Chitu b268e01a42 feat(native-participants-pane) rebase, resolved conflicts pt. 2 2021-07-21 12:32:10 -05:00
Calin Chitu d62e378528 feat(native-participants-pane) rebase, resolved conflicts pt. 1 2021-07-21 12:32:10 -05:00
Calin Chitu b7389e1c31 feat(native-participants-pane) implemented review remarks pt.4 2021-07-21 12:32:10 -05:00
Calin Chitu eeddf6b350 feat(native-participants-pane) fixed lint errors 2021-07-21 12:32:10 -05:00
Calin Chitu 665b7730ee feat(native-participants-pane) implemented review remarks pt. 3 2021-07-21 12:32:10 -05:00
Calin Chitu 7854437e31 feat(native-participants-pane) slider ui fixes 2021-07-21 12:32:10 -05:00
Calin Chitu 88ddb8d9b4 feat(native-participants-pane) volume level state fix 2021-07-21 12:32:10 -05:00
Calin Chitu 5182a720f9 feat(native-participants-pane) volume slider refactoring 2021-07-21 12:32:10 -05:00
Calin Chitu 415562c315 feat(native-participants-pane) updated translations and added throttle for slider 2021-07-21 12:32:10 -05:00
Calin Chitu 53d0a892b5 feat(native-participants-pane) review remarks pt 2 volume slider 2021-07-21 12:32:10 -05:00
Calin Chitu 9b220f3870 feat(native-participants-pane) fixed comment typos and reworks on volume slider 2021-07-21 12:32:10 -05:00
Calin Chitu c6e50ad439 feat(native-participants-pane) implemented review remarks pt. 1 2021-07-21 12:32:10 -05:00
Calin Chitu 36cb896680 feat(native-participants-pane) resolved rebase conflicts and updated import paths 2021-07-21 12:32:10 -05:00
Calin Chitu 249515ac60 feat(native-participants-pane) removed console.log 2021-07-21 12:32:10 -05:00
Calin Chitu 80b49266ab feat(native-participants-pane) removed unused prop and added onPress condition 2021-07-21 12:32:10 -05:00
Calin Chitu 1afae50923 feat(native-participants-pane) dialog for blocking audio/video 2021-07-21 12:32:10 -05:00
Calin Chitu b332fb474b feat(native-participants-pane) Updated comments 2021-07-21 12:32:10 -05:00
Calin Chitu a12ad99ecf feat(native-participants-pane) participants pane open/close fixed 2021-07-21 12:32:10 -05:00
Calin Chitu 400f47963d feat(native-participants-pane) open/close pane native actions 2021-07-21 12:32:10 -05:00
Calin Chitu 65fbc6f256 feat(native-participants-pane) fixed slider error on android 2021-07-21 12:32:10 -05:00
Calin Chitu e7a324185f feat(native-participants-pane) fixed lint errors 2021-07-21 12:32:10 -05:00
Calin Chitu 14a5c45fa3 feat(native-participants-pane) removed mock data 2021-07-21 12:32:10 -05:00
Calin Chitu 05e6dde341 feat(native-participants-pane) ui fixes 2021-07-21 12:32:10 -05:00
Calin Chitu e13473d42f feat(native-participants-pane) fixed lint error 2021-07-21 12:32:10 -05:00
Calin Chitu 4b72fefd7e feat(native-participants-pane) created admitAll action 2021-07-21 12:32:10 -05:00
Calin Chitu ba9398a1e2 feat(native-participants-pane) fixed slider and hid dialog when chat is open 2021-07-21 12:32:10 -05:00
Calin Chitu 8d4cf7165e feat(native-participants-pane) added action dialogs for context menu participant details and native community slider 2021-07-21 12:32:10 -05:00
Calin Chitu 0b3991d9e1 feat(native-participants-pane) context menu for meeting participant 2021-07-21 12:32:10 -05:00
Calin Chitu 47be509d17 feat(native-participants-pane) fixed import order lint error 2021-07-21 12:32:10 -05:00
Calin Chitu ba64d3e0c8 feat(native-participants-pane) context menu for more btn and reject lobby participant 2021-07-21 12:32:10 -05:00
Calin Chitu cd05c34d19 feat(native-participants-pane) rendered participant name 2021-07-21 12:32:10 -05:00
Calin Chitu 24550777c6 feat(native-participants-pane) simplified props for hiding header with navigation 2021-07-21 12:32:10 -05:00
Calin Chitu ee101f8947 feat(native-participants-pane) fixed mute all content styles and added doInvitePeople action 2021-07-21 12:32:10 -05:00
Calin Chitu 8ca85f9e1c feat(native-participants-pane) token updates and added mute all event 2021-07-21 12:32:10 -05:00
Calin Chitu 34ccd56691 feat(native-participants-pane) updated styles for meeting participant list 2021-07-21 12:32:10 -05:00
Calin Chitu f49c05c666 feat(native-participants-pane) created meeting participant list 2021-07-21 12:32:10 -05:00
Calin Chitu e7280e5040 feat(native-participants-pane) ui fixes 2021-07-21 12:32:10 -05:00
Calin Chitu eb1add681f feat(native-participants-pane) admit/reject all buttons 2021-07-21 12:32:10 -05:00
Calin Chitu 8419dc725c feat(native-participants-pane) ui updates for participant item 2021-07-21 12:32:10 -05:00
Calin Chitu f984faef3f feat(native-participants-pane) first lobbyparticipantlist steps 2021-07-21 12:32:10 -05:00
Calin Chitu 0c76d7532c feat(native-participants-pane) fixed lint errors 2021-07-21 12:32:10 -05:00
Calin Chitu cb0b68f840 feat(native-participants-pane) removed button component, fixed icons inside paper button component and reverted actions.js files 2021-07-21 12:32:10 -05:00
Calin Chitu bdd6638067 feat(native-participants-pane) fixed lint errors 2021-07-21 12:32:10 -05:00
Calin Chitu 8b44e06f2c feat(native-participants-pane) separated native actions from web actions and created any actions for the common ones 2021-07-21 12:32:10 -05:00
Calin Chitu 79edc1b358 feat(native-participants-pane) updated styles for button component and participant item related components 2021-07-21 12:32:10 -05:00
Calin Chitu 6597bfc2aa feat(native-participants-pane) added showHeaderWithNavigation prop to JitsiModal and created close button 2021-07-21 12:32:10 -05:00
Calin Chitu e0a2320d75 feat(native-participants-panel) renamed ParticipantsPanel to ParticipantsPane and created modal 2021-07-21 12:32:10 -05:00
Calin Chitu 81e9fca03b feat(native-participants-panel) created participants panel overflowmenu button 2021-07-21 12:32:10 -05:00
robertpin 76f8302aeb
fix(recording-label) Make REC label visible at all times (#9578) 2021-07-21 11:46:49 +03:00
Mihai-Andrei Uscat 7263829763 feat(DominantSpeakerName): Implement 2021-07-21 09:05:47 +03:00
Mihai-Andrei Uscat b7ab3ea052 fix(Thumbnail, Drawer): Remove hover state; Prevent outside propagation 2021-07-21 09:05:47 +03:00
hmuresan 2bac757ca6 feat(branding): Add custom avatar backgrounds 2021-07-20 18:56:06 +03:00
robertpin c10805f81b
feat(sound-settings) Added ability to control sounds 2021-07-20 14:56:57 +03:00
robertpin 251eec19cd
fix(reactions) Batch events before sending 2021-07-20 14:31:49 +03:00
robertpin 4276f82c03
feat(billing-counter) Removed iframe billing-counter callbacks (#9537)
* Removed iframe billing-counter callbacks

* Moved remaining items to jaas

* Fixed import path

* Removed billingCounter condition

* Use getvpaasTenant in middleware

* Removed billingId

* Path fix

* Removed jwt from isVpaasMeeting

* Fix isVpaas
2021-07-20 11:58:42 +03:00
Tudor-Ovidiu Avram 12be14bd4b fix(jaas) do not deeplink jaas users on default 8x8 app scheme 2021-07-16 17:05:21 +03:00
Tudor-Ovidiu Avram 420a7d8110 fix(jaas) fix vpaas condition 2021-07-16 15:49:57 +03:00
hmuresan 17f77a4246 fix(support-url): Hide contact support button when SUPPORT_URL is empty
- fix issue on error notification on invite contacts
2021-07-16 14:53:26 +03:00
hmuresan 6f9944a2d0 fix(iOS-mailto): Send no new line invite on default email
- addresses this issue: https://developer.apple.com/forums/thread/681023
2021-07-16 13:27:29 +03:00
Avram Tudor 73328810e4
fix(jaas) hide chrome banner regardless of jwt (#9565) 2021-07-16 13:17:28 +03:00
tudordan7 bb8c30a6c9 fix(virtual-background): Add logs on virtual background actions. 2021-07-16 10:31:35 +03:00
Hristo Terezov c5438ecd0c fix(AOT): participant selection. 2021-07-15 18:03:17 -05:00
robertpin ea0d953d1c
feat(reactions-webhook) Added reactions backend call for webhook (#9534)
* Added backend call for reactions webhook

* Updated webhook url

* Fixed linting error

* Code review fixes

* Fixed linting errors
2021-07-15 15:23:48 +03:00
hmuresan b3e03fe50c fix(aot): Remove dependency to translate from StatelessAvatar.js
- translate uses interfaceConfig object which does not exist in AOT context
2021-07-15 14:57:33 +03:00
Tudor-Ovidiu Avram 0ab905bf75 code review 2021-07-15 14:44:28 +03:00
Tudor-Ovidiu Avram 5a3607f63f fix*(jaas) redirect to plan limit page on connection failed 2021-07-15 14:44:28 +03:00
robertpin 1223c63f69
fix(reactions) Updated list of reactions & disabled incoming message sound (#9550)
* Changed reactions

* Disable incoming message sound on reactions
2021-07-15 10:26:27 +03:00
Avram Tudor e8ee65db82
fix(jaas) always hide chrome banner (#9546) 2021-07-14 16:16:21 +03:00
Avram Tudor 5cba6c7bc7
fix(jaas) fix jaas customer details endpoint (#9542) 2021-07-14 11:26:04 +03:00
tudordan7 52ee9b5151 fix(virtual-background): Prevent memory leak when desktop share as a virtual background is applied. 2021-07-13 17:30:29 +03:00
robertpin 7d3953de51
Fixed (#9533) 2021-07-13 11:55:07 +03:00
robertpin 601ee219e7
feat(reactions) Added Reactions (#9465)
* 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
2021-07-13 09:50:08 +03:00
tudordan7 8db3a341b3 fix(virtual-background): Set x scale to default value on desktop share as a virtual background deactivation. 2021-07-12 15:32:58 +03:00
Tudor D. Pop 8d562b9d59
fix(share-youtube-video): Validate youtube url. 2021-07-09 10:16:35 -04:00
Hristo Terezov 0bdc7d42c5
feat: Participants optimisations (#9515)
* 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>
2021-07-09 15:36:19 +03:00
robertpin bad58f6508
feat(JaaS-JWT) Get JWT for JaaS (#9512)
* Added get JWT for JaaS

* Code review fix
2021-07-09 09:30:49 +03:00
Hristo Terezov dc60418613 fix(settings): imports that break mobile. 2021-07-09 06:56:14 +03:00
hmuresan f2f545a57f fix(connection-indicator) Fix detecting local/remote participant 2021-07-08 20:28:39 +03:00
Tudor D. Pop d72b27d46d
fix(virtual-background): Fix mirror behavior for remote participants. 2021-07-08 13:20:12 -04:00
Hristo Terezov e1fef8d848 fix(tile-view): when iAmRecorder=true. 2021-07-08 09:06:53 -05:00
Avram Tudor 62c78950cd
feat(toolbox) allow any toolbox button to be displayed in main toolbar (#9488)
* 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
2021-07-08 16:42:07 +03:00
Andrei Gavrilescu da7358d564
feat(audio-screen-share): improved ux flow (#9411)
* add button state / helper dialog

* new audio screen share flow

* change error message

* address a couple of merge conflicts

* fix lint

* address code review

* address code review

* restrict audio screen share on mobile browsers
2021-07-07 11:07:30 +03:00
robertpin 58ef72dce5
fix(feedback-dialog) Removed mouseover on mobile 2021-07-07 10:32:59 +03:00
hmuresan b995221a2b feat(thumbnails) Add changes to mobile context menu
- long touch on thumbnail opens context menu
- hide context menu icon
- add button for connection info to context menu
2021-07-06 16:46:53 +03:00
Calin Chitu ae9bea1a0c fix(av-moderation) added optional chaining for moderation enabling 2021-07-01 16:41:37 +03:00
robertpin 2174368d23
Exposed preferredCodec 2021-06-30 15:55:49 +03:00
Avram Tudor abc984f83b
fix(css) fix various layout issues on small screen sizes (#9464) 2021-06-30 12:01:47 +03:00
robertpin 24503c3bd3
feat(config) Added option to remove Show More link from GSM popover
* Whitelisted enableSaveLogs

* Added config option to hide Show More on GSM popover

* Updated config option
2021-06-29 16:42:23 +03:00
Victor de Francisco d4c7fc8a72 Include support for translated string resources at device permission dialog because it contains hardcoded english strings. 2021-06-29 15:58:14 +03:00
Andrei Gavrilescu 13f9299921
fix(external-api): update settings on api device change 2021-06-28 14:51:40 +03:00
Tudor-Ovidiu Avram c356c2360c fix(build) split jaas actions 2021-06-28 14:18:16 +03:00