Compare commits

..

2576 Commits

Author SHA1 Message Date
scott boone
09d3344c39 temporarily pin luajwtjitsi because v3 will intro a breaking change (#10262) 2021-10-27 16:24:56 -05:00
Jaya Allamsetty
0dc061f633 chore(deps) lib-jitsi-meet@latest
* fix(TPC) add muted tracks to TPC but not to the RTCPeerConnection.

447f111cf2...e566291864
2021-10-27 11:27:55 -04:00
gpatel-fr
ba110fbdc3 (Lang) fix french translation 2021-10-27 07:28:47 -07:00
robertpin
a6167997d8 fix(reactions) Updated payload sent to backend
Added jid

Instead of internal id send id from JWT
2021-10-27 16:02:32 +03:00
Vlad Piersec
b6047b9761 fix(Chat): Use proper 'aria-label' attr on tab menu 2021-10-27 15:59:10 +03:00
robertpin
53a05dd1ad fix(av-moderation) Fix Ask to Unmute on native
Show button with moderation off

Show "Allow video" instead of "Ask to unmute" when needed
2021-10-27 09:44:18 +03:00
Дамян Минков
be5c397422 chore(deps) lib-jitsi-meet@latest
* fix(av-moderation) Fix remove from whitelist to match prosody changes

111e50c38a...447f111cf2
2021-10-26 18:09:44 -07:00
robertpin
d38bf36b2a fix(av-moderation) Fix ask to unmute after allow video
Make Ask to Unmute work if video moderation is on but participant is video whitelisted
2021-10-26 12:00:04 -07:00
Avram Tudor
1793bf460e fix(tileview) Enlarge tiles to fill whole space (#10201) 2021-10-26 11:46:01 +03:00
Vlad Piersec
9e3084ef48 refactor(chat): Don't display chat inside a dialog
* 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.
2021-10-26 09:11:14 +03:00
Vlad Piersec
b0f8b34d94 refactor(toolbox): Rename touch start action for toggle button & move teranry 2021-10-26 09:10:35 +03:00
Vlad Piersec
366dc8d11b fix(toolbar): Hide/Show toolbar on tap on mobile web.
* A tap on video space will toggle the toolbar.
* Double tapping on a tile will pin the participant.
2021-10-26 09:10:35 +03:00
Jaya Allamsetty
667a6eac80 chore(deps) lib-jitsi-meet@latest
* ref(JitsiConference) Remove remote tracks from conf before reneg is done. We do not have to wait for the removal of the ssrcs from the remote description for removing the remote tracks associated with a participant that left the call. This speeds up removal of the participant from call even if the JingleSession modification queue is backed up.
* faet(SDP): Add test for jingle JSON format.

42c675249a...111e50c38a
2021-10-25 15:58:05 -04:00
Nils Ohlmeier
84f37b1777 fix(conference) avoid double prompts in Firefox after choosing non-default device.
* fix(conference) avoid double prompts in Firefox after choosing non-default device

* addressed linting errors
2021-10-25 14:53:45 -04:00
Andrei Oltean
779d44298b feat: (video-thumbnail) add permanent video participant name to thumbnail (#10242)
* 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>
2021-10-25 16:35:40 +03:00
Avram Tudor
b4ba887d92 Revert "Update Virtual Background Model (#9867)" (#10247)
This reverts commit 9b6b335c60.
2021-10-25 14:48:18 +03:00
robertpin
0182cc0504 feat(reactions) Added metrics for disable reaction sounds
Reordered reactions middleware alphabetically
2021-10-25 13:24:51 +03:00
Mejans
1dbfbb9786 Update Occitan (#10240) 2021-10-25 13:00:44 +03:00
gpatel-fr
d77a3bb61e fix(lang): update French translation (#10239) 2021-10-25 13:00:32 +03:00
Roshan Pulapura
9b6b335c60 Update Virtual Background Model (#9867)
* update virtual background

* remove comments

* remove general model
2021-10-25 12:59:11 +03:00
csett86
2ab0d6b606 fix(lang): update German translation (#10188)
Signed-off-by: Christoph Settgast <csett86@web.de>
2021-10-25 12:55:31 +03:00
robertpin
dec05917d3 fix(translation) Reverted changes to translation parameter
Reverted param name change on translation
2021-10-25 10:49:52 +03:00
robertpin
0715f85796 fix(video-thumbnail) Fixed name for remote participants
Display name on thumbnail for remote participants as well
Updated style
2021-10-22 17:21:32 +03:00
Andrei Oltean
f1e13404b7 feat: (video-thumbnail) add permanent participant name to video thumbnail 2021-10-22 15:58:14 +03:00
Andrei Oltean
dd89034503 feat: (video-thumbnail) add permanent participant name to video thumbnail 2021-10-22 15:58:14 +03:00
Alex Bumbu
92c34c9c3e fix(iOS) fix missing headers 2021-10-22 14:00:20 +03:00
Horatiu Muresan
e273a05dd0 feat(external-api): Add recording download link available event (#10229) 2021-10-22 11:53:22 +03:00
Alex Bumbu
81dfbaeb81 feat(iOS) expose activating/deactivating audio session functionality 2021-10-22 11:30:25 +03:00
Horatiu Muresan
2cfa5f6312 fix(dominant-speaker): Lower hand through xmpp for dominant speaker (#10220) 2021-10-21 17:52:22 +03:00
Saúl Ibarra Corretgé
162ec5a2b2 chore(deps) sync package-lock.json 2021-10-21 16:31:47 +02:00
robertpin
338ff43c81 feat(participants-pane) Added search in participants list (#9975)
- 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`
2021-10-21 14:58:44 +03:00
Calin Chitu
da5603dd9a feat(polls) added padding to the buttons container 2021-10-21 14:56:54 +03:00
robertpin
92c6324ff3 fix(screenshare) Add timestamp to desktop track
Send screenshare duration to analytics
2021-10-21 12:44:09 +03:00
Horatiu Muresan
4b7a6741fa feat(raised-hand) Change raisedHand to a timestamp instead of boole… (#10167)
- this was needed for sorting the raised hand participants in participants pane in
the order they raised their hand also for participants joining late
2021-10-21 12:40:57 +03:00
Mihaela Dumitru
f435fc4ade feat(external-api): add knocking event and approve/reject command (#10210) 2021-10-21 10:39:13 +03:00
Avram Tudor
b250f21f91 fix(prejoin) fix incorrect alignment of alternative join options (#10218)
remove styles that break the inline dialog's position management
2021-10-21 10:17:24 +03:00
Hristo Terezov
acaadb503f chore(deps) lib-jitsi-meet@latest
* fix(SS): missing.

7275ee1286...42c675249a
2021-10-20 19:50:42 -05:00
Saúl Ibarra Corretgé
6e55351e68 chore(deps) uppdate xmldom
The previous package has become unmaintained and it has a new home now.
2021-10-21 02:45:33 +02:00
Jaya Allamsetty
4f58b5fab9 chore(deps) lib-jitsi-meet@latest
* fix(layer-suspension) Do not ignore maxHeight=0 sender constraint. This fixes https://github.com/jitsi/lib-jitsi-meet/issues/1759.

012c38769d...7275ee1286
2021-10-20 16:56:41 -04:00
Saúl Ibarra Corretgé
3f7c6a3801 chore(rn) update CocoaPods 2021-10-20 21:52:19 +02:00
Calinteodor
9df59b4a6f feat(conference) added React Navigation
Introduce navigation for all in-conference screens.
2021-10-20 21:29:21 +02:00
Дамян Минков
a5129ef291 fix: Fixes kick when allowners is enabled.
Broken after ab18fa7 which disallows the kick as the affiliation attribute is missing in kick iq that is sent.
2021-10-20 08:10:40 -07:00
Дамян Минков
bc6e49754c feat: Adds a prosody module limiting the join rate in a room. 2021-10-19 16:52:32 -07:00
Дамян Минков
ab18fa731b Adds new option to allowners module (#10207)
* feat: Adds option to disable owner revoke in allowners module.

* squash: Fixes few lua check warnings.
2021-10-19 16:52:16 -07:00
Jaya Allamsetty
becbbdd139 chore(deps) lib-jitsi-meet@latest
* ref(JingleSessionPC) Do not renegotiate on every local source change. Instead rely on the 'negotiationneeded' event fired by the browser for JVB connection. This makes local source changes faster even if the modification queue is backed up.

75d3106544...012c38769d
2021-10-19 12:43:21 -04:00
Werner Fleischer
0a9985f5ca fix(video-menu): match size of local and remote video menu icons 2021-10-19 11:35:37 +02:00
Vlad Piersec
fbef0e2a59 docs: Document 'virtualBackgrounds' on dynamic branding 2021-10-19 10:21:34 +03:00
Vlad Piersec
1ad8f77179 feat(dialogs): Redesign Video Quality dialog & change dialog background color 2021-10-19 10:05:59 +03:00
Vlad Piersec
bad8911fe8 feat(Labels): Redo video quality label
Video quality label now becomes "performance settings".
All CSS for labels is moved to JS.
Overflow menu button is also changed to "performance settings".
2021-10-19 10:05:23 +03:00
Vlad Piersec
1feb0fa129 fix(polls): Fix scroll not working on mobile web polls pane
* Moved TouchmoveHack's css to component
2021-10-19 10:01:48 +03:00
Werner Fleischer
a0aff63dde fix(webpack): ignore optional canvas dependency in resemblejs
Skipping node-canvas dependency in resemblejs as it [fails in certain environments](https://github.com/rsmbl/Resemble.js#nodejs).
The reference states

> If you are using Resemble.js for in-browser analysis only, you can skip the node-canvas dependency.
2021-10-18 17:08:41 +02:00
Avram Tudor
f24e0f3622 fix(virtual-backgrounds) cache wasm and model (#10190)
Prevents downloading wasm module and module each time background is changed
2021-10-18 15:19:21 +03:00
Vlad Piersec
c37678f3bb fix(polls): Keep the original height for options when moving it up and down 2021-10-18 11:13:28 +03:00
Vlad Piersec
70af0d6b78 fix(polls): Fix 'Skip' button functionality 2021-10-18 11:13:08 +03:00
Rafael
09efaa0d0d fix(lang) updated pr-BR translation 2021-10-18 09:19:37 +02:00
Vlad Piersec
2855642fc3 fix(polls): Update ux according to design 2021-10-18 10:06:43 +03:00
Vlad Piersec
ebb0a206f1 feat(polls): Add analytics for polls 2021-10-18 09:30:44 +03:00
Дамян Минков
04194ae8a1 fix: Fixes correct ljm version. 2021-10-15 13:09:19 -07:00
Дамян Минков
ea26a48678 feat: Hides prejoin screen on conference in progress event. (#10175)
* 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.
2021-10-15 11:53:50 -07:00
hmuresan
359c11bfb9 feat(rtc-stats) Whitelist rtcstatsEnabled 2021-10-15 20:00:50 +03:00
George Politis
16402d8482 Include the callstats username in the rtcstats display name. (#10173)
We want to be able to correlate between rtcstats and callstats, so we're
appending the callstats user name (if it exists) to the display name.
2021-10-15 16:55:23 +01:00
Jaya Allamsetty
2b62cc8a74 chore(deps) lib-jitsi-meet@latest
* ref(TPC) Configure encodings in one go. (#1739)
* feat(CodecSelection) Disable VP9 on Safari. (#1752)

a5cc2321b8...d27a510f84
2021-10-15 11:11:00 -04:00
Vlad Piersec
bb8bc2fe32 Add 1000 char limit to questions & answers 2021-10-15 14:10:32 +03:00
hmuresan
97ea155905 fix(prejoin) Hide prejoin screen on init join conference 2021-10-14 17:44:47 -05:00
Saúl Ibarra Corretgé
e0bde6d491 fix(ios) sync Podfile.lock 2021-10-14 11:27:22 +02:00
Zoltán Ulrich
9506f3ac3d fix(ios) Fixes RCTBridge not being released when JitsiMeet is trying to destroy its bridge on some OS versions 2021-10-14 10:51:14 +02:00
Saúl Ibarra Corretgé
accdfe4625 chore(deps) update package-lock after a fresh module install 2021-10-13 18:08:03 +02:00
Saúl Ibarra Corretgé
0b984ce5f9 feat(notifications) Changed notifications stack to be full height
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
2021-10-13 16:37:34 +02:00
Saúl Ibarra Corretgé
b4f1ab991d chore(rn,versions) bump app and sdk versions 2021-10-13 16:13:42 +02:00
Saúl Ibarra Corretgé
917545a297 chore(deps) run npm audit fix
Also enable using legacy peer dependencies until we update RN.
2021-10-13 14:41:26 +02:00
José Luís Andrade
8bcc94fdcc fix(lang) update Portuguese translation 2021-10-13 13:48:16 +02:00
Saúl Ibarra Corretgé
749f93ce1a chore(doc) delete old sample config files
The Debian package's config files are the canonical example.
2021-10-12 21:55:29 +02:00
Selyan Slimane Amiri
a6ce4fe368 fix(lang) update Kabyle translation
* Update languages-kab.json

Add missed translation

* Update main-kab.json

Continue translation in kabyle

* Update main-kab.json

Finish the Kabyle translation

* Update languages-kab.json
2021-10-11 20:32:51 +02:00
Saúl Ibarra Corretgé
c84e2e6ad8 feat(build) update build toolchain to Node 14 / npm 7 (#10145)
* feat(build) update build toolchain to Node 14 / npm 7

* squash: Updates ljm.

Co-authored-by: Дамян Минков <damencho@jitsi.org>
2021-10-11 09:15:42 -07:00
hmuresan
cdf00b5696 feat(raise-hand): Change raise hand indicator background color 2021-10-11 16:05:02 +03:00
hmuresan
4a322d2e60 feat(avatar-background): Change default colors for avatar backgrounds 2021-10-11 15:26:57 +03:00
Vlad Piersec
95e96b605d fix(rn, polls): Fix vote percentage alignment 2021-10-11 13:03:08 +03:00
Vlad Piersec
7f95bc23fe fix(rn, polls): Display 'Chat and Polls' as heading when polls enabled 2021-10-11 13:02:40 +03:00
Jesús Verduzco
927505ebf8 fix(lang) updated Spanish translation 2021-10-11 11:13:41 +02:00
Izak Glasenčnik
f17af0ce2a fix(lang) update Slovenian translations 2021-10-11 10:57:54 +02:00
Vlad Piersec
7f4fb7f447 fix(polls): Disable submit button if no answers have been chosen 2021-10-11 11:53:23 +03:00
Vlad Piersec
16c3a35da9 fix(polls): Don't let poll question and option text overflow 2021-10-11 10:27:39 +03:00
bgrozev
5344e2bfae feat: Whitelist all of videoQualitty, not just "persist". (#10133)
* doc: Clarify documentation.

* feat: Whitelist all of videoQualitty, not just "persist".
2021-10-08 15:52:12 -05:00
Hristo Terezov
f83559568d fix(FIlmstrip): disable default overscrolling
With the default overscrolling policy when a user overscroll the
filmstrip the scroll focus is moved to the main window and it looks like
the scroll is not working.
2021-10-08 09:13:56 -05:00
Vlad Piersec
d1a69689bc chore(webpack): Don't show warnings on dev server overlay 2021-10-08 11:06:55 +03:00
Saúl Ibarra Corretgé
873ccf24ec chore(deps) lib-jitsi-meet@latest
Bring in Webpack 5 support.
2021-10-07 20:22:44 +02:00
Saúl Ibarra Corretgé
a313f5cde2 feat(build) migrate to Webpack 5 2021-10-07 20:22:44 +02:00
Saúl Ibarra Corretgé
720d19ba95 chore(deps) update js-utils
In preparation for Webpack 5.
2021-10-07 20:22:44 +02:00
Saúl Ibarra Corretgé
0af14b0f05 chore(deps) update eslint-config-jitsi
Flow rules are now separate from the default ones.
2021-10-07 20:22:44 +02:00
Дамян Минков
b55526702e chore(deps) lib-jitsi-meet@latest
* feat(identity): add region identity parsing
* fix(IceFailedHandling) force client reload when ICE fails locally.
* fix(iOS15) fix not being able to unmute if "everyone starts muted" is set
* fix: logger calling wrong function typo
* feat: generates source names (#1725)

b5288c2989...febd9087b9
2021-10-07 13:07:25 -04:00
Jaya Allamsetty
15aaf832b4 fix(notification) Edit reason for forced reload of the client.
It is triggered by both local ICE failure and because of call getting migrated to a different bridge.
2021-10-07 11:27:53 -04:00
hmuresan
7102ad1186 feat(external-api) Expose deployment info through API
- Set region along shard from xmpp
2021-10-07 09:41:42 -05:00
tmoldovan8x8
3b33ba3f5d feat(android) adds initializer for SoLoader.init 2021-10-07 11:56:19 +03:00
Vlad Piersec
ddcb85a1d8 fix(jaas): Get dynamic branding url from config file
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.
2021-10-07 11:52:28 +03:00
Hristo Terezov
1bc5ef3516 fix(toolbox): prevents filmstrip scrolling.
The toolbox container with is 100% and when displayed prevents filmstrip
scrolling for the whole width of the screen.
2021-10-07 09:33:08 +02:00
qwertiko GmbH
1d44741d5e fix(config) remove deprecated useRoomAsSharedDocumentName parameter
Fixes: #10103

Co-authored-by: Denis Meiswinkel <meiswinkel@qwertiko.de>
2021-10-06 19:35:20 +02:00
robertpin
483bc45d59 fix(participants-pane) Place Dominant Speaker first in participants list
Move function participants list ordering function in participant-pane, since that's the only feature that uses it.
2021-10-06 15:11:40 +02:00
Anton Solomonov
597c99f884 fix(doc) fix typo in README 2021-10-06 15:06:55 +02:00
Saúl Ibarra Corretgé
f63b161955 fix(ios) disable QuickType bar on iOS15 when not using autocorrect
See:
https://reactnative.dev/blog/2021/09/01/preparing-your-app-for-iOS-15-and-android-12#quicktype-bar
2021-10-06 13:28:51 +02:00
robertpin
09835a672b feat(external_api) Exposed AV Moderation to the iFrame API
Renamed event property
2021-10-06 14:21:27 +03:00
Vlad Piersec
e4448e0a68 fix(Prejoin): Make prejoin avatar match the other avatars 2021-10-06 14:18:28 +03:00
hmuresan
9f7a4f86d8 feat(context-menu) Show participants context menu overlaid in a portal 2021-10-06 14:06:59 +03:00
Vlad Piersec
9ef71e3b15 (fix): Change wrong function description 2021-10-06 09:58:49 +03:00
Vlad Piersec
f879ecfc70 feat(large-video): Switch to tile view on large video double tap 2021-10-06 09:58:49 +03:00
dependabot[bot]
fed018eb08 chore(deps): bump url-parse from 1.5.1 to 1.5.3
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 08:08:25 +02:00
Jaya Allamsetty
2572ba9a65 fix(tracks) Always add audio track on Safari.
This fixes an issue where Safari users cannot hear remote audio if they join audio/video muted. The browser throws the following error when the application tries to execute play on the audio element: 'NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.' This started happening in Safari 15.
2021-10-05 12:36:53 -05:00
Vlad Piersec
fc6e8fd4b9 feat(config): Add config option for making display name read only 2021-10-05 14:36:34 +03:00
robertpin
8fd7b10f06 fix(av-moderation) Update function that calculates quick action button 2021-10-05 06:06:09 -05:00
robertpin
001ae54a7c feat(screenshot-capture) Updated screensharing screenshot capture
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
2021-10-05 10:25:27 +02:00
Suleyman BİLGİN
7c86ece9fa lang: added and translated all missing keys on turkish translation (#10050) 2021-10-04 14:12:38 -05:00
chipechop
8aa475d159 lang: Update main-it.json (#10088)
* Update main-it.json

* Update main-it.json

added a missing comma...

* Update main-it.json

added all the missing commas...

* Update main-it.json

will this be the last comma I left behind? Who knows...
2021-10-04 14:12:17 -05:00
alexbratu92
0c187f180f call module that checks the jwt against the access service 2021-10-04 14:11:54 -05:00
robertpin
c6d3667211 fix(av-moderation) Fix Ask to Unmute
Make ask to unmute work even if the participant is already whitelisted for audio
2021-10-04 09:01:27 -05:00
robertpin
eba58ad56b fix(av-moderation) Show Mute button when participant is unmuted (#10090)
Show Mute button instead of always showing Ask to Unmute

Added aria-label
2021-10-04 14:05:53 +03:00
robertpin
3aec980378 fix(reactions) Remove vpaas check for reactions webhook (#10089)
Reactions will be sent if webhookProxyUrl is set in config.js
2021-10-04 12:01:14 +03:00
robertpin
31ce7e010d fix(config, reactions) Added config option to disable reaction sounds (#10046) 2021-10-04 11:37:02 +03:00
Дамян Минков
acfc9c6683 chore(deps) lib-jitsi-meet@latest
* fix: Avoids sending empty nick in presence.

afc1c34e75...b5288c2989
2021-10-01 11:07:30 -05:00
Дамян Минков
576fd0d343 fix: Skips setting language for transcriptions if not enabled. 2021-10-01 11:07:09 -05:00
robertpin
1beed8c490 fix(av-moderation) Check for moderation support
Show av moderation toggles on mute all / stop everyone's video dialogs only if moderation is supported
Show Ask to Unmute only for moderators
2021-10-01 09:17:02 -05:00
Дамян Минков
33503122c4 fix: Fixes displaying country names which has multiple names listed.
Some countries have multiple names listed in i18n-iso-countries, like US -> ['United States of America', 'USA'].
2021-10-01 09:16:53 -05:00
Saúl Ibarra Corretgé
4369579d2b chore(deps): update react-native-webrtc@1.92.2
Fixes a crash on Android
2021-10-01 16:05:10 +02:00
Saúl Ibarra Corretgé
51626506ff fix(rn,conference) fix unmute when "everyone starts muted" is set
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
2021-10-01 15:45:51 +02:00
Saúl Ibarra Corretgé
eb494f6b8c chore(deps) lib-jitsi-meet@latest
* fix(JitsiConference) make sure isE2EEEnabled() returns a boolean
* fix(loggging) fix exceptions on mobile

7a56f7b341...afc1c34e75
2021-10-01 15:45:20 +02:00
tmoldovan8x8
6124e72f21 feat(android) extract notification channel name 2021-10-01 10:17:23 +03:00
Дамян Минков
6a223763a3 chore(deps) lib-jitsi-meet@latest
* fix(xmpp): disable RTX for Firefox < 93, because it results in random SSRC order
* fix(Jingle): stop reverting the SSRCs from Firefox

c15dda1537...7a56f7b341
2021-09-30 18:24:35 -05:00
Дамян Минков
432c4ada70 fix: Fixes #9869 Lobby and wrong password case. 2021-09-30 18:04:46 -05:00
Дамян Минков
31a7fbfa82 feat: Simplify AV moderation participant approve/remove message and fix array usage. (#10062)
* feat: Simplify av moderation participant approve/remove message.

There is no point of having messages like:
{
  "room": "myroom@conference.mydomain.com",
  "type": "av_moderation",
  "mediaType": "audio",
  "removed": true,
  "approved": true
}

* fix: Fixes array in json.

fix: Fixes array in json.
2021-09-30 13:35:55 -05:00
Hristo Terezov
9e5a9599ca chore(deps) lib-jitsi-meet@latest
* fix(browser-support) fix detecting iOS browsers correctly
* fix(JitsiConference):2 instances for the same room
* ref: sendMuteStatus is not async

ae70962bfa...c15dda1537
2021-09-30 10:58:23 -05:00
Hristo Terezov
2a725d2165 fix(prejoin): Prevent double joining conference. 2021-09-30 10:28:16 -05:00
Hristo Terezov
0214138863 fix(Prejoin): Join click before conference.init() 2021-09-30 10:28:16 -05:00
tmoldovan8x8
fc6c389902 feat(android) target sdk 31 2021-09-30 14:24:01 +03:00
Saúl Ibarra Corretgé
12139655c6 feat(external-api) add data-channel-open event
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.
2021-09-30 12:31:41 +02:00
Saúl Ibarra Corretgé
dd184763ff fix(ios) fix crash on WebSocket errors
Bacckport
748aa13747

Fixes:

~~~
Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x129708 __exceptionPreprocess
1  libobjc.A.dylib                0x287a8 objc_exception_throw
2  CoreFoundation                 0x19b9c8 -[__NSCFString characterAtIndex:].cold.1
3  CoreFoundation                 0x1a7a20 -[__NSPlaceholderDictionary initWithCapacity:].cold.1
4  CoreFoundation                 0x164c0 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]
5  CoreFoundation                 0x8de0 +[NSDictionary dictionaryWithObjects:forKeys:count:]
6  JitsiMeetSDK                   0x5704b4 -[RCTWebSocketModule webSocket:didFailWithError:] + 168 (RCTWebSocketModule.m:168)
7  JitsiMeetSDK                   0x54a5ec __33-[RCTSRWebSocket _failWithError:]_block_invoke_2 + 622 (RCTSRWebSocket.m:622)
8  libdispatch.dylib              0x2a84 _dispatch_call_block_and_release
9  libdispatch.dylib              0x481c _dispatch_client_callout
10 libdispatch.dylib              0xc004 _dispatch_lane_serial_drain
11 libdispatch.dylib              0xcc00 _dispatch_lane_invoke
12 libdispatch.dylib              0x174bc _dispatch_workloop_worker_thread
13 libsystem_pthread.dylib        0x37a4 _pthread_wqthread
14 libsystem_pthread.dylib        0xa74c start_wqthread
~~~
2021-09-30 12:09:24 +02:00
Vlad Piersec
cfde918a30 fix(chore): Don't show react "unique key" warning 2021-09-30 10:55:26 +03:00
Jaya Allamsetty
d66f23ca4a fix(logging) Remove logs that are very chatty.
The receiver video constraints that are actually sent to the bridge are logged in LJM and need not be logged in the application.
2021-09-29 16:54:04 -04:00
Jaya Allamsetty
28904e18f8 chore(deps) lib-jitsi-meet@latest
* fix(Jingle) Log the extracted info from Jingle IQ.
* ref(Jingle) Alpha sort and prefix the local functions with '_'
* ref(Jingle) Log formatted source information. Instead of logging the full IQs for Jingle messages like session-initiate, source-add and source-remove which can be very long, log just the formatted source information.
* ref(RTC) rename iceConfig to pcConfig. It makes more sense to call it pcConfig since it is the RTCConfiguration object passed to the WebRTC peerconnection.
* fix(logging) Log only the imp events on remote tracks. Log only the important events that we care about on the HTMLMediaElement that the remote tracks are attached to.

0646bc3403...ae70962bfa
2021-09-29 13:12:07 -04:00
Saúl Ibarra Corretgé
4bfbc72613 feat(ios) drop support for iOS 11 2021-09-29 13:50:00 +02:00
Saúl Ibarra Corretgé
b1ecd03924 fix(lang) sample run of the translations updating script 2021-09-29 13:08:59 +02:00
Saúl Ibarra Corretgé
7546db53e4 feat(lang) add helper script for manual translations
It updates the main language file for a given locale from the canonical one and
sets the empty string on the missing keys. No longer used keys are discarded.
2021-09-29 13:08:59 +02:00
Andrei Gavrilescu
7b0dccdad1 feat(rtcstats): remove SDP transmission #10054 2021-09-29 13:20:01 +03:00
dimitardelchev93
7936117fcb fix: Fix speaker stats search dependency and remove duplicate logic #9751 (#10045)
* Fix speaker stats search dependency and remove duplicate logic #9751

* Fix speaker stats component render on update #9751
2021-09-28 22:17:49 -05:00
robertpin
ace53c880b feat(av-moderation) Ask to Unmute and remove from Whitelist (#10043)
* 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>
2021-09-28 11:11:13 -05:00
Tudor-Ovidiu Avram
e3ac52908a fix(invite) fix video rooms not being displayed in invite search 2021-09-28 09:13:55 -05:00
titus.moldovan
989303f5d2 fix(android) disables uncompressed native libs usage 2021-09-28 14:51:24 +02:00
Avram Tudor
6b8db2ad9e fix(config) fix prejoin throwing a TypeError due to late config initialization (#10041) 2021-09-28 14:52:31 +03:00
Mejans
b42ebf6901 fix(lang) update Occitan translation 2021-09-28 13:27:48 +02:00
titus.moldovan
e38a9c3525 fix(android) removes unnecessary parcel processing 2021-09-28 12:39:49 +02:00
robertpin
700e809439 fix(av-moderation) Improve advanced moderation (#10004)
* 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
2021-09-28 11:46:20 +03:00
Alexey Matveev
a91b2c91dd lang: minor fix in russian localization (#10027)
* - minor fix in russian localization

* - minor localization fix

Co-authored-by: Alexey Matveev <malex@1forma.ru>
2021-09-27 22:12:31 -05:00
Ali Alhaidary
344e9c8a03 lang: Update main-ar.json (#10034)
Adding missing keys and translate them
2021-09-27 22:10:22 -05:00
Дамян Минков
ba6247daaf fix: Fixes errors in prosody about string formatting and nil values. (#10037)
* fix: Fixes errors in prosody about string formatting and nil values.

error   Traceback[c2s]: /usr/lib/prosody/util/format.lua:59: invalid option '%b' to 'format'
stack traceback:

mod_polls.lua:25: attempt to index local 'data' (a nil value)
stack traceback:

* squash: Fix more formatting concatenation.
2021-09-27 14:48:13 -05:00
Vlad Piersec
f9cc813e91 feat(dynamic-branding): Add branding option for virtual backgrounds 2021-09-27 12:59:17 +03:00
robertpin
57083c174f fix(av-moderation) Stop screensharing and video on moderation start
When video moderation starts, stop screensharing and ignore if video was on when sharing started
2021-09-27 10:17:12 +03:00
Damien Fetis
823cab3851 fix(lang) update french translation 2021-09-25 12:03:54 +02:00
dimitardelchev93
c3348bf38e fix: Speaker stats search fix #9751 (#10019)
* Optimization of speaker stats display names #9751

* Fix speaker stats search for empty string #9751
2021-09-24 11:39:24 -05:00
hmuresan
0d42f14dfc chore(interface-config) Group deprecated configs 2021-09-24 17:08:24 +03:00
hmuresan
cd4c940107 fix(toolbar) Fix toolbar always visible; refactors
- deprecate `INITIAL_TOOLBAR_TIMEOUT`, `TOOLBAR_ALWAYS_VISIBLE`, `TOOLBAR_TIMEOUT`
2021-09-24 17:08:24 +03:00
robertpin
e9f3625ffa fix(av-moderation) Only stop screensharing on Stop everyone's video 2021-09-24 08:49:58 -05:00
Vlad Piersec
2f8cfb3ae2 fix(subject): Keep subject centered when chat panel is open 2021-09-24 15:46:33 +03:00
Vlad Piersec
d36bd06b7b fix(chat): Hide scroll bar on chat input
Based on this suggestion https://github.com/jitsi/jitsi-meet/issues/9958
2021-09-24 14:00:17 +03:00
Saúl Ibarra Corretgé
35e363577c fix(ios) create audio track early
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.
2021-09-24 12:52:54 +02:00
Mejans
68de35357e fix(lang) update occitan translation 2021-09-23 22:14:32 +02:00
titus.moldovan
554e2eeb11 fix(rn) add default value when retrieving e2ee redux state 2021-09-23 17:03:38 +02:00
Saúl Ibarra Corretgé
19e7f07b32 fix(ios) fix black screen when using Bluetooth in iOS 15
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.
2021-09-23 14:15:41 +02:00
Saúl Ibarra Corretgé
b1ebe340cf fix(toolbox) don't mix web and native actions on the same file 2021-09-23 12:51:24 +02:00
Saúl Ibarra Corretgé
a6359e5d4c fix(lobby) don't mix web and native actions on the same file
USe actions.any for common actions.
2021-09-23 12:25:30 +02:00
Saúl Ibarra Corretgé
4473ce8fb6 fix(participants-pane) bring back lobby reject button
It got accidentally removed in:
1dc8bfa631 (diff-ef66b8ab7c899b16d6c1102b3c812aa45509f95e11267cbfdbd0674143e94575)
2021-09-23 10:35:09 +02:00
robertpin
41c38427c1 Fix stop everyone's video
Stop everyone's video now also stops screensharing for the moderator that did the action, not just video
2021-09-23 10:40:01 +03:00
robertpin
92f1985219 fix(av-moderation) - Mute/ stop video except no longer change moderation status
Mute everyone else no longer disables moderation
2021-09-23 10:08:04 +03:00
Saúl Ibarra Corretgé
99e56e229d chore(rn,versions) bump sdk version 2021-09-22 16:13:57 +02:00
robertpin
c3dae1f6e9 feat(rn,av-moderation) updated advanced moderation on Native
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>
2021-09-22 16:05:42 +02:00
robertpin
703e43ecd7 fix(av-moderation) Display Allow Video instead of Ask to Unmute (#9991)
When the user is allowed audio but not video display Allow Video button instead of Ask to Unmute
2021-09-22 16:26:55 +03:00
Vlad Piersec
0bf52b613b feat(api): Expose event used for sending browser support 2021-09-22 09:20:56 +03:00
robertpin
584ec7c82e fix(reactions) Reactions improvements (#9964)
* 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
2021-09-21 12:30:24 -05:00
robertpin
5f5cac0e01 fix(config,notifications) fix rendering moderator notifications (#9986)
Move DISABLE_FOCUS_INDICATOR from interface_config.js to config.js (disableModeratorIndicator).
2021-09-21 17:38:06 +02:00
Vlad Piersec
0a9b9bb41d fix(responsive-ui): Shrink self view when in portrait mode on mobile web 2021-09-21 16:47:47 +03:00
tmoldovan8x8
5ad98d193a feat(e2ee) disable e2ee when large number of participants 2021-09-21 14:00:23 +03:00
Дамян Минков
4cd5be9d8b chore(deps) lib-jitsi-meet@latest
* fix(JitsiConference) Check for room before calling isFocus method on the room object.
* fix(Jingle) Reverse the order of ssrcs signaled for Firefox. This fixes an issue where the bridge doesn't forward the HD stream from Firefox to other users in the call. The order of the ssrcs produced by the browser is from Highest resolution to lowest whereas the bridge assumes it to be from lowest to highest as is the case in Chrome and Safari.
* fix(codec-selection): Impose VP9 bitrates only when VP9 is the negotiated codec. If Jicofo doesn't offer VP9 but the client expresses a preference for VP9, VP9 bitrates were being imposed before.

609e3d5a1a...3b8baa9d3b
2021-09-20 17:35:08 -05:00
Horatiu Muresan
5514be630d feat(conference-info-header) Make conference info header configurable. (#9638) 2021-09-20 21:12:56 +03:00
hmuresan
6a6146727f fix(notifications) Fix recording start notif not disappearing 2021-09-20 19:08:12 +03:00
Avram Tudor
52e9e90b3a fix(jaas) do not show overriden unsupported browser page for jaas users (#9962) 2021-09-20 11:38:46 +03:00
Alexey Matveev
7ff3b669ee fix(lang) update Russian translation
Co-authored-by: Alexey Matveev <malex@1forma.ru>
2021-09-18 11:15:13 +02:00
Hristo Terezov
e791c4f70c fix(recorder): tile view
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.
2021-09-17 18:20:00 -05:00
Дамян Минков
fc75fd9644 chore(deps) lib-jitsi-meet@latest
* fix: Reads shard name and from disco-info if available.
* chore(deps): bump sdp-interop to get another fix for ICE restart
* update sdp-interop to include Unified ICE restart fix

fbf85bdcec...609e3d5a1a
2021-09-17 15:51:23 -05:00
Дамян Минков
62e5d6c139 fix: Fixes undefined error causing to stop reloads.
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.
2021-09-17 15:04:32 -05:00
Saúl Ibarra Corretgé
06d8956bdb android: fix initializing soloader from Activity context
It has to be an application context.
2021-09-17 13:43:45 +02:00
Avram Tudor
adbb5f8ead fix(prejoin) implement ux improvements for mobile (#9939) 2021-09-17 13:12:34 +03:00
Hristo Terezov
32ed2bccec fix(Filmstrip) fix not being able to scroll 2021-09-17 11:22:20 +02:00
Jaya Allamsetty
58d98ad7d3 fix(device-selection) Do not create preview when mic selection is disabled.
This fixes an issue on mobile Safari when audio is lost after the user opens the device selection menu.
2021-09-16 15:41:44 -04:00
Vlad Piersec
e278703c58 fix(context-menus) Don't show volume slider on iOS web 2021-09-16 14:56:55 +03:00
Jaya Allamsetty
042a2cb447 fix(filmstrip) Fix filmstrip on RN when thumbnail reordering is disabled. 2021-09-15 11:29:46 -05:00
Saúl Ibarra Corretgé
a8f281a43e feat((rn,config) add a/b test flag to enable XMPP WebSockets on mobile 2021-09-15 15:26:25 +02:00
paweldomas
663752be2c feat(rn,connection) enable XMPP WebSocket on mobile
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-09-15 15:26:25 +02:00
Vlad Piersec
380ef3da0b fix(feedback): Scroll to the top when opening feedback dialog 2021-09-15 15:21:56 +03:00
Saúl Ibarra Corretgé
07da5940a5 fix(rn,conference) show underlay when tapping navbar buttons 2021-09-15 13:35:33 +02:00
robertpin
ab366b9d94 fix(av-moderation) Advanced moderation improvements (#9935)
* 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
2021-09-15 11:28:44 +03:00
Pawel Domas
bba1917820 fix(conference.js): add tracks to the conference 2021-09-14 18:24:45 -04:00
Saúl Ibarra Corretgé
0833f8c867 feat(rn,conference) show invite button on the top navbar 2021-09-14 15:03:24 +02:00
Saúl Ibarra Corretgé
3bf9c41f08 fix(rn,conference) count fake participants when checking if lonely meeting
A shared video participant counts, so the lonely meeting invite options can
disappear.
2021-09-14 12:50:22 +02:00
Saúl Ibarra Corretgé
0b54e005d7 fix(rn,shared-video) validate URLs to avoid crashes on the native side 2021-09-14 12:50:22 +02:00
Saúl Ibarra Corretgé
b92c1f52d5 fix(shared-video) make placeholder translatable
Also fix capitalization.
2021-09-14 12:50:22 +02:00
tmoldovan8x8
8eaf99586e fix(rn) disable pip while authorising dropbox 2021-09-14 12:37:08 +03:00
tmoldovan8x8
c7ad5b5b26 feat(android) expose channels ids 2021-09-14 12:35:25 +03:00
robertpin
61c3613de0 Show reactions buttons at all times
Don't send reactions via the channel if there's only one participant in the meeting
2021-09-14 12:26:50 +03:00
Horatiu Muresan
b801e0115d fix(context-menus) Fix participant context menus/toolbar overflow menu
- 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
2021-09-14 10:43:52 +03:00
Horatiu Muresan
1add438a1f feat(toolbar-buttons): Add event for notify overwritten toolbar buttons 2021-09-14 10:07:20 +03:00
Hristo Terezov
aadbe59d00 chore(deps) lib-jitsi-meet@latest
* fix(replaceTrack):  Don't wrap Error in Error.

64cdf69ffb...fbf85bdcec
2021-09-13 17:50:56 -05:00
Дамян Минков
350f0fbb27 feat: Whitelists enableUnifiedOnChrome.
Whitelists it, so we can run tests by setting it to false.
2021-09-13 15:23:53 -05:00
Paweł Domas
1db52354fb Use redux for local tracks instead of conference.js (#9920)
* do not use this.local video

* move tracks initialized flag around

* do not use this.localAudio

* untangle use audio/video stream methods

It should be safe to call setVideoMuteStatus and
setAudioMuteStatus regardless of the prejoin page
visibility state.

* add NO-OP to use track methods and fix crash
in _setLocalAudioVideoStreams on not a promise

* use allSettled
2021-09-13 12:33:04 -05:00
Jaya Allamsetty
6711801c3b chore(deps) lib-jitsi-meet@latest
* ref(JitsiConference): don't crash on wrong oldTrack (#1709)

ad1f06d768...64cdf69ffb
2021-09-13 11:49:53 -04:00
csett86
e2443f8d01 lang: update German translation (#9921)
Signed-off-by: Christoph Settgast <csett86@web.de>
2021-09-11 10:58:15 -05:00
dimitardelchev93
11a86a9383 fix: Add different text when disablePolls is enabled/disabled (#9900)
* Add different text when disablePolls is enabled/disabled #9890

* Add different text when disablePolls is enabled/disabled v2 #9890
2021-09-10 13:57:36 -05:00
Jaya Allamsetty
40a485ec6c Thumbnail reordering and participant pane enhancements.
* 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.
2021-09-10 13:37:05 -04:00
Horatiu Muresan
535bd81d61 fix(context-menu) Hide toolbars when participant context menu opened (#9842)
- hide toolbars only when in tile view
- fix community issue: https://github.com/jitsi/jitsi-meet/issues/9818
2021-09-10 15:17:57 +03:00
robertpin
1dc8bfa631 feat(av-moderation) Updated Advanced moderation (#9875)
Co-authored-by: Vlad Piersec <vlad.piersec@8x8.com>
2021-09-10 14:05:16 +03:00
Saúl Ibarra Corretgé
f2e2d52cfd fix(rn,shared-video,invite-dialog) fix placehoolder text color to be visible 2021-09-10 12:45:04 +02:00
Vlad Piersec
0db2dd0546 fix(prejoin): Change avatar color to match in-meeting one 2021-09-10 10:48:22 +03:00
Izak Glasencnik
6673d12cec feat(external_api): Command to set participant volume 2021-09-09 18:34:34 -05:00
dimitardelchev93
5e152b4a42 feat: Additional setting to order participants in speaker stats (#9751)
* Additional setting to order participants in speaker stats #9742

* Setting to order speaker stats optimisations #9742

* Lint fixes #9742

* Replace APP references #9742

* Lint fixes #9742

* Setting to order speaker stats optimisations 2 #9742

* Lint fixes #9742

* Remove unnecessary param #9742

* Add more speaker-stats reducer _updateStats docs  #9742
2021-09-09 17:46:41 -05:00
dimitardelchev93
db473dfef5 feat: Add configuration to disable chat emoticons #9889 (#9899) 2021-09-09 17:46:28 -05:00
dimitardelchev93
0bad0d9ecf feat: Add configuration to disable removing raised hand on dominant speaker (#9641)
* Add configuration to disable removing raised hand on dominant speaker change

* Fix lint problem

* Avoid dispatching unnecessary action

* Fix lint problem
2021-09-09 16:53:25 -05:00
Jaya Allamsetty
f1bf8e5f9a fix(settings) Disable mic/camera selection on mobile safari.
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.
2021-09-09 16:28:24 -04:00
Jaya Allamsetty
131d2476ae chore(deps) lib-jitsi-meet@latest
* fix(RTCUtils) Return false for device change checks on mobile Safari.

735943b32d...ad1f06d768
2021-09-09 16:28:01 -04:00
Andrei Gavrilescu
34c55b4eb2 additional bcp47 languages 2021-09-09 14:44:55 -05:00
José Luís Andrade
d83d822818 lang: Complete translation to Portuguese (#9871)
* Complete translation to Portuguese

* "reactions" and "connectedThreePlusMembers" fix
2021-09-09 14:36:21 -05:00
ashiqhassan95
5857620d81 fix(notifications): Added user join notification keys 2021-09-09 13:56:18 -05:00
scott boone
b7cb0a44f2 feat: new prosody module to report census of all rooms (#9901)
* new prosody module to report census of all rooms

* changed to use util to check if it's a test room

* improved docs

* more doc improvements

* updated to use muc_domain_prefix

* facepalm
2021-09-09 13:24:04 -05:00
Saúl Ibarra Corretgé
3bf1a1774f fix(rn,polyfills) fix Performance polyfill
We need to re-override now() to avoid a recursion error. Also I missed the
default export.
2021-09-09 16:41:44 +02:00
Saúl Ibarra Corretgé
d21eb59f24 feat(doc) revamp README 2021-09-09 16:37:32 +02:00
Horatiu Muresan
9a16733950 feat(config) Add config for disabled sound id's
- unify naming for sound id values
2021-09-09 17:18:26 +03:00
Vlad Piersec
d96246dea8 fix(config): Add separate entries for the e2ee labels 2021-09-09 16:16:08 +03:00
abora8x8
a5fc75ed35 feat: Dynamically limit the number of participants in a room (#9880)
* Dynamically limit the number of participants in a room

* Remove log
2021-09-09 08:15:14 -05:00
vp8x8
07d023968a feat(responsive-ui): Keep aspect ratio for filmstrip self view on mobile web (#9848)
* 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
2021-09-09 16:14:09 +03:00
Tudor D. Pop
d95d52843f feat(config) add connection indicators flags 2021-09-09 14:50:22 +02:00
Saúl Ibarra Corretgé
49be96799a feat(rn) add polyfill for the performance API
Implements: https://developer.mozilla.org/en-US/docs/Web/API/Performance
Ref: https://github.com/oblador/react-native-performance
2021-09-09 10:07:52 +02:00
Jaya Allamsetty
2008c90359 feat: Turn on enableLayerSuspension option by default. (#9894)
* fix(config) Add more info about enableLayerSuspension option.

* chore(deps) lib-jitsi-meet@latest

* Update config.js

Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>

Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>
2021-09-08 09:24:37 -05:00
hmuresan
0f01772625 fix(prejoin) Fix buttons positioning for 3rd party 2021-09-08 16:44:04 +03:00
Vlad Piersec
f5dee99131 feat(config): Add config option for e2ee label 2021-09-08 12:33:22 +03:00
Jaya Allamsetty
909c397664 chore(deps) lib-jitsi-meet@latest
* fix(LocalSdpMunger): do not fake video sdp when screen sharing
* fix(JitsiConference) avoid extra processing if the room was left
* fix(moderator) remove unneeded log

b0d27fa8da...28a5355356
2021-09-07 18:16:23 -04:00
Andrei Gavrilescu
f51e65d129 feat(rtcstats): send dominant speaker stats (#9883)
* send dominant speaker stats

* fix lint
2021-09-07 16:20:50 +03:00
Vlad Piersec
56c0edc896 fix(toolbox): Show dominant speaker name only when in conference 2021-09-07 10:22:24 +02:00
Cross
add8265ab9 chore(config) fix spacing
Removed a redundant space under maxBitratesVideo.
2021-09-07 09:40:46 +02:00
tmoldovan8x8
527b96fe00 task(android): updates sdk version 2021-09-06 12:49:09 +03:00
tmoldovan8x8
452b1b7e2e fix(android): renames amplitudereactnative project to use react-native- pattern 2021-09-06 12:29:58 +03:00
hmuresan
a0c3a00e59 chore(config): Whitelist disableRecordAudioNotification config 2021-09-06 11:40:02 +03:00
hmuresan
00b5ce71e0 fix(external-api): Avoid naming event 'error'
- EventEmmitter treats 'error' as a special case and throws error.
2021-09-02 19:37:23 +03:00
Saúl Ibarra Corretgé
9a8b67a0a4 feat(notifications) skip join notifications when meetings grow large 2021-09-02 16:49:04 +02:00
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
phict
5713b381c4 lang: Update main-sv.json (#9862) 2021-09-02 09:45:20 -05:00
Mejans
1e83bdef6c lang: Update i18n Occitan (#9853)
Some update.
Been up to line 253 at the moment
2021-09-02 09:45:01 -05:00
chagai95
531ec79e13 lang: Added and edited translations for vi (#9850)
Co-authored-by: cfriedlander <chagai.friedlander@aarenet.com>
2021-09-02 09:44:36 -05:00
José Luís Andrade
772e7b0121 lang: Update portuguese translation (#9836)
* Update portuguese translation

Translate "dialog”, "virtualBackground”, "info” and "settings" sections

* fix "you" translation

* revert "you" translation to original
2021-09-02 09:44:14 -05:00
Alex Bumbu
5bd329acb9 feat(ios) update dropbox authentication to PKCE flow 2021-09-02 14:17:08 +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
Jaya Allamsetty
e5041202dc chore(deps) lib-jitsi-meet@latest
* fix(browser-support): Add audio track to pc always on mobile Safari. On mobile Safari, if a user joins audio and video muted, the browser doesn't decode the incoming audio. Workaround is to always add the audio track to pc and mute it if needed.
* feat: JSON encoded sources. (#1695)

2820d649ea...b0d27fa8da
2021-08-31 17:03:53 -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
Saúl Ibarra Corretgé
aa06e89807 chore(rn,deps) react-native-webrtc@1.92.1
Fixes several Android crashes.
2021-08-31 12:42:31 +02:00
hmuresan
74026e743c fix(toolbar-buttons) Hide/show invite button based on toolbarButtons 2021-08-31 12:18:10 +03:00
Nathan Beck
eb4fff773b fix(config): add av-moderation notifications to config whitelist (#9774)
* fix(config): add av-moderation notifications to config whitelist

* fix(config): lint fixes
2021-08-30 13:38:19 -05:00
Jaya Allamsetty
5d402b2039 chore(deps) lib-jitsi-meet@latest
* log: Log a task's stack trace when it throws. (#1701)
* deps: update sdp-interop. (#1700)
* fix(replace-track) Add not null check for newTrack (#1698)

53c9c0c9cd...2820d649ea
2021-08-30 14:00:07 -04: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
phict
4716bdd380 Update main-sv.json
Add lobby translation and some linguistic improvments.
2021-08-27 10:03:27 -05:00
Дамян Минков
7c93a130ca fix: Fixes default values in speakerstats and conf duration modules. 2021-08-27 08:42:59 -05:00
Werner Fleischer
3c18117101 fix(prosody): av_moderation_component default val 2021-08-27 07:58:36 -05: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
Дамян Минков
bafe6fa895 chore(deps) lib-jitsi-meet@latest
* fix: Updates shard value in XmppConnection on new value from xmpp. (#1699)
* fix(docs): copy&paste error for setIsReplaced

61c977f70a...53c9c0c9cd
2021-08-26 17:15:54 -05:00
Дамян Минков
1edf8ab9f0 feat: Drops old prosody dependency (0.10...).
Many features work only with 0.11+ prosody versions and there are instructions in the handbook how to install it before installing jitsi-meet.
2021-08-26 17:15:43 -05:00
Saúl Ibarra Corretgé
c03fb61c5f fix(rn,reactions) fix copying sounds to app bundles 2021-08-26 17:32:34 +02:00
Saúl Ibarra Corretgé
7d6365c5e0 fix(android) avoid exception in onHostPause
YOLO.
2021-08-26 16:34:53 +02: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
Michał Orman
b14e571d5c fix(lang) update Polish translations 2021-08-26 14:02:09 +02:00
adam j hartz
70b369a1af feat(VideoContainer) add option to avoid cropping focused video 2021-08-26 11:23:19 +02:00
alittriutari
cf6d6f8a12 fix(lang) update Japanese translations 2021-08-26 09:34:47 +02: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
José Luís Andrade
6537447d7c fix(lang) update Portuguese translation 2021-08-25 14:09:23 +02:00
hmuresan
a892d5fed1 fix(pre-meeting) Hide invite button for JaaS 2021-08-25 11:09:56 +03:00
Saúl Ibarra Corretgé
4acafebe5f chore(deps) lib-jitsi-meet@latest
* feat(e2ee) add support for WebRTC Encoded Transform
* fix(JitsiConference) skip AudioOutputProblemDetector on disableAudioLevels
* feat(xmpp) remove clientNode config option
* Workaround for Chrome ice connection failure detection (#1685)

c23abfa2bc...61c977f70a
2021-08-25 09:53:07 +02: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
Дамян Минков
48efa4ac61 feat: Updates i18n-iso-countries to latest. Fixes #9792. 2021-08-24 09:19:29 -05:00
Christoph Settgast
2f1105e6d2 chore(deps) @matrix-org/olm@latest
Bugfixes since 3.2.1, see https://gitlab.matrix.org/matrix-org/olm/-/blob/master/CHANGELOG.rst
In 3.2.2 the package name changed to @matrix-org/olm, thus
updating in Makefile & imports

Signed-off-by: Christoph Settgast <csett86@web.de>
2021-08-24 15:40:18 +02: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
Saúl Ibarra Corretgé
5bc424459f fix(iframe) don't register service worker when in an iframe
Fixes: https://github.com/jitsi/jitsi-meet/issues/9712
2021-08-24 11:58:43 +02:00
robertpin
605ce9db62 Added default state to persistance 2021-08-24 10:07:44 +03:00
Дамян Минков
e2f760c7f1 fix: Fixes AV moderation used in tenants. 2021-08-23 09:43:53 -05: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
hmuresan
fe41eef398 fix(drawer-menu) Allow scroll on drawer menu items 2021-08-20 16:35:24 +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
José Luís Andrade
229520f74f fix(lang) update Portuguese translation 2021-08-20 14:39:57 +02:00
Saúl Ibarra Corretgé
0d9af05a4b chore(rn,versions) bump app and sdk versions 2021-08-20 11:51:03 +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é
cf34b0a783 fix(e2ee) update E2EE warning message 2021-08-19 17:19:00 +02:00
Saúl Ibarra Corretgé
10cc3b2b31 fix(ios) fix conference failing when proximity sensor is near
React Native links timers to the display, so they cannot run when the display is
not running. Builtin timers already take being in the background into account,
but not the proximity sensor.

Credits: https://github.com/react-native-webrtc/react-native-callkeep/issues/143

Fixes: https://github.com/jitsi/jitsi-meet/issues/9619
2021-08-19 13:55:35 +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
Saúl Ibarra Corretgé
a4d516ca86 fix(ios) fix deadlock when selecting audio device
In WebRTC M92 the RTCAudioSession lock changed from a recursive one to a regular
mutex one, so make sure we don't attempt to lock it  while already holding the
lock.
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
José Luís Andrade
4788720edd fix(lang) update portuguese translation 2021-08-19 09:56:20 +02: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
Дамян Минков
a7a44902ec fix: Fixes dot shown left of logo.
Empty list with border is showing 2px dot.
2021-08-18 17:18:39 -05:00
Scott Boone
7af23f35ba added comment for future proofing 2021-08-18 14:01:11 -05:00
Calin Chitu
cf49af1a9f fix(participants-pane) fixed participants pane button toggled state 2021-08-18 12:39:27 -05:00
Saúl Ibarra Corretgé
186125607f fix(prosody) fix username not being set in mod_auth_jitsi-anonymous
If the session was not resumed the plugin must generate a random username, just
like the regular anonymous authentication plugin does.
2021-08-18 15:16:53 +02:00
Saúl Ibarra Corretgé
508decc3f3 fix(prosody) fix typo in filename 2021-08-18 15:16:53 +02: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
hmuresan
db0b861353 chore(deps) lib-jitsi-meet@latest
6eaffc4b11...c23abfa2bc
2021-08-16 12:12:03 +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
tmoldovan8x8
ae33755913 feat(rn,sdk) add setConfigOverride to JitsiMeetConferenceOptions
Allows for overriding any (overridable, of course) config option.
2021-08-13 12:03:41 +02:00
BlackXixo
bcc870daa7 fix(lang) update Spanish translation 2021-08-13 11:31:37 +02:00
dependabot[bot]
a6a95ad13b chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /resources/load-test
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 08:23:15 +02:00
Saúl Ibarra Corretgé
195508ea60 chore(deps) lib-jitsi-meet@latest
* fix(ProxyConnection) add new required stubs
* fix(tpc) fix extracting ssrc map when using single stream
* fix(transcribing): send transcripton_language only when necessary (#1677)

97ff597425...6eaffc4b11
2021-08-12 16:26:45 -05:00
José Luís Andrade
5ce4b82c2c update portuguese translation (#9703)
* update portuguese translation

"participantsPane" section

* Update main-pt.json

add "security" translation

* Update main-pt.json

add "lobby" translation
2021-08-12 14:42:23 -05:00
Mauro José da Silva
ab1c016108 fix(lang) update Brazilian Portuguese translations 2021-08-11 09:53:35 +02:00
Дамян Минков
29dd0cf726 fix: Adds a null check in mod_limits_exceptions.
It is failing on prosody 0.11.4 with mod_limits_exception.lua:29: attempt to call method 'set_stanza_size_limit' (a nil value). That prosody misses set_stanza_size_limit.
2021-08-10 14:34:20 -05:00
durduman
1e0c25d816 fix(ios) remove exitPictureInPicture() call from resetBounds(bounds:) 2021-08-10 15:49:31 +02:00
José Luís Andrade
dfd28c501b fix(lang) update portuguese translation 2021-08-10 07:51:04 +02:00
Дамян Минков
ed98eca326 feat: Rises the stanza limit for unlimited jids (jicofo).
c5c4449fbc/doc/debian/jitsi-meet-prosody/prosody.cfg.lua-jvb.example (L24)
2021-08-09 11:33:40 -05:00
Andrei Gavrilescu
c5c4449fbc chore(deps) lib-jitsi-meet@latest (#9686)
* feat(transcribing): configurable transcription language

40fd6bdeaa...97ff597425
2021-08-09 13:46:38 +03: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
Jaya Allamsetty
a31a10ba38 fix(logging): Set the log level to debug again.
Plan is to make the Strophe logs more restrictive.
Revert "fix(logging) reduce overly vebose logging"

This reverts commit 09af88088d.
2021-08-06 12:46:29 -04: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
dependabot[bot]
834ee22bc3 chore(deps): bump browserslist in /resources/load-test
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.7.3 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.7.3...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-06 10:02:48 +02:00
Pierre
d6b5687828 fix(misc) fix typeof comparison to undefined 2021-08-06 09:51:54 +02:00
Jaya Allamsetty
6b496d4def chore(deps) lib-jitsi-meet@latest
* fix(ConnectionQuality): Do not show red/yellow GSM bars on join. When the user first unmutes their video, the connection quality is shown as poor until the local stats are available. Calculate the connection quality only after the stats are available, i.e., assume 100% until pcStatsInterval has elapsed.
* feat(non-participant-messages) Add a new JitiConferenceEvent for messages ignored by ENDPOINT_MESSAGE_RECEIVED
* fix(precall) respect custom callstats script url for precall test

9e632a77c5...6a3df11ffa
2021-08-05 17:07:43 -04:00
Jaya Allamsetty
22cc56ce8d chore(deps) lib-jitsi-meet@latest
* feat(BridgeChannel): Signal a new videoType for high fps screenshare. This lets the bridge adjust the bitrate allocation for this source so that layers with higher fps are prioritized over layers with higher resolution. As a result, endpoints with restricted downlink will receive a high fps low resolution share as opposed to a high resolution low fps screenshare.
* fix(log) lower severity of overly verbose logs (2)

fa834c2923...9e632a77c5
2021-08-05 14:16:52 -04: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
Saúl Ibarra Corretgé
46cbc0ff49 chore(rn,versions) set mobile app and SDK versions 2021-08-05 13:43:29 +02:00
Saúl Ibarra Corretgé
53a695da90 fix(twa) update masked icon
Contrary to what I thought the expected icon is an icon that can be masked, not
the mask itself.
2021-08-05 13:42:58 +02:00
Calin Chitu
8bbee7d1dc feat(toolbox) updated menu items order, dividers for mobile 2021-08-05 11:56:44 +02:00
Дамян Минков
72d4aa7dd5 fix: Fix av moderation enable-disable sequence.
When you enable and then disable av-moderation just the audio moderation is disabled and video moderation disabling is not signalled to moderated clients.
2021-08-04 19:41:37 +03:00
Saúl Ibarra Corretgé
8161309e28 deps(rn) update WebRTC to M92 2021-08-04 15:42:37 +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
Christoph Settgast
70c5ea04b1 fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2021-08-04 11:00:34 +02:00
Calinteodor
ca25be7314 fix(config) comment out enabledReactions 2021-08-04 10:58:07 +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
Alex Bumbu
af9958ad66 feat(ios) support for destroying & reinitializing the react native bridge 2021-07-30 11:53:30 +02: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
Saúl Ibarra Corretgé
09af88088d fix(logging) reduce overly vebose logging
It huurts performance on mobile. It can still be enabled by setting the level to
debug / trace.
2021-07-28 23:27:54 +02:00
Saúl Ibarra Corretgé
2e539ba010 chore(deps) lib-jitsi-meet@latest
* fix(log) lower severity of overly verbose logs
* e2ee: remove legacy apis (#1653)

b815157a22...fa834c2923
2021-07-28 23:14:08 +02:00
José Luís Andrade
87b3ec2cc0 fix(lang) update portuguese translaation 2021-07-28 22:22:10 +02: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
Saúl Ibarra Corretgé
643340c4a6 fix(deps,rn) bump @react-native-async-storage/async-storage
In version 1.15 the storage backend was rewritten, which hopefully allows us to
fix this crash on Android:

Caused by java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/org.jitsi.meet/databases/RKStorage
       at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
       at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1160)
       at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1036)
       at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1204)
       at com.reactnativecommunity.asyncstorage.AsyncStorageModule$1.doInBackgroundGuarded(AsyncStorageModule.java:159)
       at com.reactnativecommunity.asyncstorage.AsyncStorageModule$1.doInBackgroundGuarded(AsyncStorageModule.java:146)
       at com.facebook.react.bridge.GuardedAsyncTask.doInBackground(GuardedAsyncTask.java:35)
       at com.facebook.react.bridge.GuardedAsyncTask.doInBackground(GuardedAsyncTask.java:19)
       at android.os.AsyncTask$2.call(AsyncTask.java:305)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at com.reactnativecommunity.asyncstorage.AsyncStorageModule$SerialExecutor$1.run(AsyncStorageModule.java:63)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:760)
2021-07-28 15:26:00 +02: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é
47576aebba chore(deps) react-native-webrtc@1.89.2
THe new version fixed a longstanding problem with RN not updating the JS side
SDP representation properly. This will allow us to remove a hack we currently
have to sidestep this.
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
Mihai-Andrei Uscat
4e83e93eb6 fix(virtual-background): Refactor CSS to accommodate smaller screens 2021-07-26 11:57:39 +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
Jaya Allamsetty
1e76dc0aa2 chore(deps) lib-jitsi-meet@latest
* feat(JingleSessionPC): Enable unfied plan by default for chrome p2p.
* fix(JingleSessionPC): Fix startMuted cases for p2p unified plan. Chrome doesn't create a decoder for ssrc in the remote description when there is no local source and the endpoint is offerer. Initiating a renegotiation with the endpoint as a responder fixes this issue. Add a workaround until Chrome fixes this bug.
* fix: Missed SSRCs in Unified Plan with several "ssrc-group:FID" groups. (#1658)

e6648fac96...b815157a22
2021-07-21 16:47:12 -04: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
e8ad2365b6 feat(native-participants-pane) rebase and Podfile.lock file updates 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
600af62945 feat(native-participants-pane) updated podfile 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
08a4da22f3 feat(native-participants-pane) reverted podfile changes 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
robertpin
c657f360e1 Fix recording for public access (#9584) 2021-07-21 08:52:04 +03:00
José Luís Andrade
ae5edf5a62 Update toolbarButtons list
Add 'participants-pane' option
2021-07-20 16:57:12 -04: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
Jaya Allamsetty
4c3aae1e28 chore(deps) lib-jitsi-meet@latest
* fix(TPC): Fix the screenshare issue when user starts video muted on chrome. Munge 3 ssrcs in the SDP for chrome in unified plan always for the simulcast case.

053a26604d...e6648fac96
2021-07-19 12:17:20 -04: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
Jaya Allamsetty
e22a25b216 chore(deps) lib-jitsi-meet@latest
* fix(JingleSessionPC): Disable unified-plan for p2p chrome. Do not enable unified plan for p2p chrome by default until StartMutedTest is fixed. Fix media direction for case when there are no local and remote sources, should be set to 'inactive' in that case.

3a313a244d...053a26604d
2021-07-15 18:03:24 -04:00
Дамян Минков
4075e5deb7 fix: Fix speakerstats reports. 2021-07-15 17:03:05 +03: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
Mircea Sotan
8f81a75a61 fix(android): Fix install error on application compiled against Android S - Targeting S+ (version 10000 and above) requires that an explicit value for android:exported be defined when intent filters are present 2021-07-15 14:48:46 +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
Дамян Минков
d57e202d19 chore(deps) lib-jitsi-meet@latest
* fix(codec-selection): Fix VP9 codec switching issue in Chrome unified-plan. Munge only the m-line that corresponds to the source that the browser will be sending. Do not select VP9 on Firefox. Detect support for RTCRtpTransceiver#setCodecPreferences correctly.

89a7e2d9cd...3a313a244d
2021-07-15 13:12:53 +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
tmoldovan8x8
25b4887f74 chore(rn): set mobile SDK versions 3.7.0 2021-07-15 09:36:41 +03:00
Avram Tudor
e8ee65db82 fix(jaas) always hide chrome banner (#9546) 2021-07-14 16:16:21 +03:00
Дамян Минков
9956ca6551 chore(deps) lib-jitsi-meet@latest
* fix(RTC): In unified-plan mode, disable the low resolution streams for low fps SS. In unified plan impl, it is not possible to enable/disable simulcast during the call since the same sender is re-used for all local video tracks. Therefore, disable the low resolution simulcast streams for low fps screensharing so that the bridge forwards only the highest resolution stream which is important for low fps screensharing.

f974007ca6...89a7e2d9cd
2021-07-14 16:11:46 +03:00
Calin Chitu
03a96d0be2 fix(css) moved to the left moderation text 2021-07-14 11:47:46 +03:00
Дамян Минков
3fa7c01f19 chore(deps) lib-jitsi-meet@latest
* fix(JingleSessionPC): Do not check if the ssrc already exists in the RD when adding a ssrc-group from source-add.
* feat: Switch to unified plan on chrome by default unless explicitly disabled.
* fix(VADAudioAnalyser): NPE error evaluating this._vadEmitter.on (#1652)
* Small fix in tokens doc.

b43a9fa0ee...f974007ca6
2021-07-14 11:47:37 +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
SiderealArt
d5f379a97c Update Traditional Chinese translation 2021-07-13 15:58:51 +03:00
SiderealArt
84cdd31731 Update Traditional Chinese translation 2021-07-13 12:54:52 +03:00
MaikHannemann
b7eba915af Added missing german translation 2021-07-13 12:54:38 +03:00
José Luís Andrade
7d0722c031 Update of the translation to portuguese language 2021-07-13 12:54:27 +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
damencho
80e2c05219 fix(av-moderation): Fixes sending wrong whitelist in json. 2021-07-09 15:41:08 +03: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
Tudor D. Pop
d87a40e77e fix(virtual-background): Style adjustments on virtual background dial… (#9484)
* fix(virtual-background): Style adjustments on virtual background dialog on small screens.

* fix(virtual-background): Style adjustments on virtual background dialog on small screens.

Co-authored-by: tudordan7 <tudor.pop@decagon.tech>
2021-07-09 10:26:55 +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
Mihai-Andrei Uscat
33f1199fc8 fix(Filmstrip): Fix scrollbars around filmstrip (#9519) 2021-07-08 16:43:15 +03: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
Jaya Allamsetty
074a783bd9 feat: Enable unified plan support for p2p chrome calls. 2021-07-07 14:55:07 -04: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
Jaya Allamsetty
7f44442b21 chore(deps) lib-jitsi-meet@latest
* fix(TPC): Do not remove ssrcs from remote desc for p2p. In unified plan, re-use of m-line (i.e., adding an SSRC, removing it and then adding it back) causes the browser to not render the media on Chrome and Safari. The WebRTC spec is not clear as to how browsers have to behave, this doesn't cause any issues on Firefox. As a workaround, only change the media direction and leave the ssrc in the remote desc. This automatically triggers a 'removetrack' event on the associated MediaStream and the track can be removed from the UI.
* Drops old prosody versions from the tokens instructions

0cdfb79c2e...b43a9fa0ee
2021-07-06 14:27:09 -04: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
Avram Tudor
0507f8c2f9 feat(api) expose follow me method (#9486) 2021-07-06 14:37:31 +03:00
Felix Wolfsteller
df1561c198 fix(config) document useRoomAsSharedDocumentName 2021-07-05 09:38:51 +02: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
Jaya Allamsetty
d9bfeecb5b chore(deps) lib-jitsi-meet@latest
* fix(VAD): Do not enable VAD on Chrome on iOS.

229015a6f3...0cdfb79c2e
2021-06-29 10:14:52 -04: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
Mohd Bilal
5fcd5ff17b added more translations 2021-06-29 11:04:41 +03:00
AndreRochaV
62bb259182 Changes to the Brazilian Portuguese translation
Adding some more interface translation from main.json, specifically, the participants button, participants pane and virtual background selection dialog window
2021-06-29 11:04:33 +03:00
José Luís Andrade
027e1ba978 lang: Update of the translation to portuguese language (#9432)
* Update main-pt.json

Update of the translation to portuguese language - "dialog": { ... }

* Update main-pt.json

Update "videoLink" translation

* Update main-pt.json

Added more translation: "toolbar": {...}
2021-06-29 11:04:22 +03:00
Besnik Bleta
a866be787f Update for sq translation (#9449)
* Adding sq translation

* Adding sq to languages.json

* Updating sq translation

* Fixing missing commas and updating string changes

* Fixing unclosed quotes
2021-06-28 16:22:36 +03:00
Mejans
0381f714fc Update Occitan locale (#9453)
* Update languages-oc.json

* Update main-oc.json
2021-06-28 16:22:14 +03:00
Longhao.Chen
5d6e88b53a Update main-zhCN.json 2021-06-28 16:22:03 +03:00
Jaya Allamsetty
a8044c43e2 chore(deps) lib-jitsi-meet@latest
* squash: Set capScreenShareBitrate flag every time a new pc is created.
* feat(RTC): Add the ability to change desktop share fps. Provide a method for changing the capture fps for desktop tracks during the call. These changes to the lib are needed for making it configurable from the UI.

46ec23fcdc...229015a6f3
2021-06-28 08:56:12 -04: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
Avram Tudor
01867ed343 fix(build) add missing file for native builds (#9461) 2021-06-28 12:56:34 +03:00
Jaya Allamsetty
765fbe5e1d feat: Change the screenshare capture fps from UI. (#9438)
* 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.
2021-06-28 10:48:16 +03:00
Avram Tudor
ea56010e09 feat(jaas) display messages about features that are disabled for jaas… (#9448)
* feat(jaas) display messages about features that are disabled for jaas users

* code review
2021-06-25 16:28:54 +03:00
hmuresan
38b14c5d62 chore(replace-participant) Send readyToClose event when a replaced participant is kicked
- the embedding app can decide to dispose the iframe in this case
2021-06-25 14:42:26 +03:00
Tudor D. Pop
74d65ff596 fix(virtual-background): Fix resize action and prevent mirror behavio… (#9441)
* 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>
2021-06-24 11:21:34 -04:00
hmuresan
1d45edbb27 feat(external-api): Add send chat message command 2021-06-24 13:15:53 +03:00
Calin Chitu
7945f14cee fix(chat) removed unread msgs counter on chat open 2021-06-24 13:15:01 +03:00
lala
35c7f156db fix(i18n): LocaleDetector should consider the language tag 2021-06-24 12:41:17 +03:00
Vlad Piersec
f82d46337b (fix): Do not allow external css customization for static prejoin
This prevents CSS spoofing.
2021-06-24 10:21:08 +03:00
Hristo Terezov
07a69ba040 fix(pagination): keys 2021-06-23 16:57:26 -05:00
Hristo Terezov
2d319d18c3 feat: request video only for visible thumbnails. 2021-06-23 16:57:26 -05:00
Hristo Terezov
16cfda3c7a feat(Filmstrip): Pagination. 2021-06-23 16:57:26 -05:00
Дамян Минков
64ae9c7953 feat: UI part for A/V moderation. (#9195)
* 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>
2021-06-23 14:23:44 +03:00
Vlad Piersec
3e8f725c62 fix(vpaas): Don't show recording link to initiator if saving on dropbox 2021-06-23 14:20:27 +03:00
Calinteodor
2a9b3dc1b2 fix(keyboardshortcut) spacebar release mutes participant (#9434)
* fix(keyboardshortcut) spacebar release mutes participant

* fix(keyboardshortcut) removed extra check
2021-06-23 11:53:23 +03:00
Calinteodor
487da8f231 fix(lobby) disable invite from lobby screen fix #9209 (#9417)
* fix(lobby) disable invite from lobby screen fix #9209

* fix(lobby) destructered props fix #9209

* fix(lobby) changed const name fix #9209

* fix(lobby) added empty line fix #9209
2021-06-22 20:07:57 +03:00
hmuresan
804d14e112 feat(did-page) Handle SIP number on did info page 2021-06-22 17:25:34 +03:00
damencho
53cea31bb8 fix: Clear prosody utils and removes a debug statement. 2021-06-22 09:44:26 +03:00
damencho
e6cdeb31ff feat: Optimizes speaker stats to skip occupants with 0 talk time.
Skips adding focus user and skips sending an empty message.
Keep sending participant info for those left the room, to keep existing behaviour.
2021-06-22 09:44:26 +03:00
damencho
60db81f31c chore: Updates mod_smacks.lua version to latest.
https://hg.prosody.im/prosody-modules/rev/f6f28ceff53a
2021-06-22 09:44:26 +03:00
Jaya Allamsetty
0e6addbfad chore(deps) lib-jitsi-meet@latest
* fix(RTC): Do not overwrite other constraints when resolution option is used. When the resolution option was being used, all the other constraints like frameRate and facing mode were being overwritten.

24627e1b95...46ec23fcdc
2021-06-21 12:16:05 -04:00
Hristo Terezov
0a37ef7d46 fix(VirtualBackgroundDialog): SS on electron. 2021-06-21 17:12:51 +03:00
José Luís Andrade
f2361f91df lang: Update of the translation to portuguese language (#9392)
* Update main-pt.json

Update of the translation to portuguese language of Portugal

* Update main-pt.json

I added a comma
2021-06-21 15:42:56 +03:00
vp8x8
3d83847e4b feat(vpaas, recording): Show recording link to recording initiator (#9362)
* 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
2021-06-21 11:36:18 +03:00
SiderealArt
993b6ba4f2 Update main-zhTW.json 2021-06-21 11:36:08 +03:00
Mikel Larreategi
22c640347a complete EU translation 2021-06-21 11:35:59 +03:00
Hamza KHAIT
db5ccc943c Updating French Translation 2021-06-21 11:35:39 +03:00
Zanderlan
04a5e26096 i18n: ptBR: new translation 2021-06-21 11:35:26 +03:00
Jaya Allamsetty
e10e9a5fec chore(deps) lib-jitsi-meet@latest
* fix: Send videoType bridge message for mute/unmute on FF. (#1642)

d5e60583b8...24627e1b95
2021-06-18 12:07:07 -04:00
Tudor D. Pop
dc776d209c fix(virtual-background): Prevent virtual background selection if it h… (#9414)
Co-authored-by: tudordan7 <tudor.pop@decagon.tech>
2021-06-18 10:18:05 -04:00
Tudor D. Pop
2ed2a8d41f fix(wasm-support): WebAssembly browser support. (#9410)
* fix(wasm-support): WebAssembly browser support.

* fix(wasm-support): WebAssembly browser support.

Co-authored-by: tudordan7 <tudor.pop@decagon.tech>
2021-06-17 09:03:39 -05:00
damencho
be73ed9d19 fix: Checks all parts while parsing config params. 2021-06-16 14:15:44 -05:00
Calinteodor
f991a93afd fix(toolbox) Copying with Ctrl+C toggles the chat. Fixes #9380 2021-06-16 11:36:36 -05:00
tmoldovan8x8
0bd45a75d2 feat(replace-participant): Add replaceParticipant feature-flag 2021-06-16 14:08:18 +03:00
Jaya Allamsetty
f560eecfa9 chore(deps) lib-jitsi-meet@latest
* fix(TPC): Filter ssrcs differently while extracting the SSRC map from SDP. Use 'msid' for plan-b clients and 'cname' for unified-plan clients.

fad985e95a...d5e60583b8
2021-06-15 12:41:10 -04:00
Avram Tudor
34bc3c9533 Merge pull request #9395 from jitsi/tavram/invert-flag
fix(api) invert filmstrip autohide flag
2021-06-15 16:25:48 +03:00
Tudor-Ovidiu Avram
2eedc2945d fix(api) invert filmstrip autohide flag 2021-06-15 16:09:01 +03:00
hmuresan
342dd4ceca feat(replace-participant): Replace participant with same jwt in the conf
- update lib-jitsi-meet to version with support for replacing participant
2021-06-15 14:24:12 +03:00
Calinteodor
60188794b5 fix(authentication) language display problem resolved #9385 (#9390) 2021-06-14 08:03:27 -05:00
hmuresan
cafefecea5 feat(external_api) Expose command for toggling background dlg 2021-06-14 14:33:34 +03:00
Avram Tudor
9d22da823e Merge pull request #9368 from jitsi/tavram/mousemove
feat(api) expose event for mouse movements inside the iframe
2021-06-14 11:22:22 +03:00
Tudor-Ovidiu Avram
b2985934f7 fix(share-video) fix backwards compatibility issue 2021-06-11 08:37:01 -05:00
tmoldovan8x8
51a996d0e0 fix(rn): adds check for blur function on currentTarget 2021-06-11 13:53:10 +03:00
Jaya Allamsetty
2549f83313 chore(deps) lib-jitsi-meet@latest
* fix(TPC): fix local resolution/fps stats. Browsers do not generate a 'msid' attribute for ssrcs in unified plan mode, use mediaType as a key for the TrackSSRCInfo map.
* fix(recording): Send participant id when recording starts/stops (#1632)

8057f12a39...2259d44185
2021-06-10 17:42:33 -04:00
Tudor-Ovidiu Avram
6b095b9794 feat(api) allow always hiding remote videos for 1-1 calls 2021-06-10 13:43:23 -05:00
SiderealArt
d4b6ac6c3a Update languages-zhTW.json 2021-06-10 13:35:28 -05:00
SiderealArt
e6b5deade2 Fix Thailand to Thai 2021-06-10 13:35:16 -05:00
Tudor-Ovidiu Avram
7f04767566 feat(api) expose event for mouse movements inside the iframe 2021-06-10 17:45:28 +03:00
Steffen Kolmer
e9675453e1 feat: Make Jitsi WCAG 2.1 compliant (#8921)
* Make Jitsi WCAG 2.1 compliant

* Fixed password form keypress handling

* Added keypress handler to name form

* Removed unneccessary dom query

* Fixed mouse hove style

* Removed obsolete css rules

* accessibilty background feature

* Merge remote-tracking branch 'upstream/master' into nic/fix/merge-conflicts

* fix error

* add german translation

* Fixed merge issue

* Add id prop back to device selection

* Fixed lockfile

Co-authored-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
2021-06-10 07:48:44 -05:00
Avram Tudor
76f1fe8457 Merge pull request #9374 from jitsi/tavram/config-autohide-filmstrip
feat(api) allow filmstrip autohide to be configurable
2021-06-10 12:44:37 +03:00
Tudor-Ovidiu Avram
a1e8f36f4f feat(api) allow filmstrip autohide to be configurable 2021-06-10 12:12:01 +03:00
Avram Tudor
1d4e40b49f Merge pull request #9371 from alexbumbu/fix_deeplinking
fix(vpaas) enable deeplinking
2021-06-10 11:33:55 +03:00
Jaya Allamsetty
440e7844c8 chore(deps) lib-jitsi-meet@latest
* fix(connectivity): Fix video freezes on Safari when ep goes out of last-n.

a1b870c616...8057f12a39
2021-06-09 18:32:55 -04:00
alittriutari
a3a9eab57a Update main-ja.json 2021-06-09 12:54:07 -05:00
Alex Bumbu
e2a4d0d42d fix(vpaas) enable deeplinking 2021-06-09 17:46:56 +03:00
Vlad Piersec
913d7e89dd feat(participants-pane): Add 'admit all' knocking participants button 2021-06-09 16:28:31 +03:00
Vlad Piersec
db9b8784ac fix(participants-pane): Don't show 'grant moderator' action if already moderator 2021-06-09 15:09:05 +03:00
Mihai-Andrei Uscat
a564ce581d fix(DeviceSelection): Remove video from mobile Safari 2021-06-09 09:22:16 +03:00
Jaya Allamsetty
3917c5b283 chore(deps) lib-jitsi-meet@latest
* Don't accept p2p call on FF/Safari.

d9d9b7fc31...a1b870c616
2021-06-08 17:07:42 -04:00
Jaya Allamsetty
ccdab94ee8 chore(deps) lib-jitsi-meet@latest
* fix(RTC): Adjust the media direction for p2p conn. For p2p connections, the media direction needs to be adjusted after every source-add/source-remove is processed based on the availability of local sources.
* fix(RTC): Use a enum for media direction.

5738c80baf...d9d9b7fc31
2021-06-08 14:52:07 -04:00
damencho
4fc9aed708 fix: Fixes playing muted youtube video.
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.
2021-06-07 11:56:46 -05:00
damencho
5f657a7d6c fix: Fixes selecting screen share when shared video stopped. 2021-06-07 11:56:46 -05:00
damencho
37e7919fd1 fix: Fixes import warnings. 2021-06-07 11:56:46 -05:00
damencho
4ace04e63c fix: Stops auto pinning if shared video is playing. 2021-06-07 11:56:46 -05:00
titus.moldovan
cb2891ead3 feat(e2ee): shows E2EESection only when user is moderator 2021-06-07 16:28:57 +03:00
titus.moldovan
093d8f830a feat(e2ee): broadcast e2ee disabled 2021-06-07 16:28:57 +03:00
Jaya Allamsetty
2ca4dd3755 chore(deps) lib-jitsi-meet@latest
* fix(JingleSessionPC): Disable unified-plan for p2p. Disable cross browser p2p using unified plan until all the issues are fixed.

0993c8e93d...5738c80baf
2021-06-04 13:55:41 -05:00
damencho
52279d0a2a chore(deps) lib-jitsi-meet@latest
* fix(moderation): Unmuting after av moderation and no track.

ab12f212d5...0993c8e93d
2021-06-04 12:12:44 -05:00
damencho
65642d20e4 chore(deps) lib-jitsi-meet@latest
* fix(moderation): Fixes detecting av moderation approved.

a2560f9519...ab12f212d5
2021-06-03 18:21:20 -05:00
HippyJim
8dbb392d85 CLOSE_CHAT action calls notifyChatUpdated with the isOpen flag set to false, previously was always true even when closing 2021-06-03 12:29:02 -05:00
Christoph Settgast
1b200abaa7 fix(participants) do not preload gravatars if config is empty
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>
2021-06-02 15:24:33 -05:00
damencho
06ce24527e fix: Escapes some keys when parsing input. 2021-06-02 15:24:13 -05:00
VolodyaKalashnikov
e05d53e71a main-uk.json Update
Added more support of Ukrainian language
2021-06-02 13:41:05 -05:00
damencho
acdde6f1f5 fix: Skips check on domain verification disabled. Fixes #9313. 2021-06-02 11:50:26 -05:00
Aaron van Meerten
81c4e9a7fd fix: prosody: token alg is checked before public key is used 2021-06-02 11:50:16 -05:00
kychen
fb144a55a3 i18n: zhTW: new translation (#9293)
* i18n: zhTW: new translation

* Fixed the proper semantic of toolbar.hangup

* i18n: zhTW: new translation

* Fixed the proper semantic of speaker related strings

* i18n: zhTW: new translation

* Added startupoverlay.genericTitle
2021-06-02 11:50:04 -05:00
Pierre Ozoux
de2cdb1d6c Fixes typo. (#9315) 2021-06-02 11:49:55 -05:00
Shawn Chin
0d7ec9552b Hide invite button in participant panel if disabled in config (#9287)
* Hide invite button in participant panel if disabled in config

* match code style, fix lint errors
2021-06-02 11:49:44 -05:00
damencho
e5a3f8505e chore(deps) lib-jitsi-meet@latest
* fix(Sdp): Fix maxaveragebitrate typo

3fb44f7695...a2560f9519
2021-06-02 10:30:29 -05:00
Vlad Piersec
fdbf526b60 fix(video-filmstrip): Place filmstrip videos over toolbar 2021-06-02 06:54:29 -05:00
hmuresan
bb5f589fa1 fix(feedback): don't wait for feedback submission on leave meeting 2021-06-02 06:53:59 -05:00
tudordan7
839f632af6 fix(virtual-background): Responsive virtual background preview. 2021-06-02 06:51:44 -05:00
damencho
737d542ca8 fix: Fixes av moderation logic when granting moderator. 2021-06-02 09:38:25 +03:00
Jaya Allamsetty
eff1d13d21 fix(config): Add config for enabling unified-plan support on chromium. 2021-06-01 14:30:49 -04:00
Jaya Allamsetty
870d847f5f chore(deps) lib-jitsi-meet@latest
* fix(LocalSdpMunger): Fix unit test.
* fix(CodecSelection): Call RTCRtpTransceiver#setCodecPreferences before renegotiation. Call RTCRtpTransceiver#setCodecPreferences with the preferrred codec order before every createOffer/createAnswer. This ensures that the codec preference is enforced even when there is no local description available yet while the preferred codec is being set immediately after media session creation.
* fix(JingleSessionPC): Add a workaround for chrome issue. The 'signalingstatechange' event for 'stable' is fired after the 'iceconnectionstatechange' event for 'completed' is fired on chrome in Unified plan. This prevents the client from switching the media connection to the p2p connection once the ice connection for p2p gets established.
* fix(Logging): Log enhancements. Add a preifx to logs for idenitifying the type of TPC/jingleSessionPC.
* feat(TPC): Enable unified-plan support for Chromium based browsers. This can be controlled through the config.js  option 'enableUnifiedOnChrome'.
* fix(TPC): Do not configure encodings on Safari until reneg. Avoid configuring the encodings on Chromium/Safari until simulcast is configured for the newly added track using SDP munging which happens during the renegotiation.
* fix(TPC): Do not configure encodings on chromium immediately after replace track. Avoid configuring the encodings on chromium immediately after replace track since the encoding params are read-only until the renegotation is done.
* fix: send json message (#1180)

be3e2a69f2...3fb44f7695
2021-06-01 13:54:50 -04:00
tmoldovan8x8
f84f7332b9 chore(rn,versions): set mobile SDK versions 2021-05-31 11:20:14 +03:00
Andrei Bora
27481f0270 Allow both regex and normal check for the room name 2021-05-27 13:37:24 -05:00
Alex Bumbu
724391648e fix(ScreenShare): remove listener for native events when app unmounts 2021-05-27 16:53:20 +03:00
Julian1203
9a8b5551be Update main-de.json
Small improvements
2021-05-26 17:12:18 -05:00
Jaya Allamsetty
b39e5968bf chore(deps) lib-jitsi-meet@latest
* fix(SDP): Add missing msid for p2p sources.
* fix(TPC): Don't convert plan-b<->unified-plan SDPs for p2p.
* squash: Implement review comments.
* fix(JingleSessionPC): Do not try to re-use inactive mid for new remote ssrcs. The direction was marked as 'inactive' only on Firefox as Safari had audio issues when an inactive mid is re-used. Chrome (in unified-plan) needs the direction of the mid in remote desc to be set to 'inactive' for a 'removetrack' to be fired on the associated media stream whenever a remote source is removed.
* fix(SDP): Drop SSRCs whenever the transceiver direction is 'inactive' or 'recvonly'. This is needed only for JVB connections. Add unit tests for LocalSdpMunger.
* fix: Ignore startAudioMuted/startVideoMuted for p2p. The tracks will not be added when the call switches from jvb to p2p for an endpoint that joins muted by focus.
* fix(RTC): Do not suppress the source updates on Firefox. If the msid attribute is missing, then remove the ssrc from the transformed description so that a source-remove is signaled to Jicofo. This happens when the direction of the transceiver (or m-line) is set to 'inactive' or 'recvonly' on Firefox. Not signaling these source updates creates issues with remote track handling on the other endpoints in the call.
* fix(RTC): Set transceiver direction after RTCRtpSender#replaceTrack. This fixes the issue where TRACK_REMOVED event is not fired when a remote track is removed from the peerconnection. Fixes https://github.com/jitsi/lib-jitsi-meet/issues/1612 and https://github.com/jitsi/jitsi-meet/issues/8482.

60c5667957...be3e2a69f2
2021-05-26 16:51:18 -04:00
tudordan7
c0917f87ae feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
06c527b6fe feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
7f020a1107 feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
748a84eeef feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
f5dd848daf feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
4872ce83ba feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
99f61ca2cd feat(virtual-background): Desktop share as virtual background 2021-05-26 12:36:29 -04:00
tudordan7
dffe2316d4 feat(virtual-background): Desktop share as virtual background wip 2021-05-26 12:36:29 -04:00
tudordan7
72cd3d70e1 feat(virtual-background): Desktop share as virtual background wip 2021-05-26 12:36:29 -04:00
tudordan7
04a464dfee feat(virtual-background): Desktop share as virtual background wip 2021-05-26 12:36:29 -04:00
tudordan7
be0632783d feat(virtual-background): Desktop share as virtual background wip 2021-05-26 12:36:29 -04:00
damencho
15c08f90c4 feat: Adds new module to unlimit jicofo and jvb connections.
In case limited those connection will be whitelisted and unlimited. Updates existing configurations to make sure prosody update will not break it by limiting too much.

Uses 28c16c93d79a version of the module: https://modules.prosody.im/mod_limits_exception.html
Will be available in prosody 0.12.
2021-05-26 11:17:25 -05:00
Calinteodor
c4677be87a fix(authentication): removed cancel event from overlay effect (#9274)
* fix(authentication) resolved #9263 issue

* fix(authentication) hide dialog close icon

* fix(authentication) fixed lint error about missing prop
2021-05-26 11:15:35 -05:00
Jaya Allamsetty
2fdf1a9165 chore(deps) lib-jitsi-meet@latest
* fix(caps): Disable TCC on Firefox. There is a known issue with Firefox where the BWE gets halved on every renegotiation causing the low upload bitrates from the Firefox clients.
* fix: Drops unused config, fixes jitsi/lib-jitsi-meet#1620.
* fix(e2ee): destroys olm session on disabling e2ee

f95a455c08...60c5667957
2021-05-26 11:32:48 -04:00
tmoldovan8x8
06110d1dfb task(rn): hide screen share button when audioOnly mode 2021-05-26 11:43:24 +03:00
Hristo Terezov
8d25950d98 fix(AudioTrack): _play promise chain 2021-05-25 20:11:15 -05:00
hmuresan
aea09a8da3 Send feedback metadata to JaaS feedback endpoint 2021-05-25 20:37:56 +03:00
Mihai-Andrei Uscat
01a127b557 fix(SharedVideo): Ensure shared video takes filmstrip into account 2021-05-25 12:55:57 +03:00
Hristo Terezov
574994607c feat(AudioTrack): retries for play() 2021-05-24 17:16:04 -05:00
damencho
689bb3f226 Updates prosody config for main muc component. 2021-05-24 15:13:53 -05:00
Avram Tudor
598d014960 Merge pull request #9022 from jitsi/tavram/share-video
feat(share-video) Add capability for sharing any direct link video
2021-05-24 12:46:07 +03:00
Vlad Piersec
d99bf9797d fix(vpaas): Avoid url blipping on invite dialog 2021-05-24 11:12:06 +03:00
Avram Tudor
4138e1ac53 Merge pull request #9251 from jitsi/tavram/remove-sip-invite
fix(sip) remove sip text from invite
2021-05-24 09:21:19 +03:00
damencho
0ee13b1fd8 fix: Drops unused config, fixes jitsi/lib-jitsi-meet#1620. 2021-05-22 12:45:36 -05:00
tudordan7
6ca61e03fd fix(virtual-background): Fix delete virtual background icon position. 2021-05-21 06:26:38 -05:00
Tudor-Ovidiu Avram
2f9fb64332 fix(sip) remove sip text from invite
this will be added in a subsequent commit to the dial in page
2021-05-21 13:04:26 +03:00
Tudor-Ovidiu Avram
3ebfb1de70 code review 2021-05-21 12:55:45 +03:00
Tudor D. Pop
d7a6a48acd fix(virtual-background): Responsive virtual background dialog
Fixes: https://github.com/jitsi/jitsi-meet/issues/9202
2021-05-20 17:12:39 +02:00
Saúl Ibarra Corretgé
496e47af20 chore(deps) uppdate amplitude-js
Fixes: https://github.com/jitsi/jitsi-meet/issues/8380
2021-05-20 17:11:45 +02:00
cagriertek1
d077021031 fix(lang) Update Turkish Translation
"mute Everyone" means "Herkesi sustur" in Turkish language.
2021-05-20 06:39:23 -05:00
Tudor-Ovidiu Avram
4e4ff0f60f feat(share-video) Add capability for sharing any direct link video 2021-05-20 13:00:54 +03:00
scott boone
9657bd9b6d removed a typo (#9244) 2021-05-19 16:02:59 -05:00
Scott Boone
e6242f5bc7 lowercase to fix tokens with uppercase letters (e.g., slack JWTs) 2021-05-19 15:52:04 -05:00
damencho
1f41ddd228 fix: Drops extra message sent on leave. 2021-05-19 10:11:14 -05:00
Saúl Ibarra Corretgé
eb3295cedd fix(ci) fix checking if the git repository is clean 2021-05-19 11:53:47 +02:00
Saúl Ibarra Corretgé
0e7a992b43 chore(deps) sync package-lock.json 2021-05-19 11:53:47 +02:00
Pawel Domas
6f5e0b0321 feat: more user friendly default device label
Also fixes an issue where starting Chrome 90 air pods
no longer have the "Default -" prefix and the default
entry looks like a buggy duplicated one.
2021-05-18 09:28:47 -05:00
Mihai-Andrei Uscat
e33674fb2e fix(FocusLock): Stop stealing focus when embedded 2021-05-18 09:04:42 +03:00
Vlad Piersec
3f7073c589 fix(participants): Knocking participant name in participants list
Fixes https://github.com/jitsi/jitsi-meet/issues/9211
2021-05-17 15:41:34 +03:00
Christoph Settgast
2a37f7caa8 fix(lang) update German translation for participants pane 2021-05-17 07:57:10 +02:00
Christoph Settgast
106ce79375 fix(participants-pane) enable translation of invite button
Copy over existing "invite" translations where the participants
pane is already translated.

Signed-off-by: Christoph Settgast <csett86@web.de>
2021-05-16 13:29:11 -05:00
Cross
b944088d99 Update README.md
Just a couple grammatical changes to the readme.
2021-05-16 07:34:14 -05:00
cagriertek1
b19bd38379 Update main-tr.json
"Kamerayı aç / kapat" means "Turn On / Off Camera" and it is not true case.

"Toggle camera" means "Kamerayı değiştir" in Turkish.
2021-05-16 07:33:41 -05:00
Felix Wolfsteller
1699216c99 fix(config) remove reference to interface_config.js 2021-05-15 11:15:02 +02:00
Jaya Allamsetty
e78ad54809 chore(deps) lib-jitsi-meet@latest
* fix(RTC): Disable simulcast for SS when using H.264. Fixes https://github.com/jitsi/docker-jitsi-meet/issues/1048

9eb4af1e80...f95a455c08
2021-05-14 17:28:48 -04:00
Calinteodor
9b5eae7a60 feat(rn, security) added flag for controlling security options button visibility 2021-05-14 15:01:43 +02:00
Avram Tudor
7db9fc94e2 Merge pull request #9204 from jitsi/tavram/sip-fixes
fix(sip) allow sip invites to contain phone numbers
2021-05-14 14:33:14 +03:00
Gabriel Imre
db5d6a56b8 fix(participants-pane): Use selector for displaying chat context item 2021-05-14 12:21:14 +03:00
Tudor-Ovidiu Avram
f7ddcbbbf3 fix(sip) allow sip invites to contain phone numbers
display sip address in invites
hide lobby password for sip users
tidy up invite placeholders
2021-05-14 11:54:54 +03:00
Shawn Chin
cff4ed83f6 Reservations prosody plugin (#8386)
* Added mod_reservations prosody plugin

* Removed comments re mutex

* Add support for HTTP retries and expose config to tweak retry behaviour

* Removed TODO comment. Feature implemented

* Added multi-tenant support

* renamed config var and default to always including tenant name in name field

* Simplified handling of multi-tenant

* Fixed bug with DELETE not called on reservation expiry

* fix: Fixes destroying room.

Co-authored-by: damencho <damencho@jitsi.org>
2021-05-13 22:20:21 -05:00
damencho
a39f2aebd9 fix: Fixes handling tenant in util and lobby. 2021-05-13 13:52:45 -05:00
Jaya Allamsetty
2bce5acad3 chore(deps) lib-jitsi-meet@latest
* fix(TPC): Return default codec if the local sdp is not available. Get the correct media type when generating the source identifier.

88560a8a5e...9eb4af1e80
2021-05-13 13:57:06 -04:00
damencho
7396db71fd feat: jitsi_session: extracts URL parameters from BOSH or WS into session
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-05-13 06:29:42 -05:00
Mihai-Andrei Uscat
f7b73c0d09 feat(AddPeopleDialog): Add config option to overwrite invite subject app name 2021-05-13 12:33:05 +03:00
Дамян Минков
5c08b1ec5b feat: A/V moderation (prosody module) (#9106)
* feat(prosody-modules): Moves a function for getting room to util.

* feat: Audio/Video moderation.

* squash: Fix docs.

* squash: Changes a field name in the message for adding jid to whitelist.

* squash: Moves to boolean from boolean string.

* squash: Only moderators get whitelist on join.

* squash: Check whether in room and moderator.

* squash: Send to participants only message about approval.

Skips sending the whole list.

* feat: Separates enable/disable by media type.

Adds actor to the messages to inform who enabled it.

* squash: Fixes reporting disable of the feature.

* squash: Fixes init of av_moderation_actors.

* squash: Fixes av_moderation_actor jid to be room jid.

* squash: Fixes comments.

* squash: Fixes warning about shadowing definition.

* squash: Updates ljm.

* fix: Fixes auto-granting from jicofo.

* squash: Further simplify...
2021-05-12 16:36:02 -05:00
Jaya Allamsetty
6d15bcc719 chore(deps) lib-jitsi-meet@latest
* fix(JingleSession): Move the ssrc identifier generation to LocalSdpMunger.
* fix(logger): Logging enhancements. Get rid of noisy logs related to SDP transformations which are redundant. Fix formatting and add missing information.

7cbd9c8f2a...923aa449c4
2021-05-12 10:19:19 -04:00
Saúl Ibarra Corretgé
47c9e14155 fix(toolbox) fix displaying mute everyone buttons for non-moderators 2021-05-12 08:29:00 -05:00
otho
fe22e33343 doc(config) document "inviteDomain" in dynamicBrandingUrl 2021-05-12 11:38:16 +02:00
Tudor D. Pop
dcc659215e fix(virtual-background) fix track leak in preview 2021-05-12 11:36:49 +02:00
Tudor D. Pop
5e4753888e feat(virtual-background): Add placeholder on virtual background preview 2021-05-11 16:25:49 +02:00
Avram Tudor
6e91665987 Merge pull request #9184 from jitsi/tavram/invite-types
fix(invite) fix notifications for phone invites
2021-05-11 16:23:20 +03:00
hmuresan
a1a5d1e7f8 fix(deploymentUrls): Disable help and download apps buttons for JaaS 2021-05-11 13:54:41 +03:00
Tudor-Ovidiu Avram
9a8961b90c fix(invite) fix notifications for phone invites 2021-05-11 11:51:02 +03:00
Calinteodor
07eb19b98a feat(rn,ui) introduce react-native-paper 2021-05-11 10:01:45 +02:00
Gabriel Imre
d69d4dd91a fix(participants-pane): Use selector for displaying names 2021-05-11 09:10:17 +03:00
Jaya Allamsetty
91197bc69f fix(quality-control): Send the new receiver constraints on state changes.
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.
2021-05-10 16:06:19 -04:00
Jaya Allamsetty
913cf259cf chore(deps) lib-jitsi-meet@latest
* fix(quality-control): Propagate the height constraints to p2p session. If the application is using the new receiver constraints, propagate the height constraint to the p2p session as well.
* build(deps): bump lodash from 4.17.19 to 4.17.21
* chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9

74a90f7035...7cbd9c8f2a
2021-05-10 16:04:59 -04:00
dependabot[bot]
096e1e0dc6 chore(deps-dev): bump lodash in /resources/load-test
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-09 08:15:19 +02:00
dependabot[bot]
022f5865e5 chore(deps): bump hosted-git-info from 2.5.0 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.5.0 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.5.0...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-09 08:10:02 +02:00
Jaya Allamsetty
cc3377c0da chore(deps) lib-jitsi-meet@latest
* fix(quality-control): fix constraints sent on channel initialization. Do not send old format constraints if no constraints are set before the channel is initialized.
* chore(deps) run npm audit fix
* chore(deps) update webrtc-adater@8.0.0

86c7a35817...74a90f7035
2021-05-08 13:49:29 -04:00
dependabot[bot]
c2d7e19a1d chore(deps): bump hosted-git-info in /resources/load-test
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 15:45:40 +02:00
dependabot[bot]
a32adec667 chore(deps): bump ssri from 6.0.1 to 6.0.2 in /resources/load-test
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 00:28:06 +02:00
dependabot[bot]
ce70b005b1 chore(deps): bump url-parse from 1.4.7 to 1.5.1
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.1.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 00:27:19 +02:00
dependabot[bot]
a07fceb8fd chore(deps): bump ua-parser-js from 0.7.17 to 0.7.28
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.17 to 0.7.28.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.17...0.7.28)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 00:26:26 +02:00
Vlad Piersec
9fd8491d04 fix(RN, Toolbox): Show full participant thumbnails in tile view 2021-05-08 00:25:40 +02:00
వీవెన్
98078f9160 More Telugu (te) translations. 2021-05-07 15:15:58 -04:00
Calinteodor
450c961e68 Update contributing file
Added Avoiding bundle bloat section
2021-05-07 17:23:01 +02:00
Saúl Ibarra Corretgé
ea8ed8aa84 fix(dev) make sure each bundle analysis report gets its own file 2021-05-07 15:37:41 +02:00
Saúl Ibarra Corretgé
a5ddc896e2 fix(dev) disable performance hints when doing bundle analysis 2021-05-07 15:37:41 +02:00
Vlad Piersec
2c24dc3d27 fix(premeeting): "Don't show screen" button hover state 2021-05-07 14:26:23 +03:00
Gabriel Imre
edff9bef53 fix(participants-pane): Resize video layout when closing or opening 2021-05-07 10:51:21 +03:00
Hristo Terezov
dec90bdeb8 fix(Thumbnail): Display mode typo. 2021-05-06 15:27:27 -05:00
Tudor D. Pop
f38bf7b14c fix(dialogs-style): Remove box shadow from header and footer 2021-05-06 18:38:08 +02:00
Avram Tudor
c851136f8e Merge pull request #9110 from jitsi/tavram/fix-case-sensitive-replcement
fix(sip-invite) fix baseurl case sensitive replacement
2021-05-06 11:24:17 +03:00
Saúl Ibarra Corretgé
89abaa83aa fix(premeeting) drop gradient
It looks particularly odd, specially when any virtual background is activated.
2021-05-06 09:55:53 +02:00
Tudor D. Pop
9ef984ca3d feat(virtual-background) add virtual background preview
Also enable background selection while muted.
2021-05-06 08:54:23 +02:00
Jaya Allamsetty
2f51d9fd3e chore(deps) lib-jitsi-meet@latest
* fix(JingleSession): Add a unique identifier for source on Firefox.
* fix: Drops unused nick from messages. Fixes #1592

5629ba5d99...86c7a35817
2021-05-05 17:06:37 -04:00
damencho
ceca00b573 fix: Fixes welcome page add calendar link. Fixes #9132 2021-05-05 14:05:50 -05:00
Jaya Allamsetty
1c6677f523 squash: use oldScreenSharesOrder for checking. 2021-05-05 15:05:10 -04:00
Jaya Allamsetty
035d026e90 fix(video-layout): Fix video-layout when a SS participant leaves.
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.
2021-05-05 15:05:10 -04:00
hmuresan
a582f1c191 fix(jwt-validation): validate kid value only for JaaS
- add some missing meet features
2021-05-05 13:03:39 +03:00
Vlad Piersec
79939f108c fix(rn, Labels): Place picture-in-picture button on the left 2021-05-05 09:16:48 +03:00
Jaya Allamsetty
e765253204 chore(deps) lib-jitsi-meet@latest
* fix(RTC): Fix screenshare with audio on Electron.

e362c89eb6...5629ba5d99
2021-05-04 21:44:41 -05:00
Paweł Domas
a605403029 fix(Video.js): prevent DOMException: The play() request was interrupted by a new load request 2021-05-04 17:18:34 -05:00
Ilko
6aae1c024d Added lobby translations for bulgarian language (#9128)
* Added lobby component translations for bg language

* Update translation of shared youtube video button and label

* Translate security litterals in bg. Update lobby translations
2021-05-04 14:32:39 -05:00
Jaya Allamsetty
2b7a256aa6 chore(deps) lib-jitsi-meet@latest
* Add dependency for promise.allSettled. Older chrome versions like M72 do not support Promise.allSettled.
* fix(conference): Enable p2p for unified plan clients.
* fix(TPC): Use addTrack instead of addStream in Unified-plan impl.
* Add missing spaces in debug logs.

ad5692d6aa...e362c89eb6
2021-05-04 13:47:20 -04:00
hmuresan
b998d80ee3 fix (external-api): fix notify video mute changed when presenting
- small refactor to trigger `notifyVideoMutedStatusChanged` correctly when participant is presenting
2021-05-04 18:23:32 +03:00
Vlad Piersec
428c3cef38 fix(Labels): Recording label background color 2021-05-04 16:02:00 +03:00
Besnik Bleta
32a9c94dee Adding sq translation (#9091)
* Adding sq translation

* Adding sq to languages.json
2021-04-30 17:27:13 -05:00
Yagiz ISIK
42f07624b4 Updated Turkish Localizations
Added translations for mute everyone's microphone and camera.
2021-04-30 17:11:48 -05:00
Saúl Ibarra Corretgé
153f991097 chore(deps) lib-jitsi-meet@latest
* fix(RTC) drop the "old gUM" flow

7667117117...ad5692d6aa
2021-04-30 12:38:10 -04:00
Christoph Wiechert
79497cecba Add: remoteVideoMenu.disableGrantModerator option (#7534)
* Add: remoteVideoMenu.disableGrantModerator option

* Add disableGrantModerator to native side

* Update RemoteVideoMenu.js

* Update RemoteVideoMenuTriggerButton.js

Co-authored-by: ouya99 <alexander@andlabs.eu>
2021-04-30 11:22:36 -05:00
Saúl Ibarra Corretgé
f44faa8d81 deps(rn) updatereact-native-webrtc
Includes a MST.getSettings implementation, necessary for dropping "old
getUserMedia flow".
2021-04-30 12:02:50 -04:00
Jaya Allamsetty
7ef22603fc chore(deps) lib-jitsi-meet@latest
* fix(SDP): Move all SDP related files to a different dir. SDP utility classes are spread across RTC and XMPP directories now, moving these class files to a 'sdp' directory.
* fix(stats): Return promise for getStats. Switch to returning a Promise for getStats. Reset frame rate stat to 0 when video is suspended as a result of endpoint falling out of last-n.
* Fix: sysMessageHandler not deleted (#1590)
* task(e2ee): switch back to GCM

463e213b3f...7667117117
2021-04-30 10:51:31 -04:00
Philipp Fruck
f030706a94 fix(external_api) fixed misspelled api command 2021-04-30 15:36:32 +02:00
Hamza KHAIT
6eac19a058 fix(lang) update French translation 2021-04-29 16:55:31 +02:00
Saúl Ibarra Corretgé
8cffa5553d chore(rn,versions) set mobile app and SDK versions 2021-04-29 16:56:14 +03:00
Saúl Ibarra Corretgé
0fcdb6f248 fix(patch) remove unneeded hunks from RN patch 2021-04-29 13:39:27 +02:00
Saúl Ibarra Corretgé
399fac78f5 fix(ios) fix building with Xcode 12.5 2021-04-29 13:24:00 +02:00
Tudor-Ovidiu Avram
3339a1d19f fix(sip-invite) fix baseurl case sensitive replacement 2021-04-29 13:50:29 +03:00
Vlad Piersec
8bd874ca70 feat(themes): Add style tokens and web theme 2021-04-29 13:19:53 +03:00
Saúl Ibarra Corretgé
8477ae8daa feat(ios) add ability to set CallKit options for incoming calls
The implemented options are the call handle and UUID.
2021-04-29 12:10:43 +02:00
Saúl Ibarra Corretgé
b83bc50c03 chore(deps) drop jQuery impromptu
It's no longer used.
2021-04-29 11:02:09 +02:00
Alex Bumbu
9bffe149d3 feat(iOS): screensharing extension swift implementation 2021-04-29 10:44:40 +02:00
Jaya Allamsetty
1898e4a768 feat(last-n): Implement startLastN and make last-n configurable through UI. (#9093) 2021-04-28 19:00:20 -04:00
Jaya Allamsetty
d7639963d3 chore(deps) lib-jitsi-meet@latest
* fix(quality-control): Send the new constraint on join. Fixes the case where the old format height constraint is sent on join for a jvb media session.

7dedb59b9c...463e213b3f
2021-04-28 15:02:57 -04:00
Saúl Ibarra Corretgé
f68fe2d083 chore(deps) run npm audit fix 2021-04-28 19:09:32 +02:00
hmuresan
24bf5a2dc3 fix(toolbox): hide toolbox when mouse outside toolbox area 2021-04-28 17:49:40 +03:00
Andrei Gavrilescu
6ee868032e fix(screenshare): remove redundant event / only show on supported env (#9100)
* remove redundant event / only show on supported env

* remove unused imports
2021-04-28 17:06:41 +03:00
Alex Bumbu
cf37d34923 fix(ios) fix leaving the meeting when screen-sharing 2021-04-28 13:33:11 +02:00
dependabot[bot]
f187923233 chore(deps): bump ssri from 6.0.1 to 6.0.2
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-28 11:20:00 +02:00
chipechop
ce6ebca90f fix(lang) update Italian translation 2021-04-28 11:19:27 +02:00
Calin Chitu
546df558e3 feat(settings) removed openTwoButtonDialog from UI module and created react LogoutDialog component 2021-04-28 09:51:14 +02:00
hmuresan
02ec30b8ff feat(aot): improve AOT UI/UX 2021-04-28 09:49:37 +02:00
Ilko
0d127b30df Refine bulgarian translations (#9089)
* Translate addPeople prompt in Bulgarian

* Update bulgarian translations

* Use gender neutral language in bg translations
2021-04-26 10:02:05 -05:00
వీవెన్
fc78cd0d71 Add Telugu (te) language 2021-04-26 10:36:31 -04:00
Calinteodor
f377455069 fix(UI) removed unused methods 2021-04-24 15:14:07 +02:00
Jaya Allamsetty
b536aa035c fix(config): Deprecate capScreenshareBitrate. 2021-04-23 17:25:23 -04:00
Jaya Allamsetty
d3b18a281a chore(deps) lib-jitsi-meet@latest
* fix(quality-control): Switch to new receiver constraints by default. Use the new receiver constraints unless it is explicitly disabled through config.js.

3c9913ed61...7dedb59b9c
2021-04-23 17:25:23 -04:00
damencho
cb9c85e1bc fix: Updates jiconop2 to drop custom type. 2021-04-23 12:19:35 -05:00
Avram Tudor
ff44ff9026 Merge pull request #9076 from jitsi/tavram/remove-hash
fix(sip-invite) remove hash params
2021-04-23 16:26:16 +03:00
Tudor-Ovidiu Avram
3048ce4345 fix(sip-invite) remove hash params 2021-04-23 16:19:52 +03:00
damencho
0ef6db51d6 chore(deps) lib-jitsi-meet@latest
* fix: Fixes sending initial disco info on attaching connection.

ab667ef809...19e7cbe592
2021-04-22 14:56:11 -05:00
Jaya Allamsetty
d96bb83496 fix(presenter): Do not resize the desktop track on FF by default.
Resizing of the desktop track on Firefox is not needed anymore since the browser now reports the correct resolution of the desktop track after the fix here - ada0f5e537.
Fixes https://github.com/jitsi/jitsi-meet/issues/8519
2021-04-22 14:39:56 -04:00
Дамян Минков
f4c8310ea7 JiConOp2 (#9052)
* feat: Exposes a hook to mod_external_services data.

The hook can be used to get turn servers and credentials from another module.

* feat: JiConOp2 pushes a message with some info to clients.

* feat: JiConOp adds config for shard name feature.

* squash: Changes message type to service-info.

* squash: Drops the event in external_services.
2021-04-22 12:54:34 -05:00
Jaya Allamsetty
9856add282 chore(deps) lib-jitsi-meet@latest
* JiConOp2 (#1569)
* fix: high CPU on Chrome with low fps screen sharing (#1570)

0dc1540a44...ab667ef809
2021-04-22 13:38:24 -04:00
Calinteodor
98658f573c fix(authentication): removed old LoginDialog.js file, fixed redirection to the external auth and created actions.any.js (#9049)
* 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
2021-04-22 17:05:14 +02:00
Gabriel Imre
20a62e5eb4 fix(participants-pane): Consider reducer/state being unavailable on native 2021-04-22 17:02:35 +02:00
Saúl Ibarra Corretgé
77890fc27a fix(config) drop ancient backwards compatibility options 2021-04-22 17:00:33 +02:00
Saúl Ibarra Corretgé
433e212e20 fix(config) avoid using legacy config options
If the new ones are specified, use them.
2021-04-22 17:00:33 +02:00
titus.moldovan
527d022d63 fix(android): catch exception thrown when media projection is stopped 2021-04-22 16:52:09 +02:00
Saúl Ibarra Corretgé
9724bb1799 fix(android) fix screen rotation when screen-sharing 2021-04-22 12:59:17 +02:00
Avram Tudor
6398b4ec89 Merge pull request #9047 from jitsi/tavram/sip-invite-fixes
fix(sip-invite) add minor fixes to sip invite flow
2021-04-22 12:13:45 +03:00
Avram Tudor
d8e5b48aeb Merge pull request #9046 from jitsi/tavram/fix-rec-logo
fix(jaas) fix recorder and sip gateways not detecting vpaas meetings
2021-04-22 11:43:17 +03:00
Jaya Allamsetty
477d94497b fix(audio-share): Show button only when supported by browser.
Show the audio share button only when its supported. For example, mobile browsers do not support getDisplayMedia yet.
2021-04-21 16:50:29 -04:00
Gabriel Imre
d014a52ab3 feat(participants-pane) implement participants pane 2021-04-21 15:48:05 +02:00
Jaya Allamsetty
6efa94541e chore(deps) lib-jitsi-meet@latest
* fix(JingleSession): Increase the ICE candidate gathering timeout to 150ms. This will reduce the numbers of transport-info IQs sent by the client.
* fix(TPC): Fix error handling for getStats.

ca325f5ef9...0dc1540a44
2021-04-20 14:37:06 -04:00
Tudor-Ovidiu Avram
f0f9c02452 fix(sip-invite) add minor fixes to sip invite flow 2021-04-20 16:05:49 +03:00
Avram Tudor
ef4af415a8 Merge pull request #9037 from jitsi/tavram/sip-invite-password
feat(sip-invite) add room password for sip invite requests
2021-04-20 15:36:44 +03:00
Tudor-Ovidiu Avram
c6fd8c2bcb fix(jaas) fix recorder and sip gateways not detecting vpaas meetings 2021-04-20 15:35:36 +03:00
hmuresan
7d1c8da827 fix(aot): fix aot buttons size
- fix aot not being debug-able locally in jitsi-meet-electron app
2021-04-20 15:32:29 +03:00
Saúl Ibarra Corretgé
9e6939d25f fix(ios) detect orientation when screen sharing
Fixes: https://github.com/jitsi/jitsi-meet/issues/9012
2021-04-20 10:23:20 +02:00
tudordan7
c765e08aa1 fix(virtual-background): Check if virtual background is disabled on premeeting. 2021-04-19 11:54:55 -05:00
Jaya Allamsetty
41939d99c8 chore(deps) lib-jitsi-meet@latest
* fix(stats): Use promise-based getStats on all browsers. Get rid of the browser specific keys and use the standard spec-compliant fields for stats. Get the resolution/fps for remote streams from 'inbound-rtp' stats. Use the 'track' stats for the local resolution/fps since these take the active simulcast streams into account.

8b3dc59374...ca325f5ef9
2021-04-19 11:32:10 -04:00
Tudor-Ovidiu Avram
9d0c6e3741 fix(prejoin) fix background selection not being available for 3rd party apps 2021-04-19 09:29:08 -05:00
Andrei Bora
572b99b208 Verify room name using regex in JWT 2021-04-19 07:49:46 -05:00
Tudor-Ovidiu Avram
64ab813b55 feat(sip-invite) add room password for sip invite requests 2021-04-19 15:10:28 +03:00
JohnProv
67ac48cac6 Update main-nl.json (#9017)
* Update main-nl.json

Add missing keys and delete some old keys

* Update main-nl.json

Fix typo

* Update main-nl.json
2021-04-16 17:36:01 -05:00
Saúl Ibarra Corretgé
afbd29f4a2 chore(deps) lib-jitsi-meet@latest
* Implement review changes 4
* Implement review changes 3
* Implement review changes 2
* Implement review changes 1
* feat(HDAudio): Initial implementation.

baa78aca40...8b3dc59374
2021-04-16 13:06:55 +02:00
Mihai-Andrei Uscat
996c9fb064 Implement review changes 3 2021-04-16 12:21:53 +02:00
Mihai-Andrei Uscat
b53ad353cb Implement review changes 2 2021-04-16 12:21:53 +02:00
Mihai-Andrei Uscat
e0da67dff5 Implement review changes 1 2021-04-16 12:21:53 +02:00
Mihai-Andrei Uscat
dcd073b407 feat(HDAudio): Initial implementation. 2021-04-16 12:21:53 +02:00
Jaya Allamsetty
c12c554138 fix(video-layout): Unpin SS when the screensharing participant leaves. 2021-04-15 16:38:25 -04:00
Saúl Ibarra Corretgé
289ba6f764 fix(rn,config) update to new configuration for codec selection 2021-04-15 18:35:47 +02:00
Jaya Allamsetty
59afafdf7c fix(config): Add missing config.js settings.
Add missing enforcePreferredCodec, bitrates for H264 and fix an issue with missing comma.
2021-04-15 11:55:11 -04:00
Avram Tudor
b74c8b5d1f fix(invite) fix mailto links not working on Brave for iOS 2021-04-15 12:52:11 +02:00
Jaya Allamsetty
0aef918c55 chore(deps) lib-jitsi-meet@latest
* fix(SS): Implement a 2500Kbps limit for VP9 SS.
* fix(RTC): Remove stream effect before disposing the track. Remove the effect instead of stopping it so that the original stream is restored on both the local track and on the peerconnection. Fixes issues when a stream with effect applied is replaced on the pc after it is muted, also fixes https://github.com/jitsi/lib-jitsi-meet/issues/1537.
* fix: Drops unused config.

1f3f85978d...baa78aca40
2021-04-14 18:54:33 -04:00
qwertiko GmbH
dc3f64fe7a update main-de.json (#9003)
* language update: main.json and main-de.json

* language update: main-de.json

* language update: main-de.json

* revert changes in main.json and delete same entries in main-de.json

Co-authored-by: qwertiko <gross@qwertiko>
2021-04-14 16:45:53 -05:00
Horatiu Muresan
cbeb7b86cc fix(toolbox): Fix toolbox not auto-hiding. (#9002) 2021-04-14 19:30:19 +02:00
Tudor D. Pop
b1833fddad feat(virtual-background) Virtual background UI changes 2021-04-14 18:26:36 +02:00
Vlad Piersec
1b2f64efb3 fix(icons): CC, invite, user & virtual-background 2021-04-14 18:07:49 +02:00
Jaya Allamsetty
7121b2f1e1 chore(deps) lib-jitsi-meet@latest
* fix(connection-quality): Calculate target bps based on videoQuality settings.

d73723dae6...1f3f85978d
2021-04-14 11:07:38 -04:00
Saúl Ibarra Corretgé
6c4652e3a0 feat(build,ios) add lane to update dSYMs on Crashlytics 2021-04-14 15:24:50 +02:00
Saúl Ibarra Corretgé
a256c6b8e7 fix(ios) use app_store_connect_api_key for Fastlane builds 2021-04-14 15:24:50 +02:00
Andrei Gavrilescu
96e886d306 feat(rtcstats): switch to rtcstats v3 protocol (#8989)
* use new rtcstats clinet

* add room name to identity

* update rtcstats version
2021-04-14 12:32:16 +03:00
damencho
12552766ce chore(deps) lib-jitsi-meet@latest
* Update presence and skip default values (#1536)
* fix: Adds back removed method used by jibri. (#1561)

49c4e75f37...d73723dae6
2021-04-13 17:51:34 -05:00
chipechop
299674508b Update main-it.json
- added a few missing lines
- changed some fragmented phrases, so that they sound fluent, once reunited
- gave coherence to the usage of the persons (I, or you) in some mismatching title and dialog boxes
2021-04-13 12:24:31 -05:00
Avram Tudor
58be0f6914 Merge pull request #8994 from jitsi/tavram/fix-query-params
fix(sip-invite) do not send query params on sip invite request
2021-04-13 13:37:10 +03:00
Tudor-Ovidiu Avram
529b182666 fix(sip-invite) do not send query params on sip invite request 2021-04-13 12:24:19 +03:00
tmoldovan8x8
067ff0729e bugfix(ios): fixes typo on JitsiMeetViewDelegate method 2021-04-12 14:08:53 +03:00
Andrei Gavrilescu
6d3d65da03 feat(screenshare): Audio only screenshare (#8922)
* audio only screen share implementation

* clean up

* handle stop screen share from chrome window

* update icon
2021-04-12 10:37:39 +03:00
Saúl Ibarra Corretgé
fd4819aeca fix(toolbar) restore security button backwards compat
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.
2021-04-09 09:27:10 -05:00
Tudor D. Pop
7ca04ccb0f fix(virtual-background) keep selected state on dialog 2021-04-09 16:25:26 +02:00
Calinteodor
bf3726cb93 feat(rn,security) add security dialog 2021-04-09 14:30:25 +02:00
titus.moldovan
524af5ca67 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/...49c4e75f37cfec5a5bdd921c869b6ec1bff8f9d2
2021-04-09 14:18:39 +02:00
Tudor D. Pop
af28080058 feat(virtual-background) add slight blur option 2021-04-09 14:17:06 +02:00
Jean-François Alarie
927b40ec71 fix(rn,full-screen) make sure immersive mode respects the fullscreen flag 2021-04-09 14:05:16 +02:00
Saúl Ibarra Corretgé
3bbfdb2846 fix(debian) don't include package{-lock}.json files 2021-04-08 17:18:39 -05:00
Nikhil
e38ebc6628 lang:New translation Hindi(hi) (#8968)
* lang:New translation Hindi(hi)

Work in progress. I will update this on the way. I also want to quickly test this out. Thanks

* add new lang Hindi(hi)

* add HIndi(hi)

* Update main-hi.json
2021-04-08 08:59:22 -05:00
Vlad Piersec
62cf3099a7 fix(settings): Make language dropdown wider 2021-04-08 07:10:11 -05:00
Vlad Piersec
b135e2a06a feat(Labels): Redesign labels on mobile & web 2021-04-08 11:57:15 +02:00
Saúl Ibarra Corretgé
7656985fe1 chore(rn,versions) bump SDK and apps versions 2021-04-08 10:44:33 +02:00
Avram Tudor
5599454ea9 Merge pull request #8962 from jitsi/tavram/sip-invite-auth
fix(sip-invite) fix sip invite jwt not being sent correctly
2021-04-08 10:24:06 +03:00
Mejans
807a5ab893 Adds Farsi and Portuguese 2021-04-07 16:56:33 -05:00
damencho
c4766125bb feat: Adds an option to preset in localstorage key for locked rooms.
This feature will be used by sip-jibri to join locked rooms.
2021-04-07 11:07:04 -05:00
Emil Ivov
ba41745d1e Merge pull request #8965 from jitsi/saghul-patch-10 2021-04-07 10:40:33 -05:00
Saúl Ibarra Corretgé
8eed42c273 fix(virtual-backgrounds) add segmentation model license information
Fixes: https://github.com/jitsi/jitsi-meet/issues/8792
2021-04-07 17:15:17 +02:00
tmoldovan8x8
e803e8cfd9 feat(ios): adds ios screensharing enabled flag 2021-04-07 16:28:26 +03:00
Tudor-Ovidiu Avram
86dd35b927 code review changes 2021-04-07 15:46:01 +03:00
Tudor-Ovidiu Avram
32ecd6310c fix(sip-invite) fix sip invite jwt not being sent correctly 2021-04-07 15:37:17 +03:00
tudordan7
e5277deed5 chore(deps) lib-jitsi-meet@latest
* fix(rtc) Fix setting effects while not in a conference.

3cd9d31b97...cd53f249c5
2021-04-07 13:12:36 +02:00
Tudor D. Pop
8b315846b9 feat(premeeting-screen) add virtual background functionality 2021-04-07 11:29:54 +02:00
Jaya Allamsetty
c687f41a89 chore(deps) lib-jitsi-meet@latest
* feat(RTC): Signal video type and availability to bridge.

dddbab99f1...3cd9d31b97
2021-04-06 17:46:04 -04:00
Jonathan Lennox
31c0ba4481 Load-test: emulate jitsi-meet stage view behavior, if selected. (#8957) 2021-04-06 16:31:26 -04:00
Calinteodor
fc3a743372 fix(ios) keyboard no longer covers message board and input 2021-04-06 12:07:24 +02:00
damencho
8b038716a5 chore(deps) lib-jitsi-meet@latest
* fix: Fixes error for undefined error, on happening on p2p kick.

2e598a4bda...dddbab99f1
2021-04-05 16:49:58 -05:00
Jonathan Lennox
9662b2ae67 Load test: send video constraints only after ICE is connected. (#8952) 2021-04-05 17:17:25 -04:00
Jonathan Lennox
6275439a91 Load-test: Fix getId call. (#8941) 2021-04-05 12:03:54 -04:00
Vlad Piersec
d9693117f2 fix(Toolbar, rn): Button overflow in landscape orientation 2021-04-05 13:54:44 +03:00
Jaya Allamsetty
21382ea6d5 chore(deps) lib-jitsi-meet@latest
* Get rid of stats debug message, fix typo with codec type.
* fix(receiveVideoController): Do a deep copy of constraints for comparsion.
* fix(codec-selection): Fix codec selection for unified plan browsers.

93af5ada95...2e598a4bda
2021-04-02 16:18:44 -04:00
JohnProv
6df67694d1 Update main-nl.json (#8938)
Remove keys in main-nl but not in main.
2021-04-02 12:01:32 -05:00
JohnProv
08756bc6d0 Update main-nl.json (#8937)
* Update main-nl.json

Add some translated keys.

* Update main-nl.json

Fix

* Update main-nl.json

Fix typo

* Update main-nl.json

Fix
2021-04-02 11:25:23 -05:00
Mihai-Andrei Uscat
1b1d650b75 fix(MoreTab): Fix languages not being scrollable on mobile 2021-04-02 13:38:02 +03:00
Jaya Allamsetty
b1eff72394 chore(deps) lib-jitsi-meet@latest
* fix(receiveVideoController): Do not send redundant video constraints to the bridge.
* feat(stats): Add a new bridge message "EndpointStats" for stats. Use the new Colibri message "EndpointStats" for broadcasting the local stats. The bridge then will be able to filter the endpoint stats and send them only to the interested parties instead of broadcasting it to all the endpoints in the call.
* Test RTCRtpReceiver.getCapabilities before using

2b94da12e8...93af5ada95
2021-04-01 10:44:22 -04:00
Jonathan Lennox
357bbd1158 Load test: emulate Jitsi-Meet's lastN and selectParticipant behavior. (#8926) 2021-04-01 10:30:23 -04:00
Arnaud (Martient) Leherpeur
0ca47e9ffb fix (lang): update french and canadian french i18n
change "cryptage" to "chiffrement"
2021-04-01 08:29:12 -05:00
Дамян Минков
1123b4f2fe fix: Adds Portuguese to listed languages 2021-04-01 08:27:49 -05:00
tmoldovan8x8
1224597ede feat(e2ee): auto turns on e2ee when one participant enabled it 2021-04-01 12:34:01 +03:00
Avram Tudor
58b7663a97 Merge pull request #8866 from jitsi/tavram/sip-invite
feat(sipcall) implement sip invite
2021-04-01 11:39:31 +03:00
Christoph Settgast
cf8ab5e13b fix(lang) Differentiate prejoin and lobby better in German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2021-03-31 15:46:05 -05:00
Tudor-Ovidiu Avram
f99c919416 code review changes 2021-03-31 15:51:53 +03:00
Tudor-Ovidiu Avram
ae21a09bd6 feat(sipcall) implement sip invite 2021-03-31 09:53:55 +03:00
Tudor D. Pop
39011d8fd3 feat(virtual-background) persist settings 2021-03-30 23:27:44 +02:00
Johnny998
77f1a24344 Update main-sk.json
Translated a few missing strings.
2021-03-30 08:41:32 -05:00
tudordan7
3453e49182 fix(virtual-background): Hide scrollbar on loading action. 2021-03-30 13:43:57 +02:00
tmoldovan8x8
b1d7debfb9 feat(e2ee): adds sounds for e2ee enabling/disabling 2021-03-30 12:59:32 +03:00
Дамян Минков
b826fc1d5a fix: Correct some missing comas in config.js. 2021-03-30 08:51:43 +02:00
Jaya Allamsetty
c5626e99e9 chore(deps) lib-jitsi-meet@latest
* feat(stats): Get audio levels for the top 5 speakers only.

1249681a0e...43c589f409
2021-03-29 17:21:46 -04:00
Christoph Wiechert
ae28fcc12f Fix: used deprecated onmousewheel event
https://developer.mozilla.org/en-US/docs/Web/API/Element/mousewheel_event
2021-03-29 10:53:13 -05:00
chipechop
987760abbd Update main-it.json (#8795)
* Update main-it.json

Added roughly 20 missinig lines

* Update main-it.json

Fixed two typos, left behind...
2021-03-29 10:53:02 -05:00
KyungheeKo
a3b364f8d7 lang: Update korean translation (#8879)
* Update main-ko.json

update korean translation

* Update main-ko.json

fix comma error

* Update languages-ko.json

add korean translation
2021-03-29 10:52:50 -05:00
JohnProv
2ea317d721 Update main-nl.json (#8891)
* Update main-nl.json

Add missing keys for virtualBackground

* Update main-nl.json
2021-03-29 10:52:22 -05:00
Vlad Piersec
eb41a306a6 fix(lobby): Knocking participants list for small widths 2021-03-29 09:47:11 -05:00
Vlad Piersec
3426290bf2 fix(captions): Lift captions upper when invite box is shown & fix icon 2021-03-29 09:09:21 -05:00
Tudor D. Pop
dfd33521bf fix(virtual-background): Fixes upload virtual background on Firefox
Fixes: #8892
2021-03-29 14:28:22 +02:00
Hristo Terezov
be3bc75403 chore(deps) lib-jitsi-meet@latest
* fix(caps): features update event is not emitted.

0e180efdfa...1249681a0e
2021-03-26 17:43:54 -05:00
Jaya Allamsetty
4621fad832 fix(large-video): Always pin screenshare to large-video if it exists.
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.
2021-03-26 09:14:03 -04:00
tmoldovan8x8
e4b34e1c89 feat(rn): makes InputDialog textInput autoFocus 2021-03-26 10:51:47 +02:00
damencho
0067f6b077 fix: Fixes lobby when allowners is enabled. 2021-03-25 15:20:49 -06:00
JohnProv
989044b3a9 fix(lang) update Dutch translation 2021-03-25 17:43:52 +01:00
Mihai-Andrei Uscat
a78ca5fcad feat(external_api): Add command for toggling localFlipX 2021-03-25 14:57:41 +02:00
Mihai-Andrei Uscat
1ad40de487 feat(external_api): Add command for toggling camera on mobile web 2021-03-25 13:48:49 +02:00
ggalperi
2c9078985f fix(lang) fix typo in Russian translation
Fixed typo
2021-03-24 15:59:45 -06:00
Tudor D. Pop
77ee4b13e1 feat(virtual-backgrounds) add ability to upload custom images 2021-03-24 17:32:45 +01:00
Jaya Allamsetty
a3a2ce3875 feat(rn,polyfill): Add a polyfill for Promise.allSettled.
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>
2021-03-24 11:59:52 -04:00
Saúl Ibarra Corretgé
e0c77dcd95 feat(tile-view) allow to toggle tile view while alone 2021-03-24 16:43:50 +01:00
Calinteodor
e035d33fa9 feat(authentication) refactor auth dialogs to use React 2021-03-24 15:09:40 +01:00
Kylian Kropf
11202595bd fix(lang) update Dutch translation 2021-03-24 11:16:32 +01:00
Jaya Allamsetty
415670e24b chore(deps) lib-jitsi-meet@latest
* fix(TPC): get ssrc info per ssrc and not per mline.
* feat: Consider absence of A/V muted from presence as muted.
* Feature: Moderator can revoke moderator role to others and himself (#1532)

4191198233...0e180efdfa
2021-03-23 18:11:23 -04:00
Izak Glasenčnik
05f3b4390d feat(iFrame): Emit event when recording status changes, including errors (#7973)
* feat(iFrame): Emit event when recording status changes, including errors

* Fix APP access on mobile
2021-03-23 11:35:46 -05:00
Saúl Ibarra Corretgé
cff0a619f5 fix(interfaceConfig) mark as deprecated 2021-03-23 16:59:46 +01:00
hmuresan
f7c0d4f1fe feat(background alpha) Set background transparency 2021-03-23 16:16:56 +02:00
TigiBoom
8fccb05519 fix(lang) fix typo in Russian translation 2021-03-23 14:47:25 +01:00
Vlad Piersec
b4155ab6d2 fix(toolbox): Add missing lang key for video settings 2021-03-23 15:38:15 +02:00
tmoldovan8x8
a1d3870634 feat(external_api): add videoMuted event and action (#8862) 2021-03-23 15:30:17 +02:00
hmuresan
07f16a7a51 feat (external-api) Add command for setting tile view mode 2021-03-23 15:21:57 +02:00
Vlad Piersec
0e7bde2ff0 fix(overflow-menu): Don't change state on hover for disabled items 2021-03-23 14:30:52 +02:00
Vlad Piersec
e9d00acad8 fix(menu): Pop menu icons & background 2021-03-23 14:18:22 +02:00
Mihai-Andrei Uscat
911aaed052 fix: Refactor client width computation.
* Unify chat open/close size changes and move them to redux.
* Fix responsive columns not accounting for chat.
2021-03-23 14:06:43 +02:00
Vlad Piersec
5fd9dc74e4 fix(welcome): Align meeting list at the top when no footer 2021-03-23 14:03:54 +02:00
Vlad Piersec
eb68467e15 fix(rn, toolbox): Change button appearing order 2021-03-23 10:14:54 +02:00
Jaya Allamsetty
6a5d6afc94 chore(deps) lib-jitsi-meet@latest
* fix(JingleSession): Avoid renegotiation when user with no sources leaves the call.
* feat: participant kick reason add
* ref(RTC): remove legacy pc constraints. Stop using the legacy pc constraints that are no longer wired up to WebRTC.
* fix(deps) update webrtc-adapter to v7.7.1

087a8e19eb...4191198233
2021-03-22 19:25:02 -04:00
Дамян Минков
2a9b6a7d28 fix(load-test): Fixes unmuting loadtest client. (#8849)
* fix(load-test): Fixes unmuting loadtest client.

Fixes the case where audio track was not added due to jicofo muting clients.

* squash(load-test): Drop noAutoLocalAudio and change add track logic.

Trying to mimic jitsi-meet.

* squash(load-test): Fix adding video.
2021-03-22 14:39:57 -05:00
adam j hartz
67beafc9af add option for disabling join/leave sounds (#8596)
* add option for disabling join/leave sounds

* document disableJoinLeaveSounds and add it to whitelist
2021-03-22 11:28:34 -05:00
BenjaminVega
6175a5cad5 Be able to toggle the raise-hand via external-api (#8838)
* Be able to toggle the raise-hand via external_api

* Code Review inputs
2021-03-22 11:22:45 -05:00
Vlad Piersec
678f3e232b fix(toolbar): Re-add "mute everyone's video" button 2021-03-22 15:25:30 +02:00
Jake Breen
f3c1b8ac08 fix(android) apply flags when launching activity from non-activity context
Check whether context is that of an Activity before launching the Jitsi Conference Activity. If context is not an activity context, apply flag FLAG_ACTIVITY_NEW_TASK to the Jitsi Activity Intent to ensure activity can launch without error.

This scenario would manifest when a user attempts to launch the Jitsi Actvity from a Widget... for example.

https://developer.android.com/about/versions/pie/android-9.0-changes-all#fant-required
2021-03-22 12:59:43 +01:00
John Wu
f225ce886f fix(chore) fix typo 2021-03-22 11:21:48 +01:00
dependabot[bot]
6a4417c6cc chore(deps): bump ini from 1.3.5 to 1.3.7
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-22 11:03:23 +01:00
Дамян Минков
6b66c8dd20 fix(config, docs) document feedbackPercentage 2021-03-22 10:56:26 +01:00
luz paz
d3680bbebd fix(misc) follow-up typos
Found via `codespell -q 3 -S ./lang`
2021-03-22 10:41:41 +01:00
dependabot[bot]
7933d4b4d6 chore(deps): bump xmldom from 0.1.27 to 0.5.0
Bumps [xmldom](https://github.com/xmldom/xmldom) from 0.1.27 to 0.5.0.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xmldom/xmldom/compare/v0.1.27...0.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-22 10:36:43 +01:00
Vlad Piersec
e7297714c6 feat(toolbox): Adaptive toolbar on mobile 2021-03-22 11:26:00 +02:00
Saúl Ibarra Corretgé
8da154b185 fix(android) remove leftover package 2021-03-19 12:58:47 +01:00
Saúl Ibarra Corretgé
3c94a5ccfd feat(rn,ui) update in-meeting colors 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
78d4af6bf2 feat(rn,conference) new UI for conference name duration 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
33fc3833f9 fix(rn,labels) don't add extra margin in tile view
There is no need to skip the filmstrip, since it's not there.
2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
b179542c39 fix(rn,labels) top-align with room name field 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
49c38a73aa fix(filmstrip) make sure it's not rendered outside of a safe area 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
fc27300132 fix(rn,filmstrip) simplify thumbnail height calculations 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
57ecdff9eb fix(rn,conference) remove no longer needed margin
We are using a safe area view now.
2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
effa878fa4 fix(rn,filmstrip) simplify visibility calculation 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
9d4e49a5af fix(rn,toolbox) fill gap underneath Toolbox
This is for devices without the home button.
2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
6b4d25c0d3 fix(rn,ui) move top labels to navbar component 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
2f5ab2757f feat(rn,ui) get rid of the gradients 2021-03-19 11:32:00 +01:00
Saúl Ibarra Corretgé
bde26c4fbb fix(icons) never specify fill 2021-03-19 11:32:00 +01:00
trippledave
68c2c9be40 feat(flags) add feature flag for audio-only button 2021-03-19 08:17:37 +01:00
Jaya Allamsetty
5b21051c6b fix(startMuted): Fix unmute on mobile when it is muted by Jicofo on join. 2021-03-18 15:23:54 -04:00
hmuresan
8806269af0 * chore(deps) lib-jitsi-meet@latest
5796d83bb1...087a8e19eb
2021-03-18 19:34:44 +01:00
hmuresan
3a8bd852b2 feat(jwt) log jwt validation errors 2021-03-18 16:58:54 +02:00
Hristo Terezov
f50872285d ref(Filmstrip): Use Thumbnail component. 2021-03-18 09:37:55 -05:00
Jaya Allamsetty
e937e99284 chore(deps) lib-jitsi-meet@latest
* squash: Use different function syntax.
* squash: Fix lint errors.
* Process stats immediately before setting the interval.
* feat(ReceiveVideoController): Add the ability to send constraints in the new format. Add the ability to send the bridge messages for the receiver video constraints in the new format directly.

676c7a9105...5796d83bb1
2021-03-18 10:25:29 -04:00
Mihai-Andrei Uscat
3972e076f0 fix(Chat): Fix modals displaying improperly due to chat.
* Adjust chat font size.
* Adjust invite more button and text size.
* Remove useless constant.
2021-03-18 15:56:20 +02:00
Jonathan Lennox
81cf79e643 In loadtest, make localAudio non-const. (#8829)
(Because we modify it.)
2021-03-18 09:39:13 -04:00
Mihai-Andrei Uscat
a22d054b10 feat(InviteMore): Relocate invite prompt for mobile friendliness. 2021-03-18 14:09:22 +02:00
Vlad Piersec
7fce181080 feat(config): Add config option to allow unsetting local video flip 2021-03-18 09:35:42 +02:00
Vlad Piersec
92735478d1 fix(toolbox): Fix overflow menu & button background 2021-03-18 09:16:43 +02:00
Mihai-Andrei Uscat
7dabfc21b4 feat(Chat): Revamp design.
* ensure keyboard stays open when sending messages on mobile web.
2021-03-18 09:08:34 +02:00
Saúl Ibarra Corretgé
1395f84550 fix(virtual-background) fix tainted canvas when using the CDN
When we use a CDN the images come from an origin different than the site so
unless we mark them for CORS the canvas where they are painted will be tainted.

Ref: https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image
2021-03-17 16:32:16 +01:00
Vlad Piersec
d080460f9b fix(toolbox): Fix mic disabled icon 2021-03-17 15:23:45 +02:00
tmoldovan8x8
61567f47c0 fix(android) changes the property name for the manifestOutputDirectory 2021-03-17 14:19:43 +01:00
Avram Tudor
4f3058eae2 Merge pull request #8823 from jitsi/tavram/hide-support
fix(jaas) hide support link in invite error for jaas users
2021-03-17 15:16:32 +02:00
Tudor-Ovidiu Avram
3a073d9af4 fix(jaas) hide support link in invite error for jaas users 2021-03-17 11:53:58 +02:00
Mihai-Andrei Uscat
aef0287605 feat(ToggleCamera): Implement for web. 2021-03-17 10:44:18 +02:00
Vlad Piersec
bb19567efa fix(prejoin): Use localFlipX on prejoin screen 2021-03-17 09:19:55 +01:00
Saúl Ibarra Corretgé
79ab973694 chore(deps) update react-native-webrtc
Fix script for downloading bitcode.
2021-03-16 22:09:21 +01:00
Saúl Ibarra Corretgé
7046785ca3 chore(deps) update react-native-webrtc to 1.89.1 2021-03-16 19:57:26 +01:00
Saúl Ibarra Corretgé
b817bd19d5 chore(deps) bump js-utils to 1.0.6
Fixes a harmless but confusing error in postis processing when using the
Bitwarden Chrome extension, for example.
2021-03-16 19:57:03 +01:00
luz paz
817d54b0b9 fix(misc) typos
Found via `codespell -q 3 -S ./lang`
2021-03-16 16:12:12 +01:00
Vlad Piersec
3f0bb6818c fix(toolbox): Fix always on top toolbar 2021-03-16 16:07:49 +01:00
Saúl Ibarra Corretgé
4fa47c8070 fix(virtual-background) use a DOM element for storing the image
THis will reuse the previously cached image and obey the base href.

Ref:
https://stackoverflow.com/questions/6241716/is-there-a-difference-between-new-image-and-document-createelementimg
2021-03-16 11:27:27 +01:00
Saúl Ibarra Corretgé
0dcb8a025b fix(rn,bottomsheet) limit width 2021-03-16 11:19:52 +01:00
tmoldovan8x8
8defaa9aec feat(android): adds timer to OngoingNotification 2021-03-16 12:13:37 +02:00
Vlad Piersec
d214079148 fix(toolbox): Constrain toolbox width on large mobile device 2021-03-16 09:50:49 +01:00
Vlad Piersec
096ee3cb53 fix(toolbox): Background of disabled settings button & tileview button 2021-03-16 09:20:02 +01:00
Vlad Piersec
fd606896b8 fix(toolbox): Fix buttons size in minified mode 2021-03-16 09:32:36 +02:00
Jonathan Lennox
226581a81a Add muteAudio function to load test JS. (#8802) 2021-03-15 15:37:58 -04:00
Avram Tudor
e1c5b1e626 Merge pull request #8799 from jitsi/tavram/billing-id
fix(vpaas) send jitsiMeetId instead of billingId
2021-03-15 15:54:57 +02:00
Tudor-Ovidiu Avram
831c5ba59d fix(vpaas) send jitsiMeetId instead of billingId 2021-03-15 13:22:17 +02:00
Andrei Gavrilescu
bad1bc91cf fix(screenshare): audio screen share muted state (#8785)
* AudioMixerEffect muted state

* update lib-jitsi-meet
2021-03-15 11:44:03 +02:00
Saúl Ibarra Corretgé
30d0aabaca feat(build,rnnoise) don't use an external bundle for the effect
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.
2021-03-12 23:00:50 +01:00
Saúl Ibarra Corretgé
22b6d32174 feat(build,virtual-background) don't use an external bundle for the effect
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.
2021-03-12 23:00:50 +01:00
Saúl Ibarra Corretgé
31ace267ce fix(virtual-background) use tighter edge smoothing 2021-03-12 15:05:20 +01:00
tudordan7
194d357005 feat(virtual-backgrounds) add virtual background support 2021-03-12 15:05:20 +01:00
Vlad Piersec
c2ad06c5e6 fix(toolbox): Restructure items order for desktop & mobile 2021-03-12 15:19:23 +02:00
Vlad Piersec
e40b02ab3c fix(icons): No hardcoded colors for some svgs 2021-03-12 11:29:20 +02:00
titus.moldovan
2587eefefc fix(chat) hides send private chat button when enable.chat flag is false. 2021-03-12 09:19:31 +01:00
Vlad Piersec
b87c433e99 fix(toolbar): Update overflow menu according to review 2021-03-11 15:49:00 +02:00
tmoldovan8x8
751644db16 makes disableAudioFocus flag generic, so it can be used also from iOS 2021-03-11 15:13:24 +02:00
Vlad Piersec
c508572cc5 feat(toolbox): Redesign mobile toolbox 2021-03-11 12:38:37 +01:00
Vlad Piersec
b86c271a80 fix(toolbar): Small changes according to design review 2021-03-11 11:57:17 +01:00
Hristo Terezov
5efbe5f0ec chore(deps) lib-jitsi-meet@latest
* fix(modificationQueue): error handling & logs
* feat(dominantSpeaker): Add previous speaker list.

e60f09b189...0ec072378c
2021-03-10 17:30:06 -06:00
Jaya Allamsetty
2784c43a1b fix(UI): Add playsinline attribute for remote video.
For the video to play on Safari mobile browser, the playsInline attribute needs to be set to true. Set the mute attribute as well which was accidentally removed in code refactor.
2021-03-10 18:05:41 -05:00
Hristo Terezov
f5a34183e9 fix(useVideoStream): error handling & add logs. 2021-03-10 17:02:29 -06:00
Hristo Terezov
29f5d87d77 fix(prejoin): Don't overwrite display name with '' 2021-03-10 15:10:41 -06:00
hmuresan
ab6790bdaa (external_api) Add command for overwriting config values. 2021-03-10 18:30:14 +02:00
damencho
2e308d67d8 feat: Fixes filtering not needed presences.
We were filtering only self presences, no it filters and the presences to the other participants.
2021-03-09 16:19:43 -06:00
Vlad Piersec
91ba835f78 feat(Toolbar): Redesign web toolbar 2021-03-09 16:29:44 +02:00
dependabot[bot]
2643029ac8 chore(deps): bump elliptic from 6.5.3 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-09 14:19:38 +01:00
Saúl Ibarra Corretgé
e40e078a29 fix(ios,build) make sure the correct broadcast extension ID is set 2021-03-09 10:33:04 +01:00
Saúl Ibarra Corretgé
6df5a4cf31 fix(ios) make sure broadcast extension version matches
Fixes this Apple Store Connect warning:

~~~
ITMS-90473: CFBundleShortVersionString Mismatch - The CFBundleShortVersionString
value '1.0' of extension 'jitsi-meet.app/PlugIns/JitsiMeetBroadcast
Extension.appex' does not match the CFBundleShortVersionString value '21.0.0' of
its containing iOS application 'jitsi-meet.app'.
~~~
2021-03-09 10:33:04 +01:00
Saúl Ibarra Corretgé
c7c7d7a155 fix(ios) move extension to a path without spaces 2021-03-09 10:33:04 +01:00
Hristo Terezov
8f06866646 feat(config): Add useHostPageLocalStorage 2021-03-08 16:26:42 -06:00
damencho
b559cb8ec6 feat: Move checks for moderator in pre-join and filter extra presences.
We will filter the initial presence where participant is announced as `participant` and shortly after that we send a second presence with the new `moderator` role.
2021-03-08 16:01:32 -06:00
damencho
30a2e84da1 fix: Fixes filtering lobby presences. 2021-03-08 16:01:32 -06:00
Saúl Ibarra Corretgé
3122983000 fix(config) fix syntax error in commented code 2021-03-08 15:34:19 -06:00
Jean-François Alarie
407021e258 feat(rn,flags) add fullscreen.enabled flag 2021-03-08 22:11:39 +01:00
Jaya Allamsetty
1a62a7b1cc chore(deps) lib-jitsi-meet@latest
* feat(browser-support): Add support for WKWebview based browsers. Apple added getUserMedia support for WkWebview based browsers like chrome and Firefox on iOS 14.3. These browsers behave as Safari does on iOS. Therefore, extend the Safari checks to these webkit based browsers as well.

08ce96d881...e60f09b189
2021-03-08 12:12:31 -05:00
Jaya Allamsetty
0ee03f1538 feat(browser-support): Add support for WKWebview based browsers. 2021-03-08 11:16:02 -05:00
Jaya Allamsetty
572beb8382 chore(deps) lib-jitsi-meet@latest
* squash: Always get lastN value from JitsiConference instance.
* fix(lastN): Return the correct lastN value for the conference.
* Use unified plan for mobile browsers on iOS

d31b5a2d5e...08ce96d881
2021-03-08 10:26:14 -05:00
Mihai-Andrei Uscat
d0d32b8a19 fix(responsive): Fix tiles not recomputing when jumping between screen sizes 2021-03-05 12:35:09 -06:00
Saúl Ibarra Corretgé
82ff988c18 fix(ios) the broadcast extension'd bundle ID must match the app's 2021-03-05 18:02:48 +01:00
Jaya Allamsetty
8fa5d09612 chore(deps) lib-jitsi-meet@latest
* fix(conference): Do not signal muted tracks on join. Do not add the muted audio/video tracks to the peerconnection on join. The tracks will be added when the user unmutes for the first time. This reduces the number of remote sources that will be added when a participant joins a large call where everyone joins muted (startAudioMuted/startVideoMuted setting).

e83fb93d2d...d31b5a2d5e
2021-03-05 10:42:05 -05:00
Alex Bumbu
508f1e0da9 feat(iOS): screensharing support
The Jitsi team would like to thank @AliKarpuzoglu, @linuxpi and The Hopp Foundation for the initial effort and help throughout.
2021-03-05 16:33:53 +01:00
Jaya Allamsetty
dcda89012e fix(tracks): Do not signal muted audio tracks.
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.
2021-03-05 10:18:34 -05:00
Saúl Ibarra Corretgé
d93a402cc2 fix(rn,tracks) fix not showing alert when permission is not granted
The error object changed its shape through time, adapt to the change.
2021-03-05 12:59:13 +01:00
Saúl Ibarra Corretgé
b7b260f4c9 feat(ci) fail CI if package-lock wasn't updated 2021-03-05 11:13:49 +01:00
Saúl Ibarra Corretgé
4db3f04c0c fix(deps) sync package-lock 2021-03-05 11:13:49 +01:00
Дамян Минков
126a2bd0d7 chore(deps): Checks presence editing and make sure we send only on change.
* fix: Checks presence editing and make sure we send only on change.

f1ec966780...e83fb93d2d
2021-03-04 16:52:24 -06:00
gpatel-fr
29bbcf8590 handles spaces around hostname
((users doubleclick a host name and paste result in the installer)
2021-03-04 11:39:05 -06:00
Saúl Ibarra Corretgé
5c46b03251 fix(copyText) use a helper library
It does a more elaborate way of textarea copying, hopefully it's more reliable.
2021-03-04 10:03:51 -06:00
るしふぁ
eeb5abbbe8 fix: date util localization (#8723)
* 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
2021-03-04 08:20:27 -06:00
roms2000
49583b611c Update main-fr.json
Add missing translation.
Improve French language / French styling.
Fix typos.
2021-03-03 21:22:52 -06:00
Hristo Terezov
9e29dd063f fix(live-stream-section): Use await for copyText 2021-03-03 16:26:36 -06:00
Hristo Terezov
a2e2d31dfd fix(copyText): in iframe for chrome<85 2021-03-03 16:12:59 -06:00
Óscar Carretero
62c06441b1 Normalize language format 2021-03-03 15:14:34 -06:00
Niklas
f718a3e050 lang: Update main-da.json (#8642)
* Update main-da.json

* Apply suggestions from code review

Co-authored-by: jokjr <69192941+jokjr@users.noreply.github.com>

* Update main-da.json

* Apply suggestions from code review

Co-authored-by: jokjr <69192941+jokjr@users.noreply.github.com>

Co-authored-by: jokjr <69192941+jokjr@users.noreply.github.com>
2021-03-03 14:44:31 -06:00
Steffen Kolmer
899968d3a9 feat: Only show more numbers link if multiple numbers are available (#8702)
* 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
2021-03-03 08:45:26 -06:00
Matthias Nagel
696f509f18 Corrected example config for Apache
- dropped uneccessary rewrite rule
 - corrected number of trailing slashs in proxy directive
 - corrected url for colibri websocket
2021-03-03 08:43:32 -06:00
Calinteodor
430591bd1e feat(shared-video) refactor dialog to use React
Also unify the mobile and web features into one, even though internally they still have separate ways to enable the functionality.
2021-03-03 15:37:38 +01:00
dimitardelchev93
8ee324b37f Add missing translation in main-de.json (#8664) 2021-03-03 08:16:16 -06:00
tmoldovan8x8
399d6b6a4b chore(version) bumps mobile sdkVersion to 3.2.0 2021-03-02 15:21:20 +01:00
Saúl Ibarra Corretgé
ffad21cb59 fix(ios) sync podfile 2021-03-02 10:31:47 +01:00
Steffen Kolmer
ce6debac45 Revert changes dial in numbers link 2021-02-26 23:30:57 -06:00
Steffen Kolmer
5d8bf0c1e7 feat: Add a new setting to remove individual sharing features from UI (#8660)
* 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
2021-02-26 19:50:26 -06:00
Steffen Kolmer
7bbd06c9f4 Use logger instead of console 2021-02-26 19:50:02 -06:00
Hristo Terezov
79a67049a9 chore(deps) lib-jitsi-meet@latest
* fix(RTCUtils): Init availableDevices.

e6ef4e7ae9...f1ec966780
2021-02-26 17:59:11 -06:00
Hristo Terezov
b1a3c5cd7b feat(external_api): allow clipboard-write 2021-02-26 15:05:45 -06:00
Hristo Terezov
9573a615b1 chore(deps) lib-jitsi-meet@latest
* fix(RTC) fix device selection not being available
* fix(TPCUtils): undefined is not an object (evaluating 'this.tpcUtils.replaceTrack(e,t).then')

4c668023b3...e6ef4e7ae9
2021-02-26 12:48:23 -06:00
Jaya Allamsetty
5d09102e48 chore(deps) lib-jitsi-meet@latest
* fix(TPC): Remove the existing track instead of overwriting. When a second remote track of the same mediatype is received for an endpoint, remove the existing track before creating the new remote track.

9beb47fe5f...4c668023b3
2021-02-26 10:24:48 -05:00
Tudor D. Pop
cc0ecc1fdd fix(blur) disable blur button if camera is off 2021-02-26 16:03:51 +01:00
Saúl Ibarra Corretgé
cecf324023 fix(deps) bump lodash
Fixes: https://github.com/jitsi/jitsi-meet/issues/8683
2021-02-25 16:16:18 +01:00
Saúl Ibarra Corretgé
943d5dca35 chore(deps) remove Tensorflow
We use TFLite now so this is unused.
2021-02-25 14:14:28 +01:00
Tudor D. Pop
dd1f8339b1 fix(blur-effect) enable blur effect on all platforms supporting canvas filters
That means all browsers except Safari, for now.

In addition, use the 96p model (instead of the 144p one) on browsers without SIMD support.
2021-02-25 13:21:03 +01:00
tudordan7
159f59b665 fix(lint-run-command) 2021-02-25 11:24:03 +01:00
Steffen Kolmer
23bb824731 feat: Added mute video moderation feature (#8630)
* Added mute video feature

* Fixed export

* Fixed some issues

* Added remote video mute notification

* Fixed import

* Fixed conference event handling

* Fixed some linting issues

* Fixed more linter errors

* turn screenshare off on remote video mute

* Fix linter issue

* translations added for mute video feature

* Added video mute button to interface config

* Updated lib-jitsi-meet

* Fix copy paste error

Co-authored-by: nurjinn jafar <nurjin.jafar@nordeck.net>
2021-02-24 15:45:07 -06:00
Saúl Ibarra Corretgé
42d926eef3 chore(deps) lib-jitsi-meet@latest
* fix(e2ee) fix disabling E2EE
* fix(e2ee) fix key index after ratchetting
* fix: Drop caps handling (#1495)
* fix(SendVideoController): Apply the sender constraint only when it changes. There were cases where the bridge was sending the same constraint multiple times causing redundant calls to getParameters/setParameters on the RTCRtpSender.
* feat: Use the new bridge signaling format.
* fix(gum) update permissions prompt detection

c534f74884...6a7b16c33e
2021-02-24 18:17:09 +01:00
Calinteodor
87a110b9c3 fix: improved copy text helper function (#8677) 2021-02-24 09:12:41 -06:00
Mihai-Andrei Uscat
a7db7ecaff fix(LargeVideo): Fix large video not resizing when closing chat. 2021-02-24 14:26:00 +02:00
horymury
79bb98dab3 (feature) - Add support for custom DID numbers page url 2021-02-24 11:37:14 +02:00
Gabriel Imre
d22792c9e3 feat(sip): Added auto-knocking for sip gateway if lobby is enabled
Co-authored-by: Gabriel Imre <gabriel.lucaci@8x8.com>
2021-02-24 11:35:32 +02:00
Avram Tudor
41e6af3464 Merge pull request #8120 from jitsi/tavram/slowgum
fix(gum) add event handling for SLOW_GET_USER_MEDIA
2021-02-23 14:45:36 +02:00
Tudor-Ovidiu Avram
f50fd7b7bd fix(gum) add event handling for SLOW_GET_USER_MEDIA
Show an overlay with a spinner when slow gUM is fired
2021-02-23 13:51:24 +02:00
Mihai-Andrei Uscat
43761fc398 feat(Chat) Improve responsive behaviour further.
* 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.
2021-02-23 09:39:20 +02:00
damencho
4c39d83ff1 feat(load-test): Fixes audio senders. 2021-02-22 17:48:19 -06:00
Jaya Allamsetty
e525c2b2ec chore(deps) lib-jitsi-meet@latest
* fix(SendVideoController): Apply the sender constraint only when it changes. There were cases where the bridge was sending the same constraint multiple times causing redundant calls to getParameters/setParameters on the RTCRtpSender.
* fix(gum) update permissions prompt detection

beaff3dd02...7f919faacc
2021-02-19 12:04:25 -05:00
Tudor D. Pop
f69a31d9c6 fix(blur) check model response status and catch errors 2021-02-19 15:00:07 +01:00
tmoldovan8x8
67930edae2 chore(ios) remove warnings on JitsiMeetView 2021-02-19 10:40:45 +02:00
Jaya Allamsetty
c11a94f7d7 feat: Add 'useNewBandwidthAllocationStrategy' to config.js. 2021-02-18 14:30:39 -05:00
Jaya Allamsetty
bfd093b0ba chore(deps) lib-jitsi-meet@latest
* feat: Use the new bridge signaling format.

c534f74884...beaff3dd02
2021-02-18 14:30:39 -05:00
Saúl Ibarra Corretgé
861935c9d7 fix(blur) fix model paths 2021-02-18 15:57:01 +01:00
Дамян Минков
8fcaea9e3d feat(load-test): Load test startmuted (#8629)
* feat(load-test): Senders unmute themselves if muted by policy.

* feat(load-test): Adds option to skip creating local audio track.

We currently create local audio track even when starting audio muted. Adding the option to control that can load test that for clients or signalling.
2021-02-17 10:28:01 -06:00
Pawel Domas
e0aab11f98 fix: TypeError: Cannot read property 'isAudioTrack' of undefined
When there's no jitsiTrack set on the base/tracks entry it means
a track is being created (get user media is in progress).
2021-02-17 09:25:09 -06:00
Tudor D. Pop
946339a52e feat(blur) replace BodyPix with TFLite
Use the Google Meet model and SIMD optimized WASM.
2021-02-17 16:03:33 +01:00
tmoldovan8x8
f71e8a9982 feat(mobile) adds actions and events for the chat 2021-02-17 16:26:40 +02:00
chipechop
af6080f173 fix(lang) update Italian translation 2021-02-17 13:25:23 +01:00
Jaya Allamsetty
b1080340ec chore(deps) lib-jitsi-meet@latest
* ref(QualityController): Split send and receive video constraints handling.
* fix: Save guards _features to be always empty and nver undefined. (#1493)

d1f0ab4d5a...c534f74884
2021-02-16 11:16:08 -05:00
damencho
684d121159 fix(load-test): Fixes keepalive url when using load-test. 2021-02-12 13:03:29 -06:00
Saúl Ibarra Corretgé
6740b0861e fix(rn,lobby) make sure the enable dialog follows the theme color 2021-02-12 16:40:56 +01:00
tmoldovan8x8
65c56669c4 feat refactors the chat flow so it has open and close functions 2021-02-12 13:18:16 +02:00
Дамян Минков
2cd43ba2e4 fix(load-test): Always create local audio track. (#8612)
* fix(load-test): Always create local audio track.

When audio mutes will mute the track. Also fixes previous change where we do not add any of the tracks to the room.

* squash: Fix lint errors.
2021-02-11 17:25:46 -06:00
Hristo Terezov
fec2641730 fix(popups): covered by labels. 2021-02-11 16:18:56 -06:00
damencho
04ee423257 fix(load-test): Create local tracks and then join.
Behaves now as the main client, and skips few unnecessary presences.
2021-02-11 15:14:31 -06:00
Hristo Terezov
460e137ee4 chore(deps) lib-jitsi-meet@latest
* fix(GUM-permissions): cache permissions on init.
* feat: Reuse billingId from localstorage as jitsiMeetId.
* fix(example) simplify
* feat(docs) mvoe API documentatrion to the handbook

84357ce1a8...d1f0ab4d5a
2021-02-11 13:56:46 -06:00
hmuresan
1a789130a3 feat (external_api) add command for kick participant 2021-02-11 07:33:26 -06:00
Nando Thomassen
16b00dc2af feat(flags) add feature flag for help button
Introduces a new feature flag ('help.enabled') and uses that to
determine the visibility of the 'Help' button in a call.
2021-02-10 22:34:13 +01:00
Saúl Ibarra Corretgé
c3a41b8cf3 fix(avatar) refactor preloading to avoid CORS issues
Fixes: https://github.com/jitsi/jitsi-meet/issues/8510

This basically reverts
a3fb996ff0
while retaining the same properties that prompted it's original intent, namely
avoiding sending the Referrer header.
2021-02-10 14:32:56 +01:00
damencho
f4d0ec1bb4 fix(load-test): Uses websocket if available and adds room param to the connection url. 2021-02-09 15:48:06 -06:00
tmoldovan8x8
ef6b641802 bugfix(ios) changes the participantInfo completion handler reference to strong.
When the method was called from Swift they were collected before calling them.
2021-02-09 18:03:25 +02:00
Saúl Ibarra Corretgé
579acbc570 feat(embed-meeting) add autoplay permission to iframe sample 2021-02-09 08:01:51 -06:00
niteshletxsoft
bca9a12df1 feat(external_ap) add api call to get live stream url 2021-02-09 12:43:38 +01:00
Shoolpani Dubey
a57b967f2e fix(external_api) add autoplay capabilities to created iframe
Should fix https://github.com/jitsi/jitsi-meet/issues/7037
2021-02-09 11:22:42 +01:00
Hristo Terezov
299927fcad docs: Add comment for initial GUM timeout values. 2021-02-08 15:53:38 -06:00
Hristo Terezov
7dc899ace1 ref(DeviceSelectionPopup): remove. 2021-02-08 15:53:38 -06:00
Hristo Terezov
a6c6cd6c56 fix: Add GUM timeout & improve device permissions 2021-02-08 15:53:38 -06:00
Hristo Terezov
7dc45c28a2 fix(AudioSlider): removed when volume is 0 2021-02-08 15:25:17 -06:00
Hristo Terezov
a215f9706a chore(deps) lib-jitsi-meet@latest
* fix(GUM): improve permissions logic.
* feat(GUM): timeout.
* ref: Remove pinEndpoint. (#1440)

30c8795770...84357ce1a8
2021-02-08 14:52:25 -06:00
Jonathan Lennox
4beca0d5dd Set receiver video constraint in load-test script, as-if tile view. (#8567) 2021-02-08 13:35:03 -05:00
Vlad Piersec
bfc4b2ac6f feat(vpaas): Send billing id to prosody 2021-02-08 12:49:55 +02:00
kazan417
53bdaa7928 fix(lang) update Russian translation 2021-02-07 12:44:20 +01:00
Tobias Kneidl
ba18b12024 add module proxy_wstunnel 2021-02-06 22:49:12 -06:00
Tobias Kneidl
a1438f1f21 change websocket url from http:// to ws:// 2021-02-06 22:49:04 -06:00
Julian1203
c856c20513 Update main-de.json
Small improvements (again)
2021-02-06 07:27:55 -06:00
Julian1203
cf92c964b4 Update main-de.json
Small improvements (again)
2021-02-05 22:15:51 -06:00
Julian1203
e69529867e Update main-de.json
Small improvements for the gender-neutral version and other small improvements.
2021-02-05 16:15:39 -06:00
Jaya Allamsetty
fd313c1af7 fix(tests): Add more checks so that test don't error out. 2021-02-05 16:30:58 -05:00
Jonathan Lennox
73c3feb8fa Improve load-test script. (#8563)
* In load-test, merge URL params into config.

* Honor config.testing.noAutoPlayVideo in load-test.
2021-02-05 16:00:28 -05:00
Дамян Минков
67a01364d3 Move load-test to resources (#8560)
* fix: Move load-test to resources.

* squash: Updates load-test dependencies.

* squash: Fix load-test build.
2021-02-05 09:12:45 -06:00
Saúl Ibarra Corretgé
7a64bf006e misc(tools) add script for updating mobile apps versions 2021-02-05 11:56:44 +01:00
Saúl Ibarra Corretgé
e5ea96fd4c feat(rn) update SDK version to 3.1.0 2021-02-05 11:56:44 +01:00
Saúl Ibarra Corretgé
c8ad04d0ff misc(tools) add script for updating SDK version 2021-02-05 11:56:44 +01:00
Saúl Ibarra Corretgé
c56afde00c feat(dev) bind to 0.0.0.0 on the dev server by default 2021-02-05 11:15:20 +01:00
tmoldovan8x8
9ed1969f7e feat(android) adds ability to disable the requestFocus on Android 2021-02-05 09:05:55 +02:00
Jonathan Lennox
12680c35ca Add lightweight load-test webpage, disabled by default (#8514)
Co-authored-by: Hristo Terezov <hristo@jitsi.org>
Co-authored-by: damencho <damencho@jitsi.org>
2021-02-04 18:04:36 -05:00
Jaya Allamsetty
0138f23755 feat(conference): Enable forced reload of client on bridge failure.
* 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.
2021-02-04 12:33:18 -05:00
Marc Seitz
16d88a288f feat: add ipados to list of Platform.OS (#8205)
* feat: add ipados list of Platform.OS
2021-02-04 10:34:44 -05:00
Jaya Allamsetty
210c4857fd deps: Update latest@lib-jitsi-meet.
Add the ability to configure different max bitrates for VP8 and VP9.
Set max bitrate for presenter to 2500 Kbps irrespective of the configured max bitrates for video.
479dd98...77978f0.
2021-02-04 09:50:32 -05:00
tmoldovan8x8
dca96f25f3 feat(mobile) adds feature flags for audioMute, videoMute and overflow… (#8537) 2021-02-04 15:32:09 +02:00
Mihai-Andrei Uscat
b69e93a900 fix(Safari): Fix mobile double tapping for toolbar and overflow.
* Create generic tooltip wrapper for mobile usability.
* Change overflow menu icon/font/padding sizes.
* Change overflow drawer expand icon.
2021-02-04 15:24:25 +02:00
tmoldovan8x8
d2568b874b feat(mobile) adds ability to retrieve participantsInfo array 2021-02-04 14:26:35 +02:00
Juan Searle
20c6115c38 Fix suspicious URL on Persian localization file 2021-02-03 20:39:08 -06:00
OctopusET
68b8ee5961 fix(lang) update korean translation 2021-02-03 15:52:59 +01:00
Andrei Gavrilescu
9895a04609 feat(rtcstats): send meeting uuid to rtcstats (#8526)
* send meeting uuid to rtcstats

* change ret description

* fix flow error

* update lib-jitsi-meet version
2021-02-03 12:28:39 +02:00
Andrzej Moskal
87f688dc8f fix(android) add ability to localize notification actions strings 2021-02-03 10:58:05 +01:00
Jaya Allamsetty
c58657c759 fix(test): Make sure test doesn't error out. 2021-02-01 11:49:45 -05:00
Ali Kazemkhanloo
687106818a Add Persian to languages-fa.json 2021-02-01 07:49:58 -06:00
Ali Kazemkhanloo
f228b4ecc1 Add Persian language to the list of languages 2021-02-01 07:49:58 -06:00
kichinosukey
8582b25d28 typo fix 2021-02-01 07:46:32 -06:00
Vlad Piersec
9418dbc2b1 fix(recents-list): Order recents by last used 2021-02-01 13:30:34 +02:00
Jonas Rittershofer
19bf027b8b Include xmpp and colibri proxy for apache
Signed-off-by: Jonas Rittershofer <jotoeri@users.noreply.github.com>
2021-01-30 10:06:22 -06:00
Mihai-Andrei Uscat
c370c05701 fix(Filmstrip): Prevent Toolbox from being shown indefinitely when hovering filmstrip 2021-01-29 15:34:37 +02:00
Emil Ivov
f034f179ff Merge pull request #8507 from saghul/readme-jaas
fix(docs) add JaaS link to README
2021-01-29 06:57:51 -06:00
Saúl Ibarra Corretgé
b94b18770c fix(docs) add JaaS link to README 2021-01-29 13:54:27 +01:00
Mihai-Andrei Uscat
3f93726c41 fix(Safari): Fix zoomed in mobile interface and cropped tile 2021-01-29 12:55:24 +02:00
Titus-Andrei Moldovan
af8072d9d2 chore(mobile) changes the name for screenShares to remoteScreenShares to better reflect it's content 2021-01-29 12:45:53 +02:00
Titus-Andrei Moldovan
45f4643469 feat(mobile) adds ToggleScreenShare event and action. 2021-01-29 12:45:53 +02:00
Avram Tudor
745879c447 Merge pull request #8503 from jitsi/tavram/dropbox
feat(external_api) allow dropbox option to be overwritten
2021-01-29 12:30:03 +02:00
Mihai-Andrei Uscat
4aab5e2054 feat(Dialog): Make dialog close button more mobile friendly.
* Remove pointless custom headers, fall back to ModalHeader instead.
2021-01-29 12:22:43 +02:00
Tudor-Ovidiu Avram
69971a0e90 feat(external_api) allow dropbox option to be overwritten 2021-01-29 11:44:16 +02:00
Pawel Domas
7c90f75ec9 fix(conference.js): crash on undefined
While on the prejoin screen, the local tracks are managed by the redux store and not conference.js, so localAudio is undefined.
2021-01-28 21:59:44 -05:00
damencho
bf714c1c8b feat: Allow star for room in moderated tenants. 2021-01-28 16:28:39 -06:00
Avram Tudor
8414e9d99f Merge pull request #8495 from jitsi/tavram/chat-updated
feat(external_api) add event for chat updates (unread counter, open s…
2021-01-28 16:42:06 +02:00
Tudor-Ovidiu Avram
dcaad41e69 feat(external_api) add event for chat updates (unread counter, open state) 2021-01-28 11:41:27 +02:00
Jonathan Lennox
63f0166f75 Add mime type mapping for wasm to default Debian nginx config. 2021-01-27 13:42:37 -06:00
Дамян Минков
79f3756d33 feat: Adds option to set ws keepalive url through config. (#8487)
* feat: Adds option to set ws keepalive url through config.

* chore(deps) lib-jitsi-meet@latest

* feat: Adds option to set ws keepalive url through config.
* fix VADAudioAnalyser: catch error

be18ff34be...9fdde46694
2021-01-27 11:13:32 -06:00
damencho
5ac30262a5 fix(debian): Improves handling db_get. 2021-01-26 09:49:03 -06:00
damencho
09315fa653 fix: Adds luasec as dependency.
This is in Recommended but we need it.
2021-01-26 09:49:03 -06:00
damencho
5f0dd903f6 fix(debian): Fixes enforce_apache option. 2021-01-26 09:49:03 -06:00
Steffen Kolmer
ef7d425859 feat(ui) update AtlasKit components 2021-01-26 16:47:55 +01:00
bgrozev
a9bb8e5e81 fix: Use internal_hashed everywhere. (#8485) 2021-01-26 09:33:41 -06:00
Mihai-Andrei Uscat
8cf4e15b23 Add config flag for tile responsiveness 2021-01-26 13:42:57 +02:00
Mihai-Andrei Uscat
db84889143 feat(tiles): Add responsive behaviour.
* Enforce fixed column number at various width breakpoints.
* Bring back the filmstrip at small sizes but hide it.
* Change default maximum columns to 7.
2021-01-26 13:42:57 +02:00
Ali Karpuzoglu
6ca3c6e43a fix(misc) typo 2021-01-26 12:38:49 +01:00
DeBuXer
6fd280a960 fix(lang) update Dutch translation 2021-01-26 11:27:42 +01:00
Jonas Rittershofer
6f9e65d348 Allow to enforce Apache via debconf
Signed-off-by: Jonas Rittershofer <jotoeri@users.noreply.github.com>
2021-01-25 16:27:01 -06:00
damencho
f1e06bff7b fix: Lobby display name set when preJoin is disabled. Fixes #8415. 2021-01-25 16:03:54 -06:00
Jaya Allamsetty
1cf7a361e9 feat: Implement aggressive layer suspension on RN.
RN doesn't support RTCRtpSender yet. Therefore, media is suspended on RN by changing the media direction in the SDP whenever the client receives an ideal height of 0 for sender constraints on the bridge channel.
LJM update - 3570339360...be18ff34be.
2021-01-25 15:21:16 -05:00
okyanusoz
e7990baa7d Fixed Turkish translation issues 2021-01-25 13:36:32 -06:00
Cedric Roijakkers
d35708815d fix(lang) corrected Dutch translation of toggleCamera 2021-01-22 17:39:20 +01:00
Jaya Allamsetty
270e52e402 deps(ljm): Restore local connection status.
831716c160...3570339360.
2021-01-22 10:44:01 -05:00
Saúl Ibarra Corretgé
635d283d5a chore(deps) react-native-callstats@3.70.1
Support processing stats in the spec-compliant format.
2021-01-22 14:06:10 +01:00
Balu
4affc68b50 Update main-de.json
Added missing "user" dialog parameter translation. Tried to stay gender neutral.
2021-01-22 06:24:42 -06:00
chipechop
dca262620b Update languages-it.json 2021-01-22 06:24:11 -06:00
as0bit
12c8258f56 Update main-de.json
lang: add missing fields to German translation
2021-01-22 06:22:22 -06:00
tmoldovan8x8
6a6aeb1d95 feat(mobile) adds more feature flags (#8450)
Features flags added:  
-tile-view.enabled
-filmstrip.enabled
-notifications.enabled
-toolbox.enabled
2021-01-22 12:03:39 +02:00
Дамян Минков
01c55bdb15 feat: Uses mod_external_services supporting urn:xmpp:extdisco:2. (#8455)
* feat: Uses mod_external_services supporting urn:xmpp:extdisco:2.

The old mod_turncredentials.lua is left to continue working for those using old installs.
New install will start using the new module which will no longer be needed with prosody 0.12.

https://hg.prosody.im/prosody-modules/file/4841cf3fded5/mod_external_services/mod_external_services.lua

* squash: Updates ljm to support urn:xmpp:extdisco:2.
2021-01-21 16:14:00 -06:00
bgrozev
5f891fd060 debian: Do not read jicofosecret. (#8454) 2021-01-21 13:19:39 -06:00
chipechop
a39905883f Update main-it.json
Added 4 missing lines in italian translation
2021-01-20 12:01:54 -06:00
Saúl Ibarra Corretgé
fe78f104bc feat(android) set compile/target SDK versions to 30 2021-01-20 15:14:09 +01:00
Saúl Ibarra Corretgé
9c13603489 feat(android) update native dependencies 2021-01-20 15:14:09 +01:00
tmoldovan8x8
61037b982b feat(mobile) adds ability to send and receive text messages (#8425) 2021-01-20 14:06:45 +02:00
Jaya Allamsetty
df21ec6f04 chore(deps) lib-jitsi-meet@latest (#8437)
https://github.com/jitsi/lib-jitsi-meet/compare/...94ac35ae818093896e639e74f5fc389b488206a0
2021-01-19 12:45:33 -06:00
Vlad Piersec
23574e9edc fix(vpaas): Store billing id in parent lolcaStorage on Safari 2021-01-18 09:56:03 +02:00
Dennis Scheiba
ec3130af0e make translation gender neutral 2021-01-16 21:56:22 -06:00
Filipe dos Santos Gundim
3b692dc502 fix join label in pt-br 2021-01-16 21:36:00 -06:00
Дамян Минков
6689aa3700 feat: Detects shard changed when using websockets.
* feat: Detects shard changed when using websockets. (#1462)

1009693f2e...cb484cf48c
2021-01-15 09:51:43 -06:00
Avram Tudor
13bc9863cb Merge pull request #8426 from jitsi/tavram/gradient-condition
fix(subject) remove gradient if no info in topbar
2021-01-15 16:26:19 +02:00
Tudor-Ovidiu Avram
7ff332b2bb fix(subject) remove gradient if no info in topbar 2021-01-15 16:02:50 +02:00
Mihai-Andrei Uscat
8aae2065dc fix(Toolbox): Fix toolbox display when accessing it via keyboard 2021-01-15 13:43:09 +02:00
Jaya Allamsetty
b65e61f633 feat: Add new codec selection mechanism.
When an endpoint that doesn't support the preferred codec (VP9) joins a conference, all the other endpoints fallback to VP8 until the endpoint leaves the call.
2021-01-14 18:01:38 -05:00
Saúl Ibarra Corretgé
88f1c218eb fix(rn,stats) fix incorrect bitrate calculation on mobile
Stats timestamps were incorrectly formatted, fixed upstream.

Fixes: https://github.com/jitsi/jitsi-meet/issues/8367
2021-01-14 14:59:22 +01:00
Boris Grozev
f6df76ab10 fix: Fix broken postinst reported by @wsldankers. 2021-01-14 07:55:50 -06:00
Saúl Ibarra Corretgé
85f1701393 fix(tile-view) avoid covering the logo
Reverts a8b2e6ffb3
2021-01-13 20:29:20 +01:00
damencho
2f7ff37472 fix: Fixes #8396, wrong ssi includes in offline static page. 2021-01-13 09:11:10 -06:00
Mihai-Andrei Uscat
c752ea13f1 feat(overflow): Add responsive drawer at small screen width.
* Implement opening toolbar and participant overflows as drawers when below certain width.
* Fix dial-in copy button displaying incorrectly.
2021-01-13 16:07:22 +01:00
tmoldovan8x8
5ef60c3a7d [WIP] adds BroadcastService (#8336)
feat(external_api) exposes more events from JS to native and adds the ability to send actions from native to JS.
2021-01-13 15:48:29 +02:00
hmuresan
1196ede961 feat(external-api) set privateMessage flag on incoming-message 2021-01-13 13:33:55 +01:00
Saúl Ibarra Corretgé
12877c7fce fix(settings) remove legacy compatibility code 2021-01-13 13:32:54 +01:00
Avram Tudor
c6bb600d4c Merge pull request #8400 from jitsi/tavram/shortcuts
feat(external_api) allow shortcuts to be disabled
2021-01-13 12:39:27 +02:00
Avram Tudor
845e23a947 Merge pull request #8399 from jitsi/tavram/overflowmenu
fix(menu) do not display overflow menu button if no items
2021-01-13 12:39:11 +02:00
Tudor-Ovidiu Avram
55ebb60f85 feat(external_api) allow shortcuts to be disabled 2021-01-13 12:10:27 +02:00
Tudor-Ovidiu Avram
8d3d94f568 fix(menu) do not display overflow menu button if no items 2021-01-13 11:55:38 +02:00
Avram Tudor
be24772e57 Merge pull request #8397 from jitsi/tavram/disable-jaas-directory
fix(jaas) disable directory integration
2021-01-13 11:38:05 +02:00
Tudor-Ovidiu Avram
a807f804a9 fix(jaas) disable directory integration 2021-01-13 11:13:04 +02:00
Hristo Terezov
db48dc3ed3 fix(Thumbnail): volume & audioLevel default values 2021-01-12 13:42:31 -06:00
Hristo Terezov
9bae7099dd fix(filmstrip): Import from base/tracks. 2021-01-12 13:42:31 -06:00
Hristo Terezov
e990f6984a fix(Thumbnail): Improve naming. 2021-01-12 13:42:31 -06:00
Hristo Terezov
9f321c988e style(isVideoPlayable): improve readability. 2021-01-12 13:42:31 -06:00
Hristo Terezov
2e5e9a3f79 fix(AudioTrack):Add check for NaN value for volume 2021-01-12 13:42:31 -06:00
Hristo Terezov
fdb8f76b90 fix(Thumbnail): imports. 2021-01-12 13:42:31 -06:00
Hristo Terezov
3d97bef308 style(Thumbnail): improve readability
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-01-12 13:42:31 -06:00
Hristo Terezov
5a55c7b965 style(AudioTrack): improve readability
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-01-12 13:42:31 -06:00
Hristo Terezov
e161cbc4bd fix(SmallVideo): computeDisplayModeInput
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2021-01-12 13:42:31 -06:00
Hristo Terezov
51e381a0b1 ref(Thumbnail): Create React component. 2021-01-12 13:42:31 -06:00
bgrozev
d8dd644f38 make sure extra plugin paths are enabled (#8390)
* fix: Make sure extra plugin_paths are not commented out.

* fix: Do not use "-e" as backup suffix.
2021-01-12 13:25:20 -06:00
Saúl Ibarra Corretgé
e30b2e14a5 fix(rn) stop room name generator when field is focused
Fixes: https://github.com/jitsi/jitsi-meet/issues/8307
2021-01-12 17:36:09 +01:00
Avram Tudor
7f1894dd57 Merge pull request #8379 from horymury/hmuresan/broadcast-screenshare
feat(external_api) add command and event listener for CS
2021-01-12 17:49:06 +02:00
hmuresan
4dda508708 feat(external_api) add command and event listener for CS 2021-01-12 17:23:40 +02:00
damencho
69c6463476 chore(deps) lib-jitsi-meet@latest
* fix: Disabling lobby when using tenant.

87c6e37475...7896fc8b92
2021-01-12 08:22:14 -06:00
Saúl Ibarra Corretgé
2763c2f5c9 fix(twa) update template
Set version to 1.0.0 with a very large version code so it's automatically kept
around when pushing new versions.

Additionally drop some no longer needed icon assets (bubblewrap did this).
2021-01-12 14:56:04 +01:00
Saúl Ibarra Corretgé
1ec8f70d55 fix(libre-build) skip spurious Firebase and GCM dependencies
Fixes: https://github.com/jitsi/jitsi-meet/issues/8353
2021-01-12 14:55:47 +01:00
Saúl Ibarra Corretgé
916208a5ff fix(libre-build) update react-native-device-info to 8.0.0
Will now work even if installreferrer or GCM are missing.
2021-01-12 14:55:47 +01:00
Mihai-Andrei Uscat
43e655b619 feat(chat): Improve responsiveness.
* 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
2021-01-12 15:24:55 +02:00
Avram Tudor
1ab0f1993a Merge pull request #8377 from jitsi/tavram/notifications
feat(external_api) allow notifications to be configured
2021-01-12 14:52:31 +02:00
Tudor-Ovidiu Avram
4cb7ebce70 feat(external_api) allow initial gUM requests to be disabled 2021-01-12 06:02:44 -06:00
hmuresan
0a5910f0b3 feat(external_api) set and cancel private chat through external API
- allow managing chat through API when chat button is not present on UI
2021-01-12 06:01:10 -06:00
Tudor-Ovidiu Avram
d91c546a1e feat(external_api) allow notifications to be configured 2021-01-12 11:22:53 +02:00
bgrozev
b6f7f8fba7 Remove the "focus" external component, use client_proxy instead. (#8381)
* feat: Add mod_client_proxy and mod_roster_command.

Taken from prosody-modules 4317:456b9f608fcf with the
mod_roster_command patch applied.

* feat: Use mod_client_proxy to proxy to jicofo.
2021-01-11 15:45:00 -06:00
Pawel Domas
6ebe2c2809 audio output selection in safari blocks the UI
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.
2021-01-11 14:17:29 -05:00
Saygun ICYUZ
067610b3fd feat(recording) - Show recording started notification to the initiator (#8359)
* 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
2021-01-11 08:21:33 -06:00
Avram Tudor
6f5534fcb6 Merge pull request #8352 from jitsi/tavram/allow-tileview-disabling
feat(jaas) allow tile view to be disabled
2021-01-08 16:03:21 +02:00
Tudor-Ovidiu Avram
dd8b220ff9 feat(jaas) allow tile view to be disabled 2021-01-08 12:00:13 +02:00
Avram Tudor
80d789879c Merge pull request #8356 from jitsi/tavram/top
feat(jaas) add config for displaying participants stats and conferenc…
2021-01-08 11:57:23 +02:00
Tudor-Ovidiu Avram
d49c5a6d8c feat(jaas) add config for displaying participants stats and conference subject 2021-01-08 10:21:07 +02:00
Mejans
9268255ca8 i18n: update Occitan language (#8346)
* Update main-oc.json

* Update languages-oc.json
2021-01-07 14:51:21 -06:00
Pawel Domas
a0806716ae fix(JitsiStreamPresenterEffect): frozen on Safari
Canvas rendering does not work as expected on Safari - the image stays
still on the first frame. Calling play() on the video tags seems to help.
2021-01-07 15:10:27 -05:00
Дамян Минков
3677a2f769 feat: Skip p2p when the participant is jigasi.
* feat: Skip p2p when the participant is jigasi.

1fd7256553...87c6e37475
2021-01-07 09:08:36 -06:00
Avram Tudor
3881da5db9 Merge pull request #8354 from jitsi/tavram/fix-filmstrip
fix(filmstrip) fix button not considering interface config settings
2021-01-07 15:20:22 +02:00
Tudor-Ovidiu Avram
35a586df3c fix(filmstrip) fix button not considering interface config settings 2021-01-07 14:53:11 +02:00
Saúl Ibarra Corretgé
dc5a776123 fix(ios) fix drag handle not rendering with latest react-native-svg
Fill must be properly specified.
2021-01-07 12:02:41 +01:00
Saúl Ibarra Corretgé
a3c6e690dd chore(deps) update react-native-svg to latest
Fixes icons not rendering on iOS 11.
2021-01-07 12:02:41 +01:00
Saúl Ibarra Corretgé
a1c197c73c fix(ios) fix crash on startup on iOS 11 2021-01-07 12:02:41 +01:00
damencho
e8c0c03e49 chore(deps) lib-jitsi-meet@latest
*  feat: Skips using disco-info for features. (#1450)
* sdp: improve sdp matching for simulcast lines (#1452)
* sdp: add missing colon to findLines calls (#1447)

310983c5b0...1fd7256553
2021-01-06 09:32:26 -06:00
Saúl Ibarra Corretgé
4798e0271b chore(android,ios) raise versions 2021-01-06 16:21:44 +01:00
Asif
cd29f10fa8 feat: emit raise hand event to external API (#8312)
* Expose raise hand event to external application

* Fix linting issues

* fix the app non existing issue
2021-01-06 08:49:10 -06:00
Pawel Domas
97dc07810c fix(setAudioOutputDeviceId): check if supported 2021-01-06 08:31:53 -06:00
damencho
28fa1f5dbe fix: Process pre-existing participants properties.
We were not processing properties which are set (fire properties updated) before the conference joined event is fired.
2021-01-05 14:29:34 -06:00
damencho
2ba6100e36 fix: Fixes showing phone icon for jigasi participants. 2021-01-05 14:29:34 -06:00
Shawn
060a8628ce fixed admin check for token verification 2021-01-05 12:56:33 -06:00
Christopher Engelhard
32fb08c56f Consistent formatting/indentation of files in ./doc (#8178)
* unify indentations (debian)

* unify indentations in example-config-files
2021-01-04 08:22:40 -06:00
Jakob Pfeiffer
4a3ff8ce2c fix(jitsi-meet-web-config.postinst) allow cert and key pre-selection (#8319)
* fix(jitsi-meet-web-config.postinst) allow cert and key pre-selection

* fix(jitsi-meet-web-config.postinst) jvb-hostname gets value from db_go instead of db_get

Co-authored-by: Jakob Pfeiffer <pgp-jkp@pfeiffer.ws>
2021-01-04 08:22:27 -06:00
yanglishuan
f32482539a fix(lang) update zhCN translation 2021-01-04 08:22:09 -06:00
53845714nF
f82088fb8f add systemd to letsencrypt installer (#8289)
* add systemd to letsencrypt

* Better readability of systemd change

Co-authored-by: Sebastian Feustel <sebastian.feustel@aei.mpg.de>
2021-01-04 08:21:47 -06:00
Vahid Zafari
76b4899c39 full support persian language (#8300) Fixes #8299 2020-12-23 08:29:07 -06:00
Marc Seitz
9b638a4052 fix(lang) update German translation 2020-12-23 11:07:10 +01:00
Saúl Ibarra Corretgé
a8b2e6ffb3 fix(tile-view) allow watermark to be covered 2020-12-23 11:05:30 +01:00
Saúl Ibarra Corretgé
aefd13ab1b fix(tile-view) reduce margins, take 2
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.
2020-12-23 11:05:30 +01:00
Saúl Ibarra Corretgé
5e891caf94 fix(ios,fastlane) adjust scheme name after rename 2020-12-22 14:07:10 +01:00
Saúl Ibarra Corretgé
a01e3e9d8a fix(android) avoid crashes if view is null
This may happen due to API misuse, but also in complex applications where
activity lifetimes are not straightforward.
2020-12-22 13:53:39 +01:00
Saúl Ibarra Corretgé
687a6c31ee feat(analytics) unify Amplitude handlers across web and mobile
The amplitude-js library gained React Native support so there is no need to keep
separate implementations.
2020-12-22 10:36:10 +01:00
tmoldovan8x8
5ecb5717c7 feat(stats) add stats for mobile 2020-12-22 10:12:52 +01:00
Avram Tudor
8d813a499c Merge pull request #8293 from jitsi/tavram/update-jaas-rec
fix(jaas) update recording label and hide option for jaas users
2020-12-21 13:00:59 +02:00
Tudor-Ovidiu Avram
22384d9094 fix(jaas) update recording label and hide option for jaas users 2020-12-21 12:19:10 +02:00
eppesuig
b3f1f7f46e lang: Updating and uniforming italian translation (#8288)
* Updating and uniforming italian translation

- translate uniformly «meeting» to «conferenza», «chat» to «conversazione», ellipsys to «...», verbs in -ing with «in corso»
- correct a few typos
- update a message with old and unused placeholder
- translate some English messages

* typo

- add missing double quotes

* Fixed translation for "meeting" to "riunione"
2020-12-20 21:17:49 -06:00
xosecalvo
17350be16c Updated Galician translation
Updated original Weblate translation by https://github.com/meixome
2020-12-20 09:22:49 -06:00
Hristo Terezov
d4596889df feat(analytics): Adds metric for SS issues. 2020-12-18 15:27:43 -06:00
Mihai-Andrei Uscat
a5fe26bfdb fix(password): Fix add password button on Safari 2020-12-18 14:47:00 +02:00
Vlad Piersec
33e4324f6d fix(branding): Use config url for dynamic branding 2020-12-18 13:00:52 +01:00
Saúl Ibarra Corretgé
27d41604df fix(script) add commits list to update LJM message 2020-12-18 09:45:09 +01:00
Saúl Ibarra Corretgé
99ac60ed74 feat(ios) rename SDK target to JitsiMeetSDK
Swift has a longstanding bug where a framework and a type cannot be named the
same. We have somehow managed to not run into this, but it now seems to be
hitting us.

Since this is a breaking change, this starts the road for SDK 3.0.
2020-12-17 23:02:48 +01:00
Дамян Минков
4f52fd5e01 fix: Skip sending multiple times disco-info to jicofo.
* fix: Skip sending multiple times disco-info to jicofo.
* build(deps): bump ini from 1.3.5 to 1.3.7

9f65e8fab3...8bb653f1d6
2020-12-17 13:02:28 -06:00
bhlee
edf415a7da fix(welcome-page) fix .insecure-room-name-warning margin 2020-12-17 09:28:24 +01:00
bhlee
5637b37fd2 fix(main-ko) add keyboardShortcuts videoQuality (#8264)
* fix(main-ko.json) Update overall korean spelling & words

* fix(_welcome_page.css) update .insecure-room-name-warning_margin-top from 5px to 15px

* fix(_welcome_page.css) initialize .insecure-room-name-warning_margin-top from 15px to 5px

* fix(main-ko.json) add keyboardShortcuts videoQuality
2020-12-16 23:17:44 -06:00
bhlee
dc0c1f0d93 fix(main-ko.json) Update some korean spelling & words (#8253)
* fix(main-ko.json) Update overall korean spelling & words

* fix(_welcome_page.css) update .insecure-room-name-warning_margin-top from 5px to 15px

* fix(_welcome_page.css) initialize .insecure-room-name-warning_margin-top from 15px to 5px
2020-12-16 19:45:24 -06:00
Damien Fetis
5c1af8835b lang: update French translation (#7725) 2020-12-16 13:04:02 -06:00
AleFelix
c61c00171a feat: Update spanish translation (#8023)
* Update main-es.json

* Update main-esUS.json
2020-12-16 12:34:52 -06:00
roms2000
d025f51ce2 Update main-fr.json (#8114)
* Update main-fr.json

Update FR language, fix typos, alphabetical order and based from main.json

* Update main-fr.json
2020-12-16 10:10:29 -06:00
James E. Blair
bab2b0735c Etherpad on join (#8212)
* 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.
2020-12-16 10:10:12 -06:00
bcvieira
2fa0c6c98f Update main-ptBR.json
Reordering and adding new translations.
2020-12-16 10:09:59 -06:00
Ivan Trubach
fa541a6768 Update main-ru.json 2020-12-16 10:09:48 -06:00
krakazyabra
1ed18c5be3 Fix #8095 (#8101) 2020-12-16 10:09:31 -06:00
JSHar
cf7cc84781 languages-ka.json
georgian Language
2020-12-16 10:09:05 -06:00
BustaFu
05cdec3b70 Update main-sv.json
Fix swedish translation
2020-12-16 10:08:56 -06:00
Jamil Bailony
c57fd643ea lang: Update Arabic translation 2020-12-16 10:08:47 -06:00
Julian1203
ad297c2470 Update main-de.json
Fixed typo.
2020-12-16 10:08:27 -06:00
vachan-maker
be1b6d71f5 lang:New translation malayalam(ml-in) 2020-12-16 10:08:17 -06:00
vachan-maker
d63be314c6 Added missing language malayalam(ml) (#7732) 2020-12-16 10:08:03 -06:00
tzm_web
ea13e3c346 Update main-zhCN.json,languages-zhCN.json. 2020-12-16 10:07:20 -06:00
Saúl Ibarra Corretgé
58bd4edb85 fix(remote-control) skip on mobile
Middlewares should not be loaded on mobile as there is no way to use the
functionality.
2020-12-16 13:59:41 +01:00
Saúl Ibarra Corretgé
01345d6d9d chore(ios) remove references to no longer used files 2020-12-16 10:28:30 +01:00
Saúl Ibarra Corretgé
28cd74077b fix(ios) fix joining a meeting when the app was closed
Weird timing issue in appDidFinishLaunching, make sure we store the
launchOptions before we touch any view code.
2020-12-16 10:28:30 +01:00
Hristo Terezov
af6c794fda ref(remote-control): Use React/Redux. 2020-12-15 18:09:58 -06:00
Pawel Domas
f88061db06 fix(conference.js): 2 tracks of the same media type
...caused by bad state as a result of timing issue around the prejoin flow.

If get user media call is delayed for a while and if user joins
the conference, when it hasn't completed then confrence.js will not assign
'localAudio' and 'localVideo' variables and will create additional media
tracks on unmute operation and add them to JitsiConference via replaceTracks
operation.
2020-12-15 14:11:00 -06:00
damencho
ec6abc1ce9 fix: Skip sending unnecessary signalling for raise hand. 2020-12-15 11:21:56 -06:00
sorinant
e261bb5616 feat(ios) added ability to use an external CXProvider and CXCallController 2020-12-15 12:21:53 +01:00
Saúl Ibarra Corretgé
b1a4b58f7a chore(deps) update react-native-webview 2020-12-15 12:05:59 +01:00
dependabot[bot]
42dabd4cdb chore(deps): bump react-native-webview from 10.9.0 to 11.0.0
Bumps [react-native-webview](https://github.com/react-native-community/react-native-webview) from 10.9.0 to 11.0.0.
- [Release notes](https://github.com/react-native-community/react-native-webview/releases)
- [Changelog](https://github.com/react-native-webview/react-native-webview/blob/master/.releaserc)
- [Commits](https://github.com/react-native-community/react-native-webview/compare/v10.9.0...v11.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-15 11:09:28 +01:00
qwertiko GmbH
89ebb4d918 fix(LoginDialog) added missing double quotes 2020-12-15 11:06:44 +01:00
damencho
fc54fc80d1 fix: Start p2p only when we have received all presences. 2020-12-14 18:21:46 -06:00
Hristo Terezov
87b1155180 fix(video):Always show avatar if video is inactive 2020-12-14 16:44:08 -06:00
Saúl Ibarra Corretgé
4ca02c1ebf feat(tile-view) optimize for less margins
- Lower the inter-tile margin to 2px
- Remove the 100px top/bottom margin when the toolbar is hidden
2020-12-14 21:27:13 +01:00
BasmaAwatef
70fcabd136 fix: the user placeholder translation issue #8219 (#8233)
* ✏️ user placeholder translation in authentication added

* Create node.js.yml

* Create npm-publish.yml

* Create deno.yml

* Create ci.yml

* Create stale.yml

* Delete deno.yml

* Delete npm-publish.yml

* Delete ci.yml

* Delete node.js.yml

* Delete ci.yml

* Create main.yml

* Delete stale.yml

* Delete main.yml

* Create ci.yml

* Create simpleCI.yml

* Update simpleCI.yml

* Revert "Delete stale.yml"

This reverts commit 27d88166b9.

* Revert "Delete main.yml"

This reverts commit 037cd96e71.

* Revert "Revert "Delete stale.yml""

This reverts commit 834d96e41c.

* Revert "Revert "Delete main.yml""

This reverts commit f69bc066f9.

* Revert "Revert "Revert "Delete stale.yml"""

This reverts commit d60372da56.

* Revert "Revert "Revert "Delete main.yml"""

This reverts commit 521ca60df3.

* Revert "Revert "Revert "Revert "Delete stale.yml""""

This reverts commit 1f2a9518e1.

* Revert "Revert "Revert "Revert "Delete main.yml""""

This reverts commit adf6c58f8e.

* Revert "Revert "Revert "Revert "Revert "Delete stale.yml"""""

This reverts commit 81c7ecc42f.

* Revert "Revert "Revert "Revert "Revert "Delete main.yml"""""

This reverts commit d1e1c03983.

* Revert "Revert "Revert "Revert "Revert "Revert "Delete stale.yml""""""

This reverts commit b5f16b3e4d.

* Revert "Revert "Revert "Revert "Revert "Revert "Delete main.yml""""""

This reverts commit f9ef5ab193.

* Revert "Revert "Revert "Revert "Revert "Revert "Revert "Delete stale.yml"""""""

This reverts commit b66bbf8698.

* Revert "Revert "Revert "Revert "Revert "Revert "Revert "Delete main.yml"""""""

This reverts commit 01a44daf95.

* Revert "Revert "Revert "Revert "Revert "Revert "Revert "Revert "Delete main.yml""""""""

This reverts commit eb896849a7.

* 🔥 modifications dropped for all languages except for English

* Delete simpleCI.yml

* Delete stale.yml
2020-12-11 07:35:20 -06:00
Marek Suchánek
25a238f4e4 feat: Update the Czech translation (#8133)
* Update the Czech translation of `addPeople`

* Update the Czech translation of `calendarSync`

* Update the Czech translation of `chat`

* Add the Czech translation of `chromeExtensionBanner`

* Update the Czech translation of `connectingOverlay` and `connection`

* Update the Czech translation of `connectionindicator`

* Update the Czech translation of `deepLinking`

* Update various strings in the Czech translation

* Update various strings in the Czech translation

* Fix a trailing comma that broke JSON

* Sort keys in main-cs.json to deduplicate the translation and make diffs from main.json more readable

* Add several missing strings in the Czech translation

* Add several missing strings in the Czech translation, mainly lobby mode

* Add several missing strings in the Czech translation, mainly `prejoin`

* Add the missing Czech translation of `recording` and `security`

* Update various strings in the Czech translation

* Add the missing Czech translation of `accessibilityLabel`

* Add the missing Czech translation of `toolbar`

* Update various strings in the Czech translation

* Update various strings in the Czech translation

* Various edits of the Czech translation and a spell check

* Add missing language names in the Czech translation
2020-12-11 06:43:37 -06:00
Jaya Allamsetty
26dbc9a78b fix: Fixes VP9 support on Chrome.
chore(deps) lib-jitsi-meet@latest
2020-12-10 15:01:25 -05:00
Hristo Terezov
79e517ed65 feat(analytics): Add tenant. 2020-12-10 13:57:13 -06:00
Avram Tudor
148234ea50 Merge pull request #8230 from jitsi/tavram/revert-fixroom
Revert "fix(external_api) replace special chars in roomName before co…
2020-12-10 14:59:52 +02:00
Tudor-Ovidiu Avram
b23f4b02ea Revert "fix(external_api) replace special chars in roomName before constructing URL"
This reverts commit 6f90458ff1.
2020-12-10 14:51:51 +02:00
damencho
e9200bab09 fix: Fixes detecting websocket disconnect by using xmpp pings. 2020-12-09 15:19:39 -06:00
Дамян Минков
97f47998ba feat: Exposes a method for checking is remote track received and played/testing. (#8186)
* 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.
2020-12-08 08:01:16 -06:00
Jaya Allamsetty
0019284b10 feat: Add option to force pc to use turn relay candidates.
Helps with testing turn relay cases.
2020-12-07 20:17:26 -05:00
Hristo Terezov
5cae5985c0 feat(ConferenceTimer): Add config option to hide. 2020-12-03 17:00:33 -06:00
bgrozev
d77c5ccb7d doc: Add docs for enableLipSync. (#8195)
* doc: Add docs for enableLipSync.
2020-12-03 14:10:30 -06:00
bgrozev
96af156465 Remove conference-wide RTX/REMB/TCC/opus-red options. (#8194)
* doc: Updates the docs for REMB, TCC, opus-red.
2020-12-03 14:10:17 -06:00
רטו
09aa486ff1 fix(lang) fix a few typos in Italian translation 2020-12-03 16:13:55 +01:00
bgrozev
0f2be8c642 fix(config) remove openBridgeChannel 2020-12-03 16:12:47 +01:00
Jaya Allamsetty
65562d1ef4 fix(tracks): Do not add a second audio track. 2020-12-02 14:02:04 -05:00
bgrozev
9535f84775 cleanup: Remove the startBitrate option. (#8193) 2020-12-01 14:19:17 -06:00
Boris Grozev
6c477cad9b cleanup: Remove obsolete config option. 2020-12-01 12:12:45 -06:00
Boris Grozev
2b6c7a51a3 cleanup: Remove unused code. 2020-12-01 08:32:26 -06:00
Boris Grozev
42d1389338 feat: Remove the min-participants config. 2020-12-01 08:32:01 -06:00
רטו
d74f93209c fix(lang) typo 2020-12-01 13:56:46 +01:00
Boris Grozev
6f61077a65 ref: Remove unused option from whitelist. 2020-12-01 06:09:20 -06:00
Saúl Ibarra Corretgé
997c3f75b5 chore(rn) raise SDK and app versions 2020-11-27 15:24:26 +01:00
Saúl Ibarra Corretgé
baa39896f1 fix(android) set stream type hardware buttons should control
Ref:
https://developer.android.com/reference/android/app/Activity#setVolumeControlStream(int)
2020-11-26 16:30:01 +01:00
Saúl Ibarra Corretgé
3725f698e4 fix(android) reset audio route after audio focus was lost
Looks like audio devices must be re-set after focus was lost and regained.
Otherwise some devices (tested on a Samsung Galaxy S9) are in a weird state
where the second microphone is not used when speakerphone is on.
2020-11-26 15:33:36 +01:00
Saúl Ibarra Corretgé
67002c903a fix(android) use modern API for requesting audio focus 2020-11-26 15:33:36 +01:00
chipechop
1b15820f01 fix(lang) update Italian translation 2020-11-26 13:39:44 +01:00
Titus-Andrei Moldovan
4cced3af07 fix(android) disables the RNWebViewFileProvider 2020-11-26 11:24:43 +01:00
Mihai-Andrei Uscat
a8db3c1b28 chore(popups): Move popup configs to electron-utils 2020-11-26 12:13:50 +02:00
Jaya Allamsetty
39cf8854af fix(TPC): Do not scale down desktop track in p2p/non-simulcast cases.
chore(deps) lib-jitsi-meet@latest
2020-11-25 17:13:13 -05:00
Saúl Ibarra Corretgé
57f3e8a3e8 fix(deps) update logger 2020-11-25 16:48:58 +01:00
Saúl Ibarra Corretgé
f6fa903f8f feat(rn) switch to XCFramework and WebRTC M87 2020-11-25 16:39:26 +01:00
Hristo Terezov
3796db20ea fix(connection-status): action 2020-11-24 16:03:18 -05:00
Saúl Ibarra Corretgé
911df4b18a fix(avatar) revert back to defaulting to Gravatar
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 :-)
2020-11-24 11:43:26 +01:00
George Politis
1041cd8055 feat: Makes it possible to hide the "Save Logs" link. (#8143)
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.
2020-11-24 10:49:10 +01:00
Andrei Bora
898eca86d5 Make jwt accept boolean values for features 2020-11-23 11:34:34 -06:00
Oskars G
e0d41a30ef feat: Include "Latvian" in the languages list (#8129) 2020-11-21 09:57:56 -06:00
Jaya Allamsetty
d6ab0a72a1 fix(lastN): select screenshare endpoint always when auto pinning.
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.
2020-11-20 10:29:12 -05:00
Jaya Allamsetty
fc694641dc fix(lastN): Do not override channelLastN value.
If limitLastN values are specified and channelLastN < limitLastN, configure channelLastN on the conference.
2020-11-20 10:29:12 -05:00
damencho
1ee7e81918 fix: Fixes 404 page link when base is used. 2020-11-19 10:49:03 -06:00
Saúl Ibarra Corretgé
a7de8be0aa feat(avatar) add ability to customize Gravatar base URL
Also, default to libravatar.

Closes: https://github.com/jitsi/jitsi-meet/issues/4927
2020-11-18 00:05:49 +01:00
Jaya Allamsetty
696ec36c8c fix(UI): Add method for returning the video type of remote participants.
This is needed for the torture clients to determine the video type for the remote participants when testing desktop share.
2020-11-17 12:49:36 -06:00
Avram Tudor
76c9d96361 Merge pull request #8110 from jitsi/tavram/fix-double-slash
fix(jaas) replace only the first slash in a pathname
2020-11-16 11:26:09 +02:00
Tudor-Ovidiu Avram
b889bd5664 fix(jaas) replace only the first slash in a pathname 2020-11-16 11:01:31 +02:00
damencho
d97f46c163 feat: Skips the default tile view when jibri is loading.
Follows me and switching to tile view, still works.
2020-11-13 14:48:09 -06:00
Jaya Allamsetty
5510138944 fix(screenshare): do not reconfigure encodings for simulcast SS
chore(deps) lib-jitsi-meet@latest
2020-11-13 13:45:36 -05:00
Saúl Ibarra Corretgé
29fa4c935e fix(chat) stop using nicknames
We stopped providing a way to set them, so don't render them either.

Also cleanup some leftover config options.
2020-11-13 17:40:57 +01:00
damencho
7de1e6d89e Updates kick, fixes it after 4b8aae90. 2020-11-11 13:18:13 -06:00
Andrei Bora
c4ef7d8601 Fix get subdomain function 2020-11-11 08:37:35 -06:00
Mihai-Andrei Uscat
9379bb3c5b fix(Toolbox) Maintain overflow button visible at all times
* fix(Toolbox) Maintain overflow button visible at all times

* Make changes only on desktop browser
2020-11-11 16:11:51 +02:00
Vlad Piersec
101a40a8da fix(welcome_page): Fix background image url path 2020-11-11 15:37:16 +02:00
Jaya Allamsetty
36871fa37e fix(safari): Ensure simulcast stream resolutions don't change.
Safari 14.1 has a bug where it returns 720p for every simulcast stream when RTCRtpSender.getParameters is called even though the stream resolutions are different.
By using the encodings config used when source was added, on every RTCRtpSender.setParameters call, we ensure that simulcast stream resolutions don't change.
chore(deps) lib-jitsi-meet@latest
2020-11-11 07:55:58 -05:00
Vlad Piersec
c09ed4c8ef fix(welcome_page): Add max width to welcome card 2020-11-11 14:11:08 +02:00
Vlad Piersec
08dce76763 fix(vpaas): Make user media permission message more generic 2020-11-11 13:24:02 +02:00
Prime9999
d03173e827 fix(lang) update Japanese translations 2020-11-11 09:42:22 +01:00
Дамян Минков
12c835dd91 feat: Drops filmStripOnly mode. (#8074)
* feat: Drops filmStripOnly mode.

* squash: Let's make lint happy again.

* squash: Drop some css.
2020-11-10 16:21:07 -06:00
damencho
f6127d45e9 fix: Fix module allowners and moderated rooms. 2020-11-10 10:43:29 -06:00
Saúl Ibarra Corretgé
9219e80a2a fix(password) set input type to "password"
This will make browsers not cache results in cleartext.

Co-authored-by: Tim Dittler <t.dittler@heinlein-support.de>
2020-11-10 17:05:20 +01:00
tmoldovan8x8
71fb5aef6c feat(rn) add mute everyone / (else) capabilities 2020-11-10 15:49:38 +01:00
Vlad Piersec
721848da3f fix(welcome_page): Update header to latest design & use generic key name 2020-11-10 16:43:52 +02:00
Saúl Ibarra Corretgé
ad496ac245 feat(external_api) drop support for noSSL option
Bwrosers have not allowerd WebRTC on non-secure origins for a very long time
now.
2020-11-10 15:09:23 +01:00
Saúl Ibarra Corretgé
e271ec2e13 chore(deps) lib-jitsi-meet@latest 2020-11-10 15:09:09 +01:00
GreatMedivack
c601acd6a8 fix(lang) update Russian translation 2020-11-10 11:02:21 +01:00
Erik Demaine
58d38ca714 fix(build) fix webpack-dev-server on Windows
Allow path separator of \ in addition to / in jQuery's path name.
2020-11-10 11:01:00 +01:00
Steffen Kolmer
6f90458ff1 fix(external_api) replace special chars in roomName before constructing URL
Fixes: https://github.com/jitsi/jitsi-meet/issues/7900
2020-11-10 11:00:12 +01:00
chipechop
d08f3e1ab2 fix(lang) update Italian translation 2020-11-10 10:53:58 +01:00
chipechop
ce1a964d0f fix(lang) update Italian translation 2020-11-10 10:53:09 +01:00
Avram Tudor
48d0616ebf Merge pull request #8003 from jitsi/tavram/invite-url
fix(vpaas) fix invite url flicker for jaas users
2020-11-10 11:52:16 +02:00
sellth
af82c69bbb fix(lang) update German translation 2020-11-10 10:50:08 +01:00
Mejans
892e508b48 fix(lang) update for Occitan 2020-11-10 10:49:17 +01:00
gabrc52
b7b5f87e2b fix(lang) improve Spanish translations 2020-11-10 10:47:13 +01:00
Ottavio Campana
ec16774dd4 fix(lang) fix rendering accented characters in Italian
Part of main-it.json uses characters like è, but some places still uses the &egrave; equivalent. Those character are not correctly rendered in the browser, therefore they are switched to their counterparts, as it was already done for other texts.
2020-11-10 10:42:08 +01:00
Saúl Ibarra Corretgé
7682e49787 feat(BrowserCapabilities) drop supportsVideo
It has been `true` for a very long time.
2020-11-10 10:33:00 +01:00
Jaya Allamsetty
1e07385ac0 ref(presenter): refactor the desktop resize logic for presenter. 2020-11-09 11:07:01 -05:00
Vlad Piersec
68d97f6d9d fix(welcome_page): Fix mobile version
* Fix layout
* Change background color & show image
2020-11-09 14:23:32 +02:00
Emil Ivov
da7383f89c Merge pull request #8053 from jitsi/fix-calendar-svg
fix(CalendarList): calendar.svg path.
2020-11-08 09:13:08 -06:00
Hristo Terezov
b8444ff1bf fix(CalendarList): calendar.svg path. 2020-11-08 09:07:53 -06:00
Jaya Allamsetty
3381cf4422 fix(screenshare): Fixes for the blurry desktop share issues.
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.
2020-11-06 17:04:00 -05:00
damencho
895c92217a fix: Optimizes hot paths in prosody modules, string comparisons. 2020-11-06 13:33:14 -06:00
damencho
0934fffa25 feat: Drop enableUserRolesBasedOnToken and isGuest. 2020-11-06 08:12:59 -06:00
damencho
20ce38bd4c feat: Show cc button for ongoing transcribed meetings for guests 2020-11-06 08:12:59 -06:00
damencho
c4ba97e87c feat: Drop lockRoomGuestEnabled. 2020-11-06 08:12:59 -06:00
damencho
4b8aae90e0 feat: Drop HIDE_KICK_BUTTON_FOR_GUESTS setting.
The main config contains disableRemoteMute and remoteVideoMenu: { disableKick: true} options, which can be used.
2020-11-06 08:12:59 -06:00
damencho
c2539bf615 feat: Drop buttons tooltips specific to guests. 2020-11-06 08:12:59 -06:00
damencho
4fdd4b66f7 fix: Hide copy password if it is not available. Fixes #7783 2020-11-06 08:12:59 -06:00
damencho
9fa29d7353 feat: Profile tab does not depend on isGuest.
Introduced a config property to disable profile.
2020-11-06 08:12:59 -06:00
damencho
c14f639639 feat: Drops SHOW_JITSI_WATERMARK_FOR_GUESTS and SHOW_WATERMARK_FOR_GUESTS. 2020-11-06 08:12:59 -06:00
damencho
c007477ee9 fix: Show livestream button only for moderators. 2020-11-06 08:12:59 -06:00
Andrei Bora
50997ae6ac Stringify boolean values from jwt user context 2020-11-06 06:15:45 -06:00
Vlad Piersec
f8a41aea9c feat(welcome_page): Redesign welcome page 2020-11-06 13:50:30 +02:00
Avram Tudor
88c02fb658 Merge pull request #8039 from jitsi/tavram/fix-double-slash
fix(jaas) fix double slash for branded invite urls
2020-11-05 16:04:59 +02:00
Tudor-Ovidiu Avram
0f64c66f91 fix(jaas) fix double slash for branded invite urls 2020-11-05 15:43:53 +02:00
Дамян Минков
9f65ae52f1 fix: Prosody modules - drop unused and duplicate code and drop chatty debug statements (#8027)
* chore: Updates mod_smacks.lua version to latest.

https://hg.prosody.im/prosody-modules/file/db75772afb28/mod_smacks/mod_smacks.lua

* Drop unused modules.

* Update docs.

* Move utility functions away from domain mapper.

* Remove some chatty debug log messages.

* Drops not needed patch for mod_websocket.
2020-11-04 08:25:03 -06:00
Vlad Piersec
a242e86b23 chore(deps) amplitude 7.3.1 2020-11-04 16:18:06 +02:00
Saúl Ibarra Corretgé
4211db0893 fix(rn, screen-sharing) don't render own screen-share in large view 2020-11-04 14:45:16 +01:00
Titus-Andrei Moldovan
9a35026d6a feat(android) add screen-sharing support
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
Co-authored-by: zycwind <391321232@qq.com>
2020-11-04 14:45:16 +01:00
slauth
9742e90bb5 allow wildcard in token issuer verification 2020-11-03 10:45:47 -06:00
Saúl Ibarra Corretgé
2a01d3550c fix(conference) remove no longer needed code
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.
2020-11-03 16:15:01 +01:00
rugk
efce5a831b feat(misc) automatically assign feature-request tag to issues
…if they are reported as a feature request, of course.
2020-11-03 09:41:20 +01:00
damencho
e0117e03e8 feat: Reduce pings and adds xmpp ping config. 2020-11-02 16:57:45 -06:00
Hristo Terezov
1648e4b407 ref(thumbnail): mutedWhileDisconnected -> redux 2020-11-02 13:49:36 -06:00
Vlad Piersec
b02136d013 feat(prejoin): Add name from jwt to prejoin screen 2020-10-30 13:09:18 -05:00
damencho
734631a7a4 fix: Avoids storing lobby room instance in the main room object.
We sometimes see "error   Top-level error, please report:
                  /usr/lib/prosody/util/serialization.lua:38: Can't serialize table: table has multiple references".
This also slows down restarting prosody.
2020-10-30 12:52:08 -05:00
Vlad Piersec
9fbb35b6e1 feat(vpaas): Track vpaas conference join 2020-10-30 09:26:21 +02:00
Hristo Terezov
f45af351d8 ref(thumbnail): use connectionStatus from redux. 2020-10-29 12:05:40 -05:00
JB Joatton
1f4cd22875 fix(lang): update fr translation 2020-10-29 16:27:47 +01:00
Adão Santos
53cc724b3b fix(lang) update ptBR translation 2020-10-29 13:56:06 +01:00
Tudor-Ovidiu Avram
8f1cb7ded2 fix(vpaas) fix invite url flicker for jaas users 2020-10-29 14:20:46 +02:00
Hristo Terezov
b9ccc3ad8c fix(StatusIndicators): Improve isScreenSharing check
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2020-10-27 13:19:52 -05:00
Hristo Terezov
68a0bdce2c ref(StatusIndicators): isScreenSharing -> redux. 2020-10-27 13:19:52 -05:00
Hristo Terezov
b71d92a139 ref(StatusIndicators): Use audio muted from redux. 2020-10-27 10:16:16 -05:00
Jaya Allamsetty
30fc04ba61 fix(logging): Add more details to onerror and onunhandledrejection errors. 2020-10-27 10:17:59 -04:00
Jaya Allamsetty
d2046c2c8f fix(screenshare): bring back 'x-google-flag:conference' flag in remote description for SS.
chore(deps) lib-jitsi-meet@latest
2020-10-26 18:02:00 -04:00
Hristo Terezov
35b5f6df06 s/isLocalVideoTrackMuted/isLocalCameraTrackMuted/ 2020-10-26 14:03:40 -05:00
Hristo Terezov
ca2343c31a ref(StatusIndicators): Use video muted from redux. 2020-10-26 11:03:31 -05:00
Jaya Allamsetty
3657c19e60 fix(video-quality): set lastN to 1 when screenshare is added to call in audio-only mode.
This fixes an issue where lastN is not bumped to 1 on an audio-only client when a screenshare source is added to the call.
2020-10-26 10:28:00 -04:00
Hristo Terezov
007183c151 fix(deviceChange):Dont create video track if muted 2020-10-23 13:04:02 -05:00
Hristo Terezov
9c10ac3028 fix(conference): start muted values on initial GUM
Take into account the start muted values stored in local storage.
2020-10-23 13:04:02 -05:00
Jaya Allamsetty
4b429112f2 fix(iFrame): capturScreenshot - check if the remote participant has a track attached.
Participants that join video muted do not have video tracks attached. Fixes https://github.com/jitsi/jitsi-meet/issues/7942.
2020-10-22 17:22:54 -04:00
Saúl Ibarra Corretgé
d067c4e731 fix(pwa) move manifest to the root
It must be served from the same origin, so we need to bypass the CDN we use for
meet.jit.si. See the code comments for the rationale on the workaround.
2020-10-22 16:17:18 +02:00
Saúl Ibarra Corretgé
07d8611988 fix(pwa) remove no longer used file 2020-10-22 16:17:18 +02:00
Jaya Allamsetty
b0d55f9450 fix(xmpp): Update previd value when trying to resume connection.
lib-jitsi-meet@latest
2020-10-22 09:47:36 -04:00
Saúl Ibarra Corretgé
5f2ee6d951 fix(android) fix runtime WebRTC issue
https://github.com/jitsi/jitsi-meet/issues/7911#issuecomment-714323255
2020-10-22 12:04:41 +02:00
Vlad Piersec
ddea7d0294 fix(prejoin): Fix moving content when device status bar is toggled 2020-10-22 09:28:26 +03:00
Saúl Ibarra Corretgé
348c6416e5 fix(pwa) fix PWA worker script origin
Looks like the base it's still applied, so use a full URL.
2020-10-21 15:15:17 +02:00
Saúl Ibarra Corretgé
ad265d5815 fix(pwa) fix auto-generated TWA icons 2020-10-21 10:49:50 +02:00
Saúl Ibarra Corretgé
d5b2da02c1 fix(pwa) fix loading the service worker
We typically use a base URL for static assets using a CDN so loading the worker
from there won't work since it's a different origin. Using a URL relative to the
origin of the page will make it be loaded from the right place.
2020-10-21 10:49:50 +02:00
Jaya Allamsetty
fbfaed07b2 feat(iFrame): Add recording options for RTMP streaming.
Add methods for start/stop recording in addition to the commands that we already have.
2020-10-20 16:15:52 -04:00
emrah
da33d8a033 fix: speakerstats_component, attempt to index (a nil value) 2020-10-20 07:48:23 -05:00
Saúl Ibarra Corretgé
830817d7b4 chore(deps) run npm audit fix 2020-10-20 13:59:03 +02:00
Avram Tudor
8c67f1fdf3 Merge pull request #7938 from jitsi/tavram/twa
Tavram/twa
2020-10-20 12:58:36 +03:00
Saúl Ibarra Corretgé
b57da04553 feat(pwa) update TWA Android project 2020-10-20 11:37:32 +02:00
Tudor-Ovidiu Avram
b428c3bca8 feat(pwa) do not display chrome extension banner for TWA 2020-10-20 12:26:05 +03:00
Tudor-Ovidiu Avram
96c34b7774 chore(deps) lib-jitsi-meet@latest 2020-10-20 12:08:59 +03:00
Saúl Ibarra Corretgé
f2bbc874b3 feat(pwa) add fastlane integration for building TWA APK 2020-10-20 11:03:37 +02:00
Saúl Ibarra Corretgé
b18398f016 feat(pwa) update mask icon
Make it a 512 square and specify its purpose as just "maskable" since this can't
go anywhere.
2020-10-20 11:03:37 +02:00
Hristo Terezov
a6e58c3101 fix(thumbnail): cleanup unused hover properties. 2020-10-16 16:33:26 -05:00
Saúl Ibarra Corretgé
c5f6df5210 fix(avatar) remove participant's "avatarID"
Through several avatar work iterations it's no longer used.
2020-10-16 14:44:10 +02:00
Tudor-Ovidiu Avram
e67c08d837 fix(pwa) move logic for registering pwa worker 2020-10-16 14:43:40 +02:00
Tudor-Ovidiu Avram
d854b2cd3d fix(pwa) remove window.load event handler for pwa registrator 2020-10-16 12:10:18 +02:00
paweldomas
ab5c8d49c3 fix(flow): ignore contentHint
I don't know how to modify built-in MediaStreamTrack type, so ignore the error.
2020-10-15 15:10:40 -04:00
paweldomas
820d9b2ba8 feat(presenter): apply 'text' contentHint
...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/
2020-10-15 15:10:40 -04:00
Tudor-Ovidiu Avram
e4c1046d7c fix(pwa) bypass loading in electron. ensure same origin with registrator 2020-10-15 18:54:12 +02:00
Jaya Allamsetty
223187c640 fix(UI): Do not re-compute the container width when chat window is closed.
Since the external API now sets preferredWidth/preferredHeight for resizing the large video, we don't need to add chat width to the computed window width when the chat window is closed.
Fixes https://github.com/jitsi/jitsi-meet/issues/7889
2020-10-15 10:00:28 -04:00
Saúl Ibarra Corretgé
35e8821679 chore(deps) update Olm to 3.2.1 2020-10-15 10:38:39 +02:00
Tudor-Ovidiu Avram
3125345793 fix(pwa) improve upon pwa specs 2020-10-15 10:38:23 +02:00
Aaron van Meerten
5e6c4d67ed Merge pull request #7904 from saghul/preload-avatars-refer
fix(avatars) refactor preloading
2020-10-14 15:22:17 -05:00
Saúl Ibarra Corretgé
a3fb996ff0 fix(avatars) refactor preloading
Use fetch(), which gives us better control over headers.
2020-10-14 21:58:28 +02:00
Saúl Ibarra Corretgé
65a9de346f fix(rn) use a RN-friendly URL polyfill
The previous one no llonger works out of the box with RN.
2020-10-14 21:29:01 +02:00
Saúl Ibarra Corretgé
036d810d46 fix(rejoin) fix adding track parameters to rejoin URL
The URL polyfill we were using didn't support taking a URL object in the
constructor, the updated one does.
2020-10-14 18:05:19 +02:00
Saúl Ibarra Corretgé
b5f9b575ca chore(git) update gitignore 2020-10-14 16:32:34 +02:00
Saúl Ibarra Corretgé
a7fa9d8a97 feat(pwa) update generated Android project 2020-10-14 16:32:34 +02:00
Saúl Ibarra Corretgé
4762d5a153 feat(pwa) move twa manifest to twa/ 2020-10-14 16:32:34 +02:00
Saúl Ibarra Corretgé
e8c2c89343 feat(pwa) update twa manifest with new (old) colors and manifest path 2020-10-14 16:32:34 +02:00
Saúl Ibarra Corretgé
d77a7cac3a feat(pwa) use current icons 2020-10-14 16:32:34 +02:00
Saúl Ibarra Corretgé
6030c32272 feat(pwa) add TWA generated files 2020-10-14 16:32:34 +02:00
tmoldovan8x8
8e19597e38 feat(mobile) add splash screen 2020-10-14 11:26:47 +02:00
Tudor-Ovidiu Avram
bf6a1540df fix(prejoin) guard case for locationUrl being falsy in prejoin screen 2020-10-14 12:23:59 +03:00
Saúl Ibarra Corretgé
9434d3c349 fix(deps) update react-native to fix iOS 14 icons
This update doesn't touch thousands of lines of package-lock which caused a
runtime breakage on both platforms.
2020-10-14 10:50:45 +02:00
Saúl Ibarra Corretgé
b891a7526d Revert "fix(ios) fix not rendering images on iOS 14"
This reverts commit cd68c72338.
2020-10-14 10:50:45 +02:00
Hristo Terezov
5bf20517e7 feat(prejoin): handle disabled precall test. 2020-10-13 15:52:43 -05:00
Tudor-Ovidiu Avram
0d7a730497 feat(pwa) add pwa specifics 2020-10-13 13:40:31 +02:00
Vlad Piersec
59caa0cf42 fix(vpaas): Count endpoint only when there are 2 or more participants 2020-10-12 16:19:09 +03:00
Saúl Ibarra Corretgé
bdda8c56c7 fix(VideoLayout) make thumbnail iteration more resilient
If a failure occurs while we are still setting up the UI it's possible the local
thumbnail is still null, and none of the code assumes it may be null, so skip
it.
2020-10-09 19:30:20 +02:00
Saúl Ibarra Corretgé
c239ba71e6 chore(android) update gradle plugin to version 4.0.2 2020-10-09 12:53:27 +02:00
Tudor-Ovidiu Avram
1005f8f498 fix(prejoin) allow libs loaded in prejoin.html to be cached 2020-10-09 12:46:51 +02:00
Saúl Ibarra Corretgé
f6e2bd1249 fix(build) increase external_api bundle size
We are off my 1KB oh well.
2020-10-09 12:34:56 +02:00
Saúl Ibarra Corretgé
cd68c72338 fix(ios) fix not rendering images on iOS 14
Fixed by patching react-native:
e7ee500660

(backport from upstream)
2020-10-09 12:34:56 +02:00
Hristo Terezov
1740aaf973 fix(video-quality-dialog): Initial value.
Fixes an issue when the video quality dialog is opened for first time
and config.videoQuality.persist is true there isn't any selected option.
2020-10-08 10:32:10 -05:00
Tudor-Ovidiu Avram
a270e4300a fix(native) add missing function 2020-10-08 13:10:45 +02:00
Mihai Uscat
5e2ee3bdcd fix: Show focus indicator only when navigating via keyboard 2020-10-08 10:41:26 +02:00
Saúl Ibarra Corretgé
bdd2845917 deps,misc: fix package-lock conflicts 2020-10-08 10:17:53 +02:00
Saúl Ibarra Corretgé
f9888e5dbb rn,remote-video-menu: make UI consistent with other menus 2020-10-08 10:17:53 +02:00
Saúl Ibarra Corretgé
44d7828e9c rn,overflow-menu: improve drag icon 2020-10-08 10:17:53 +02:00
Saúl Ibarra Corretgé
82b14ba7f1 deps: update react-native-svg
Watch out when updating beyond this version:
https://github.com/react-native-community/react-native-svg/issues/1354
2020-10-08 10:17:53 +02:00
Saúl Ibarra Corretgé
63fe1de789 rn,recent-list: replace swipe options with long-press sheet
This change serves 2 purposes:

- (Hopefully) make the recent list entry options easier to discover
- Remove the (now unmaintained) swipeout dependency
2020-10-08 10:17:53 +02:00
Jaya Allamsetty
39af6f5943 fix(video-quality): Add the ability to request Ultra HD resolutions
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.
2020-10-07 15:07:14 -04:00
Anand Parshuramka
f01869c21c Adding the flags to enable/disable Kick out option in RemoteVideoMenu 2020-10-07 10:54:13 -05:00
Tudor-Ovidiu Avram
6d2f8ae37d feat(prejoin) show connection status in exported prejoin screen 2020-10-07 17:23:49 +02:00
Saúl Ibarra Corretgé
35bea1a1d0 fix(misc) update update-ljm script commit message 2020-10-07 16:31:47 +02:00
Saúl Ibarra Corretgé
afa4306ae8 chore(deps) lib-jitsi-meet@latest 2020-10-07 16:31:47 +02:00
Saúl Ibarra Corretgé
1d9daa8da7 fix(config) drop useStunTurn
Always attempt to discover the configured STUN/TURN servers.
2020-10-07 16:31:47 +02:00
Tudor-Ovidiu Avram
478f1a731e feat(prejoin) improve ux 2020-10-07 14:53:49 +02:00
Titus-Andrei Moldovan
9f9e192c3c fix(android) - separates the invocation of the gradle tasks. It was noticed on some configurations that the publish task was executed before assembleRelease finished 2020-10-07 14:01:26 +02:00
Titus-Andrei Moldovan
943996e5b6 fix(android) - adds the import for the VersionName, since on some configurations it is not automatically imported 2020-10-07 14:01:26 +02:00
Hristo Terezov
bfde13cb15 chore(lib-jitsi-meet): Update. 2020-10-06 12:58:27 -05:00
George Politis
5939820271 fix: Makes the code more defensive to prevent an error. (#7837) 2020-10-05 16:56:46 +02:00
George Politis
b5310573fc feat: Adds more debug information in the GSM bars popover (#7627) 2020-10-02 15:20:24 +02:00
Jaya Allamsetty
aa488cb75c deps: lib-jitsi-meet@latest
Disable RTX on FF
2020-10-01 18:53:12 -04:00
Jaya Allamsetty
de8e62ac51 deps: lib-jitsi-meet@latest 2020-10-01 15:03:00 -04:00
damencho
f6d375f565 tests: Do not close lobby notifications when testing. 2020-10-01 10:44:01 -05:00
Titus-Andrei Moldovan
c54fed78c8 fix(android) excludes hermes related libs from the apk 2020-10-01 15:58:28 +02:00
Saúl Ibarra Corretgé
3d7ea52416 fix(e2ee) handle Olm initialization error
If the WASM code could not be loaded, fail to initialize if and remove it from
globals so the E2EE option becomes unavailable, since it will be non-functional.
2020-10-01 15:14:00 +02:00
Dhruv Awasthi
0c4d649459 chore(typo) fix 2020-09-30 11:54:27 +02:00
ondrej-zary
af416ad487 fix(lang) update Slovak translation 2020-09-30 11:53:27 +02:00
Yasin İsa YILDIRIM
1cd6f2b4da fix(lang) update turkish translation 2020-09-30 11:52:31 +02:00
kormang
1fb37a0216 fix(lang) add basic support for serbian 2020-09-30 11:50:50 +02:00
Saúl Ibarra Corretgé
c261682a29 fix(rn,config) increase config load timeout to 10 seconds 2020-09-30 10:08:52 +02:00
Hristo Terezov
49548ba564 doc(app.js): fix typo.
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2020-09-29 17:58:17 -05:00
Hristo Terezov
dc6d3daef7 feat(external-local-storage): support 2020-09-29 17:58:17 -05:00
Saúl Ibarra Corretgé
014f3b615f fix(android) increase gradle JVM heap size 2020-09-29 17:35:35 +02:00
Jaya Allamsetty
25271d7eec fix(presenter): Do not change the video mute state on presenter mute.
This fixes the issue where the local preview appears muted when presenter camera is turned on and then off while screenshare is in progress.
2020-09-29 08:35:42 -04:00
Saúl Ibarra Corretgé
7ef4de9c1c chore(deps,android) bump leakcanary 2020-09-29 14:32:41 +02:00
Saúl Ibarra Corretgé
e6e088d197 fix(crashlytics) add missing dependency
Looks like the "Firebase Analytics" dependency is needed when migrating to the
new Firebase Crashlytics SDK. We are only interested in the "latest iversion
crash-free users" stat, which seems to require this. The documentartion is
somewhat confusing though.
2020-09-29 14:32:41 +02:00
Andrei Gavrilescu
0e034a686f deps: lib-jitsi-meet support rtcstats p2p meta 2020-09-29 15:18:23 +03:00
Saúl Ibarra Corretgé
d9f85c70f1 chore(deps,rn) react-native-webview@10.9.0 2020-09-29 14:16:36 +02:00
Titus-Andrei Moldovan
de8079cc98 fix(android) update Gradle and the plugin to the latest versions 2020-09-29 14:16:36 +02:00
Titus-Andrei Moldovan
2a9805f9b1 feat(android) revert to JSC as our JS engine
JSC wasn't the cause for the crash we were hunting after all. RN doesn't set
HErmes as the default, neither does Expo, so the jury is still out on Hermes,
and it looks like JSC is still the safest bet.

In addition, the way Hermes is packaged (as a standalone AARs, instead of a
local "Maven repo") complicates the SDK build and can make the resulting build
bloated.
2020-09-29 14:16:36 +02:00
Saúl Ibarra Corretgé
00ec0f03a6 chore(deps) run npm audit fix 2020-09-29 13:51:07 +02:00
Дамян Минков
91f636a813 debian: Don't break those still using ALPN multiplex (Fixes #7794) (#7796)
* fix: Don't break those still using ALPN multiplex (Fixes #7794)

* squash: Update doc/debian/jitsi-meet/jitsi-meet.conf

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2020-09-29 06:17:42 -05:00
roms2000
fa4df19733 fix(lang) update French translation 2020-09-29 10:22:50 +02:00
DecaTec
1d17cc91e0 fix(lang) typo in German translation 2020-09-29 10:22:05 +02:00
Дамян Минков
93f4098dc0 feat: Enable bridge websockets by default for new installs (#7781)
* feat: Drops multiplexing support by default.

* fix: Fix purge of jitsi-meet-prosody.

Clean the accounts when there is a - in the domain name.
Removes the certificate so reinstall will not cause problems.

* feat: Enables bridge websockets by default.

* fix: External-ip conflicts with denied-peer-ip.

In cases where the bridge and coturn are on the same machine and the local address is any of the networks from denied-peer-ip, coturn is not using its public address to probe it and communication fails as the other address is deneid.

* squash: Fix a comment.
2020-09-25 13:15:58 -05:00
Saúl Ibarra Corretgé
11ae187ece fix(chat) prevent homograph attacks
Decode URLs using punycode when rendering, so when http://ebаy.com is sent
we render http://xn--eby-7cd.com/ instead.

Ref: https://github.com/tasti/react-linkify/issues/84
2020-09-25 12:46:29 +02:00
Jaya Allamsetty
0f9e01a7cf feat(iFrame): Add method for pinning a participant on stage view 2020-09-24 21:42:58 -04:00
Saúl Ibarra Corretgé
ddbd3f292a fix(analytics) clarify log line 2020-09-24 13:39:41 +02:00
Saúl Ibarra Corretgé
b153bf2fb8 fix(analytics) make handler loading more resilient
- 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
2020-09-24 13:39:41 +02:00
Saúl Ibarra Corretgé
919be21912 fix(analytics) make sure rtcstats is not enabled on mobile 2020-09-24 13:39:41 +02:00
Saúl Ibarra Corretgé
1a339100ab fix(analytics) avoid Amplitude initialization failure on mobile 2020-09-24 13:39:41 +02:00
Tudor-Ovidiu Avram
ce4ef96941 fix(vpaas) hide embed meeting for vpaas users 2020-09-24 12:06:51 +02:00
Tudor-Ovidiu Avram
993ded9936 fix(vpaas) fix vpaas redirect 2020-09-24 12:06:28 +02:00
Jaya Allamsetty
a8b9ae2b12 fix(callstats): Use callStatsThreshold for % of users instead of conferences 2020-09-23 18:58:38 -04:00
paweldomas
812af33a4d fix(mediaDeviceHelper): fix typo in dispatch 2020-09-23 12:57:53 -04:00
paweldomas
7f17c2eceb fix(LargeVideoManager): large video resizing
Distinguish between preferred and calculated width/height
values.
2020-09-23 12:54:26 -04:00
Jaya Allamsetty
09124ad7e9 fix(iframe): Use largeVideo video element for screenshot.
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.
2020-09-23 10:35:36 -04:00
Jaya Allamsetty
7a9a6855b7 fix(UI): Re-compute large-video width only once if the chat window is open.
Deduct the chat window width from large-video width only once if we keep toggling between stage view and grid view while the chat window is open.
2020-09-22 17:44:49 -04:00
Дамян Минков
8dcf04897a feat: Throttle out call attempts to the max number per minute (#7742)
* feat: Make possible to reload config for filter rayo iq.

* feat: Throttle out call attempts to the max number per minute

* squash: Updates comment about config
2020-09-22 10:53:43 -05:00
Saúl Ibarra Corretgé
69b7301b9d fix(build) reduce bundle size by about 700K
app.bundle.js before: 3851549 after: 4506493.

The culprit for the bloat was Olm. It feature-detects the environment in order
to pick a suitable random byte generator, and alas Webpack includes the None
crypto pollyfill. This is due to the existence of the "node" block in our
Webpack configuration file.

The solution is to provide empty modules to make bundling work, as we did
already for the fs module, since we know they are not used at runtime.
2020-09-22 10:59:55 +02:00
Jaya Allamsetty
794713b930 fix(iFrame): Make resizeLargeVideo only available on web 2020-09-21 19:54:45 -04:00
Jaya Allamsetty
89cd6e8e3e feat(stats): Add the ability to enable callStats for certain % of confs 2020-09-21 13:20:01 -04:00
Saúl Ibarra Corretgé
7a7937c072 fix(ios,version) versions must match 2020-09-18 21:02:51 +02:00
Saúl Ibarra Corretgé
4765ab9d63 chore(rn,version) bump app and sdk versions 2020-09-18 17:55:41 +02:00
Jaya Allamsetty
1d5decc14f feat(iFrame): Add a method for capturing screenshot of the large video (#7717) 2020-09-18 11:53:27 -04:00
Saúl Ibarra Corretgé
119b79fd84 fix(SmallVideo) screen-sharing indicator
The stream is attached before the video type change event is fired, so comparing
them is too late. Unconditionally update the screen-sharing indicator, and
perform the check for a change right there, to avoid re-renders.
2020-09-18 17:17:30 +02:00
Saúl Ibarra Corretgé
188771751d fix(config) remove unused options (#7723)
* fix(config) remove unused options

* Update configWhitelist.js
2020-09-18 08:55:09 -05:00
Vlad Piersec
d2ec0ea6f3 fix(branding): Fix dynamic logo display
* Display of the logo has been reworked (simplified).
* The logo will not be displayed if the call to `branding` endpoint fails.
* Add more docs.
2020-09-18 16:38:44 +03:00
Saúl Ibarra Corretgé
ed6e75b241 fix(ios) add local network usage description for iOS 14 2020-09-18 12:54:11 +02:00
Saúl Ibarra Corretgé
dedd3f4ef0 fix(config) remove no longer valid option 2020-09-18 12:31:55 +02:00
Jaya Allamsetty
bbb4fbd5f8 feat(iFrame): Add a method for resizing large video container from iFrame 2020-09-17 23:41:19 -04:00
Saúl Ibarra Corretgé
92235ae535 fix(android,calendar) avoid crash 2020-09-17 18:45:04 +02:00
Josh Brown
ebb1b8d76b fix(background-blur) refactor to improve performance 2020-09-17 18:25:06 +02:00
Saúl Ibarra Corretgé
42d559de93 deps: replace node-sass with sass
The former is no longer actively maintained.

Fixes: https://github.com/jitsi/jitsi-meet/issues/6427
2020-09-17 16:44:01 +02:00
Julian Vos
2838aefccc lang: fix Dutch dialog.kickTitle 2020-09-17 16:29:18 +02:00
Saúl Ibarra Corretgé
ca306f47b6 deps: react-native-background-timer@2.4.0
We hadn't updated in a while.
2020-09-17 13:15:04 +02:00
Saúl Ibarra Corretgé
56da400f19 ios: stop using react-native-background-timer
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.
2020-09-17 13:15:04 +02:00
Manuel Garcia
ab21e3cd5e fix(embed): remove legacy attribute from embed meeting code 2020-09-17 09:11:41 +02:00
damencho
2c026754ef fix: Fix ws reconnect piling up previd param. 2020-09-16 16:43:48 -05:00
Jaya Allamsetty
8dbe3e37b9 feat(iFrame): add a method for getting the participants info 2020-09-16 15:03:47 -04:00
Tudor-Ovidiu Avram
7f67f78db6 fix(embed) fix embed meeting code 2020-09-16 06:59:41 -05:00
Saúl Ibarra Corretgé
312949eef6 ios: update Crashlytics dependency 2020-09-15 21:22:50 +02:00
Saúl Ibarra Corretgé
41ea94c0c2 android: update AndroidX core library dependencies 2020-09-15 21:22:50 +02:00
Saúl Ibarra Corretgé
e70adef2ef android: update Crashlytics dependency 2020-09-15 21:22:50 +02:00
Saúl Ibarra Corretgé
57bbe3f75a android: fix crash when requesting permissions
The RN Permissions module calls this in a non-UI thread. What we observe is a
crash in ViewGroup.dispatchCancelPendingInputEvents, which is called on the
calling (ie, non-UI) thread. This doesn't look very safe, so try to avoid a
crash by pretending the permission was denied.
2020-09-15 16:17:46 +02:00
Tudor-Ovidiu Avram
e2731ce73e feat(loggin) forward logs to external api 2020-09-15 09:44:50 +02:00
yjhgull
d5dae945a8 lang: update Korean translation 2020-09-15 09:33:35 +02:00
Jaya Allamsetty
4d1dba937f feat(external_api): Add method for displaying participant on large video 2020-09-14 19:39:19 -04:00
Jaya Allamsetty
b6792db65f feat(external_api): Add cmd for selecting a user to be displayed in large video 2020-09-14 19:39:19 -04:00
Saúl Ibarra Corretgé
9815b633fc deps: lib-jitsi-meet@latest
Avoids CORS issues with the E2EE worker.
2020-09-11 16:13:12 +02:00
Joris Bodin
b4bf82429c lang: update French translation 2020-09-11 10:07:41 +02:00
Aaron van Meerten
53d485b397 Merge pull request #7679 from jitsi/mod-token-update
fix: Updates docs and verification to halt joining process.
2020-09-10 12:46:28 -05:00
damencho
0354dbe889 fix: Updates docs and verification to halt joining process.
When returning the error and showing to user not allowed screen we were not completely halting the prejoin operation when token verification fails on room join and the token is valid in general.
2020-09-10 10:07:30 -05:00
Saúl Ibarra Corretgé
7cafa205ee e2ee: stage 2
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.
---
2020-09-10 16:06:25 +02:00
Saúl Ibarra Corretgé
2b4f33bef8 e2ee: use a separate bundle for the worker 2020-09-10 16:06:25 +02:00
Selyan Slimane Amiri
31dee0bb68 lang: update kabyle translations 2020-09-10 10:30:09 +02:00
Hristo Terezov
fc75d45c6c feat(video-quality): add iframe event and getter. 2020-09-09 18:04:17 -05:00
Hristo Terezov
25839b18d2 feat(video-quality): persist. 2020-09-09 18:04:17 -05:00
Hristo Terezov
43f36c8cfd fix(ifarme-api): set-video-quality to use redux. 2020-09-09 18:04:17 -05:00
Hristo Terezov
b02d96231c ref(video-quality): Move all related code. 2020-09-09 18:04:17 -05:00
Дамян Минков
651d713206 feat: Allows jvb to control DTLS/SRTP protection profile. (#7626)
* feat: Allows jvb to control DTLS/SRTP protection profile.

* test: Adds dominant speaker change print for large in testing mode.
2020-09-09 16:14:53 -05:00
Saúl Ibarra Corretgé
9e5f469e0c deps: run npm audit fix
The amplitude-js dependency required a major bump.
2020-09-09 18:59:40 +02:00
Saúl Ibarra Corretgé
493ce8249e web,small-video: don't show screen content on thumbnails
This applies just to large view, not tile view.
2020-09-09 18:59:12 +02:00
Saúl Ibarra Corretgé
fdffb688c1 web,small-video: introduce screen-sharing indicator 2020-09-09 18:59:12 +02:00
Saúl Ibarra Corretgé
4807badac8 rn,thumbnail: introduce screen-sharing indicator 2020-09-09 18:59:12 +02:00
Saúl Ibarra Corretgé
5e3bd746e9 config: fix missing comma (#7667)
Fixes: https://github.com/jitsi/jitsi-meet/issues/7665
2020-09-09 07:18:54 -05:00
Jon Leren Schøpzinsky
8fa41bebb7 rn: don't start native call integration multiple times
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
2020-09-09 09:22:34 +02:00
paweldomas
cb7c280da6 fix(RN): crash on undefined state['features/dynamic-branding'] 2020-09-08 11:39:49 +02:00
emrah
0e50f1887e fix: enable token_verification during installation of jitsi-meet-tokens (#7630) 2020-09-04 10:17:54 -05:00
emrah
476ca54711 fix: keep plugin_paths while removing jitsi-meet-tokens (#7632) 2020-09-04 08:01:40 -05:00
emrah
70aa19e6d9 fix: disable token_verification while removing jitsi-meet-tokens (#7631) 2020-09-04 08:01:14 -05:00
emrah
7778a17b90 fix: added libssl1.0-dev to the dependencies of jitsi-meet-tokens (#7629) 2020-09-04 08:00:54 -05:00
Tudor-Ovidiu Avram
7ff41217ac feat(vpaas) disable deeplinking page 2020-09-03 10:45:51 -05:00
emrah
e8c44c10dd jitsi-meet-tokens: added git to the dependency list 2020-09-02 12:23:26 -05:00
damencho
b087b22d4f feat: Whitelist option to hide lobby button. 2020-09-02 11:49:15 -05:00
emrah
e988bf6565 fix: jitsi-meet-tokens - the first installation check (#7618) 2020-09-02 11:46:32 -05:00
Дамян Минков
d169bd5007 feat: Adds interface config to hide lobby button. (#7619)
* feat: Adds interface config to hide lobby button.

* squash: Moves the config to config.js and add it to mobile.
2020-09-02 10:28:22 -05:00
Boris Grozev
ac17db9df5 Update lib-jitsi-meet and add the RED option to config.js. 2020-09-01 11:49:23 -05:00
Felix C. Stegerman
322618357c jitsi-meet-tokens.postinst: fix tests 2020-09-01 07:51:37 -05:00
RabeeAbuBaker
79c1358f4b FEAT: Automatically copy invite URL after creating a room (#7581)
* 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
2020-08-30 09:36:52 -05:00
Hristo Terezov
5e85b5f63a fix(close3): Add close3.js 2020-08-28 11:33:19 -05:00
vp8x8
74f7c4141f fix(vpaas): Fix billing counter auth (#7595) 2020-08-28 15:43:14 +03:00
Vlad Piersec
4866ddc2ad fix(vpaas): Fix tenant typo 2020-08-28 11:08:59 +03:00
Vlad Piersec
71d0577a49 feat(vpaas): Add endpoint counter & remove branding on vpaas meetings 2020-08-27 14:49:03 -05:00
Hristo Terezov
b7529863d5 fix(iframe-api): setDevice. 2020-08-25 18:37:03 -05:00
Hristo Terezov
4ded94d130 fix(settings): store url display name and email. 2020-08-25 18:37:03 -05:00
Jaya Allamsetty
eb8b730227 deps: update lib-jitsi-meet to latest.
Update config.js to include the new codec preference options under videoQuality settings.
2020-08-25 16:52:48 -04:00
Vlad Piersec
4bd57692b7 feat(prejoin): Show warning if audio device does not receive data 2020-08-25 11:39:59 -05:00
Aaron van Meerten
5d012c24a7 Merge pull request #7508 from abora8x8/abora/vpass
Add pre and post validation for users that want to use their own publ…
2020-08-24 09:45:21 -05:00
Vlad Piersec
4f52a29120 fix(prejoin): Make avatar resizable 2020-08-21 14:10:24 -05:00
Tudor-Ovidiu Avram
8a4fb72eae feat(branding) allow invite links to be branded 2020-08-21 11:00:12 -05:00
paweldomas
6453ceb048 ref: remove jest and lastn functions.test.js
It doesn't play well with webpack and it's babel config
and I couldn't find a way to make it work.
2020-08-21 07:38:21 -07:00
Andrei Gavrilescu
e51bbe6125 fix syntax error 2020-08-20 17:30:59 -05:00
Andrei Gavrilescu
d725c0ab8a Use rtcstats with keep-alive / add rtcstats enabled config 2020-08-20 17:30:59 -05:00
Hristo Terezov
2c2edace2a Merge pull request #7475 from vp8x8/prejoin-focus
fix(prejoin): Auto focus display name input
2020-08-20 15:28:04 -05:00
paweldomas
d3d5847605 feat: configurable quality levels for video height
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.
2020-08-20 11:07:36 -07:00
Hristo Terezov
89ad76142d Merge pull request #7449 from muscat1/promotional-close
feat(close3): Move readyToClose flow to the close page
2020-08-20 11:48:42 -05:00
Vlad Piersec
1e76b8b6ea misc: Add test ids for prejoin buttons 2020-08-20 11:20:49 -05:00
Hristo Terezov
55175e2e95 fix(subject): set to ' ' after settings change. 2020-08-20 10:48:06 -05:00
Vlad Piersec
453c07cb17 feat(prejoin): Add precall connection quality indicator
* 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`.
2020-08-20 08:25:15 -07:00
Andrei Bora
af71d80150 Fix call after timeout 2020-08-19 17:38:40 +03:00
Andrei Bora
b765adca75 Solve review issues and add retries for http call 2020-08-19 17:11:18 +03:00
Andrei Bora
92e6cf7618 Add pre and post validation for users that want to use their own public keys 2020-08-19 16:50:24 +03:00
Tudor-Ovidiu Avram
10c2652a4f feat(prejoin) show error when trying to join and name is required 2020-08-18 13:18:58 -05:00
Aaron van Meerten
c3329ec931 Merge pull request #7518 from jitsi/aaronkvanmeerten/jibri-queue-component-modules
FEAT: prosody jibri queue component module
2020-08-18 10:16:39 -05:00
Mihai Uscat
9cf7199c0e feat(close3): Move readyToClose flow to the close page 2020-08-18 17:31:10 +03:00
Vlad Piersec
d82bb0a89b fix(prejoin): Fix join without audio 2020-08-17 08:31:55 -05:00
Tudor-Ovidiu Avram
295dd8a45d fix(prejoin) remove version parameter 2020-08-17 10:54:22 +03:00
damencho
25ae83bcf4 fix: Fixes #7514 when promoting new moderator and lobby is enabled. 2020-08-14 17:56:24 -05:00
Aaron van Meerten
82b1408454 FEAT: jibri queue clear asap cache for token util on config reload 2020-08-14 15:24:26 -05:00
Aaron van Meerten
36565f0c50 FIX: token util keyurl definition move to above callback definition 2020-08-14 15:23:54 -05:00
Aaron van Meerten
0c48e205d7 Merge branch 'master' into aaronkvanmeerten/jibri-queue-component-modules 2020-08-14 14:21:13 -05:00
Aaron van Meerten
5e35b69fc9 FIX: prosody token util handles race on timeout gracefully 2020-08-14 14:14:29 -05:00
Aaron van Meerten
3fd85720bc FIX: prosody jibri queue component reloads configuration 2020-08-14 14:13:57 -05:00
Aaron van Meerten
e439d065b7 FEAT: token util better logging for timeouts, verification 2020-08-14 13:52:25 -05:00
Jaya Allamsetty
5dcecdbb54 deps: lib-jitsi-meet@latest 2020-08-14 12:00:09 -04:00
Niek van der Maas
8d2a52d0e8 debian: improve compressions + add expire headers
* Improve compressions + add expire headers
* Remove MSIE check, caching only for versioned files, do not gzip MP3/JPG/PNG
* Lower GZIP min length, enable compressions on WASM
2020-08-14 10:29:25 +02:00
Russell Graves
2aa6f7ff4b Add codec reporting (if present in lib-jitsi-meet output) to connection stats (#6054)
* Add codec reporting to the stats window for connections.
This will report the audio/video codecs, if reported by lib-jitsi-meet.
2020-08-13 17:56:14 -04:00
Aaron van Meerten
d716665f27 FIX: jibri-queue module log improvements 2020-08-13 16:41:42 -05:00
Дамян Минков
4ca4e242b1 ref: Moves xmpp logs to be accessed from connection. (#7517)
* ref: Moves xmpp logs to be accessed from connection.

In cases where there is no room like pre-join and lobby screen we still want to be able to debug xmpp messages.

* squash: Updates lib-jitsi-meet.
2020-08-13 13:12:56 -05:00
damencho
cdd782a82f fix: Fixes uncaught exception on malformed jwt.
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.
2020-08-13 11:00:04 -05:00
Jaya Allamsetty
713ae817c0 deps: lib-jitsi-meet@latest 2020-08-13 09:29:21 -04:00
Aaron van Meerten
d05fa32413 FIX: add flag to control whether to check room claim in JWT validation
jibri queue component stop checking room validation in token
Jibri queue component debug output when bad token is found
2020-08-12 14:43:34 -05:00
Tudor-Ovidiu Avram
e6676bb09a fix(prejoin) fix css loading path 2020-08-12 10:55:26 +03:00
Hristo Terezov
8e9a51f742 feat(Watermarks): Add deafault logo prop. 2020-08-11 18:24:44 -05:00
Aaron van Meerten
3da7798e9f FIX: prosody: output string for time and position in jibri queue 2020-08-10 15:21:56 -05:00
Aaron van Meerten
6fc9606c0d FEAT: support updating accepted issuer/aud for token lib 2020-08-10 15:21:31 -05:00
Saúl Ibarra Corretgé
004c1b65ad misc: drop babel.config.js file
This leaves jest testing non-functional, but having a babel.config.js interferes
with React Native.

Fixes: https://github.com/jitsi/jitsi-meet/issues/7450
2020-08-10 16:39:50 +02:00
Saúl Ibarra Corretgé
eabcc078ef android: fix adb reverse command in case of non-default port 2020-08-10 16:39:29 +02:00
Saúl Ibarra Corretgé
5b1f852783 rn: always reset the transform cache when starting the packager
It can help catch very weird bugs which are only triggered after a reset.
2020-08-10 16:39:29 +02:00
Saúl Ibarra Corretgé
5cf9a76f9e android: bump minimum API level to 23
Android < 23 is currently less than 3% for us so let's try to lower the
maintenance burden. Users can still download an older version no problem.
2020-08-10 16:37:20 +02:00
Saúl Ibarra Corretgé
3f33adc5d0 android: target API level 29
This will be mandatory later in the year for updating apps and it already is for
new apps.

https://support.google.com/googleplay/android-developer/answer/113469#targetsdk
2020-08-10 16:37:20 +02:00
Saúl Ibarra Corretgé
d9250aa986 android: bring back activity to the foreground when exiting PiP
When exiting PiP with by pressing the X the onPictureInPictureModeChanged method
is called. Since onResume is called a while after, in case the maximize button
is called, it's not easy to know if the user pressed the X button, and that was
the cause for exiting PiP.

So, in order to avoid show the user they are still in the meeting, bring the
activity to the foregound so they can hangup.
2020-08-10 16:36:30 +02:00
James Carbine
5b10d8f5ef Add config to hide logo-deep-linking on deeplinking page (#7346)
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.
2020-08-10 09:30:16 -05:00
settyan117
02885ea716 lang: updated Japanese translation 2020-08-10 09:34:39 +02:00
Florian
7e70a57eb3 lang: update French translation 2020-08-10 09:33:04 +02:00
Alexey Napalkov
dbaa1168b3 lang: update Russian translation 2020-08-10 09:32:16 +02:00
Fabricio Oliveira
b1d691ca07 lang: update brazilian portuguese translation 2020-08-10 09:30:30 +02:00
Jaroslav Lichtblau
10a4612230 lang: update Czech translation 2020-08-10 09:29:42 +02:00
Aaron van Meerten
21767fa7cf Merge pull request #7481 from jitsi/aaronkvanmeerten/token-util-cache-in-object
FEAT: jwt pubkey cache inside object
2020-08-07 14:18:24 -05:00
Aaron van Meerten
0bd100f027 FIX: prosody: comment on destroy_request 2020-08-07 13:16:17 -05:00
Aaron van Meerten
f14a595462 FIX: prosody: destroy_request check 2020-08-07 13:15:55 -05:00
Hristo Terezov
5e4b8c747c feat(prejoin): Hide invite link 2020-08-07 12:28:05 -05:00
Aaron van Meerten
c4155575f9 FIX: prosody: room validation on jibri-queue
The full room JID is now passed properly to verify_token
verify_token now also expects the correct jid for validation
2020-08-07 12:10:00 -05:00
Aaron van Meerten
11ee71a51c FEAT: jwt pubkey cache inside object
Allows each module that does token validation to have its own cache
2020-08-07 11:51:44 -05:00
Mihai Uscat
c998d83f34 feat(welcome): Add variables. 2020-08-07 12:02:14 +03:00
Vlad Piersec
b670b29d7f fix(prejoin): Auto focus display name input 2020-08-07 10:27:29 +03:00
Aaron van Meerten
9b7e8c98ad FEAT: default value for jibri queue region 2020-08-06 17:12:53 -05:00
Aaron van Meerten
ad44558153 FEAT: validate keys at specific URL for jibri queue
Provide region value in POST to jibri-queue service
2020-08-06 17:12:31 -05:00
Jaya Allamsetty
1a957ed85b feat(video-quality): Impose max-bitrates on video sender based on videoQuality settings (#7467)
* feat(video-quality): Impose max-bitrates on video sender based on config.js settings
Update to lib-jitsi-meet@latest
f74cd0abe9
2020-08-06 14:24:33 -04:00
Jaya Allamsetty
1dbb47b84f deps: lib-jitsi-meet@latest 2020-08-06 08:33:28 -04:00
paweldomas
4adaa6f1fd fix(last-n-limits): crash on undefined 2020-08-06 09:02:21 +02:00
Paweł Domas
b3b561f27a feat(video quality): add maxFullResolutionParticipants (#7403)
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.
2020-08-05 10:10:14 -05:00
Jesús Espino
a6a19a3002 Fix lint error 2020-08-05 10:07:18 -04:00
Jesús Espino
1426a5b4bc Restore dots menu on mobile 2020-08-05 10:07:18 -04:00
sellth
858ee557d4 lang: update German translation 2020-08-05 09:34:15 +02:00
Jaya Allamsetty
bd64c14aaa fix: Send SS stopped analytics event when SS was started in video mute state 2020-08-04 19:30:10 -04:00
Manuel Garcia
ce286f9be8 lang: fix typo 2020-08-04 10:02:21 +02:00
Paweł Domas
cc9cb6a874 feat(config): add last N limit mapping (#7422)
Adds 'lastNLimits' config value which allows to define last N value per number of participants.
See config.js for more details.
2020-08-03 12:39:17 -05:00
Atrate
168dbd6276 android: make app movable to SD card 2020-08-03 14:50:47 +02:00
Jesús Espino
400c86ad5e Adding responsive to jitsi logo, buttons and hiding some part of the interface (#7380)
* 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
2020-07-31 07:53:19 -04:00
Matthias Wuttke
b0650b8448 Pass JWT token to close page 2020-07-31 07:47:49 +02:00
dependabot[bot]
027cc1be96 chore(deps): bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-30 19:07:16 +02:00
ButterflyOfFire
9b32811ff2 lang: add missing kabyle language
Fixing missing kabyle language in the main file.
2020-07-29 17:05:27 +02:00
Saúl Ibarra Corretgé
a67d0fbf6c chore: remove some cycles 2020-07-29 09:31:38 +02:00
Saúl Ibarra Corretgé
af5d4c850b external_api: filter postis events origin 2020-07-28 11:36:42 +02:00
kauczu
7bfb2fc219 lang: update/fix Polish translation, add missing fields in main-pl.json (#7395)
* lang: update/fix Polish translation, add missing fields in main-pl.json

Based on actual main.json, merge #7382 and my translation.

    fixed incorrect context meaning of some fields,
    added missing fields and translated them,
    translated fields left in empty qoutes

* Update main-pl.json

* Update main-pl.json

* Update main-pl.json
2020-07-24 12:50:18 -05:00
Elliot Cooper
b814827df1 misc: replace certbot-auto with certbot 2020-07-24 16:35:52 +02:00
Bettenbuk Zoltan
240b033e76 feat: auto tile view 2020-07-24 11:06:34 +02:00
paweldomas
00b41dbb41 add mod_websocket patch for session event
It's to be used in docker-jitsi-meet to patch older
Prosody versions until this change becomes available.
2020-07-23 16:29:45 -05:00
damencho
2689be5d24 chore: Update lib-jitsi-meet. 2020-07-23 14:49:52 -05:00
damencho
f3da009d61 feat: Updates @atlaskit/flag to use the testId prop for integration tests. 2020-07-23 14:49:52 -05:00
damencho
ddc2b4f26e fix: Adds display name to notifications about lobby operations.
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.
2020-07-23 14:49:52 -05:00
damencho
b106e51a10 feat: Adds id to the notifications and buttons so we can check for them in the integration tests. 2020-07-23 14:49:52 -05:00
damencho
0cef706b6a feat: Changes security dialog button to toggle dialog. 2020-07-23 14:49:52 -05:00
damencho
b9c20a3fd4 fix: Fixes syncing state about lobby in security dialog. 2020-07-23 14:49:52 -05:00
damencho
23507da59a feat: Adds id to the notifications so we can check for them in the integration tests. 2020-07-23 14:49:52 -05:00
Gabriel
4bfc80ecb9 external_api: add ability to toggle lobby 2020-07-23 16:03:53 +02:00
Saúl Ibarra Corretgé
52ce8031a3 Update react/features/chat/components/native/Chat.js 2020-07-23 15:45:30 +02:00
Saúl Ibarra Corretgé
aa9f06fa84 Update react/features/chat/components/native/Chat.js 2020-07-23 15:45:30 +02:00
Saúl Ibarra Corretgé
a758e98101 Update react/features/chat/components/native/Chat.js 2020-07-23 15:45:30 +02:00
tombrown86
63d4c2b84b onClose to return true to imply modal should close 2020-07-23 15:45:30 +02:00
tombrown86
4161e7bfe1 fix: no new msg notifications after opening chat modal [NATIVE]
call TOGGLE_CHAT action when chat modal is closed to correctly update chat isOpen state
2020-07-23 15:45:30 +02:00
Saúl Ibarra Corretgé
1c3cf325cb analytics: add app name to permanent properties 2020-07-23 15:40:02 +02:00
Saúl Ibarra Corretgé
fdbd681c8f config: fix opusMaxAverageBitrate option name
Must match the lib-jitsi-meet counterpart.

Fixes: https://github.com/jitsi/jitsi-meet/issues/7384
2020-07-23 15:14:48 +02:00
Tudor-Ovidiu Avram
f6433668d5 fix(prejoin) hide skip prejoin for exposed app 2020-07-23 13:22:28 +02:00
Tudor-Ovidiu Avram
1ae5630590 fix(prejoin) fix libs path 2020-07-23 13:22:28 +02:00
Tudor-Ovidiu Avram
b1e12d33ab feat(embed) implement embed meeting feature 2020-07-23 13:21:05 +02:00
Michał Orman
28094947a7 lang: updated Polish translations 2020-07-23 11:39:48 +02:00
Kevin Olbrich
a23dac2ab6 Add remark about focus username
https://github.com/jitsi/jitsi-meet/issues/7376
2020-07-22 19:45:12 -05:00
Aaron van Meerten
d70f9d6fd6 FIX: use correct URL paths for jibri queue service 2020-07-22 16:24:08 -04:00
Tristian Flanagan
9e7a477797 feat(blur): terminate blur web worker when disabled (#7347)
* feat(blur): terminate blur web worker when disabled
2020-07-22 10:37:17 -04:00
Tudor-Ovidiu Avram
0fc748dc44 ui: create reusable copy button 2020-07-22 15:53:43 +02:00
Saúl Ibarra Corretgé
b831bb8350 config: add roomPasswordNumberOfDigits to whitelist 2020-07-22 15:23:38 +02:00
Saúl Ibarra Corretgé
16547b91a5 rn: fix overriding user-selected server URL
Fixes: https://github.com/jitsi/jitsi-meet/issues/7373
2020-07-22 15:23:09 +02:00
Gabriel Imre
1e3e15fc72 fix: use consistent moderator semantics
Use the same moderator semantics when adding items into the remote video menu as when showing/hiding the items themselves.
2020-07-22 10:41:41 +02:00
Saúl Ibarra Corretgé
9d6e21b77b security-dialog: restore digit-only password functionality 2020-07-21 10:44:39 -05:00
Dominik Wagner
48a58f8dae ios: specify the correct keyboard type and content
This way autocomplete and keyboards work correctly.
2020-07-21 17:06:41 +02:00
Đặng Minh Tiến
eb1ef0fa9c Update JitsiStreamPresenterEffect.js (#7362)
* Update JitsiStreamPresenterEffect.js
Create/terminate the Web Worker on effect start/stop so that we don't leak them.
2020-07-21 10:01:38 -04:00
Saúl Ibarra Corretgé
eaa715879a rn: update versions 2020-07-21 15:49:08 +02:00
Saúl Ibarra Corretgé
fde7cf4ab8 chat: fix crash on mobile 2020-07-21 15:25:19 +02:00
Saúl Ibarra Corretgé
46b444c498 settings: only import required action
Fixes crash on mobile due to chained imports.
2020-07-21 15:25:19 +02:00
Saúl Ibarra Corretgé
3cbadc72a1 analytics: only import required constant 2020-07-21 15:25:19 +02:00
Saúl Ibarra Corretgé
ddaaeccafa android: disable PiP on Android Go devices
Despite running Android 8.1, they don't support Picture-in-Picture.
2020-07-21 14:03:41 +02:00
Saúl Ibarra Corretgé
0751c6ab48 ios: fix uploading dSYMs to Crashlytics
Use Fastlane to get them from Apple after processing, them upload them.

Also make sure WebRTC dSYMs are included when uploading.
2020-07-21 13:33:18 +02:00
Saúl Ibarra Corretgé
76e4929add rn,tile-view: render display name on top of participant view
Makes the tiles consistent as the participant view is equally sized and the
avatar is always centered in the tile.
2020-07-21 13:18:48 +02:00
Saúl Ibarra Corretgé
e39c8d8ed6 rn,tile-view: render a larger avatar in tile view mode 2020-07-21 13:18:48 +02:00
Aaron van Meerten
4687187cca Merge pull request #7358 from bgrozev/update-lib-jitsi-meet
chore: Update lib-jitsi-meet.
2020-07-20 13:23:37 -04:00
Aaron van Meerten
7858f12df2 FEATURE: proper outbound iq handler for REST requests 2020-07-20 12:51:07 -04:00
Boris Grozev
f2c3401a79 chore: Update lib-jitsi-meet. 2020-07-20 11:43:07 -05:00
Aaron van Meerten
828e578af4 FIX: rename disco info component to correct name
FIX: reply to iq only on successful reply from queue server
2020-07-17 16:19:25 -04:00
Saúl Ibarra Corretgé
43189f3e66 deps: lib-jitsi-meet@latest 2020-07-17 16:50:19 +02:00
Michael Telatynski
335b43036d Improve accessibility of Buttons in Webapp
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-17 16:32:33 +02:00
Vlad Piersec
b3ca51c7d0 feat(prejoin): Add settings options for prejoin page 2020-07-17 13:40:29 +03:00
Mihai Uscat
f9d545c531 feat(chat): Make chat push content to the side in tile view 2020-07-17 11:19:18 +03:00
Mihai Uscat
5f5468995f feat(chat): Make chat push content to the side in large view 2020-07-17 10:04:56 +03:00
Aaron van Meerten
4289b23135 feature: jibri queue authorization header handler 2020-07-16 22:48:52 -04:00
paweldomas
bf7aa39947 ref: one place for setting max recv frame height
Moves the logic from all different places into single state
listener to combine all inputs into a single output.
2020-07-16 10:14:59 -05:00
paweldomas
ad948bdbe2 feat(StateListenerRegistry): add 'deepEquals' option
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.
2020-07-16 10:14:59 -05:00
Gabriel Imre
29366a0029 feat: add test hint for grant moderator availability 2020-07-16 13:54:03 +02:00
dependabot[bot]
0bec7c7ab7 chore(deps): bump lodash from 4.17.13 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.13 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.13...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-16 09:41:38 +02:00
Andrei Gavrilescu
29805edd02 feat(rtcstats): Integrate rtcstats (#6945)
* Integrate rtcstats

* expcetion handling / clean up

* order imports

* config fix

* remove mock amplitude handler

* additional comments

* lint fix

* address code review

* move rtcstats middleware

* link to jitsi rtcstats package

* address code review

* address code review / add ws onclose handler

* add display name / bump rtcstats version

* resolve import error
2020-07-15 18:22:00 +03:00
George Politis
11fd5363ce fix: Avoid overwriting the max resolution requested by the tile-view. (#7320)
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
2020-07-15 15:55:30 +02:00
Tudor-Ovidiu Avram
1790c71c80 fix(disconnect) Fix quick disconnect errors 2020-07-15 15:32:56 +02:00
Saúl Ibarra Corretgé
36d95ed51f rn,conference: show lonely experience only after joining
Showing the modal earlier is weird because it will be closed as soon as we
connect. Also, we don't know if we are going to be alone until we join.
2020-07-15 15:32:34 +02:00
Vlad Piersec
ef0af1a8c0 fix(prejoin): Show decoded version of meeting uri 2020-07-15 13:21:36 +02:00
Gabriel Imre
b85cd2348f feat: add grant moderator functionality 2020-07-15 12:13:28 +02:00
Vlad Piersec
035f720a50 feat(prejoin): Add 'skip prejoin' button 2020-07-15 11:36:37 +02:00
yuriikaidan
c8444a9a0d lang: update Polish translation 2020-07-15 11:05:50 +02:00
utkarshmarwaha
7f5751b918 rn,flags: add flag to show/hide video share button 2020-07-15 10:48:56 +02:00
Dan Dascalescu
fc6bd3667c config: fix typo 2020-07-15 10:44:40 +02:00
Ivy
2c42dd0773 lang: update Japanese 2020-07-15 10:44:04 +02:00
vp8x8
1891ce0b24 fix(prejoin): Align avatar image on small screens (#7300)
Fixes: #7296
2020-07-15 10:43:00 +02:00
Mutusen
e34c5673b2 lang: update Esperanto translation 2020-07-15 10:24:10 +02:00
NicolasD
41ba55a6a9 rn,flags: add feature flag to enable / disable conference timer 2020-07-15 10:22:35 +02:00
Aaron van Meerten
099820b6ac prosody modules: jibri queue events for leave, room destroyed 2020-07-14 16:50:34 -04:00
Aaron van Meerten
25ded0bdeb prosody modules: add util function for rewritesplit JID 2020-07-14 16:49:51 -04:00
Дамян Минков
758b60f92b fix: Updates coturn config on update. (#7306)
* fix: Updates coturn config on update.

* fix: Updates console message.
2020-07-14 13:16:53 -05:00
paweldomas
fcc69b92bb deps: update LJM to bring in new audio levels and e2ee tweaks
Updates LJM to ff1813cbb2e7d36f1cc0bbc2b8baa0a16c6346a4
2020-07-14 12:01:18 -05:00
Julian Vos
a697caea03 lang: update Dutch translation 2020-07-14 13:42:03 +02:00
Aaron van Meerten
51fd10278b FIX: prosody jibri queue handle iq properly 2020-07-13 18:04:48 -04:00
abora8x8
5b89709483 Add hook for creating lobby before participants join (#7273)
* Add hook for create lobby

* Remove duplicated code
2020-07-13 11:29:35 -05:00
George Politis
e4ce3928dc feat: Exposes the max enabled resolution in the connection stats popover. (#7278)
* feat: Exposes the max enabled resolution in the connection stats popover.
* deps: lib-jitsi-meet@latest
2020-07-13 17:20:59 +02:00
plokta
b0188a7184 config: Add option to set preferred audio bitrate. (#7072)
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>
2020-07-11 10:33:49 +02:00
Saúl Ibarra Corretgé
53281c2d42 analytics: avoid error log when there are no handlers 2020-07-10 17:55:18 +02:00
damencho
3da1b65757 fix: Fixes import of moved function. 2020-07-10 08:22:22 -05:00
Tudor-Ovidiu Avram
0e5091adba feat(prejoin) Expose prejoin app 2020-07-10 14:24:06 +02:00
Tudor-Ovidiu Avram
f376542441 feat(prejoin) cache media start options when on prejoin screen 2020-07-10 14:24:06 +02:00
Mihai Uscat
bd65108692 fix(SecurityDialog): Fix password action spacing 2020-07-10 13:26:48 +02:00
Saúl Ibarra Corretgé
546b0abe32 misc: add script to update LJM to the latest commit 2020-07-10 12:44:29 +02:00
Saúl Ibarra Corretgé
62ad7d3451 deps: lib-jitsi-meet@latest 2020-07-10 11:31:34 +02:00
ALAGBE Sola
5bc3128c71 config: fix typo 2020-07-10 11:10:19 +02:00
Saúl Ibarra Corretgé
b91d6b97a9 deps: jitsi/js-utils@1.0.0 2020-07-10 10:38:49 +02:00
Saúl Ibarra Corretgé
ce812591f9 conference: fix not applying max recv constraints
They also need to be applied when changing conferences.
2020-07-09 08:40:56 +02:00
Saúl Ibarra Corretgé
f32140c4b7 rn: set default resolution to 360p (experiment) 2020-07-09 08:40:56 +02:00
Saúl Ibarra Corretgé
7d513738d2 rn,flags: add ability to override resolution using a flag
Also, use the configured resolution to set it as the max received frame size.
2020-07-09 08:40:56 +02:00
Jaya Allamsetty
8d1bde3cb1 chore(deps): update lib-jitsi-meet to latest 2020-07-08 14:43:24 -04:00
Saúl Ibarra Corretgé
95825dcdd7 config: add flag to disable the E2EE support
This is useful for testing insertable streams related issues.
2020-07-08 17:19:36 +02:00
Saúl Ibarra Corretgé
a61f272303 deps: lib-jitsi-meet@latest 2020-07-08 17:19:36 +02:00
Vlad Piersec
3538761543 fix(prejoin): Don't add video track to connection on start if video muted 2020-07-08 15:58:13 +03:00
motiwardi
f22d5ed629 android: added configuration for user CA root trust 2020-07-08 14:50:56 +02:00
Saúl Ibarra Corretgé
f30dd9d881 deps: react-native-webrtc@1.84.0 2020-07-08 14:17:06 +02:00
Florian
4a3cd2596a Update main-fr.json
Translation 'prejoin'
2020-07-08 07:09:39 -05:00
Maxence Dalmais
4e1f42a665 Update mod_muc_poltergeist.lua
Add avatar to user context so it is picked by the web interface
2020-07-08 07:08:50 -05:00
Florian
1fff5d2567 Update main-fr.json
Some translations for "invite"
2020-07-07 10:48:53 -05:00
Florian
bbcc40a97e Update main-fr.json
Translate for "Add" in security option
2020-07-07 10:47:52 -05:00
Florian
bbf76296ed Update KnockingParticipantList.js
In order to translate the title.. Pull request #7246
2020-07-07 08:55:03 -05:00
Florian
e0b3a81a41 Update main-fr.json
Fix translate FR and add "Security" translations
2020-07-07 08:41:41 -05:00
Florian
1c122705bf Update main.json with missing KnockingParticipantList string (#7246)
Adding future translation possibilities
2020-07-07 08:40:18 -05:00
Frank de Lange
29c16e42bd Move STUN/TURN to IANA-assigned ports - 3478 and 5349 (TLS) (#6172)
* Move STUN/TURN to IANA-assigned ports - 3478 and 5349 (TLS)

* Change remaining references to TURNS port from 4445 to 5349

* Change back TURNS to 443
2020-07-07 08:14:28 -05:00
Cem Ibrahim ARI
8a19a34d19 fixed non valid json turkish language file 2020-07-07 08:00:25 -05:00
Tudor-Ovidiu Avram
d5832f226d fix(dialout) whitelist dialout flag 2020-07-07 11:00:49 +02:00
Saúl Ibarra Corretgé
4cfc8cd7a2 deps: update clean-css (reland)
Fix the incorrect paths (was a breaking change in version 4) by using the
`--skip-rebase` cli option.
2020-07-06 21:16:14 +02:00
Bettenbuk Zoltan
873ede0e06 feat: lobby related notifications 2020-07-06 17:31:16 +02:00
damencho
f73e9947c0 fix: Uses room jids for the lobby notifications. 2020-07-06 09:56:01 -05:00
Saúl Ibarra Corretgé
82711b3f23 Merge pull request #7226 from saghul/update-turn-cfg
turn: update default coturn configuration
2020-07-03 20:15:12 +02:00
Saúl Ibarra Corretgé
2f841fab73 turn: update default coturn configuration 2020-07-03 17:36:04 +02:00
Дамян Минков
b3a2905849 feat: Sends json messages notifying for lobby actions. (#7209)
* feat: Sends json messages notifying for lobby actions.

* squash: Fixes quotes to be consistent.

* fix: Fixes attempt to call global 'formdecode' (a nil value).
2020-07-03 08:26:44 -05:00
Vlad Piersec
5f579e9a15 fix(prejoin): Make display name mandatory only for lobby
A user should not be forced to enter a display name if the lobby is not enabled
for the room.
2020-07-03 16:13:54 +03:00
Vlad Piersec
ea2ea89ef7 fix(prejoin): dialout popup buttons 2020-07-03 11:49:25 +03:00
Vlad Piersec
a5f17a8033 feat(prejoin): Show avatar image on prejoin screen 2020-07-03 11:41:19 +03:00
Florian
4c6e9e7788 lang: update French translation 2020-07-03 10:36:58 +02:00
Saúl Ibarra Corretgé
a7e0df2623 toolbox: fix missing key prop
Fixes a React warning.
2020-07-03 10:35:35 +02:00
Hristo Terezov
da9a70129e Revert: clean-css update due to broken paths. 2020-07-02 15:30:15 -05:00
damencho
6d3d15a64b feat: Adds an option to validate a recording token. 2020-07-02 12:51:14 -05:00
damencho
b10a45bf98 fix: Fixes generating self-signed certificate.
The wrong quotes error:
req: Error on line 354 of config file "/dev/fd/63"
Error Loading extension section SAN
140403719438784:error:0E06C069:configuration file routines:NCONF_get_section:no conf:../crypto/conf/conf_lib.c:245:

Having the ip and specifying dns:
Error Loading extension section SAN
140127168778688:error:220A4076:X509 V3 routines:a2i_GENERAL_NAME:bad ip address:../crypto/x509v3/v3_alt.c:457:value=jitsi.example.com
140127168778688:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:../crypto/x509v3/v3_conf.c:47:name=subjectAltName, value=DNS:localhost,DNS:jitsi.example.com,IP:jitsi.example.com
2020-07-02 10:33:09 -05:00
paweldomas
858a3d953c deps: LJM e66cc365014cd429280a95a379ad62d993217f6b
Update lib-jitsi-meet which adds the setNetworkInfo method.
2020-07-01 19:31:48 -05:00
paweldomas
1ff27b7298 fix: store.getState() called while the reducer is executing 2020-07-01 19:31:48 -05:00
paweldomas
bc43f00d28 feat: pass network info to LJM 2020-07-01 19:31:48 -05:00
Imre Faragó
bfd5db355d prosody muc_size plugin, room get info error fix (Traceback[httpserver]: /usr/lib/prosody/util/async.lua:137: /prosody-plugins/mod_muc_size.lua:141: attempt to concatenate local 'subdomain' (a nil value) 2020-07-01 08:04:41 -05:00
Дамян Минков
a4ca247056 Lobby required displayname (#7197)
* ref: Rename jitsi_bosh_query_room to jitsi_web_query_room.

This is no longer bosh only and is available for both bosh and websocket sessions.

* feat: Adds feature to disco-info indicating that display name is required.

* feat: Adds option to disable checking whether display name is required.

* ref: Clears auth_token when verification fails.

* squash: Fixing comments.

* squash: Updates to latest lib-jitsi-meet.
2020-06-30 08:15:08 -05:00
Quentí
eac891585b lang: update Occitan 2020-06-30 15:02:16 +02:00
Bettenbuk Zoltan
7d62020787 feat: add moderated service link to welcome page 2020-06-30 12:39:46 +02:00
Saúl Ibarra Corretgé
7d18183bf9 deps: css-loader@3.6.0 2020-06-30 11:27:39 +02:00
Saúl Ibarra Corretgé
346dac476a deps: clean-css@4.3.0 2020-06-30 11:27:39 +02:00
Saúl Ibarra Corretgé
b4ecef429a doc: add H1 to SECURITY.md 2020-06-30 09:07:57 +02:00
Dan Dascalescu
ea07515138 docs: improve English in config.js 2020-06-30 09:07:25 +02:00
Dan Dascalescu
79231914b9 docs: fix typo in interface_config.js 2020-06-30 09:06:38 +02:00
Jaya Allamsetty
0e1ecd3256 fix: disable audio/video settings popup on mobile browsers
Mobile devices do not support capture from multiple cameras/mics at a time.
2020-06-30 08:58:36 +02:00
Dan Dascalescu
0d15c01077 doc: TOOLBAR_BUTTONS clarifications 2020-06-30 08:57:25 +02:00
Aaron Van Meerten
24c75b7332 FIX: better URL handler for jibri queue events 2020-06-29 18:46:15 -05:00
Aaron Van Meerten
2327a6d0b4 FEATURE: prosody: add http handler for jibri queue 2020-06-29 18:20:04 -05:00
Aaron Van Meerten
b94c357cc2 WIP: jibri queue component prosody modules 2020-06-29 18:11:41 -05:00
Jaya Allamsetty
216801720a chore(deps): update lib-jitsi-meet 2020-06-29 12:31:11 -04:00
Samuel Retika
312813e677 Adding isSharingScreen() to external API 2020-06-29 11:24:45 -04:00
Vlad Piersec
2b5787163e fix(prejoin): Replace the stored audio/video tracks when device list changes
When on prejoin screen, if the device list changes (devices are added or removed),
the newly created tracks do not properly replace the old ones, resulting in
errors after joining the meeting and trying to change the devices.
This change fixes the problem.
2020-06-29 12:26:55 +02:00
Dan Dascalescu
28632752ba docs: fix typo in interface_config.js 2020-06-26 23:02:56 +02:00
Selyan Slimane Amiri
7dfff1b455 Add translations in language and main files. (#7023)
* Update languages-kab.json

* Update main-kab.json

* Update main-kab.json

* Update main-kab.json

* Add kab entry in languages-kab.json
2020-06-26 11:45:26 -05:00
Vlad Piersec
99e7d636b7 fix(settings): Always show mic audio levels 2020-06-26 07:57:20 -04:00
Roman
4b1743bb2f android: add serverURL configuration for MDM/EMM environments
Android for Enterprise provides special feature for applications to obtain configuration through RestrictionManager remotely by some MDM solution.

Jitsi Meet can be remotely installed and provisioned with a proper URL (making URL not editable by the user) inside the Work Profile or Fully managed device.
2020-06-26 11:47:48 +02:00
Vlad Piersec
3b1ad9faff fix: Show audio/video options on lobby screen 2020-06-26 11:29:20 +02:00
Vlad Piersec
87b14c3711 fix(prejoin): copy meeting info 2020-06-26 11:28:49 +02:00
Titus-Andrei Moldovan
5811e0476c rn: fixes the bug on shared video not stopping when the user leaves the conferences 2020-06-26 10:54:49 +02:00
Titus-Andrei Moldovan
59750ba1f1 rn: refactors the YoutubeLargeVideo to be class component. Adds interval for sending the seek time every 5 seconds. 2020-06-26 10:54:49 +02:00
pierretux
b3de7fd52b lang: update French translation 2020-06-26 10:31:38 +02:00
Bettenbuk Zoltan
f68b9b7df9 fix: different description for non moderator participants in passcode dialog 2020-06-25 17:36:39 +02:00
Bettenbuk Zoltan
b534c4f624 ui: making the security menu more compact 2020-06-25 17:36:39 +02:00
Mihai Uscat
ab1c5805f4 feat(AddPeopleDialog): Enable contact invitation based on interfaceConfig flag 2020-06-25 10:36:02 -05:00
Bettenbuk Zoltan
0c6b0641f5 fix: layout of the insecure room name warning icon 2020-06-25 17:23:27 +02:00
Mihai Uscat
093254d948 fix(AddPeopleDialog): Improve contact invite form
- Disables the invite buttons while invites are ongoing
- Adds a keyboard shortcut (Enter) to send out invites
- Closes AddPeopleDialog upon successful invites sent
- Fixes the SecurityDialog closing when trying to set E2EE key via Enter shortcut
- Removes superfluous separator from SecurityDialog
2020-06-25 15:25:15 +02:00
Bettenbuk Zoltan
0494200383 fix: label tooltips are not visible in tile view 2020-06-25 14:05:34 +02:00
Saúl Ibarra Corretgé
16f1c167b8 interface_config: bring back config trailer 2020-06-23 21:00:27 +02:00
Saúl Ibarra Corretgé
97fd36a19a debian: fix postinst command 2020-06-23 17:46:44 +02:00
damencho
701d34248b fix: Fixes showing cc button when jwt is not used.
Fixes #7093.
2020-06-23 08:31:37 -05:00
Florian
e72dae5c32 lang: update French translation 2020-06-23 14:51:13 +02:00
paweldomas
811ee40d99 ref(constants): use 720 for the high quality level
720 is requested by default for the local video stream
and when using the quality slider the resolution would
be increased to 1080.

Note that this will limit the receive quality to 720 as well,
because both send and receive constraints are changed at
the same time when the quality slider is used.
2020-06-23 14:50:00 +02:00
egerardus
76eabf1f29 debian: add SAN when generating self-signed certs
Closes: #5547
2020-06-23 14:47:36 +02:00
Vangelis Zacharioudakis
01a8cc1478 lang: update Greek translation 2020-06-23 14:34:49 +02:00
Vlad Piersec
047c9b43ea fix: welcome page logo not being displayed 2020-06-23 10:29:41 +02:00
Dan Dascalescu
22d040ab76 doc: point to the Handbook repo 2020-06-23 09:39:14 +02:00
Hristo Terezov
4ac9ea258c ref(interfaceConfig): Order alphabetically. 2020-06-22 14:25:48 -05:00
Hristo Terezov
6bd64ee552 fix(jitsi-logo): URL 2020-06-22 13:28:52 -05:00
Jaya Allamsetty
7a1595f162 chore(deps): update lib-jitsi-meet 2020-06-20 08:49:19 -04:00
Jaya Allamsetty
07cad2a98f cleanup: Remove obsolete code related to SS extension
- Remove external install dialogs and fix related screensharing error handling.
- Remove obsolete options from config.js and from configWhitelist.js
2020-06-20 08:49:19 -04:00
Дамян Минков
6fbba52c6d feat: Adds a new option to disable lobby for guests. (#7094)
* feat: Adds a new option to disable lobby for guests.

* squash: Rename config option.

* squash: Comment update.
2020-06-19 14:50:31 -05:00
Gonçal
311d1c67ba Added all missing languages from languages.json
Added all missing languages from languages.json, with names in Catalan
2020-06-19 13:39:39 -05:00
Vlad Piersec
0aa54d8650 (prejoin): fix mobile 2020-06-19 16:46:43 +02:00
Bettenbuk Zoltan
74e0e10928 feat: new security icon 2020-06-19 12:25:24 +02:00
Vlad Piersec
4f169988a3 fix(prejoin): Store prejoin tracks in 'features/base/tracks' 2020-06-19 12:02:11 +02:00
Joey Marshment-Howell
ec6ed6e8ec config: whitelist option to hide chrome extension banner
saghul: torture tests also need it.
2020-06-19 09:15:10 +02:00
Aaron van Meerten
7b429afee6 Merge pull request #7080 from jitsi/fix-e2ee
fix(e2ee): hide if not supported.
2020-06-18 13:14:35 -05:00
Hristo Terezov
cab830aad1 fix(e2ee): hide if not supported. 2020-06-18 12:25:49 -05:00
Jaya Allamsetty
bd42c81cb8 chore(deps): Update lib-jitsi-meet 2020-06-18 11:51:28 -04:00
Saúl Ibarra Corretgé
f230fd4d04 subject: avoid sending an extra empty subject update
When setSubject is called too early we store it as pensing, but thanks to the
default parameter value, if undefined is passed to the function we'll store the
empty string.

This will trigger a needless update because undefined !== ''.
2020-06-18 14:52:17 +02:00
Saúl Ibarra Corretgé
eed57e7999 subject: only try to update the subject when the rol;e changes
Skip processing any other participant updates.
2020-06-18 14:52:17 +02:00
Vlad Piersec
8115f86f59 fix(prejoin): Fix CSS for prejoin page according to design 2020-06-18 14:43:37 +02:00
Bettenbuk Zoltan
28e5edfb50 ref: move e2ee field into security menu 2020-06-18 09:36:24 +02:00
Saúl Ibarra Corretgé
e936c6dc2c lang: improve wording 2020-06-17 20:35:57 +02:00
Saúl Ibarra Corretgé
8efd0f0829 unsafe-room: hide unsafe room label if a password or lobby are set 2020-06-17 20:35:57 +02:00
Saúl Ibarra Corretgé
a49f04f25b config: document enableInsecureRoomNameWarning and whitelist it 2020-06-17 20:35:57 +02:00
Bettenbuk Zoltan
bcffe0bba5 fix: lobby screen broken with prejoin disabled 2020-06-17 09:01:55 -05:00
Titus-Andrei Moldovan
482ba23954 rn: adds support for mobile youtube link 2020-06-17 15:10:54 +02:00
Titus-Andrei Moldovan
e87167dd2d rn: fixes the propagation of the paused event after the status was set to stop 2020-06-17 15:10:54 +02:00
erickvils
cf047a3c90 lang: update portuguese (BR) translation 2020-06-17 08:41:53 +02:00
Saúl Ibarra Corretgé
a8b8612304 rn,auth: trim the username
Fixes: https://github.com/jitsi/jitsi-meet/issues/5673
2020-06-17 08:39:58 +02:00
Saúl Ibarra Corretgé
95a5b8a8c1 rn,auth: don't auto-capitalize the password field
Fixes: https://github.com/jitsi/jitsi-meet/issues/5673
2020-06-17 08:39:58 +02:00
bgrozev
5867eaf560 config: remove obsolete options 2020-06-17 08:39:31 +02:00
Hafize Güngör
9143bb42d1 lang: fixes for Turkish translation 2020-06-17 08:37:43 +02:00
Boris Grozev
0e5dac623e chore: Update lib-jitsi-meet. 2020-06-16 16:59:21 -05:00
Boris Grozev
0c09ded76b feat: Add and whitelist the useTurnUdp config option. 2020-06-16 16:59:21 -05:00
damencho
929622b27c fix: Fixes setting subject from url.
There are occasions when role to moderator can change a little bit after joining the room, and initial try to set subject will silently be ignored if not moderator.
2020-06-16 12:44:44 -05:00
damencho
430125a8bd feat: Adds user props to analytics for iframe and external api. 2020-06-16 12:44:36 -05:00
damencho
66505666df feat: Hide Invite more when invite button is disabled. 2020-06-16 08:41:55 -05:00
Saúl Ibarra Corretgé
e5cffc71c4 config: cleanup no longer used interface_config options 2020-06-16 14:59:04 +02:00
Adam Wan
e3d66db3d7 config: add ability to hide the "invite more" header button 2020-06-16 13:07:37 +02:00
Saúl Ibarra Corretgé
e8e2b3c341 doc,gh: add pull request template 2020-06-16 11:24:15 +02:00
Saúl Ibarra Corretgé
abb724e173 doc: update CONTRIBUTING 2020-06-16 11:24:15 +02:00
Saúl Ibarra Corretgé
6e679f952f redux: refactor loading of middlewares and reducers
Up until now we relied on implicit loading of middlewares and reducers, through
having imports in each feature's index.js.

This leads to many complex import cycles which result in (sometimes) hard to fix
bugs in addition to (often) breaking mobile because a web-only feature gets
imported on mobile too, thanks to the implicit loading.

This PR changes that to make the process explicit. Both middlewares and reducers
are imported in a single place, the app entrypoint. They have been divided into
3 categories: any, web and native, which represent each of the platforms
  respectively.

Ideally no feature should have an index.js exporting actions, action types and
components, but that's a larger ordeal, so this is just the first step in
getting there. In order to both set example and avoid large cycles the app
feature has been refactored to not have an idex.js itself.
2020-06-16 11:24:15 +02:00
Saúl Ibarra Corretgé
80d7e5fb7f redux: move PersistenceRegistry to the redux feature 2020-06-16 11:24:15 +02:00
Saúl Ibarra Corretgé
7646618e5a rnnoise: simplify initialization 2020-06-16 10:49:33 +02:00
Jaya Allamsetty
6533071c4c chore(deps): update lib-jitsi-meet
Update to sdp-interop@1.0.3 for getting the fix for Firefox RTX audio-only issue
2020-06-15 11:22:29 -04:00
Emil Ivov
6aed9bc0c8 interface_config: enforce logo by default 2020-06-12 17:38:51 +02:00
Jaya Allamsetty
b7b861259b fix(UI): add playsinline attr for video element
> playinline attr needs to be set to true to stop local video from playing in full screen mode in Safari on iOS.
> This applies to the local video thumbnails and the camera previews from the device selection menu and video preview button
2020-06-12 09:30:46 -04:00
tmoldovan8x8
df64dd8f18 rn: add youtube player for mobile app 2020-06-12 12:15:16 +02:00
Vlad Piersec
8758c222c6 feat(branding): Add ability to customize logo & background 2020-06-10 14:58:27 +02:00
Bettenbuk Zoltan
29dc63fbcb ref: merge prejoin with lobby 2020-06-09 18:10:43 +02:00
Bettenbuk Zoltan
475a2ae596 feat: lobby feature
The lobby feature adds the possibility to lock a meeting and only allow people in after virtually knocking and going through formal approval
2020-06-09 18:10:43 +02:00
dependabot[bot]
338c960215 build(deps): bump websocket-extensions from 0.1.3 to 0.1.4
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-09 10:09:02 +02:00
Jaya Allamsetty
e6093e0706 fix(UI): Highlight the audio device when we hover over it 2020-06-08 15:34:05 -04:00
Jaya Allamsetty
d1d968997e Disable audiosettings button on Firefox as it is not supported 2020-06-08 15:34:05 -04:00
Jaya Allamsetty
45570bc0e7 fix(device-selection): Update redux when a new speaker is selected
Update userSelectedAudioOutputDeviceId and userSelectedAudioOutputDeviceLabel when a new speaker is selected from the audio settings popup menu
2020-06-08 15:34:05 -04:00
Jaya Allamsetty
f4bcad02d8 fix(device-selection): Add a workaround for a chrome bug with default mic
Pass the real deviceId to gUM instead of 'default' for Chrome to return the correct media stream
2020-06-08 15:34:05 -04:00
khajaamin
26f7951894 Marathi language (#6615)
* Lang folder removed from proxy server and now using from local dev dir

* Added Marathi 100% langulage transalation
2020-06-08 12:33:40 -05:00
Richard Février
35dabb1a27 main-fr.json : remove duplicated key introduced by #6461 2020-06-08 12:13:36 -05:00
Murat Emir Cabaroğlu
c3b79802b2 add missing and fix wrong turkish translation 2020-06-08 11:17:28 -05:00
Дамян Минков
e6dbe65193 Moderated rooms or subdomains (#6959)
* fix: Fixes using token with no user context.

* feat(moderated): Adds option to add moderated rooms and subdomains.

When a user joins such room or subdomain in order to be a moderator needs to provide a valid jwt token for that room.

* squash: Renames function.

* ref: Removes filtering jicofo setting owners.

This will be disabled on jicofo side and will greatly simplify logic.
Also check the checks to avoid jwt for main domain to access subdomains and the other way around.

* fix: Skips allowners logic for admins.
2020-06-05 07:57:49 -05:00
Deepak Verma
ff23f81dfe flags: fix comment 2020-06-05 13:53:35 +02:00
Jaya Allamsetty
bc66c9063a chore(deps): update lib-jitsi-meet 2020-06-04 10:54:06 -04:00
Emil Ivov
974ef4a382 Merge pull request #6941 from jitsi/saghul-patch-5
shared-video: use a more recent video by default
2020-06-03 06:42:41 -05:00
Saúl Ibarra Corretgé
3bf82b573c shared-video: use a more recent video by default 2020-06-03 11:27:08 +02:00
hmuresan
b4b4339a1a external_api: add start/stop recording commands 2020-06-03 09:30:19 +02:00
Hristo Terezov
6773aed67f feat(recording): Limit notification 2020-06-02 16:00:54 -05:00
Saúl Ibarra Corretgé
d740752522 rn,responsive-ui: refactor dimensions detection
Use a dimensions detecting root component. The Dimensions module does not
measure the app's view size, but the Window, which may not be the same, for
example on iOS when PiP is used.

Also refactor the aspect ratio wrap component since it can be taken directly
from the store.

Last, remove the use of DimensionsDetector on LargeVideo and TileView since they
occupy the full-screen anyway.

Fixes PiP mode on iOS.
2020-06-02 16:54:28 +02:00
Marius Bardan
d93b219c7f lang: update RO translations 2020-06-02 10:19:06 +02:00
Marius Bardan
10cd150a07 lang: update RO translations 2020-06-02 10:19:06 +02:00
Jaya Allamsetty
a31f3c0c76 fix(config): Add missing capScreenshareBitrate to config.js 2020-05-29 14:04:30 -04:00
Simon Honegger
af39186a5f fix: typeof returns a string, so this condition was always true 2020-05-29 19:53:05 +02:00
Saúl Ibarra Corretgé
d4d1d0aa70 dev: add plugin for circular dependency detection
Example run: https://gist.github.com/saghul/e5e12edc108bdedbcbe65a3d7528235f
2020-05-29 10:37:09 +02:00
Saúl Ibarra Corretgé
3a88f4939c misc: break import cycle 2020-05-29 10:37:09 +02:00
Saúl Ibarra Corretgé
fe221fe4be deps: run npm audit fix 2020-05-29 10:37:09 +02:00
Jaya Allamsetty
1caaa47f5e chore(deps): update lib-jitsi-meet
fix(safari): Disable VAD processing on Safari - cfbb511bce
2020-05-28 17:19:07 -04:00
Hristo Terezov
a2c4d17e4d fix(record):web/mobile match disable functionality 2020-05-28 15:39:49 -05:00
Hristo Terezov
ce1de9e1e7 feat(recording): Disable buttons on active session 2020-05-28 15:39:49 -05:00
Hristo Terezov
3e7abf3da0 feat(subtitles): Disable for guests. 2020-05-28 13:43:18 -05:00
damencho
8b4f1789a6 chore(deps): Update lib-jitsi-meet, callstats using full URL. 2020-05-28 11:15:33 -05:00
Gabriel Imre
444e2b90df callstats: add siteID passing; sanitize confID path 2020-05-28 10:00:45 -05:00
Saúl Ibarra Corretgé
7de88995a5 labels: don't disable all labels when VIDEO_QUALITY_LABEL_DISABLED is set
Fixes: https://github.com/jitsi/jitsi-meet/issues/6880
2020-05-28 10:15:52 +02:00
Hristo Terezov
f0c6e934ce feat(config):InsecureRoomNameWarning config option 2020-05-27 18:03:15 -05:00
Дамян Минков
78b01d2c97 Adding whitelist and move away from using custom field for password. (#6621)
* Adding whitelist and move away from using custom field for password.

We re-use room lock for lobby password.

* Make sure we do not run muc-occupant-pre-join for non members only rooms.

* Destroying lobby room, when main room is destroyed or membersonly is disabled.

* Adds destroy reason.

* Clears lobby room instance on destroy.

Fixes problem with on/off/on of lobby feature.

* Add lobby room jid only when members only is on.

* Sends main room jid on lobby destroy.

We can use that in client loggic to auto-join lobby participants to main room as lobby is disabled while waiting.

* fix: Fixes using is_healthcheck_room.

* squash: Enables lobby rooms feature by default.

* chore(deps): Update lib-jitsi-meet, to enable lobby rooms.
2020-05-27 18:01:41 -05:00
Saúl Ibarra Corretgé
bf60be1654 style: fixup needlessly wrapped line 2020-05-27 16:45:11 +02:00
Saúl Ibarra Corretgé
5202a7e5b8 room-lock: use the proper text for the room lock prompt 2020-05-27 16:45:11 +02:00
Saúl Ibarra Corretgé
2af0c0ba17 rn: bump SDK version to 2.9.0 2020-05-27 15:35:58 +02:00
Saúl Ibarra Corretgé
fbb6486b5f deps: update react-native-watch-connectivity
It's back in active development and fixes a warning in iOS.
2020-05-27 15:35:58 +02:00
Saúl Ibarra Corretgé
a113151563 deps: update react-native-calendar-events
Rebase our patches (in PR) on top of latest master.

Sshould fix a crash when requesting permisssions.
2020-05-27 15:35:58 +02:00
Raider700
470fda3467 lang: add missing fields to German translation 2020-05-27 11:48:51 +02:00
Saúl Ibarra Corretgé
edea6316ab Update config.js 2020-05-27 08:43:48 +02:00
Saúl Ibarra Corretgé
adac9ee5f8 config: don't enable H.264 by default on P2P
We are not actively testing it and it currently crashes Chrome 83+ when insertable streams are used.
2020-05-27 08:43:48 +02:00
Saúl Ibarra Corretgé
af8bd876e6 deps: run npm audit fix
Skipped webpack, requires further investigation.
2020-05-27 00:16:20 +02:00
Jaya Allamsetty
403c4a7ee7 chore(deps): update lib-jitsi-meet
c94f6a570f
2020-05-26 17:14:21 -04:00
marius-bardan
21fe3c87a6 lang: enable support for romanian lang (#6869)
Co-authored-by: Marius Bardan <marius.bardan@8x8.com>
2020-05-26 15:05:41 +02:00
lorddavidiii
6ddac3bddf debian,turn: fix getting an external ip in IPv6 enabled networks 2020-05-26 13:20:34 +02:00
Mihai Uscat
663a65ad81 fix(SecurityDialog): fix button overflow 2020-05-26 10:22:22 +02:00
marius-bardan
5977f09202 lang: complete Romanian translation
Co-authored-by: Marius Bardan <marius.bardan@8x8.com>
2020-05-26 09:18:38 +02:00
Riccardo Magliocchetti
6be2a8575f lang: update document to match current reality 2020-05-25 17:26:15 +02:00
Suguru Hirahara
0d14e2fa5c gh: update 1-bug-report template
* Update 1-bug-report.md

- Comment out the general notice
- Add the information that questions and posts asking for help will be
closed
- Sort sections based on action stream -- steps, expected behaviour, (yet) actual behaviour
- Replace environment information with server-side and client-side ones

* Update .github/ISSUE_TEMPLATE/1-bug-report.md

Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>

Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>
2020-05-25 16:45:21 +02:00
qwertiko GmbH
1e0669d33b lang: fixes for German 2020-05-25 14:40:10 +02:00
Ricardo Brisighelli
d69c2c84d7 lang: update Spanish translation 2020-05-25 14:38:44 +02:00
Suguru Hirahara
0ea7a31b08 lang: add Arabic translation 2020-05-25 14:05:46 +02:00
Oleksa
6284e5fab3 lang: update Ukranian translation 2020-05-25 13:58:17 +02:00
Philip Eriksson
647852bd82 lang: fixes for Swedish 2020-05-25 13:52:15 +02:00
nordlolek
4e0d6e56bc rn,lang: bundle Slovenian translations 2020-05-25 13:46:37 +02:00
Quentí
c02763a29e lang: update for Occitan 2020-05-25 13:45:17 +02:00
Vangelis Zacharioudakis
0b8ec5a342 lang: add Greek language translation 2020-05-25 13:40:36 +02:00
huzaifahj
1a4be30ea1 lang: make "OK" capitalization consistent 2020-05-25 13:24:06 +02:00
tolgakaratas
d53d6e5fa8 lang,rn: bundle Turkish language 2020-05-25 13:20:54 +02:00
zzoond
93b05d13c3 lang: fix for russian 2020-05-25 11:27:50 +02:00
Michael Telatynski
79f4531bd2 lang: allow translation of accessibility label string "Edit your profile" 2020-05-25 11:26:25 +02:00
Jaya Allamsetty
5348fa19c8 feat: show option to join via browser on supported mobile browsers
Currently Chromium based browsers and Firefox are supported on Android
Only Safari is supported on iOS
2020-05-22 10:52:59 -04:00
Felix C. Stegerman
b25319fd2e add missing build dependency on nodejs 2020-05-21 10:29:36 -05:00
Felix C. Stegerman
63ca419e76 improve "open in app" page 2020-05-21 08:39:17 -04:00
Jonathan Lennox
393fb692ca Make TLS configs in Debian sample files follow Mozilla security guidelines. 2020-05-20 12:03:41 -05:00
JB BUGEAUD
735b686b98 Update of main fr translation (#6141)
* Update of main fr translation

Correct some non french sounding sentenses.  One example welcomepage.title, before "fully featured" was translated as "entièrement en vedette"  (which is gibberish) and now "riche en fonctionnalités".

* Fixing typo

Fixing missing comma

* Another typo fix

Yet another missing comma fixed.
2020-05-20 11:29:06 -05:00
Bettenbuk Zoltan
0598e7369b ref: eslint-config-jitsi@1.0.3 2020-05-20 17:14:29 +02:00
Suguru Hirahara
8c30e43b5f Retry "external_api: fixed using deeplinks"
Set target='_top' inside anchor.

Courtesy of #6700
Follow-up to: #6784
2020-05-20 10:18:29 -04:00
Mihai Uscat
75c836c70c feat(AddPeopleDialog): Update design; feat(SecurityDialog): Implement 2020-05-20 16:14:47 +02:00
Saúl Ibarra Corretgé
70d8fe91c3 deps: replace jsrsasign
We were only using a couple of utility functionss to parse tokens, not to
validate them in any way.
2020-05-20 15:06:19 +02:00
Julian1203
c6d5e103f5 lang: fixes for German 2020-05-20 12:20:56 +02:00
christian-sh
7f1f92cdf0 lang: fix passwordLabel translation in German
The former translation contained a typo and incorrect grammar.
2020-05-20 12:15:32 +02:00
Suguru Hirahara
8c02ba5ee9 doc: update README.md
- Fix a broken link (fixes #6780)
- Set direct links
- Add a link to the Docker installation guide
2020-05-20 08:07:32 +02:00
Jaya Allamsetty
5591144693 Revert "external_api: fixed using deeplinks"
This breaks the mobile deeplinking page
This reverts commit 532dadb245.
2020-05-19 16:43:10 -04:00
damencho
fa43539718 chore(deps): lib-jitsi-meet, skips sending an extra presence on join. 2020-05-19 15:39:20 -05:00
Jaya Allamsetty
7e0a36e88e chore(deps): Update lib-jitsi-meet
fix(Firefox): Enable RTX support on Firefox
E2EE fixes/improvements
fix(screenshare): Add google conference flag only when simulcast is on
fix(video-quality): Apply pending video constraints on p2p originator
2020-05-19 12:28:05 -04:00
msalmasi
532dadb245 external_api: fixed using deeplinks
This update opens links in the full body of the window so deeplinks will work on iOS Safari when using the external API in an iFrame.
2020-05-19 14:09:42 +02:00
Felix C. Stegerman
55051cc203 dev: don't proxy /lang/ 2020-05-19 11:58:21 +02:00
Vlad Piersec
4975f15345 fix(prejoin_page): Always show 'join without audio' & add disabled button.
* The prejoin page always displays the 'join without audio' option.
* The join button will be disabled if there is no input.
* Fix some CSS for the case when the user is not anonymous.
2020-05-19 11:47:55 +02:00
Alejandro Blanco
2e2d40c1d0 external-api: add muteEveryone command 2020-05-19 08:50:21 +02:00
Bettenbuk Zoltan
c08638da51 feat: insecure room name warning 2020-05-18 17:59:07 +02:00
Bettenbuk Zoltan
9525cab60f feat: icon type circular label 2020-05-18 17:59:07 +02:00
Bettenbuk Zoltan
21d5c895fc fix: package.lock version mismatch 2020-05-18 16:30:24 +02:00
Saúl Ibarra Corretgé
305a63e8f9 deep-linking: fix generating links for external API
The ocnfig is not overridden early enough.

Fixes: https://github.com/jitsi/jitsi-meet/issues/6489
2020-05-18 16:06:13 +02:00
Emil Ivov
2fef06772b Merge pull request #6755 from saghul/e2ee-label
e2ee: update padlock label tooltip
2020-05-18 07:51:37 -05:00
Vlad Piersec
b2895b7095 feat(prejoin_page): Add ability for guest to join audio by phone 2020-05-18 14:47:44 +02:00
Saúl Ibarra Corretgé
41dc14d30c e2ee: update padlock label tooltip 2020-05-18 14:12:00 +02:00
Suguru Hirahara
2ddfead4f5 doc: fix links on README 2020-05-18 11:53:58 +02:00
Saúl Ibarra Corretgé
d55b49b2c3 doc: move mobile docs to the handbook 2020-05-18 11:44:53 +02:00
Saúl Ibarra Corretgé
64d74852e0 ios: fix PiP window sshowing conference controls
The dynamic size of it was causing trouble. Fix it by setting a fixed PiP window
size (150px) which makes it consisstent with what we have on Android.

Fixes: https://github.com/jitsi/jitsi-meet/issues/6562
2020-05-18 09:34:52 +02:00
Saúl Ibarra Corretgé
7c4c8384fd doc: replace documentation with the handbook
- Leave a link on doc/README,api,quick-install
- Moved the cloud API swagger file to resources/
- Merged the coding conventions with CONTRIBUTING.md
2020-05-17 08:02:29 +02:00
Hristo Terezov
262e855260 fix: recommended browser page link. 2020-05-15 15:06:41 -05:00
Jaya Allamsetty
3f679407a9 fix(video-quality): Get rid of the video qaulity warning for p2p
It is now possible to change the sender video quality for p2p calls as well
2020-05-15 09:49:55 -04:00
Saúl Ibarra Corretgé
4faeb84d2e build: fix using parallell make
We don't support it, so make sure targets run serially.

Fixe: https://github.com/jitsi/jitsi-meet/issues/6647
2020-05-14 11:14:43 +02:00
Philipp Hancke
eed5e31ec9 Merge pull request #6061 from jitsi/npmrc
dev: add npmrc with package-lock set to true
2020-05-14 10:17:27 +02:00
Felix C. Stegerman
4b1d8ba877 update react-emoji-render to v1.2.4 (#6674) 2020-05-13 21:14:27 +02:00
NicolasD
3043f50ce3 rn,flags: add "toolbox.alwaysVisible" flag 2020-05-13 16:25:06 +02:00
Saúl Ibarra Corretgé
b7f1f3c659 ios: try to leave the meeting when the app is terminating
Fixes: https://github.com/jitsi/jitsi-meet/issues/6665
2020-05-13 16:21:38 +02:00
tmoldovan8x8
07f64d94c0 android: set view listener in onCreate 2020-05-13 10:56:37 +02:00
Boris Grozev
76e1217439 ref: Make is_healthcheck_room more generic. 2020-05-12 18:22:14 -05:00
crouchingtigerhiddenadam
591ea0a44a doc: quick install guide updates
* optional fix for https port 5284 error

https://community.jitsi.org/t/no-certificate-present-in-ssl-tls-configuration-for-https-port-5284/47836/7

* usage of sudo and systemctl made more consistent

* jigasi download url changed to stable

Jigasi download url changed. Is this required in addition to apt install jigasi as part of the quick install guide?

* wget/dpkg removed from jagasi instructions
2020-05-12 16:32:37 +02:00
Edgard Messias
24052e9f9a fix: Fixed browser language detect (close #5987) 2020-05-12 09:26:53 -05:00
bgrozev
38b8772af0 docs: Fix video tutorial links. (#6655) 2020-05-11 11:23:35 -05:00
Mihai Uscat
5fdb7c176c feat(MobileDeepLinking): Enable custom deeplinking domain 2020-05-11 15:33:10 +02:00
Saúl Ibarra Corretgé
a8da6d4095 lang: improve Basque translation
Thanks @irontec, @librezale and @arraintxo for working on it!
2020-05-11 15:32:31 +02:00
Saúl Ibarra Corretgé
01fc098d4b prejoin: fixup mobile
Avoid importing components, which are not yet implemented on mobile.
2020-05-11 14:15:55 +02:00
Saúl Ibarra Corretgé
b50b30e3eb doc: recommend Node 12 2020-05-11 13:51:00 +02:00
Wuriyanto
1b8e5d0244 change cjson to cjson.safe and cath error from decode function 2020-05-11 05:46:07 -05:00
Vlad Piersec
908712b96f feat(prejoin_page): Rework prejoin page
* Add a checkbox for skipping the prejoin page on next use. (This is hidden for
now, until we also have a settings entry for it).
* Rework 'Join by Phone' buttons and add new overlay.
* Update the device status accordingly if there were errors while adding
devices.
* The input is filled with the display name if there was one previously used.
* Join the meeting on 'Enter' press.
2020-05-11 10:59:52 +02:00
Goacid
a41bda73ff doc: add more details about systemd limits 2020-05-11 09:33:50 +02:00
Fabian Rodriguez
75ea0070e2 lang: improve frCA 2020-05-11 09:23:53 +02:00
Saúl Ibarra Corretgé
65a8091e53 android: simplify code
- No need to handle the activity result in the fragment, since we already do in
  the Activity
- Automagically ddispose the view when destroyed
2020-05-10 08:03:29 +02:00
Saúl Ibarra Corretgé
7fea8e2e6c android: suppress lint warning 2020-05-10 08:03:29 +02:00
Hristo Terezov
d388a7bd3c feat(reload): Preserve local track mute state. 2020-05-07 18:18:21 -05:00
Jaya Allamsetty
a48aa2b999 feat(external_api): Add command for setting send/recv video quality 2020-05-07 18:10:41 -04:00
tmoldovan8x8
b3f16926d4 rn: add ability to disable crash reporting 2020-05-07 23:05:48 +02:00
Paweł Domas
f646bc7a7a ref: disable ICE restart by default (#6594)
* ref: disable ICE restart by default

The reason for that it's currently causing issues with signaling when
Octo is enabled. Also when we do an "ICE restart"(which is not a real
ICE restart), the client maintains the TCC sequence number counter, but
the bridge resets it. The bridge sends media packets with TCC sequence
numbers starting from 0.

The 'enableIceRestart' config option can be used to force it, but it's
not recommended.
2020-05-07 06:59:37 -05:00
Andrey Nedobylsky
e90b60d661 lang: fix Russian translation
Fixed Russian translation for audioVideoSwitch
2020-05-07 11:39:59 +02:00
ludovicm67
bdd129b9a2 feat(analytics): include MatomoHandler by default 2020-05-06 15:32:49 +02:00
ludovicm67
4c635a2a63 feat(analytics): add Matomo support 2020-05-06 15:32:49 +02:00
Saúl Ibarra Corretgé
2b526557e4 participants: fix accessing the local participant ID
getLocalParticipant returns a participant object stored in Redux, not a
JitsiParticipant object.
2020-05-06 15:27:08 +02:00
Saúl Ibarra Corretgé
eee1f50ed2 deps: update lib-jitsi-meet
Fix losing media when using insertable streams on track changes.
2020-05-06 09:20:16 -04:00
Saúl Ibarra Corretgé
e9562adddf lang: add Basque to the list of available languages 2020-05-06 14:53:11 +02:00
patidars
8accd9e433 rn,flags: feature flag to show/hide 'Tile View' button 2020-05-06 14:22:59 +02:00
Saúl Ibarra Corretgé
caabdadf19 rn,polyfills: refactor all mobile polyfills
Move all polyfills to a standalone feature, which gets imported before anything
else in the mobile entrypoint. This guarantees that any further import sees the
polyfilled environment.
2020-05-06 12:35:12 +02:00
Saúl Ibarra Corretgé
062bc13d4f rn,storage: fix not using a persistent localStorage
In
1ffd75c0a6
we switched to using the localStorage wrapper provided by js-utils, which
checks for window.localStorage's availability very early. Our polyfill must be
applied earlier that any such import.

Here we are importing it in the entrypoint, which means no code ran before this,
literally.
2020-05-06 12:35:12 +02:00
ktagbnaw
a56e451536 misc: fix typo 2020-05-06 09:50:11 +02:00
Jim Bullington
acbf641fb4 Add participantRoleChanged event to external API (#6573)
* Add participantRoleChanged event to external API

* Update API documentation

* Remove unneeded whitespace

* Remove more unneeded whitespace

* Fix jsdoc formatting

* Fix jsdoc formatting
2020-05-05 09:03:54 -05:00
patidars
a18fd1cdb3 rn,flags: add feature flag to show/hide the 'Raise Hand' button 2020-05-04 18:22:45 +02:00
Saúl Ibarra Corretgé
9be78c60eb rn,lang: fix language detection to take region into account
If we have a regional variant, prefer that.
2020-05-04 16:59:37 +02:00
Vlad Piersec
a45cbf41ef feat(prejoin_page): Add prejoin page 2020-05-04 12:49:35 +02:00
Emil Ivov
5b53232964 Merge pull request #6547 from jitsi/fix-mobile-imports
chore(package): update dependencies.
2020-05-02 22:26:21 -05:00
Hristo Terezov
d4d4490aa9 chore(package): update dependencies. 2020-05-02 22:10:54 -05:00
Emil Ivov
0fd0897531 Merge pull request #6529 from jitsi/local-storage
fix(localStorage): exception when disabled.
2020-05-02 19:39:07 -05:00
Hristo Terezov
360383440e chore(package): Update dependencies. 2020-05-02 19:36:28 -05:00
Rich Brown
1a40672427 Fix the command to update jitsi-stable.list (#5731)
* Fix the command to update jitsi-stable.list

This command uses the technique recommended below that will always work. (See "Safest Solution (#3)") 

https://askubuntu.com/questions/185268/permission-denied-etc-apt-sources-list

* Update quick-install.md

remove "-a" argument from `tee`  to remove merge conflict
2020-05-02 07:50:34 +02:00
Hristo Terezov
1ffd75c0a6 fix(localStorage): exception when disabled. 2020-05-01 14:48:08 -05:00
Julian1203
77d38731e9 Update main-de.json
Fixed typo
2020-05-01 10:25:21 -05:00
Hristo Terezov
13f76c2cce fix(follow-me): disable the auto pin on SS 2020-04-30 16:58:22 -05:00
Jaya Allamsetty
9ad87f3706 fix: Add safari to optimal browser lists 2020-04-30 17:39:07 -04:00
damencho
eea8fef044 Initial Lobby backend implementation. 2020-04-30 16:34:46 -05:00
Jaya Allamsetty
c2cb4ea6b6 deps: update ljm 2020-04-30 15:29:04 -04:00
Jaya Allamsetty
d6cf0c0afd deps: bump lib-jitsi-meet 2020-04-30 12:56:31 -04:00
Fabian Rodriguez
f5faf5bbaa Update main-es.json
Added missing strings for Mute Everyone feature, other small fixes.
2020-04-30 10:16:05 -05:00
Valso
363982fad4 Update languages-eo.json
Add correct translation for  "el": "Greka",
2020-04-30 10:15:37 -05:00
Julian1203
62f47d5b87 Update main-de.json
Small improvement
2020-04-30 10:15:14 -05:00
Julian1203
223e8560ca lang: fixes for German 2020-04-30 14:44:06 +02:00
tmoldovan8x8
2085851179 android: persist Amplitude device id when not set externally
Co-authored-by: Titus-Andrei Moldovan <moldovan.titus@gmail.com>
2020-04-30 13:12:09 +02:00
Ferdi Bayrak
47bc6f0470 Added Turkish language on BuiltinLanguages.native.js (#5965)
* Added Turkish lang

Added Turkish lang

* Update BuiltinLanguages.native.js

* Update BuiltinLanguages.native.js
2020-04-29 16:27:37 -05:00
Tao Sasaki
c5686386fa Fix strange Japanese text (#6303) 2020-04-29 15:41:34 -05:00
adrmzz
e1cededb76 Adding Sardinian (#5984)
* Create main-sc.json

* Create languages-sc.json

* Update languages.json

* Update main-sc.json

(just a couple of minor edits to the translation)

* Update BuiltinLanguages.native.js

adding Sardinian

* trailing spaces corrected

* Update BuiltinLanguages.native.js

* Update BuiltinLanguages.native.js

fixed spaces

* Update main-sc.json
2020-04-29 14:07:51 -05:00
t7yang
268dc33324 polish zh-TW translation (#5678)
* polish zh-TW translation

Fix typos, use the correct and localize terms, replace some translations to make it fluent for native speaker.

* fix syntax error
2020-04-29 11:19:59 -05:00
Oleksa
baaf55a2ab Update languages.json 2020-04-29 10:30:27 -05:00
James Baird
a8252103ea Fix grammar on unsupported browser message
It should read "Chrome or Firefox" not "Chrome and Firefox", as you only need to use a single browser, not both.
2020-04-29 10:30:06 -05:00
zibens
b0ab51af90 Add files via upload
Introducing Latvian language, to make it more widespread in Latvia
2020-04-29 10:29:08 -05:00
tzagim
69b20cd945 Add Hebrew Translation & Fix TYPO (#5907)
* Create languages-he.json

Hebrew list languages

* Update languages-he.json

TYPO

* Update main-he.json

1/5

* Update main-he.json

2/5

* Update main-he.json

4/5

* Update main-he.json

Pause

* Update main-he.json

* Update main-he.json

Finish

* Update main.json

TYPO

* Update main.json

TYPO

* Update main.json

TYPO

* Update main-he.json

Add missing strings

* Update languages-he.json
2020-04-29 10:26:31 -05:00
ariadi
8bb0141c1a Translation in Indonesian (#5913)
* Add Indonesian

* Indonesian translation

* Update languages-id.json

* Create main-id.json

* Update languages-id.json

* Update main-id.json

* Update main-id.json
2020-04-29 10:25:56 -05:00
James.zhu
ed766c6fe2 Update main-zhCN.json
I will update the files for some mistakes in chinese. I would late update whole file in chinese.
2020-04-29 10:25:05 -05:00
chipechop
d883bae925 Update main-it.json
Simplified Mobile mani menu, with more fluent wording.
2020-04-29 10:23:21 -05:00
Joan Montané
62d3d1f294 Update BuiltinLanguages.native.js 2020-04-29 10:22:59 -05:00
Joan Montané
dbfed573ac Add Catalan entry on BuiltinLanguages.native.js 2020-04-29 10:22:59 -05:00
Daniel Neumann
640b9bfd52 added missing translations 2020-04-29 10:20:26 -05:00
Saúl Ibarra Corretgé
dac6d9d63c aandroid: raise SDK version 2020-04-29 17:20:11 +02:00
Daniel Ortega
0662da58b4 Fixing wrong translation in muteParticipantButton button 2020-04-29 10:20:04 -05:00
Daniel Ortega
d7d4ea819f Adding missing question mark 2020-04-29 10:20:04 -05:00
Daniel Ortega
2c6cac6526 Adding mute action related missing translations in spanish 2020-04-29 10:20:04 -05:00
Milan Kral
f53251f104 Enable Slovak translation.
Add Slovak translation to BuiltinLanguages

Follow up to #5523
2020-04-29 10:19:40 -05:00
Jelrik van Hal
8e01f769d9 Adds Dutch translation for "toolbar.muteEveryone" 2020-04-29 10:19:21 -05:00
Özcan Oğuz
8c4656a3c8 Wrong translation fixed 2020-04-29 10:18:36 -05:00
cayenne17
a5a36aa1e1 lang: translation improvements for French 2020-04-29 10:18:16 -05:00
Saúl Ibarra Corretgé
6939939a0f deps: update lib-jitsi-meet
Fixes mobile when importing E2EE.
2020-04-29 17:17:22 +02:00
Marc Laporte
c60671e008 Fix a typo 2020-04-29 10:16:59 -05:00
Valso
8e4e1f139a Update languages-eo.json 2020-04-29 10:16:38 -05:00
Anugoon Chotigarn
b608051177 Add Thailand (th) translation 2020-04-29 10:16:18 -05:00
Дамян Минков
2dad7e920b Merge weblate translations (#6461)
* Translated using Weblate (French)

Currently translated at 96.1% (646 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 96.7% (650 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 96.7% (650 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 96.7% (650 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.6% (663 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.6% (663 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.5% (662 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.5% (662 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.6% (663 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.6% (663 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 99.2% (667 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 99.2% (667 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 99.1% (666 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 99.1% (666 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (Italian)

Currently translated at 75.0% (24 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/it/

* Translated using Weblate (German)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (German)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (German)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (German)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (Russian)

Currently translated at 97.7% (657 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ru/

* Translated using Weblate (Russian)

Currently translated at 97.7% (657 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ru/

* Translated using Weblate (German)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (German)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/hu/

* Translated using Weblate (Swedish)

Currently translated at 84.8% (570 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.8% (570 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 81.5% (548 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 81.8% (550 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 81.9% (551 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 81.9% (551 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 81.9% (551 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 82.1% (552 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 82.1% (552 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 82.2% (553 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 82.2% (553 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 83.4% (561 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 83.4% (561 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.3% (567 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.3% (567 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.5% (568 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.9% (571 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.9% (571 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.9% (571 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 84.9% (571 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 85.1% (572 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 85.1% (572 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 85.2% (573 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 85.2% (573 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.0% (578 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.0% (578 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 85.7% (576 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.3% (580 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.3% (580 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.7% (583 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.7% (583 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 87.7% (590 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 87.7% (590 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 86.9% (584 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 87.6% (589 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 91.5% (615 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 91.5% (615 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 88.8% (597 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 88.8% (597 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 90.9% (611 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 90.9% (611 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 90.9% (611 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 90.9% (611 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 91.3% (614 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Swedish)

Currently translated at 91.3% (614 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Basque)

Currently translated at 38.0% (256 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 38.6% (260 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 38.8% (261 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 39.2% (264 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 39.2% (264 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 39.5% (266 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 39.8% (268 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 40.1% (270 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 41.0% (276 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 41.3% (278 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 41.2% (277 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 41.8% (281 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 42.1% (283 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 43.3% (291 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 43.3% (291 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 43.7% (294 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 44.0% (296 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 44.1% (297 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 44.1% (297 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 44.3% (298 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 44.4% (299 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 44.9% (302 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 45.3% (305 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 45.5% (306 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 45.6% (307 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 45.6% (307 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 45.8% (308 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 46.1% (310 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 46.4% (312 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 46.7% (314 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 47.1% (317 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 47.1% (317 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 47.4% (319 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 48.2% (324 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 47.9% (322 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 48.2% (324 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 48.2% (324 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 49.5% (333 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 48.9% (329 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 50.1% (337 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 50.2% (338 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 50.0% (336 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 50.4% (339 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 51.6% (347 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 51.1% (344 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 50.8% (342 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 51.1% (344 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 52.5% (353 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 51.7% (348 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 52.8% (355 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 51.9% (349 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 52.3% (352 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 54.4% (366 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 53.7% (361 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 53.8% (362 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 54.9% (369 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 54.4% (366 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 54.7% (368 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 93.8% (631 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 93.8% (631 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/zh_Hant/

* Translated using Weblate (Basque)

Currently translated at 55.8% (375 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 56.8% (382 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 55.9% (376 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 57.7% (388 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 57.7% (388 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 58.9% (396 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 57.8% (389 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 58.1% (391 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 60.4% (406 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.0% (410 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 59.5% (400 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 59.9% (403 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 60.7% (408 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.0% (410 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 60.8% (409 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.7% (415 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.1% (411 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.0% (410 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.9% (416 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 62.6% (421 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.3% (412 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.7% (415 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 62.0% (417 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 62.2% (418 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 61.9% (416 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 62.2% (418 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 62.3% (419 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 62.3% (419 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 63.2% (425 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 63.3% (426 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 63.3% (426 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 63.5% (427 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 64.4% (433 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 63.9% (430 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 64.8% (436 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 64.8% (436 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 64.5% (434 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 65.7% (442 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 65.0% (437 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 66.2% (445 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 65.9% (443 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 66.2% (445 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 66.3% (446 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 67.1% (451 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 67.8% (456 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 67.5% (454 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 67.5% (454 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 69.7% (469 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 69.6% (468 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 70.0% (471 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 70.2% (472 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 70.5% (474 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Galician)

Currently translated at 93.8% (631 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/gl/

* Translated using Weblate (English (United Kingdom))

Currently translated at 91.3% (614 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 91.3% (614 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 86.4% (581 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/en_GB/

* Translated using Weblate (English)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/en/

* Translated using Weblate (Afrikaans)

Currently translated at 63.6% (428 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/af/

* Translated using Weblate (Bulgarian)

Currently translated at 98.5% (662 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/bg/

* Translated using Weblate (Catalan)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ca/

* Translated using Weblate (Czech)

Currently translated at 72.1% (485 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Danish)

Currently translated at 94.7% (637 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/da/

* Translated using Weblate (German)

Currently translated at 98.9% (665 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/de/

* Translated using Weblate (Esperanto)

Currently translated at 42.1% (283 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eo/

* Translated using Weblate (English (United Kingdom))

Currently translated at 88.8% (597 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/en_GB/

* Translated using Weblate (Spanish)

Currently translated at 95.6% (643 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/es/

* Translated using Weblate (Spanish (American))

Currently translated at 97.3% (654 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/es_US/

* Translated using Weblate (Spanish)

Currently translated at 95.6% (643 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/es/

* Translated using Weblate (Estonian)

Currently translated at 98.2% (660 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/et/

* Translated using Weblate (Finnish)

Currently translated at 80.6% (542 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fi/

* Translated using Weblate (French)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr/

* Translated using Weblate (French (Canada))

Currently translated at 93.6% (629 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/fr_CA/

* Translated using Weblate (Galician)

Currently translated at 94.4% (635 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/gl/

* Translated using Weblate (Croatian)

Currently translated at 53.7% (361 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/hr/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/hu/

* Translated using Weblate (Armenian)

Currently translated at 36.4% (245 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/hy/

* Translated using Weblate (Italian)

Currently translated at 84.8% (570 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/it/

* Translated using Weblate (Japanese)

Currently translated at 70.8% (476 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ja/

* Translated using Weblate (Kabyle)

Currently translated at 20.5% (138 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/kab/

* Translated using Weblate (Korean)

Currently translated at 52.8% (355 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ko/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 73.0% (491 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/nb_NO/

* Translated using Weblate (Dutch)

Currently translated at 86.7% (583 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/nl/

* Translated using Weblate (Occitan)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/oc/

* Translated using Weblate (Polish)

Currently translated at 90.3% (607 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/pl/

* Translated using Weblate (Occitan)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/oc/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.1% (666 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/pt_BR/

* Translated using Weblate (Russian)

Currently translated at 97.9% (658 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ru/

* Translated using Weblate (Slovak)

Currently translated at 19.6% (132 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sk/

* Translated using Weblate (Slovenian)

Currently translated at 14.8% (100 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sl/

* Translated using Weblate (Swedish)

Currently translated at 93.4% (628 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sv/

* Translated using Weblate (Turkish)

Currently translated at 48.3% (325 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/tr/

* Translated using Weblate (Turkish)

Currently translated at 48.3% (325 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/tr/

* Translated using Weblate (Vietnamese)

Currently translated at 82.2% (553 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/vi/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 85.2% (573 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/zh_Hans/

* Translated using Weblate (Catalan)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/ca/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/zh_Hant/

* Translated using Weblate (German)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/de/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/es/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/en_GB/

* Translated using Weblate (French)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/fr/

* Translated using Weblate (Finnish)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/fi/

* Translated using Weblate (French (Canada))

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/fr_CA/

* Translated using Weblate (Italian)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/it/

* Translated using Weblate (Galician)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/gl/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/tr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 56.2% (18 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/nb_NO/

* Translated using Weblate (Occitan)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/oc/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/sv/

* Translated using Weblate (Icelandic)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/is/

* Translated using Weblate (Sardinian)

Currently translated at 99.1% (666 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sc/

* Translated using Weblate (Ukrainian)

Currently translated at 97.9% (658 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/uk/

* Translated using Weblate (Belarusian)

Currently translated at 95.0% (639 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/be/

* Translated using Weblate (Basque)

Currently translated at 74.1% (498 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (English (United Kingdom))

Currently translated at 89.2% (600 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/en_GB/

* Translated using Weblate (Basque)

Currently translated at 86.1% (579 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

* Translated using Weblate (Basque)

Currently translated at 87.5% (588 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/eu/

Co-authored-by: anonymous <noreply@weblate.org>
Co-authored-by: Jeannette L <j.lavoie@net-c.ca>
Co-authored-by: Artem <KovalevArtem.ru@gmail.com>
Co-authored-by: Gyuris Gellért <bubu@ujevangelizacio.hu>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Leif-Jöran Olsson <info@friprogramvarusyndikatet.se>
Co-authored-by: khalasa47 <khalash@protonmail.com>
Co-authored-by: BiziA <adrianpena.hf@gmail.com>
Co-authored-by: Osoitz <oelkoro@gmail.com>
Co-authored-by: 麋悟BigELK176 <bigelk176@gmail.com>
Co-authored-by: Iñigo Zendegi Urzelai <izendegi@gmail.com>
Co-authored-by: Ciarán Ainsworth <ciaranainsworth@posteo.net>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Xosé M <xosem@disroot.org>
Co-authored-by: Quentin PAGÈS <quentinantonin@free.fr>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Joan Montané <joan@montane.cat>
2020-04-29 10:15:22 -05:00
Daniil Gentili
be2d20e20e doc: fix echo when running with sudo 2020-04-29 14:57:21 +02:00
Potecaru Tudor
fd11c36bc3 fix: guard for cases where user hits leave before being connected to the room
Co-authored-by: Tudor-Ovidiu Avram <tudor.potecaru@8x8.com>
2020-04-29 14:52:44 +02:00
Saúl Ibarra Corretgé
60148b6439 interface_config: add trailing commas and end marker 2020-04-29 13:07:55 +02:00
Saúl Ibarra Corretgé
62b4c97423 rn: raise SDK version to 2.8.1 2020-04-29 11:44:17 +02:00
Saúl Ibarra Corretgé
f08fa1e374 deps: update lib-jitsi-meet 2020-04-29 11:33:42 +02:00
Saúl Ibarra Corretgé
e5b563ba46 rn,flags: add more feature flags to toggle specific behavior
- Invite funcionality (altogether)
- Recording
- Live streaming
- Meeting name
- Meeting password
2020-04-29 10:19:17 +02:00
Pablo Espinosa
c41047344f lang: fixes for Spanish translation 2020-04-29 10:04:49 +02:00
Saúl Ibarra Corretgé
6ae148403d misc: drop the pre-commit hook
GH Actions now runs the linter.
2020-04-28 17:43:11 +02:00
Jaya Allamsetty
b5676c3729 feat(video-quality):control sender resolution based on user pref 2020-04-28 10:17:06 -04:00
drimovecz
3ab6b97b8b Added module for filtering transcription requests from presence stanz… (#6404)
* Added module for filtering transcription requests from presence stanzas when the users making the requests do not have access to the transcription feature

* Add comments explaining the functionality and configuration for the transcription filtering module.

Co-authored-by: drimovecz <daniel.rimovecz@8x8.com>
2020-04-28 09:11:58 -05:00
Saúl Ibarra Corretgé
5ea8e198c7 e2ee: add label if all participants have E2EE enabled 2020-04-28 16:11:39 +02:00
Saúl Ibarra Corretgé
2ad6bfbc20 e2ee: broadcast e2ee enabled status using presnce 2020-04-28 16:11:39 +02:00
Saúl Ibarra Corretgé
6ce27ef10d misc: set worker names 2020-04-28 12:02:58 +02:00
Ricardo Santana
93ef8495ca fix locale detect error on mobile apps (#5956) 2020-04-27 17:38:57 +02:00
Hristo Terezov
94a15914d0 fix(document.title): use URL decoded room name. 2020-04-25 10:27:47 -05:00
Hristo Terezov
851976ebdf fix(RemoteVideo): .oncanplay -> addEventListener
Replaces the .oncanplay listener with addEventListener('canplay', ...).
This is needed because third party libraries (for example callstats)
are brutally overriding the .oncanplay property and replacing our
listener.
2020-04-24 16:04:32 -05:00
Ruben Kerkhof
57bb2ead36 Conference timer should start counting at 0
It's starting at 1 hour because os.time(os.date("!*t") returns the wrong
time depending on system timezone. os.time() already returns the number
of seconds since epoch in UTC so just use that.

Fixes #5595
2020-04-23 10:22:02 -05:00
Saúl Ibarra Corretgé
027c6ddad0 fastlane,ios: make contact information configurable 2020-04-23 12:43:59 +02:00
Emil Ivov
8648a5a998 Redirect security section to jitsi.org/security 2020-04-22 12:58:18 -05:00
Julian1203
c83b30558d lang: fixes for German 2020-04-22 15:44:09 +02:00
Julian1203
057dfc8194 lang: fixes for German 2020-04-22 15:42:18 +02:00
Fabian Rodriguez
5eae0b58e9 lang: fixes for Spanish (US) 2020-04-22 15:40:57 +02:00
Fabian Rodriguez
1538107e93 lang: fixes for Spanish translation 2020-04-22 15:28:46 +02:00
Bettenbuk Zoltan
cd1862a2d3 fix: private message open 2020-04-22 12:09:07 +02:00
Eduard Itrich
147a076f5d doc: fixed typo in port number of jicofo 2020-04-22 10:57:34 +02:00
Hristo Terezov
9bdaea4069 fix(avatar): use text instead of foreign object.
Reason: On Safari the foreign object is not scaled correctly.
2020-04-21 10:12:51 -05:00
Jonathan Scholz
547d1547bb fix(dialog): use height behavior in KeyboardAvoidingView 2020-04-21 15:13:08 +02:00
Jonathan Scholz
39853e048b fix(dialog): fix on-screen keyboard overlapping dialog boxes 2020-04-21 15:13:08 +02:00
Saúl Ibarra Corretgé
8b454b5196 deps: update lib-jitsi-meet
f97c37d0 e2ee: also enable on p2p connections
a832b39b fix(safari): construct track constraints from getSettings (#1104)
2020-04-21 15:05:40 +02:00
Saúl Ibarra Corretgé
e2788e0fb2 e2ee: show warning if not all participants support E2EE
Refs: https://github.com/jitsi/lib-jitsi-meet/pull/1108
2020-04-21 13:41:05 +02:00
Titus-Andrei Moldovan
b1d1599a1c android: add a consistent deviceId for Amplitude from SharedPreferences 2020-04-21 11:45:42 +02:00
Saúl Ibarra Corretgé
cef98f457f ios: bump CocoaPods dependency 2020-04-21 09:58:24 +02:00
Andrei Gavrilescu
6b0e8aab11 bugfix(remote-control): Remote control not working on linux 2020-04-21 10:33:25 +03:00
Jaya Allamsetty
086889ed70 deps: update lib-jitsi-meet 2020-04-20 18:05:49 -04:00
Saúl Ibarra Corretgé
516e5af118 doc: update supported platforms for building mobile apps 2020-04-20 20:25:24 +02:00
Saúl Ibarra Corretgé
afe1b4b0f9 rn: now working on 20.3 2020-04-20 16:01:25 +02:00
Saúl Ibarra Corretgé
8790ad6013 misc: update GH issue templates
- Use config.yml to prevent creating issues with a blank template
- Don't use a template to direct people to the forum
- Create a security policy template
2020-04-20 15:06:57 +02:00
antonbks
8bbc04d4db doc: fix dev server backend default 2020-04-20 14:02:23 +02:00
Hristo Terezov
4fda428be1 fix(largeVideo): update don't depend on thumbnails 2020-04-17 15:33:13 -05:00
Hristo Terezov
f972ebfe9e fix(thumbnail): videos on safari. 2020-04-17 13:15:25 -05:00
Jaya Allamsetty
3dfcc8d80e deps(ljm): Bump lib-jitsi-meet for Firefox ESR simulcast fix 2020-04-16 21:07:22 -04:00
Saúl Ibarra Corretgé
33ebd241a9 external_api: add command to set E2EE key 2020-04-16 20:25:56 +02:00
Saúl Ibarra Corretgé
cb6fbb0f03 e2ee: add UI elements
* Add dialog to set the E2EE key
* Use the Redux action / middleware to update the key even when set through the
  hash parameter
* Cleanup URL after processing the key so it's not recorded in browser history
2020-04-16 20:25:56 +02:00
Philipp Hancke
0077ee29c5 deps: bump lib-jitsi-meet
Changelog:
101fecbb Thu Apr 16 11:23:58 2020 +0200 Philipp Hancke: e2ee: decode static black frame for decryption errors (#1098)
c3fd3431 Thu Apr 16 13:09:18 2020 +0200 Philipp Hancke: e2ee: remove encodedFrameType workaround (#1099)

git log --no-merges --reverse --pretty="%h %ad %an: %s" 70a3298914f3905297e4e9dcc200b95e9b7a73e9..c3fd3431a66556de7b2ec7632f9f6d75b64aad0a
2020-04-16 17:20:08 +02:00
Bettenbuk Zoltan
551db30cc7 fix: modal keyboard avoiding view fix 2020-04-16 15:30:01 +02:00
Philipp Hancke
1bd930a3cb deps: update lib-jitsi-meet
Changelog:
6502bc67 Wed Apr 15 10:51:35 2020 +0200 Philipp Hancke: e2ee: generate silence in case of audio decryption errors
adc87bcf Mon Apr 6 15:07:48 2020 -0500 paweldomas: fix(strophe.jingle.js): exception on ICE config modification
2020-04-15 21:24:33 +02:00
Philipp Hancke
169906f4cb dev: add npmrc with package-lock set to true
adds a .npmrc file to create/update the package-lock.json file regardless
of a developers local settings.
2020-04-15 20:57:05 +02:00
Jaya Allamsetty
e0563a743f Revert "feat(browser-support): Add safari to list of optimal browsers"
This reverts commit 4824c8714a.
2020-04-15 11:24:04 -05:00
Saúl Ibarra Corretgé
a4ab7ea95f deps: upddate lib-jitsi-meet 2020-04-15 11:04:23 -05:00
Vlad Piersec
b50d6e43d0 fix(settings_buttons): Persist audio/video settings across sessions. 2020-04-15 08:33:19 -05:00
Saúl Ibarra Corretgé
f9fcb46036 pip: disable PiP on Android < 26
Fixes: https://github.com/jitsi/jitsi-meet/issues/6008
2020-04-15 12:12:58 +02:00
Jaya Allamsetty
4824c8714a feat(browser-support): Add safari to list of optimal browsers 2020-04-14 13:42:27 -04:00
damencho
be56521267 debian: Skips deploy-hook when there is no hook available. 2020-04-14 11:54:58 -05:00
Jaya Allamsetty
b7eda8df7a fix(safari): set playsInline attribute to true on the video element
The playsInline attribute needs to be set to true for video to be rendered on Safari on iOS
2020-04-14 12:28:09 -04:00
Jaya Allamsetty
d632b6e13e deps: Update ljm for FF simulcast, js-utils for detecting Edge on Android 2020-04-14 11:07:09 -04:00
Bettenbuk Zoltan
dff7d661ca doc: add documentation to some url params 2020-04-14 16:05:04 +02:00
Julian1203
edb8ecd542 Update main-de.json (#5905)
The word "Weitere" implied that there are already people in the meeting so I replaced it with "andere". 
I also made line 775 gender-neutral as "der Einzige" would technically only refer to males which isn't an unusual thing to do but some people might consider it discriminatory against women.
2020-04-11 12:31:36 -05:00
Mantas Kriaučiūnas
b64112432d Add Lithuanian (lt) translation (#5903)
* Add Lithuanian (lt) language

Add Lithuanian (lt) language

* Added Lithuanian translation

Add Lithuanian translation by Mantas Kriaučiūnas (Baltix) and Raminta Stasaitytė

* Dropping by  damencho request
2020-04-11 12:30:19 -05:00
Daniel Ortega
d8963bc903 Fixing wrong text at key "done" in main-es.json (#5900) 2020-04-11 11:33:14 -05:00
Julian1203
5c39a2f6a6 Update main-de.json (#5895)
Fixed same mistake again as it was in there twice, also made the phrase a bit shorter as otherwise it wouldn't fit in the screen.
Changed "Wollen" to "Möchten" as it's more polite.
2020-04-11 09:32:04 -05:00
Daniel Ortega
a72928a9e7 Adding Spanish translation of "Hebrew" literal (#5893)
* Adding Spanish translation of "Hebrew" literal

* Adding Spanish translation (esUS) of "Hebrew" literal
2020-04-11 09:00:45 -05:00
devSJR
e2ea26eb1f Update main-de.json (#5892)
sie -> Sie
ihre -> Ihre
100% -> 100 %
2020-04-11 08:59:31 -05:00
Saúl Ibarra Corretgé
9962a2ea61 config: whitelist disableSimulcast 2020-04-11 11:37:02 +02:00
Hristo Terezov
07e203ce8d fix(youtube-policy-links): Alignment. 2020-04-10 17:55:50 -05:00
yanas
638fdf0370 Revert "Improve accessibility of Buttons in Webapp (#5432)"
This reverts commit 953f838a2a.
2020-04-10 16:12:21 -05:00
Hristo Terezov
6ce1eaba24 feat(old-electron-app-notification): Implement
Detects if Jitsi Meet is running in old jitsi-meet-electron app and
warns the user for scurity issues.
2020-04-10 14:39:31 -05:00
ferdibayrak
4780e48be8 Update main-tr.json (#5876)
Hello. I am an iOS developer. Jitsi's Turkish translation is now 100% completed. Please update the translation file.
2020-04-10 14:37:05 -05:00
Jaya Allamsetty
7776f0a98c deps(ljm): Update ljm, add safari support and disable simulcast on Firefox 2020-04-10 14:31:06 -04:00
Julian1203
2eede7e76b Update main-de.json (#5873)
Fixed very small mistake in the programming. I don't need to sign the CLA for this, do I?
2020-04-10 13:03:58 -05:00
adrmzz
72a7bd0a68 Adding Sardinian translation (#5386)
* Create main-sc.json

* Create languages-sc.json

* Update languages.json

* Update main-sc.json

(just a couple of minor edits to the translation)
2020-04-10 13:03:26 -05:00
Selyan Slimane Amiri
9085cbf363 Update languages-kab.json (#5871) 2020-04-10 12:22:18 -05:00
Nicolas
be80f26086 Update main-ru.json (#5861)
+lonelyMeetingExperience for russian
2020-04-10 12:19:59 -05:00
Neil Brown
a876f78fd7 Update quick-install.md (#5819)
Add information about firewall ports.
2020-04-10 12:19:39 -05:00
Pierre Pronchery
73d948d150 Also ship robots.txt in the source package (#5811) 2020-04-10 12:19:11 -05:00
Philippe Jtreize
c5aa555816 lang: translation improvements and corrections for French (#5807) 2020-04-10 12:18:43 -05:00
Peter Martin
7902223f09 lang: add Dutch (NL) translation (#5804)
* lang: add Dutch (NL) translation

* lang: add Dutch (NL) translation - fix
2020-04-10 12:18:07 -05:00
Hanno Böck
ac117cd50d Update browser links to HTTPS (#5788)
* Update recommended browser links to https

* Update browser URLs to https
2020-04-10 12:17:10 -05:00
Jens-Christian Fischer
f2df5906f6 Document a scalable installation with multiple videobridges (#5783) 2020-04-10 12:16:18 -05:00
Vyacheslav
0fcecaf18f fix Russian translation (#5746)
Co-authored-by: vbukharin <buhv@skbkontur.ru>
2020-04-10 12:13:34 -05:00
yamakz5555
8cc4b73722 Issue #5741 (#5742)
Japanese mistranslation in speaker stats screen.
2020-04-10 12:13:14 -05:00
Joris Bodin
c08f5c7e18 Fix french (#5721) 2020-04-10 12:13:00 -05:00
Daniel Ortega
2e0f3ae84f Using "Japonés" instead of "Jopones" (#5715) 2020-04-10 12:12:46 -05:00
Marco Manenti
41bfb4c7ec Update main-it.json (#5688)
* Update main-it.json

Some revision

* Update main-it.json

other language revision
2020-04-10 12:12:31 -05:00
Stav Levi
4a12cdfac7 Add Lang Hebrew (#5662)
* Update languages.json

* Create main-he.json
2020-04-10 12:07:12 -05:00
Neil Brown
7b34fb89d1 Update quick-install.md (#5658)
Clarify that a Let’s Encrypt cert is sufficient for iOS and Android clients.
2020-04-10 12:06:40 -05:00
Felix Wolfsteller
4ec438d3f3 i18n: german, fix translation key. (#5657) 2020-04-10 12:06:16 -05:00
Khatanbaatar
e79633b0ca translated Mongolian language (#5646)
* translated Mongolia language

* app translated Mongolian language

* sorry, lint not checked

* lint checked
2020-04-10 12:04:48 -05:00
Ricardo Simões
49a9934c41 Added Portuguese European (Portugal) pt language (#5642)
* Create main-pt.json

Started Portuguese European pt-PT translation

* Created Portuguese European Language pt

Created Portuguese European Language (pt-PT) Portugal
2020-04-10 12:04:09 -05:00
Christian Gräfe
193d19ce21 Update main-de.json (#5634)
simple Typo
2020-04-10 12:03:18 -05:00
Claudius Ellsel
fe83d87d2d Tiny correction in README (#5582) 2020-04-10 12:03:02 -05:00
Julian1203
b4a2327264 Update main-de.json (#5564)
Just checked and Firefox calls the button "Erlauben" in their official German translation while Chrome, Chrome on Android and Opera call it "Zulassen".
"Host" should now be translated consistently
Added two hyphens because "meeting password" is one word in German
2020-04-10 12:00:59 -05:00
MilanKral
d9edf661dd lang: Slovak translation (#5523) 2020-04-10 12:00:26 -05:00
Marco Zehe
e32f367b0c React Native accessibility fixes (#5825)
* Accessibility: Make the native toolbox item communicate that it is a button.

* Accessibility: If an item is toggled, mark it as selected for accessibility

* Accessibility: Make the toolbox a toolbar for accessibility

* Accessibility: Mark the bottom sheet as a menu for accessibility

* Fix typo, AccessibilityRole, not AccessibleRole

* Statement fix

* Appease the linter

* Fix linting errors for real this time
2020-04-10 08:07:48 -05:00
Volker Braun
2b181673b5 android: arcel the serverURL in the Android SDK
In the Android SDK, the setServerURL option is erroneously
ignored. The meeting's serverURL always defaults to
https://meet.jit.si because the serverURL is not parceled.
2020-04-10 14:53:47 +02:00
Emil Ivov
87a058eaa4 Merge pull request #5838 from jitsi/project-hps
Project HiPS, first pass
2020-04-10 07:44:38 -05:00
Saúl Ibarra Corretgé
eef0f5ed97 Project HPS, first pass 2020-04-10 14:40:58 +02:00
Saúl Ibarra Corretgé
1751fc7635 deps: lib-jitsi-meet@latest 2020-04-10 14:40:58 +02:00
pan93412
4aa58f041f i18n: zh_TW: new translation (#5827)
* i18n: zh_TW: new translation

* Delete strings.xml

* Delete strings.xml
2020-04-09 22:27:56 -05:00
Bettenbuk Zoltan
39d789a088 feat: add url params: config.disableInviteFunctions, config.doNotStoreRoom and userInfo.displayName 2020-04-09 17:14:16 +02:00
Peter Martin
2654c77f2c lang: Duch language fixes 2020-04-09 11:29:07 +02:00
Jaya Allamsetty
7af88e5c4f fix(safari): Update the check for Safari
In preparation for the lib-jitsi-meet PR for Safari support, isSafariWithWebrtc() will no longer be available
2020-04-08 15:06:29 -04:00
Дамян Минков
ffdd4f2eed debian: updates around coturn package and order of install (#5729)
* debian: Update coturn udp port to non-privileged one.

* debian: Turnserver config requires jitsi-meet-web-config files.

* doc: Updates doc, removing `--no-install-recommends`.

* debian: Moves checks and configs to default to prosody 0.11.

* debian: Disable room locking on internal muc.

* add scripts for deploying coturn with certbot

* turnserver: Removes unused variable showing error.

* debian: updates let's encrypt and coturn scripts.

* debian: Detect failure to retrieve external ip address.

* debian: Always configure turn when the turnserver package is installed.

Co-authored-by: Julien Fastré <julien.fastre@champs-libres.coop>
2020-04-08 13:06:49 -05:00
Paul Menzel
0b0a19ea5c doc/debian/jitsi-meet-turn: Correct file name to README 2020-04-08 10:59:30 -05:00
Russell Graves
b10aa422ca Add gzip to nginx server config. (#5700)
* Add gzip and expiration to nginx server config.

* Add application/json to gzip_types line to cover translations.

* Add gzip_vary for content caches, remove expires section.

Per discussion, expiration seems likely to cause more confusion than it solves.  Add gzip_vary to prevent content caches from caching un-compressed versions of the content and confusing browsers.
2020-04-07 09:42:27 -05:00
Bettenbuk Zoltan
b706972acb fix: re-add android only chat input padding 2020-04-07 11:18:50 +02:00
Bettenbuk Zoltan
5574221044 ref: SharedDocument to JitsiModal 2020-04-07 11:18:50 +02:00
Bettenbuk Zoltan
0f4369a9a9 ref: AddPeopleDialog to JitsiModal 2020-04-07 11:18:50 +02:00
Bettenbuk Zoltan
0c2e13a453 ref: DialInSummary to JitsiModal 2020-04-07 11:18:50 +02:00
Bettenbuk Zoltan
2f817b6633 ref: Settings to JitsiModal 2020-04-07 11:18:50 +02:00
Bettenbuk Zoltan
678ed605d7 ref: change JitsiModal to better fit to needs 2020-04-07 11:18:50 +02:00
vp8x8
84714ba3bd settings: enable settings buttons on permission grant
Some CSS fixes are also included.
2020-04-07 09:14:23 +02:00
Tim Ruffing
b8963629bf Pass upper case country codes to i18n-iso-countries
Related to #5697.
2020-04-06 22:17:27 -05:00
Damian Goeldi
47cffeb00a add missing IPv6 listener to nginx jitsi module 2020-04-06 21:27:40 -05:00
Paul Mestrum
b70633ef24 tile-view: fix number of columns calculation 2020-04-06 19:42:53 +02:00
Hristo Terezov
145596ac6a fix(tile-view): hidden thumbnails on scroll 2020-04-06 12:22:43 -05:00
moses gunesch
76607bbad8 doc: mention privacy error in Chrome for development 2020-04-06 10:25:13 +02:00
bgrozev
36113fd54f debian: clean up password generation, use 16 characters 2020-04-06 10:22:56 +02:00
Дамян Минков
f86ace17d8 Fix weblate2 (#5695)
* Added translation using Weblate (Icelandic)

* Added translation using Weblate (Icelandic)

* Added translation using Weblate (Sardinian)

* Deleted translation using Weblate (Sardinian)

* Added translation using Weblate (Sardinian)

* Translated using Weblate (Sardinian)

Currently translated at 0.0% (0 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sc/

* Added translation using Weblate (Sardinian)

* Translated using Weblate (Sardinian)

Currently translated at 0.0% (0 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/sc/

* Translated using Weblate (Icelandic)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/is/

* Translated using Weblate (Icelandic)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/is/

* Translated using Weblate (Bulgarian)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/bg/

* Translated using Weblate (Catalan)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ca/

* Translated using Weblate (Bulgarian)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/bg/

* Translated using Weblate (Czech)

Currently translated at 36.7% (247 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Turkish)

Currently translated at 23.3% (157 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/tr/

* Translated using Weblate (ptbr (generated))

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ptbr/

* Translated using Weblate (Sardinian)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sc/

* Translated using Weblate (Czech)

Currently translated at 39.8% (268 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 47.0% (316 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 47.0% (316 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 50.5% (340 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 50.7% (341 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 50.8% (342 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 52.8% (355 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 72.6% (488 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/tr/

* Translated using Weblate (Danish)

Currently translated at 95.6% (643 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/da/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 40.6% (13 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/nb_NO/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 20.8% (140 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/nb_NO/

* Added translation using Weblate (Arabic)

* Added translation using Weblate (Arabic)

* Added translation using Weblate (Serbian)

* Added translation using Weblate (Serbian)

* Added translation using Weblate (Ukrainian)

* Translated using Weblate (Ukrainian)

Currently translated at 96.8% (651 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 96.8% (651 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 97.0% (652 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 97.1% (653 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 97.4% (655 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/uk/

* Added translation using Weblate (Belarusian)

* Added translation using Weblate (Romanian)

* Added translation using Weblate (Ukrainian)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: Václav Zbránek <vaclav@weblate.org>
Co-authored-by: Joan Montané <joan@montane.cat>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Rafael Fontenelle <rafaelff@gnome.org>
Co-authored-by: Adrià Martín <adriamartinmor@gmail.com>
Co-authored-by: Tomas Apeltauer <tomas.apeltauer@gmail.com>
Co-authored-by: anonymous <noreply@weblate.org>
Co-authored-by: Lukáš Jelínek <devel@aiken.cz>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Ahmed Abdelhamid <dralawady@gmail.com>
Co-authored-by: Nenad Nikolic <nikbit2015@gmail.com>
Co-authored-by: Oleksa Stasevych <oleksiy.stasevych@gmail.com>
Co-authored-by: Антон Костюченко <1292729@gmail.com>
Co-authored-by: marius-bardan <marius.bardan@gmail.com>
2020-04-05 17:24:20 -05:00
Dara Poon
0e16008085 Use regexes to match ALPN protocols (#5651)
nginx presents the client's list of ALPN protocols as
$ssl_preread_alpn_protocols, a comma-separated string.  Use regular
expressions to match each item in the list, rather than the exact value
of the entire list at once.
2020-04-05 09:23:43 -05:00
Дамян Минков
f66a919e08 Fix weblate (#5672)
* Added translation using Weblate (Icelandic)

* Added translation using Weblate (Icelandic)

* Added translation using Weblate (Sardinian)

* Deleted translation using Weblate (Sardinian)

* Added translation using Weblate (Sardinian)

* Translated using Weblate (Sardinian)

Currently translated at 0.0% (0 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sc/

* Added translation using Weblate (Sardinian)

* Translated using Weblate (Sardinian)

Currently translated at 0.0% (0 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/sc/

* Translated using Weblate (Icelandic)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/is/

* Translated using Weblate (Icelandic)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/is/

* Translated using Weblate (Bulgarian)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/bg/

* Translated using Weblate (Catalan)

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ca/

* Translated using Weblate (Bulgarian)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/bg/

* Translated using Weblate (Czech)

Currently translated at 36.7% (247 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Turkish)

Currently translated at 23.3% (157 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/tr/

* Translated using Weblate (ptbr (generated))

Currently translated at 100.0% (672 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/ptbr/

* Translated using Weblate (Sardinian)

Currently translated at 99.8% (671 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/sc/

* Translated using Weblate (Czech)

Currently translated at 39.8% (268 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 46.8% (315 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 47.0% (316 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 47.0% (316 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 50.5% (340 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 50.7% (341 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 50.8% (342 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 52.8% (355 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Czech)

Currently translated at 72.6% (488 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/cs/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (32 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/tr/

* Translated using Weblate (Danish)

Currently translated at 95.6% (643 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/da/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 40.6% (13 of 32 strings)

Translation: Jitsi/languages
Translate-URL: https://hosted.weblate.org/projects/jitsi/languages/nb_NO/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 20.8% (140 of 672 strings)

Translation: Jitsi/main
Translate-URL: https://hosted.weblate.org/projects/jitsi/main/nb_NO/

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: Václav Zbránek <vaclav@weblate.org>
Co-authored-by: Joan Montané <joan@montane.cat>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Rafael Fontenelle <rafaelff@gnome.org>
Co-authored-by: Adrià Martín <adriamartinmor@gmail.com>
Co-authored-by: Tomas Apeltauer <tomas.apeltauer@gmail.com>
Co-authored-by: anonymous <noreply@weblate.org>
Co-authored-by: Lukáš Jelínek <devel@aiken.cz>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2020-04-05 08:58:21 -05:00
Saúl Ibarra Corretgé
8115fb5e78 config: remove aspect ratio constraint from config example
Some cameras may not be able to satisfy it and gUM will fail.

Refs: https://github.com/jitsi/lib-jitsi-meet/pull/1066
2020-04-05 08:46:51 +02:00
Weblate (bot)
c9f26dc7ac lang: improved translattions with weblate
Icelandic, Sardinian, Bulgarian, Czech, Catalan, Turkish.

Translate-URL: https://hosted.weblate.org/projects/jitsi/main/

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: Václav Zbránek <vaclav@weblate.org>
Co-authored-by: Damian Minkov <damencho@jitsi.org>
Co-authored-by: Joan Montané <joan@montane.cat>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Rafael Fontenelle <rafaelff@gnome.org>
Co-authored-by: Adrià Martín <adriamartinmor@gmail.com>
Co-authored-by: Tomas Apeltauer <tomas.apeltauer@gmail.com>
2020-04-04 22:14:00 +02:00
damencho
7321f706bb Fix wrong UTF file. 2020-04-03 18:21:04 -05:00
Hristo Terezov
9b5f135dae fix(livestreaming): window.open params
The target parameter from window.open was missing which was causing
reload in electron.
2020-04-03 16:55:05 -05:00
Hristo Terezov
dbbdcb0b00 feat(live-streaming): Add T&C. 2020-04-03 16:54:50 -05:00
Ruben Kerkhof
06ae1861ee log: fix showing verbatim %s
So turn 'hover in %s 1a5cd940' into 'hover in 1a5cd940'
2020-04-03 15:41:30 +02:00
Alexander Neumann
e0afd8fadb lang: fix german translation
This commit fixes a few translation errors, especially in the
kickParticipantTitle.
2020-04-03 15:39:38 +02:00
Michael Telatynski
953f838a2a Improve accessibility of Buttons in Webapp (#5432)
* Expose toggle buttons better via ARIA

* Wire up the divs/li as role=button as per ARIA patterns

* Add flow annotations to appease the linter

* For role=button use aria-pressed not aria-checked
2020-04-03 08:19:32 -05:00
ljo
bf5f1f0168 lang: improve sv translation 2020-04-03 15:13:26 +02:00
Saúl Ibarra Corretgé
cdf977ff3f doc: add documentation index 2020-04-03 14:57:40 +02:00
Joris Bodin
ee1dc9dd8e lang: update translation for fr, de, es, it for mobile app 2020-04-03 12:14:21 +02:00
Ali Karpuzoglu
7bec68e492 doc: fix typo 2020-04-03 12:13:20 +02:00
Bettenbuk Zoltan
97fff02c15 web: use password i18n placeholder 2020-04-03 11:22:11 +02:00
Дамян Минков
b372b2ccf2 Fix turn file link (#5601)
* debian: Does not add a link of turnserver will not be configured. Fixes #5596.

* debian: Partially reverts 990c77bd.

* debian: Skip filename duplication, use variable.
2020-04-02 18:20:41 -05:00
Bettenbuk Zoltan
d00ead932b feat: better room lock prompt 2020-04-02 17:27:22 +02:00
Saúl Ibarra Corretgé
bb2b1b58ec conference: add room name to browser title
Re-do of
86ebfe8dad
2020-04-02 16:33:39 +02:00
GK2
ceeea7314c debian: fix typo 2020-04-02 15:27:19 +02:00
Andrei Gavrilescu
9d6a93119b feat(screenSharing): Add support for audio screen sharing on electron 2020-04-02 16:18:10 +03:00
GK2
08be68cda4 debian: fix install-letsencrypt-cert.sh to create misssing directory
Update install-letsencrypt-cert.sh to fix missing cron.weekly
REFS : https://github.com/jitsi/jitsi-meet/issues/5576
2020-04-02 15:10:27 +02:00
Bettenbuk Zoltan
3a2081ffed ref: change Chat to JitsiModal 2020-04-02 12:40:12 +02:00
Bettenbuk Zoltan
57d14d9517 feat: help centre 2020-04-02 12:40:12 +02:00
Saúl Ibarra Corretgé
c5e693f14a rn,invite: use custom clear button also on iOS
Otherwise it won't be visible if Dark Mode is enabled.
2020-04-02 11:46:29 +02:00
Saúl Ibarra Corretgé
a9da047d3a rn,invite: fix bottom padding on AddPeopleDialog on Android 2020-04-02 11:46:29 +02:00
bgrozev
171b065db1 Revert "Add room name to browser tab title" (#5560)
Because it displays "undefined" in the title.

This reverts commit 86ebfe8dad.
2020-04-01 22:03:14 -05:00
Jaya Allamsetty
9da0b7fee3 deps(ljm): Bump adapter.js to 7.5.0 and validate ice candidate info 2020-04-01 18:28:30 -04:00
damencho
716c9eb46f debian: Change coturn unit file to start on 443. 2020-04-01 17:11:55 -05:00
Stefan
a85c72d859 doc: use sudo 2020-04-01 22:57:08 +02:00
Kenneth Peiruza
0ba567856e lang: fix catalan translation
There was a huge mistake in Catalan translation. Stop streaming and recording said "start" (inicia) instead of "stop" (atura).

Then, 1 small fix on a more polite way of refering to "using a software" -> *emprar* rather than *usar*.
2020-04-01 22:51:38 +02:00
Horatiu Muresan
7f1eb83dbd feat(notifications): Manage audio notifications 2020-04-01 22:40:07 +02:00
damencho
6e4c1f64d8 debian: Adds syslog logging. 2020-04-01 15:18:49 -05:00
damencho
82aa51770a debian: Skip turn config if other sites are available listening on 443. 2020-04-01 15:18:49 -05:00
damencho
990c77bd3d debian: Skip turnserver config if it is already configured. 2020-04-01 15:18:49 -05:00
bgrozev
5bb23b2d17 chore(package.json): Update js-utils (#5541) 2020-04-01 15:09:11 -05:00
Saúl Ibarra Corretgé
9cc05ef838 config: remove unneeded option 2020-04-01 20:40:18 +02:00
Saúl Ibarra Corretgé
a21e3a1946 Merge pull request #5510 from rubenk/add-roomname-to-title
Add room name to browser tab title
2020-04-01 20:08:05 +02:00
Vlad Piersec
c05ca1d9fc fix(prejoin_page) Add labels for video & more UI fixes 2020-04-01 19:57:04 +02:00
Vlad Piersec
1b05d7269c feat(prejoin_page) Add settings buttons
This reverts commit faf24ca7ec.
2020-04-01 19:57:04 +02:00
paweldomas
c170970992 feat(Filmstrip): accessibility label for toggle filmstrip button 2020-04-01 08:49:12 -05:00
Saúl Ibarra Corretgé
d19a659871 ios: update Crasshlytics and fix uploadding symbols 2020-04-01 15:31:28 +02:00
Saúl Ibarra Corretgé
955b24be9d rn,cc: add feature-flag to disable close captions 2020-04-01 15:29:21 +02:00
Saúl Ibarra Corretgé
de6c7e0117 rn,invite: add share button to add people dialog 2020-04-01 15:26:29 +02:00
Bettenbuk Zoltan
feb8fe9e34 api: add private message flag to outgoingMessage 2020-04-01 11:58:48 +02:00
Steve Frécinaux
aff6d4b36d Fix mod_muc_max_occupants to properly ignore whitelisted users
In a typical Jitsi Meet setup, this plugin can be used to limit the number of
occupants in a meeting room, while ignoring "utility" users. Such a
configuration could be:

    muc_max_occupants = 2
    muc_access_whitelist = {
        "focus@auth.meet.jitsi";
    }

It would be expected that this configuration allows two users to attend the
meeting room, but in practice only one is allowed, because the whitelist is not
honoured.

This commit fixes it by actually updating the `user` and `domain` variables
being checked. After this change, the scenario above works just fine.
2020-03-31 16:38:23 -05:00
damencho
45c60717d6 debian: add post remove script for jitsi-meet-turnserver package
Reloads the webserver as the config had changed.
2020-03-31 16:27:25 -05:00
Saúl Ibarra Corretgé
6596e27f69 Prevent meetings from being crawled by Google 2020-03-31 21:45:28 +02:00
Saúl Ibarra Corretgé
8cba7e91d3 ci: build the frontend in GH actions
It should help catch bugs such as bundle bloat easier.
2020-03-31 21:44:48 +02:00
Hristo Terezov
3a871cbed8 feat(remote-menu):option for disable mute and kick 2020-03-31 10:06:30 -05:00
Bettenbuk Zoltan
a46fd60788 fix: accented room name display 2020-03-31 14:16:21 +02:00
Ruben Kerkhof
86ebfe8dad Add room name to browser tab title
Fixes #5480

Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
2020-03-31 13:58:12 +02:00
Juri
97735ff548 lang: fix Estonian translations 2020-03-31 13:10:38 +02:00
James Baird
9fdc18d1ec welcome: hide tabs if nothing to show 2020-03-31 13:06:04 +02:00
Bartosz Dziewoński
4a21882345 lang: translation improvements and corrections for Polish 2020-03-31 09:43:13 +02:00
damencho
cb0cea4ebd Adds a note to re-run Let’s Encrypt script on jetty upgrade. 2020-03-31 09:36:30 +02:00
damencho
b894daa9cf Cleans created users on purging. 2020-03-31 09:36:30 +02:00
damencho
06641a7dd6 This is to prevent item-not-found when multiple users try to join at the same time.
This is to prevent item-not-found when multiple users try to join while jicofo is still configuring the room. Credits @paweldomas
2020-03-31 09:36:30 +02:00
Saúl Ibarra Corretgé
94f7b570d7 debian: fix creating internal MUC 2020-03-30 17:01:27 -05:00
Saúl Ibarra Corretgé
ca5605620a rn: update versions, apps 20.2, sdk 2.7 2020-03-30 15:45:16 +02:00
nicolae-stroncea
8d0202113a doc: clarify required Node / npm versions 2020-03-30 15:09:43 +02:00
Julian1203
f2e59226c0 lang: update german translation 2020-03-30 15:05:31 +02:00
Julian1203
951086e499 lang: update german translation
Added the missing languages
2020-03-30 15:03:39 +02:00
Saúl Ibarra Corretgé
d3a26f9b4e rn,welcome-page: use random room name generator 2020-03-30 14:40:29 +02:00
Asura Enkhbayar
e1a4478a06 doc: jitsi-videobridge -> jitsi-videobridge2
Update commands provided to reload and check the status of videobridge.
2020-03-30 11:48:32 +02:00
Saúl Ibarra Corretgé
ed8009883b avatars: ensure no remote avatar is loaded when disableThirdPartyRequests is set 2020-03-29 08:42:25 +02:00
Saúl Ibarra Corretgé
4fd5dc0ee0 analytics: don't enable callstats when disableThirdPartyRequests is set 2020-03-29 08:42:25 +02:00
Saúl Ibarra Corretgé
1bbb937d9d analytics: fix enabling analytics when disableThirdPartyRequests is set 2020-03-29 08:42:25 +02:00
Saúl Ibarra Corretgé
c1fb276937 config: whitelist disableThirdPartyRequests 2020-03-29 08:42:25 +02:00
Keunes
3867d5d62e lang: update Dutch translation 2020-03-28 15:48:00 +01:00
damencho
08ab513d4e Updates nat config and uninstall part in qi guide. 2020-03-28 08:29:05 +01:00
Esteban Badilla A
a2eca4f029 lang: fixes for the spanish translation
Signed-off-by: Esteban Badilla A <ebadilla10@gmail.com>
2020-03-27 23:30:34 +01:00
Saúl Ibarra Corretgé
3121494d4b config: use Jitsi's STUN servers by default, instead of Google's 2020-03-27 22:55:16 +01:00
Juri
92e81c3dbf lang: added estonian translation 2020-03-27 22:19:42 +01:00
damencho
2761a6dbb3 Warn that turn will need port 443. 2020-03-27 15:13:19 -05:00
Saúl Ibarra Corretgé
faf24ca7ec Revert "feat(prejoin_page) Add settings buttons" (#5424)
This reverts commit 08f55ccb94.
2020-03-27 12:17:27 -05:00
James Addison
c5ce44f09d doc(quick install): streamline documentation (#5227)
* Prioritize messaging re: using hosted Jitsi if self-hosted is not required

* Update wording for self-hosting vs hosted

* Expand requirements sentence into document section

* Simplify Ubuntu universe step

* Condense repository and package installation steps

* Add comments for package installation steps

* Simplify wording around hostname configuration

* Simplify lets-encrypt wording

* Move certificate generation step before package installation

* Expand certificate instructions

* Move conference test step to post-installation

* Rephrase installation testing / confirmation step

* Extract platform-specific installation notes

* Rephrase superuser guidance

* Replace lists.jitsi.org link with web.archive.org pointer

* Place /etc/hosts example in code block

* Remove space before colon

* Add spacing before/after 'or' (improves github markdown rendering)

* Revert "Add spacing before/after 'or' (improves github markdown rendering)"

This reverts commit 9f33beb2ab.

* Nit: clarify apt/HTTPS relationship

* Revert "Expand requirements sentence into document section"

This reverts commit cf630983c0.

* Relocate Ubuntu universe repository advice

* More concise Ubuntu universe messaging

* Revert "Extract platform-specific installation notes"

This reverts commit 7161a700cb.

* Revert "Expand certificate instructions"

This reverts commit 5c479e7ffb.

* Revert "Move conference test step to post-installation"

This reverts commit a0ee279b7c.

* Revert "Simplify wording around hostname configuration"

This reverts commit ceab0ab9cf.

* Revert "Revert "Simplify wording around hostname configuration""

This reverts commit a7127d03dc.

* Revert "Revert "Revert "Simplify wording around hostname configuration"""

This reverts commit 1e5413690e.

* Revert "Remove space before colon"

This reverts commit 35cae52722.

* Mark Let's Encrypt step as optional

* Mark Let's Encrypt step as recommended

* Clarify Jitsi repository-add heading

* Nit: remove superfluous newline

* Fixup: restore Let's Encrypt descriptive text from master branch

* Update supported Ubuntu version to 18.04 (LTS)

* Add Ubuntu release codename

* Update minimum supported Debian version to 9 (Stretch)

* Undo relocation of Let's Encrypt script instructions

* Add Jitsi Meet mobile app certificate requirement notice

* 'Note' formatting consistency

* Rephrase sudo language
2020-03-27 12:15:43 -05:00
lenhart
6969114675 lang: Fix "toggleCamera" description
Fix "toggleCamera" description. switch instead of turn off/on
2020-03-27 16:56:29 +01:00
Wikinaut
1aba57e6bb config: change language detection to "true" 2020-03-27 16:40:17 +01:00
Kaor
e9785c8b3d lang: correct bad translation
"toggle camera" is to switch front to rear or rear to front.
The french translation said "on/off camera", it's not exactly that
2020-03-27 16:36:18 +01:00
Paul Menzel
03215d8906 config: fix wording in comment 2020-03-27 15:50:04 +01:00
Дамян Минков
9a5b19babe Migrates jetty config to nginx one (#5413)
* Completely removes jetty config and defaults to nginx.

* Force configuring nginx or apache.

* Fixes certs when upgrading from jetty.

* Fixes certs and restarts jvb.

* Turnserver config conflicts apache2.

* Multi-domain sed only for nginx.

* Updates docs removing jetty.
2020-03-27 09:07:47 -05:00
Sean McBride
e5d87e66bf Various improvements to quick-install document
- removed paragraph about old Debian Wheezy, the link is broken, and Wheezy doesn't even get security updates anymore, so seems unlikely anyone would do a new install with it.
- clarified that Let's Encrypt script uses only the HTTP challenge.
- added links to a few things that newbies might want to look up (nginx, apache, jetty, SIP, FQDN, Let's Encrypt, etc.
- added some basic debugging starting points, based on my experience
- some minor grammatical tweaks
- other minor tweaks
2020-03-26 23:30:12 -05:00
Дамян Минков
e00036d44a Merge pull request #5216 from gbonfiglio/master
fix broken nginx ipv6 listeners
2020-03-26 18:22:41 -05:00
Saúl Ibarra Corretgé
d8059fd0ee lang: fix italian translation 2020-03-26 18:22:24 -05:00
Jaya Allamsetty
6fc7456196 fix(blur): Decrease the blur amount and improve the accuracy 2020-03-26 16:49:51 -04:00
Hristo Terezov
0bd96b9c0e fix(static): Add base. 2020-03-26 12:34:00 -05:00
Andrei Gavrilescu
f502e13edc feat(screenSharing): Add system audio screen sharing 2020-03-26 14:17:44 +02:00
Vlad Piersec
08f55ccb94 feat(prejoin_page) Add settings buttons 2020-03-25 10:50:47 -05:00
Joan Montané
17ca9722b7 lang: update Catalan translation 2020-03-25 12:16:05 +01:00
Bettenbuk Zoltan
8cc9b78e21 feat: add column layout to settings fields 2020-03-25 11:59:48 +01:00
Bettenbuk Zoltan
25b4843327 fix: irregular cursor movement in settings 2020-03-25 11:48:06 +01:00
bgrozev
d13edd8f63 Updates js-utils (pruning the word list). (#5371) 2020-03-24 21:06:41 -05:00
Saúl Ibarra Corretgé
cdc14586de invite: remove duplicated code
Add ability to invite users which will use the share sheet or dialog
dynamically.
2020-03-24 14:28:26 +01:00
Saúl Ibarra Corretgé
a7f8bf2d8f rn,overflowmenu: reorder 2020-03-24 14:28:26 +01:00
Saúl Ibarra Corretgé
8cd881945a invite: merge InviteButton and InfoDialogButton on mobile 2020-03-24 14:28:26 +01:00
Saúl Ibarra Corretgé
579d08e27e bottom-sheet: tweak UI
- re-add thepand icon, shaped like a pill
- round top corners
2020-03-24 14:28:26 +01:00
Ansgar Burchardt
5148c81dd8 doc: quick-install.md: link to english version of doc how to change hostname 2020-03-24 14:09:45 +01:00
skiqoapsdt20
40bc844caa Update README.md (#5347) 2020-03-24 11:57:46 +01:00
Saúl Ibarra Corretgé
c990a64ba9 blur: don't persist settings 2020-03-24 11:56:01 +01:00
damencho
f5a0a1ef8c Use community forum for support not github. 2020-03-24 06:31:15 +01:00
Jaya Allamsetty
58018a086c fix(blur): Disable blur on conference leave 2020-03-23 20:55:46 -04:00
damencho
b3a7f5f38b Removes not needed file. 2020-03-23 17:33:10 -05:00
damencho
435d11793d Updates debian compat level. 2020-03-23 17:33:10 -05:00
Saúl Ibarra Corretgé
9ec3faa6b3 lint: run linter using GH Actions 2020-03-23 22:13:22 +01:00
Kenneth Thorman
959d61468e lang: add danish translation 2020-03-23 20:19:37 +01:00
bgrozev
9f28048742 Fix eslint errors. (#5341) 2020-03-23 13:56:32 -05:00
Ravinou
19c9a808cf Update main-fr.json (#5301)
"cryptée" does not exist in french, it's "chiffrée" here. More informations about this here : https://chiffrer.info/
2020-03-23 14:56:25 +01:00
Felix Wolfsteller
7576f850e9 config: add trailing commas and 'end' entry for peacy JSON
Prevent possible json parse errors when the configuration values are
commented or commented out.
2020-03-23 14:06:51 +01:00
Anna-Katharina Wickert
7970b38823 lang: change inaccurate translation of toggle camera (german)
Change inaccurate translation of toggle camera.
2020-03-23 14:01:34 +01:00
simevo
b40363be31 doc: make clear that /etc/hostname must match /etc/hosts
fixes #5260 (#5279)
2020-03-23 13:53:27 +01:00
yanas
9a0b924f99 Merge pull request #5322 from jitsi/update-js-utils
chore(package.json): Update js-utils.
2020-03-22 13:49:53 -05:00
Hristo Terezov
52def54cd9 chore(package.json): Update js-utils. 2020-03-22 13:13:22 -05:00
Zoltan Bettenbuk
8d3b59a0d0 rn: lonely meeting experience 2020-03-20 18:30:46 +01:00
Saúl Ibarra Corretgé
b0e7471a83 android: revert back to SW decoding
We see tons of crashes on Samsung and Huawei devices. It's really not worth the
headache anymore.
2020-03-20 13:39:48 +01:00
horymury
4616065b1d external_api: add ability to send a text message through datachannels 2020-03-20 12:51:26 +01:00
paweldomas
14855f3255 fix(features/notifications): crash on undefined participant 2020-03-20 05:43:44 -05:00
Julian1203
c40a7f736e Update main-de.json
Fixed a lot of punctuation and spelling mistakes. "Speaker" means "Lautsprecher" in the context of audio devices. Rephrased a sentence to make it sound better.
2020-03-20 05:42:49 -05:00
Martin Myska
8ffd226159 updated translation and added missing strings 2020-03-19 12:30:12 -05:00
filippogiordano
b8dda4c6c2 Update main-it.json
Error correction in "appDescription" (open course instead of open source).
2020-03-19 12:50:34 +01:00
Дамян Минков
fca4977987 Merge pull request #5235 from chipechop/patch-2
ITALIAN translation - added last missing string
2020-03-18 14:50:38 -05:00
chipechop
7bcece52ea Missing and wrong Italian translation
Hi,
I added some missing translations and changed some that were wrong, or improvable: from a 70% translation and a 30% missing, to what I think should be an 85%-90% of translated lines.

I really wish to express my personal compliments to the persons that made the core translation, because it is very fluid, original and smart.

(tell me what I should have to do: I'm pretty new to GitHub)
2020-03-18 14:50:28 -05:00
chipechop
155c6de822 ITALIAN translation - added last missing string
I added Afrikaans missing string
2020-03-18 18:48:42 +01:00
Horatiu Muresan
d0bc3da0f5 Disable kick participant button for guests 2020-03-18 15:26:11 +01:00
Arzar
011b7f9d00 fix(external_api): Pass Feature-Policy display-capture to the iframe
Starting from version 74, firefox need to be explicitly allowed to capture the screen from an iframe for screensharing. This new Feature-Policy is called "display-capture".
See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy/display-capture
2020-03-18 08:57:11 -04:00
James Addison
9b0f5b0299 doc(quick install) Minor typo fixup (#5222) 2020-03-18 13:19:51 +01:00
Falco Nogatz
7e21c277b3 lang: fix spelling mistake in translations of "feedback" 2020-03-18 11:43:03 +01:00
raphj
e6ade2cf84 doc (quick install): Add the domain to /etc/hosts 2020-03-18 11:40:27 +01:00
Cyril Brulebois
99b21cdb2a doc: fix typos in quick install guide 2020-03-18 10:52:09 +01:00
sicherist
677752c78d lang: fix inaccurate translation of "toggleCamera" 2020-03-18 10:14:32 +01:00
Giorgio Bonfiglio
4e81a7abd3 fix turnserver postinst for ipv6 listener 2020-03-17 22:37:39 +00:00
Giorgio Bonfiglio
5d8d0b9a01 fix broken ipv6 listener 2020-03-17 22:31:56 +00:00
yanas
2dd5d0a180 Merge pull request #5205 from jitsi/update-lib
chore(package.json): Update lib-jitsi-meet.
2020-03-17 09:54:53 -05:00
Hristo Terezov
ccdfff8e9a chore(package.json): Update lib-jitsi-meet. 2020-03-17 09:23:55 -05:00
Martin
829e3bfe15 doc: add nginx config for the electron version in manual install doc 2020-03-17 11:41:21 +01:00
Jaya Allamsetty
e90cc0a615 fix(Amplitude): Blacklist 'peer.conn.status.duration' stats 2020-03-16 15:55:11 -04:00
KwadroNaut
b6ccc91038 Correct link regarding FAQ NAT install
Broken link, I presume this one was meant.
2020-03-16 12:57:38 -05:00
Jaya Allamsetty
beb4487044 deps: update LJM for adding p2p status to transport.stats in Amplitude 2020-03-16 13:46:16 -04:00
damencho
add84af7b6 deps: update LJM, updates the params passed to statistics (disable app logs) 2020-03-15 17:13:59 -05:00
damencho
cb0d10fbe1 deps: update LJM for adding new option to disable callstats app logs 2020-03-15 15:48:41 -05:00
Jaya Allamsetty
9a162c266c deps: update LJM for adding the transport type Amplitude event 2020-03-13 18:56:49 -04:00
paweldomas
6654531112 desp: update LJM to bring in fix for a crash on BOSH item-not-found
Updates lib-jitsi-meet to e3533220023cb3f5c727ac5b27dc18552acef5c9
2020-03-13 11:57:11 -07:00
Mihai Uscat
b9cc6b6f96 fix(mute): Replace icon 2020-03-13 14:55:29 +01:00
paweldomas
6cbc04175c deps: update LJM to bring in unload fix
Updates lib-jitsi-meet to b8f68b98be21dd1956238da6a53d1503b7ceaf7d
which brings in feature discovery optimization and the unload handler
fix for BOSH.
2020-03-12 13:21:05 -07:00
paweldomas
fb23aa54e8 ref(VideoLayout): log participant name on feature discovery failure 2020-03-12 13:21:05 -07:00
Дамян Минков
b73d98f863 Updates jvb pid file path. 2020-03-12 14:58:27 -05:00
Tudor-Ovidiu Avram
0289a93e5a feat(close) Add promotional close page 2020-03-12 20:07:23 +01:00
paweldomas
401003b907 deps: update LJM to fix Strophe.attach not handled correctly
Updates lib-jitsi-meet to aadfce2283cad4de3cb58c2eed8e14d2ce62c465 in
order to fix "not connected" error when jiconop is enabled.
2020-03-11 10:01:44 -07:00
Saúl Ibarra Corretgé
025e2b1ecb android: simplify the creation of AudioManager
Do so on the main thread at startup and pass it along.
2020-03-11 16:27:42 +01:00
Saúl Ibarra Corretgé
05a8591110 android: make sure all AudioMode operations run in the audio thread 2020-03-11 16:27:42 +01:00
paweldomas
d2e6d57be8 deps: update LJM to fix ATTACHED state not connected
Updates lib-jitsi-meet to 567ba72675b1bfd5931e7d4936a4e53ebb4ef5f2 in
order to fix "not connected" error when jiconop is enabled.
2020-03-11 08:14:23 -07:00
paweldomas
41fd142977 deps: update LJM to bring in XMPP resume
Updates lib-jitsi-meet to 8a41d024077d1e19e41bf15ea2edd8ed8b02b85f in
order to bring in the XMPP stream resume functionality.
2020-03-11 06:56:40 -07:00
paweldomas
04c0945930 add mod_websocket_smacks.patch
The patch and Prosody 0.11 is required for the XMPP stream resume
2020-03-11 06:56:40 -07:00
paweldomas
5f2acb70de add mod_smacks.lua version c49fea05772e
https://hg.prosody.im/prosody-modules/raw-file/c49fea05772e/mod_smacks/mod_smacks.lua
2020-03-11 06:56:40 -07:00
paweldomas
4dc10e82f1 feat(mod_auth_token): add support for 'previd' query param
The 'previd' query parameter will be use to match user id of the session
being resumed when the smacks module and token authentication are
enabled in Prosody. Otherwise user gets new random id every time and
this doesn't work with the smacks module.
2020-03-11 06:56:40 -07:00
Saúl Ibarra Corretgé
582d4aff1c deps: sync package-lock.json 2020-03-10 21:04:01 +01:00
Saúl Ibarra Corretgé
b13200ac92 video-layout: fix calculating tile size for recorder
When the reccorder joins, they have a local participant, which is not rendered,
so don't count it towards the partcipant count used for computing the tile
sizes.
2020-03-10 21:04:01 +01:00
C0rn3j
53f937ba4e Update and improve manual install doc 2020-03-09 08:00:23 -05:00
paweldomas
b9addaed71 ref(log): logs device list and selected devices
Logs the device list when is updated in the reducer and removes
"button enabled" logging which used to dump the device list, but
in a useless way(Object[Object]).

Makes an attempt to log currently selected device, but because of
multiple possible paths it's impossible to find one reliable spot to log
selected device. One has to rely on device list and the GUM call logged
to figure things out.
2020-03-06 16:19:20 +01:00
Luca Bösch
fd8fb58eaf Missing german translations.
Due to the outage it wasn't possible to submit them using https://translate.jitsi.org.
Please consider adding them this way.
2020-03-06 13:19:57 +01:00
Saúl Ibarra Corretgé
38d1032fec android: disable HW accelerated decoding on Samsung
They just keep crashing.
2020-03-06 12:42:16 +01:00
Saúl Ibarra Corretgé
073fdc7b0e sperakerstats: prevent access of nil object (#5112)
If the dominant speaker leaves their object will be gone from the mapping.
2020-03-06 12:33:41 +01:00
PanderMusubi
fedaa0ae6e minimized size without quality loss via optipng 2020-03-05 15:19:26 +01:00
Gabriel Imre
f06fe69167 fix(mute): remove interface config bypass for mute-everyone button 2020-03-05 13:54:58 +01:00
bgrozev
16c09c9645 Upadte ljm (configurable pc stats interval), whitelist config options. (#5106) 2020-03-04 15:11:27 -06:00
Gabriel Imre
24a1a60f04 feat(mute): mute everyone / everyone else 2020-03-04 17:07:12 +01:00
Saúl Ibarra Corretgé
d7ece58c6f fix(optimise): cope with URL interface config overrides
Regresssion from bd8a7edbd2.

When the toolbar buttons are overridden with URL parameters, our computed set of
buttons will be wrong. Thus, compute it every time and check for the
differences.
2020-03-04 07:43:52 -06:00
Andrei Gavrilescu
aa11535db7 change you are nosiy message (#5101) 2020-03-04 15:35:22 +02:00
Hristo Terezov
eea87be801 fix(electron7):memory leak when the page is hidden
It happens when you are drawing into hidden canvas.
2020-03-03 09:28:23 +00:00
Hristo Terezov
809ac42e4c fix(largeVideo-bg):render canvas only when visible 2020-03-03 09:28:23 +00:00
Hristo Terezov
cf27ad0dde fix(stream-presenter-effect): Prevent memory leak.
On electron 7 drawing on hidden canvas will trigger a memory leak.
Not appending the canvas for the DOM seems to solve the problem.
2020-03-03 09:28:23 +00:00
Mihai Uscat
2064fc8937 fix(screenshot-capture): Prevent effect initialization on each toggle 2020-03-02 10:24:02 -05:00
Saúl Ibarra Corretgé
95eb551156 android: disable ConnectionService for the Jitsi Meet app
It's the source of uncountable problems for which we don't have a good
solution, since they are caused by buggy implementations of self-managed
connection services by manufacturers.
2020-02-26 17:09:39 +01:00
Hristo Terezov
a7ac7790a8 fix(avatars): optimise 2020-02-26 14:32:37 +00:00
Leonard Kim
94c48ec838 chore(deps): update lib to 47c2bc6
To get a workaround in for wired desktop
screensharing in spot in electron 8. With
the change, no "exact" is used in gum
constraints while attempting to get the
wired screensharing device, as that
triggers overconstrainederror.
2020-02-25 15:22:03 -08:00
Jaya Allamsetty
da68b9882d fix(screenshot-capture): Do not switch streams at the conference level.
This effect doesn't modify the media stream, so its safe to start/stop effect and not apply it on the JitsiLocalTrack. This way we can make sure that this effect is not switched out when presenter effect is applied.
2020-02-25 10:51:44 -05:00
Hristo Terezov
bd8a7edbd2 fix(optimise): mapStateToProps for some components (#5085) 2020-02-25 15:09:52 +00:00
Saúl Ibarra Corretgé
bde2343951 filmstrip: don't display toolbar for SIP gateways
Note that in the usual (vertical) setup, the "toolbar" is just the hide button.
2020-02-25 15:45:41 +01:00
Saúl Ibarra Corretgé
9b141816d6 filmstrip: hide scrollbar on SIP gateways 2020-02-25 15:45:41 +01:00
Saúl Ibarra Corretgé
6a7594cd9c toolbox: always hide for SIP gateways 2020-02-25 15:45:41 +01:00
Saúl Ibarra Corretgé
cdbc5976a0 notifications: hdie all (visual) notifications for SIP gateways 2020-02-25 15:45:41 +01:00
Saúl Ibarra Corretgé
8fd0f56be7 info-dialog: don't show when a SIP gateway joins alone 2020-02-25 15:45:41 +01:00
Saúl Ibarra Corretgé
5b0c6e088a deps: node-sass@4.13.1 2020-02-25 15:45:41 +01:00
horymury
202abf2a9a chrome-banner: add analytics 2020-02-25 13:41:13 +01:00
Horatiu Muresan
fb8ef366c6 Pass room name to IE page 2020-02-21 13:37:58 +01:00
Saúl Ibarra Corretgé
7446e6165e rn: now working on version 20.1 2020-02-21 12:47:07 +01:00
Hristo Terezov
5feaa421a8 fix(tests): bring back APP.conference.listMembers 2020-02-21 11:16:33 +00:00
Saúl Ibarra Corretgé
a4333d3a80 rn,overflow-menu: add a "more options" button 2020-02-20 17:23:13 +01:00
Saúl Ibarra Corretgé
02131f3346 full-screen: fix not re-entering full-screen after dialog is shown
This has the side effect of showing the bottom navbar when the toolbox is open,
which is a nice thing since back is accessible.
2020-02-20 16:49:20 +01:00
Jaya Allamsetty
8dbd1ba1b7 fix(presenter): go back to using standard resolutions for presenter 2020-02-19 16:02:42 -05:00
Saúl Ibarra Corretgé
4c065f2de1 android: fix getting RN version in release script 2020-02-19 15:05:32 +01:00
Saúl Ibarra Corretgé
df895e5a61 deps: react-native@custom-patched
Update the version to 0.61.5-jitsi.1 to avoid build aching problems due to the
version not changing.
2020-02-19 15:05:17 +01:00
Hristo Terezov
bbf1927c70 fix(thumbnail): Optimize status bar moderator icon (#5076)
* fix(thumbnail): Optimize status bar moderator icon

Moved all moderator functionality to react to optimize the number of
status bar updates.

* fix(RemoteVideoMenuTriggerButton): Use nullish coalescing

Co-Authored-By: Saúl Ibarra Corretgé <saghul@jitsi.org>

* ref(StatusBar): rename to StatusIndicators

* fix(RemoteVideoMenu): isModerator value.

* fix(notification): mobile.

Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>
2020-02-18 16:31:04 +00:00
horymury
86130c1478 chrome-banner: log success of retrieving configs 2020-02-18 10:56:09 +01:00
damencho
15fb8a1525 Adds a disco feature to distinguish jibri participants. 2020-02-14 21:44:19 +00:00
Saúl Ibarra Corretgé
64cbfb648f deps: react-native@custom-patched
Use RN 0.61.5 + a custom patch (submitted upstream) for fixing a crash in JSI.
2020-02-14 17:22:58 +01:00
Vincent Hou
3e40bb19cd fixed the encoded tiltle issue in chinese
Checked the code of react.native part, there's no issue by using safeDecodeURIComponent.
So fixed it in same way.
2020-02-12 15:50:55 +01:00
Bettenbuk Zoltan
bbca0fc357 allow setting the feedback percentage 2020-02-12 10:59:54 +01:00
Дамян Минков
9bb789472e Uses correct scopes for google API based on config.js values. (#5066)
* Uses correct scopes for google API based on config.js values.

* Lower the number of parameters that we pass around.

* Fixes googleAPIState state checking.
2020-02-11 15:14:01 +00:00
Hristo Terezov
06fa175a6c fix(large-video): Resize calculations.
Since the verical filmstrip doesn't set its width explicitly anymore,
calculating the available area for the large video based on the
filmstrip width retrieved from the HTML element was wrong
in the cases when the rendering and cleanup of the filmstrip hasn't
finish yet. For example when switching from tile view to stage view.
2020-02-10 20:23:37 +02:00
Hristo Terezov
5940f2890a fix(remote-control): mouse events 2020-02-07 18:57:59 +02:00
Saúl Ibarra Corretgé
7d09088186 android: turn on HW video decoder
In 49e3b03885 we turned on SW encoders / decoders
on account of some devices having broken HW *encoders* and also our desire for
using simulcast.

Well, the astute reader may have noticed that only *encoding* was mentioned.
Indeed, we should be able to keep using the HW decoder just fine.
2020-02-07 15:27:12 +01:00
damencho
34be081d87 Commit from translate.jitsi.org by user damencho.: 571 of 626 strings translated (47 fuzzy). 2020-02-07 13:45:58 +00:00
damencho
3c36eece5e Commit from translate.jitsi.org by user damencho.: 620 of 626 strings translated (0 fuzzy). 2020-02-07 13:45:40 +00:00
damencho
8eb0acada6 Commit from translate.jitsi.org by user damencho.: 620 of 626 strings translated (0 fuzzy). 2020-02-07 13:45:25 +00:00
damencho
8307a8be2d Commit from translate.jitsi.org by user damencho.: 620 of 626 strings translated (0 fuzzy). 2020-02-07 13:45:12 +00:00
damencho
d62190c644 Commit from translate.jitsi.org by user damencho.: 559 of 626 strings translated (12 fuzzy). 2020-02-07 13:45:01 +00:00
damencho
58c4248da0 Commit from translate.jitsi.org by user damencho.: 620 of 626 strings translated (0 fuzzy). 2020-02-07 13:44:51 +00:00
jitsi-pootle
74af70a1d5 New files added from translate.jitsi.org based on templates 2020-02-07 13:44:51 +00:00
Jaya Allamsetty
7b25b847ba fix(presenter): resize desktop track to 720p when presenter starts 2020-02-06 13:44:40 -05:00
paweldomas
18536cb14c ref: remove grayscale filter from participants thumbnails 2020-02-06 07:54:09 -06:00
paweldomas
01e36e1c56 ref: remove connectivity issues indication for remote participants
It's been considered too disruptive and will often misfire especially
if there are issues with the data channels.
2020-02-06 07:54:09 -06:00
Horatiu Muresan
5d96a226ed Prevent chrome extension banner from spanning the console when disabled 2020-02-06 12:59:36 +00:00
Jaya Allamsetty
9855fac805 fix(screenshot-capture): Move the flag for enabling/disabling the feature to config.js
This will let us enable/disable the feature based on environment/deployment
2020-02-05 16:47:21 -05:00
Andrei Gavrilescu
ed5351d250 Add dial-in link to no audio notification (#5026)
* Add dial-in link to no audio notification

* refactor react link component

* fix tests
2020-02-05 18:10:57 +00:00
Hristo Terezov
b64260e554 ref(Amplitude): device id syncing 2020-02-05 18:10:38 +00:00
Saúl Ibarra Corretgé
7d67cb583e rn,connection: fix autogenerated BOSH address
When the location URL contains a nonstandard port, it won't be included in
URL.hostname, but it will in URL.host.
2020-02-05 16:05:11 +01:00
Saúl Ibarra Corretgé
8e3c301d03 misc: use longer lines 2020-02-05 15:04:23 +01:00
Saúl Ibarra Corretgé
f9071b8b6b rn,recording: fix not displaying Dropbox storage text 2020-02-05 15:04:23 +01:00
Saúl Ibarra Corretgé
01abc4e8a8 lint: fix warning 2020-02-05 15:04:23 +01:00
Jaya Allamsetty
c5bddda781 fix(blur): Increase the background blur value 2020-02-04 14:07:17 -05:00
Jaya Allamsetty
c2bc92ae05 deps(blur): Bump tfjs to 1.5.1 2020-02-04 13:20:35 -05:00
damencho
a425e9c92e Disable status change notifications when join/leave notifications are disabled. 2020-02-04 17:26:27 +00:00
Saúl Ibarra Corretgé
3bfa4744c8 rn,tracks: fix loadEffects
The resolved promise is expected to return an array.
2020-02-04 18:06:11 +01:00
Saúl Ibarra Corretgé
bd5901d59c notifications,presence-status: check if interfaceConfig is declared
Protectt ourselves against interfaceConfig being undeclared. typeof
interfaceConfig will return "undefined", but that's different than having some
window.interfaceConfig = undefined, even though the valus is the same. The
former will give a ReferenceError.
2020-02-04 15:51:59 +01:00
Saúl Ibarra Corretgé
306c8ba8c2 android: prepare SDK build for Hermes
We need to push the Hermes AAR to Maven and have the SDK depend on it.
2020-02-04 14:25:56 +01:00
Saúl Ibarra Corretgé
5a6335207f android: raise frament library version dependency 2020-02-04 14:25:56 +01:00
Paweł Domas
97e8a6c3f3 Remove UI for local connectivity issues (#5016)
* ref(web): removes video blur when ICE is disconnected.

Removes the blur effect from the large video and stops showing
the network connectivity issues message when ICE disconnects.

The feature has been considered too disruptive and there's a plan to
have it replaced with a more subtle indication.

* remove RECONNECTING key from main.json
2020-02-04 08:25:13 +01:00
Jaya Allamsetty
523926d598 deps(ljm) - detect old Edge browser and mark it as unsupported 2020-02-03 14:29:39 -05:00
Vlad Piersec
ab5627212d Add ability to invite contact by phone number 2020-01-30 13:34:06 +00:00
Pedro Henrique Linhares
1b6c5a7141 Set SASL username when using anonymous mechanism with auth_token (#5025) 2020-01-30 00:25:15 +00:00
horymury
a9767eda72 Fix chrome extension banner (#5011)
* Fix chrome extension banner

* Address reviews
2020-01-29 12:30:17 +00:00
paweldomas
6c3a5793b4 fix(webpack.config.js): specify Host header in the webpack proxy pass
Without changing the 'Host' header, a standalone instance we use for
jitsi dev work will generate:

config.websocket = 'wss://localhost:8080/xmpp-websocket'

This was fine with BOSH, but a Websocket will not connect.

With this change it will be(based on the default devServerProxyTarget):

config.websocket = 'wss://alpha.jitsi.net/xmpp-websocket'
2020-01-28 09:55:54 -06:00
Saúl Ibarra Corretgé
c05b4a43e8 rn,tracks: do not load stream effects on mobile 2020-01-28 16:21:11 +01:00
Saúl Ibarra Corretgé
385669cbb8 misc: use default values for parameters 2020-01-28 16:21:11 +01:00
Leonard Kim
5cfae2c419 fix(config): make SHOW_CHROME_EXTENSION_BANNER overridable 2020-01-27 21:26:38 -08:00
bgrozev
92740707f0 Removes firefox from the list of recommended browsers. (#5017) 2020-01-27 14:09:37 -06:00
damencho
775c531fe7 Enables all recording/livestreaming notifications in sip gw mode. 2020-01-27 16:20:32 +00:00
Jaya Allamsetty
b8eda2b68d deps: update ljm, do not use window.chrome to identify webOS as chrome 2020-01-27 11:04:39 -05:00
paweldomas
470c115e7c feat(analytics): add 'websocket' property 2020-01-24 15:21:10 -06:00
paweldomas
d9cf7aef3a doc: add more websocket examples 2020-01-24 15:21:10 -06:00
paweldomas
c20c4bd5a3 ref(do_external_connect): do not use jiconop if websocket is enabled 2020-01-24 15:21:10 -06:00
paweldomas
74a5eb2d81 add websocket templates to nginx example config 2020-01-24 15:21:10 -06:00
paweldomas
b25db3ce2e feat(config.js): add 'websocket' config option
Config.js will allow to specify both BOSH and Websocket URLs. In such
case the web app will prefer Websocket over BOSH. The reason is that it
appears to be more stable and a bit fast on web, while on mobile
websocket is dropped fast(killed by the OS) on network changes.
2020-01-24 15:21:10 -06:00
Hristo Terezov
31d9fb12c8 ref(Filmstrip): Optimize resizes. (#4992)
* ref(Filmstrip): Optimize resizes.

* fix(thumbnails): resize.

* fix(thumbnails): Issue with height 0, width 0.

* doc(Filmstrip): Improve JSDoc.
2020-01-24 16:28:47 +00:00
Saúl Ibarra Corretgé
ca9ca04d0f rn,tracks: fix accessing value on undefined object 2020-01-24 16:26:32 +01:00
Saúl Ibarra Corretgé
5a027f1585 rn,media: avoid creating presenter tracks
When ensureTrack is set to true a track will be created with the given media
type. 'presenter' is not supported on RN.
2020-01-24 16:14:29 +01:00
Aaron van Meerten
5d86d202bd initial session for bosh and websockets (#5006)
* hook on websocket events

* initial session for bosh and websockets
2020-01-24 14:59:29 +00:00
Saúl Ibarra Corretgé
7ea7afebfb deps: react-native-sound@latest
Fixes an issue with not loading sounds on iOS when the bundle name contains
spaces.

See:
3fe5480fce
2020-01-24 14:29:09 +01:00
Aaron van Meerten
710307725b fixes async_handler_wrapper (#5001)
* fixes async_handler_wrapper

adds missing runner variable from async to async_handler_wrapper
removes redundant have_async definition in wrap_async_run, defined at top of module

* only use async handler wrapper,
remove async_wrap_run
2020-01-23 19:31:05 +00:00
Hristo Terezov
1cde7e63c7 feat(Amplitude): Set device id from cookie. (#4997) 2020-01-23 18:36:31 +00:00
Saúl Ibarra Corretgé
a53d284bbe lint: fix eslint warning 2020-01-23 15:48:57 +01:00
Saúl Ibarra Corretgé
579e650a1d lint: fix eslint error 2020-01-23 15:48:57 +01:00
Andrei Gavrilescu
ee525ae569 Whitelist audio detection related configs 2020-01-23 15:15:55 +01:00
horymury
63a411168e Add Install chrome extension banner (#4996) 2020-01-23 09:32:52 +00:00
Vlad Piersec
ad68a87dba Add config options for presence & join/leave message visibility 2020-01-22 11:08:31 +01:00
Jaya Allamsetty
45aafe5432 deps: update lib-jitsi-meet and js-utils 2020-01-21 14:46:09 -05:00
Jaya Allamsetty
ac0f3979b0 Remove isEdge check from the client 2020-01-21 11:55:52 -05:00
Andrei Gavrilescu
d2c2919aef feat: display noise detection notification (#4952)
* feat: display noise detection notification

* address code review p1

* Address code review p2

* bump lib-jitsi-meet version
2020-01-20 18:00:12 +00:00
Mihai Uscat
a18ed3a779 feat(ScreenshotCaptureEffect) Implement. 2020-01-20 10:02:19 -05:00
Jaya Allamsetty
22871f15d0 update LJM for Edge change 2020-01-15 18:07:14 +00:00
damencho
91fb4665d6 Fixes conference duration config to use valid IDNA. 2020-01-14 12:16:39 +00:00
paweldomas
f6c94fffc4 fix(conference.js): prevent presenter track leak
A duct tape fix for presenter track leak for a case when presenter GUM
is in progress when screensharing is being turned off.
2020-01-13 14:54:33 -06:00
paweldomas
c8939a133d fix(conference.js): crash on undefined this.localPresenterVideo
...if camera device is changed in the settings while screen sharing.
2020-01-13 14:54:33 -06:00
paweldomas
f810483ff6 fix(conference.js): prevent multiple GUM calls on presenter unmute
Chain _mutePresenterVideo async calls in order to prevent calling GUM
multiple times.
2020-01-13 14:54:33 -06:00
theunafraid
c2cf09a2ca Add conference timer (#4958) 2020-01-13 17:12:25 +00:00
Дамян Минков
c73ba37202 Introduces installing coturn as turn server for jitsi-meet (#4959)
* Adds package that can configure using turnserver for jitsi-meet.

Activates http2 on the nginx host and uses the alpn send with the web requests to multiplex traffic to be served as web of proxied to the turn server.
It needs nginx at least v1.13.10.
Adds turncredentials module from Philipp Hancke, with small modification (all int values for hosts need to be strings/tostring()) in order to be able to use the module with prosody 0.11.

* Moves loading of stream after loading stream module (50-..).

* Leaves DISABLE_TCP_HARVESTER to be handled by jvb.

* Fixes comments.

* Properly detect first time coturn install and configure it.

* Handles upgrading from jetty serving web.

* Does not create jvb user if already exists.

* Fixes let's encrypt and adds turnserver handling.

* Enables use of turn server in config.js if available.

* Adds a check whether prosody config exists.

There are cases where deployments can still have configured prosody in the main prosody config in /etc/prosody.
2020-01-09 16:51:27 +00:00
Saúl Ibarra Corretgé
659eb6b789 android: add a consistent device ID in Amplitude
Use ANDROID_ID:
https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID
2020-01-09 16:38:13 +00:00
Saúl Ibarra Corretgé
87821eb2c0 android: unmute microphone on the ConnectionService handler
This shouldn't be needed, as ConnectionService should take care of it, but we
suspect some devices don't do it since we got reports of people not hearing
users, and the problem went away when CS was disabled.
2020-01-09 14:37:15 +00:00
Saúl Ibarra Corretgé
8291f4597c deps: react-native-webrtc@1.75.3
Fixes datachannels not working.
2020-01-08 22:15:37 +00:00
Saúl Ibarra Corretgé
fddaf7c8a8 android: handle ConnectionService failures more resiliently
Fallback to the non-ConnectionService case for any error. Also, handle errors
when registering the phone account; Pixel C devices throw UnsupportedException.
2020-01-08 16:50:39 +00:00
Saúl Ibarra Corretgé
960ffa7e78 android: switch to the Hermes JavaScript engine 2020-01-08 14:29:25 +00:00
Saúl Ibarra Corretgé
779ed6bb5e deps: react-native@0.61.5 2020-01-08 14:29:25 +00:00
Yana Stamcheva
47984d3ec1 Fixes more number page underlining. 2020-01-08 11:20:40 +00:00
damencho
d9282f873c Migrate to using mucs for jvb. 2020-01-08 11:18:36 +00:00
damencho
9344138303 Fixes reloading on remove to always succeed. 2020-01-08 11:18:36 +00:00
paweldomas
6c3968a434 ref: remove features/base/conference -> /app cycle
Move call to reloadNow() on CONNECTION_FAILED to
the ./features/app/middleware to avoid importing higher order feature
from the lower level one.
2020-01-07 17:44:39 +00:00
paweldomas
e8e70d9d27 ref(base/connection/actions.native): JitsiConnection.connect returns void
Do not return anything from JitsiConnection.connect, because it's not
a promise and returns void. Doing so is confusing to the reader.
2020-01-07 17:44:22 +00:00
Emil Ivov
0be68b59b7 Merge pull request #4973 from jitsi/hristoterezov-patch-1
feat(thumbnailMenu):Change remoteControl item text
2020-01-07 14:17:12 +00:00
Hristo Terezov
d5ab3da9f2 feat(thumbnailMenu):Change remoteControl item text 2020-01-07 14:15:54 +00:00
Saúl Ibarra Corretgé
5ef0f527f9 android: handle exception when unregistering account
Pixel C devices have been seen crashing here, oh well.
2020-01-07 12:03:02 +01:00
damencho
e60a14d5af Commit from translate.jitsi.org by user damencho.: 621 of 621 strings translated (0 fuzzy). 2019-12-20 16:22:31 +00:00
damencho
03abb244df Commit from translate.jitsi.org by user damencho.: 570 of 621 strings translated (48 fuzzy). 2019-12-20 16:22:20 +00:00
damencho
f9ea8b034f Commit from translate.jitsi.org by user damencho.: 621 of 621 strings translated (0 fuzzy). 2019-12-20 16:22:09 +00:00
damencho
ee551ea0a0 Commit from translate.jitsi.org by user damencho.: 621 of 621 strings translated (0 fuzzy). 2019-12-20 16:21:57 +00:00
damencho
0b22f8e449 Commit from translate.jitsi.org by user damencho.: 621 of 621 strings translated (0 fuzzy). 2019-12-20 16:21:46 +00:00
damencho
e21f99d9d6 Commit from translate.jitsi.org by user damencho.: 621 of 621 strings translated (0 fuzzy). 2019-12-20 16:21:36 +00:00
damencho
edb56200d5 Commit from translate.jitsi.org by user damencho.: 621 of 621 strings translated (0 fuzzy). 2019-12-20 16:21:23 +00:00
damencho
04313a4aa3 Commit from translate.jitsi.org by user damencho.: 538 of 621 strings translated (8 fuzzy). 2019-12-20 16:21:11 +00:00
damencho
cdb606e7ee Commit from translate.jitsi.org by user damencho.: 611 of 621 strings translated (0 fuzzy). 2019-12-20 16:21:00 +00:00
damencho
28781965ed Commit from translate.jitsi.org by user damencho.: 102 of 621 strings translated (6 fuzzy). 2019-12-20 16:20:49 +00:00
damencho
cbe396be55 Commit from translate.jitsi.org by user damencho.: 595 of 621 strings translated (0 fuzzy). 2019-12-20 16:20:35 +00:00
damencho
a3befe336f Commit from translate.jitsi.org by user damencho.: 611 of 621 strings translated (0 fuzzy). 2019-12-20 16:20:24 +00:00
damencho
63ea496bcd Commit from translate.jitsi.org by user damencho.: 106 of 621 strings translated (16 fuzzy). 2019-12-20 16:20:13 +00:00
damencho
db6547f48d Commit from translate.jitsi.org by user damencho.: 558 of 621 strings translated (13 fuzzy). 2019-12-20 16:20:00 +00:00
damencho
34e329a4f2 Commit from translate.jitsi.org by user damencho.: 255 of 621 strings translated (24 fuzzy). 2019-12-20 16:19:49 +00:00
Hristo Terezov
42b71fc4b9 feat(horizontal-filmstrip): scroll 2019-12-19 19:17:04 +00:00
Jaya Allamsetty
dd99268461 fix(blur): update to bodyPix 2.0 2019-12-19 09:18:39 -05:00
Saúl Ibarra Corretgé
692c6a47b4 rn: now working on versions 20.0 / 2.6 2019-12-17 16:19:42 +01:00
Saúl Ibarra Corretgé
b3983aa766 android: add ability to make test signed release builds 2019-12-17 16:11:50 +01:00
Saúl Ibarra Corretgé
a79ae9b576 android: guard against potential exceptions when dealing with log handlers 2019-12-17 16:11:36 +01:00
Saúl Ibarra Corretgé
e69da98348 android,ios: add store screenshots
While Fastlane recommends automagic screenshots, we cannot really do that since
we require a specific setup for a video call and so on.
2019-12-17 16:09:57 +01:00
damencho
e01d891bba Disables tcp harvester if bridge is installed on same machine. 2019-12-17 12:05:54 +00:00
damencho
f904626f5e Removes jetty and makes nginx default webserver. 2019-12-17 12:05:54 +00:00
Hristo Terezov
1333fd1975 fix(thumbnails): es6 support & cleanup. 2019-12-16 16:51:59 +00:00
Saúl Ibarra Corretgé
af918f8dc5 Merge pull request #4939 from saghul/fix-sdk-build
ios: fix SDK build after dropping iOS 10
2019-12-16 12:01:10 +01:00
Jaya Allamsetty
b7baf8fe98 Update lib-jitsi-meet (#4940)
* Update lib-jitsi-meet and js-utils
2019-12-13 17:08:48 -05:00
Saúl Ibarra Corretgé
4ebab6f9c0 ios: fix SDK build after dropping iOS 10
Since we only support iOS 11, 32 bit architectures must not be built.
2019-12-13 13:06:09 +01:00
Hristo Terezov
8f93acb464 chore(package.json): Update lib-jitsi-meet. 2019-12-12 16:58:41 +00:00
Bettenbuk Zoltan
9b60537e0f feat: add swipe handler to entire bottom sheet 2019-12-12 17:15:11 +01:00
Jaya Allamsetty
7b9abd34a0 fix(presenter-mode): notify external API when presenter is unmuted for the first time 2019-12-10 21:34:49 -05:00
Jaya Allamsetty
ed82443ffa clean-up 2019-12-10 15:59:06 -05:00
Jaya Allamsetty
a3cd331369 fix: Workaround on FF for getting the resolution of the desktop track 2019-12-10 15:59:06 -05:00
Leonard Kim
9c77ab7f4d ref(api): use Transport modules from js-utils
PostMessageTransportBackend and Transport, along
with the constants file they both use, were
moved int js-utils for jitsi-meet-spot.
2019-12-10 06:48:19 -08:00
Saúl Ibarra Corretgé
55983ff62a rn,welcome: update join button text 2019-12-10 15:13:37 +01:00
damencho
b4be1bcd05 Adds some checks about async.
There are modules that will not work with prosody 0.10 as they depend on util.async. Adds a safeguard and print error about it in the logs.
And others that just do not work because of the muc module API that they use.
2019-12-10 10:55:56 +01:00
damencho
2420a68be9 Enables speakerstats component and module by default. 2019-12-10 10:55:56 +01:00
damencho
ebfc5a95ff Activates multidomain by default when installing with nginx. 2019-12-10 10:55:56 +01:00
Leonard Kim
68cad276bd fix(lock): ensure lock prompt is closed on password submit
This addresses a bug, in which submitting a password
through the iframe api no longer closes RoomLockPrompt,
by explicitly closing prompts for a lock or password.
2019-12-09 08:44:18 -08:00
Bettenbuk Zoltan
e683d70a18 Add support for avatar status badge (presence) 2019-12-09 11:58:23 +01:00
Andrei Gavrilescu
9645391180 update package links 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
851b1a76a9 Address code review 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
4890390ea2 fix action uid name / remove imports 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
7828bf8d46 setNoSrcDataNotificationUid 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
191da551e3 refactor / address code review 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
55f35933e8 address code review 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
b125bff7c7 refactor / enable VAD talk while muted 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
c1d261445e Initial commit 2019-12-06 11:37:08 +00:00
Andrei Gavrilescu
c494d6c48b feat: show no audio signal notification 2019-12-06 11:37:08 +00:00
Saúl Ibarra Corretgé
4134d47f6e recording: remove beta label from LiveStreamButton 2019-12-05 16:23:27 +01:00
Jaya Allamsetty
0b25e62c5c fix: Reuse the existing JitsiLocalTrack on presenter unmute 2019-12-05 09:25:34 -05:00
damencho
4d0cbff5a1 Ignore errors when restarting services.
Sometimes conflicting or wrong configuration can leave the package in broken state and users cannot even uninstall/purge the packages, and it also breaks any other package installation.
2019-12-04 17:21:12 +00:00
damencho
c79463aaee Fixes including config.js template. 2019-12-04 17:21:12 +00:00
damencho
339e1c5fab Moves config template files out of doc folder. 2019-12-04 09:50:55 +00:00
Saúl Ibarra Corretgé
36455c24c8 auth: fix rendering error and progress messages
Also removed some no longer used styles.
2019-12-03 14:33:26 +01:00
Saúl Ibarra Corretgé
a622a4c713 android: handle ConnectionService failures more resiliently
Some Samsung devices will fail to fully engage ConnectionService if no SIM card
was ever installed on the device. We could check for it, but it would require
the CALL_PHONE permission, which is not something we want to do, so fallback to
not using ConnectionService.
2019-12-03 11:56:04 +01:00
Hristo Terezov
1aaaae24ee feat(Amplitude): enable referrer 2019-11-29 15:43:14 +00:00
Hristo Terezov
9191000da4 chore(package.json): Update lib-jitsi-meet 2019-11-29 13:41:14 +00:00
Bettenbuk Zoltan
8eb93086bd fix: set an avatar icon size relative to the container 2019-11-29 14:37:35 +01:00
Bettenbuk Zoltan
b64294af6d fix: emoji in links 2019-11-29 14:36:42 +01:00
Hristo Terezov
bbf33a8895 feat(welcome-page): Add viewed analytics event. 2019-11-28 15:36:12 +00:00
Jaya Allamsetty
bcc1289a23 feat(presenter): Modify the default behavior for presenter mode, it set to off when screensharing is turned on. Also, revert video to the original state when screensharing is turned off. 2019-11-27 11:13:36 -08:00
Saúl Ibarra Corretgé
58bd48c1ae android: disable ConnectionService if permissions are not granted
Some devices seem to have a bug in their Android versions and startCall fails
with SecurityError because the CALL_PHONE permissions is not granted. This is
not a requirement for self-managed connection services as per the official
documentation though:
https://developer.android.com/guide/topics/connectivity/telecom/selfManaged

Alas, connection services takes over audio device management too, so let's
handle the error and disable CS if we get SecurityError.
2019-11-27 14:33:25 +01:00
Saúl Ibarra Corretgé
1a3736bf98 android: unregister phone account if startCall fails 2019-11-27 14:33:25 +01:00
Saúl Ibarra Corretgé
0eec182df4 android: remove old code for accepting SDK license
It can now be automated in a CI environment as follows:

yes | sdkmanager --licenses
2019-11-27 14:24:29 +01:00
Saúl Ibarra Corretgé
c526844eb2 chore: remove unused images 2019-11-26 21:20:50 +01:00
Saúl Ibarra Corretgé
d856c1f328 ios: add apple-touch-icon icon
Ref: https://webhint.io/docs/user-guide/hints/hint-apple-touch-icons/
2019-11-26 21:13:02 +01:00
Saúl Ibarra Corretgé
15e47a9eb3 android: update native dependencies 2019-11-26 20:33:38 +01:00
Saúl Ibarra Corretgé
da98d39b61 doc: add app download badges to README 2019-11-26 14:58:35 +01:00
Bettenbuk Zoltan
411bafb5a6 feat: minimized bottom menu 2019-11-26 12:08:43 +01:00
Jaya Allamsetty
0a64bf2068 feat(presenter): add Presenter Mode
- Adds the ability to share video as a "PiP" when screenshare is in progress.
- Add a method for creating a local presenter track.
- Make sure isLocalVideoTrackMuted returns the correct mute state when only screenshare is present.
- Make sure we get the updated window size of the window being shared before painting it on the canvas.
- Make sure we check if the shared window has been resized
2019-11-26 11:57:03 +01:00
damencho
db6a2673de Handles unique Id for a meeting. 2019-11-26 10:37:19 +00:00
damencho
e11d4d3101 Installs prosody plugins with jitsi-meet-prosody package. 2019-11-26 10:37:19 +00:00
Saúl Ibarra Corretgé
8fd3bb2302 android: fallbacck to speaker in ConnectionService handler
It has been our default for a while.
2019-11-26 11:30:18 +01:00
theunafraid
fb3a832a52 Add shortcut key for toggle tile view (#4882)
* Add shortcut key for toggle tile view

* Toggle tile view shortcut - undo main-enGB.json

* Add analytics

* Use already defined toolbar translations
2019-11-22 16:15:39 +00:00
Saúl Ibarra Corretgé
9c146c1245 subject: hide participant count for 1-1 calls
refs: https://github.com/jitsi/jitsi-meet/issues/4871
2019-11-22 10:49:24 +01:00
Saúl Ibarra Corretgé
792f506425 ios: drop support for iOS 10 2019-11-22 10:46:02 +01:00
Bettenbuk Zoltan
6121e9fc65 feat: improve chat UX 2019-11-21 18:11:58 +01:00
Bettenbuk Zoltan
955fa1f49f fix: undefined is not an object on bitrate 2019-11-21 18:11:58 +01:00
damencho
2544d0a084 Fixes the message for who kicked you. 2019-11-20 17:01:00 +02:00
Bettenbuk Zoltan
8f0a12016a fix: return room lock conference, when there is no other 2019-11-20 13:28:47 +01:00
Leonard Kim
34ccd3524f fix(chat): preserve intentional linebreaks in message display 2019-11-20 08:58:02 +01:00
Leonard Kim
563e99ecd3 fix(chat): wrap long text 2019-11-18 09:31:47 -08:00
Leonard Kim
70f14be50f fix(large-video): center dominant speaker avatar using css
The vertical alignment was being set with javascript.
Recent changes might make the setting of alignment exit
early due to height 0 video. As position can be set
declaratively with css, use css to set position.
2019-11-15 07:51:59 -08:00
Bettenbuk Zoltan
8bd0da886e feat: safe decodeURIComponent 2019-11-15 15:18:20 +01:00
damencho
1fd326f980 Fixes nginx match rule, containing wrong chars.
Also adds a missing '/'.
2019-11-15 14:10:55 +00:00
yanas
d9cc664ea6 Merge pull request #4865 from jitsi/position-status-message
fix(remote-status-message): position
2019-11-15 14:10:34 +00:00
Hristo Terezov
d65e241056 fix(remote-status-message): position 2019-11-15 12:33:01 +00:00
Saúl Ibarra Corretgé
fe2b1f3d9f rn: refactor aspect ratio and reduced UI detectors 2019-11-15 12:54:44 +01:00
virtuacoplenny
17c1f50fc3 fix(mobile-landing): do not attempt opening download link in new window
Instead let the mobile OS take care of opening the URL
in the appropriate application. Without target _blank,
iOS 13.2.2 on Chrome will open about:blank and immediately
close the tab instead of opening the store.
2019-11-15 09:43:18 +01:00
Saúl Ibarra Corretgé
5c1c022291 doc: add open beta links to README 2019-11-15 09:30:42 +01:00
Boris Grozev
72435dee56 Order fields alphabetically. 2019-11-14 17:49:06 -06:00
Boris Grozev
42f2eff02a Whitelists the "stereo" flag. 2019-11-14 17:49:06 -06:00
Saúl Ibarra Corretgé
0b68bef0be ios: set Fastlane test groups 2019-11-14 18:21:37 +01:00
Saúl Ibarra Corretgé
676e943d81 ios: fix typo in Fastlane file 2019-11-14 16:02:39 +01:00
Saúl Ibarra Corretgé
2b4307dee9 ios: fix Fastlane beta build submissions 2019-11-14 15:49:09 +01:00
Hristo Terezov
f3f936c196 fix(large-video): missing video. 2019-11-14 06:29:27 -08:00
Saúl Ibarra Corretgé
eb900ddbe1 android: fix track name in Fastlane 2019-11-14 15:27:32 +01:00
Saúl Ibarra Corretgé
c2c323347a rn: skip logging potentially sensitive data 2019-11-14 15:01:29 +01:00
Saúl Ibarra Corretgé
af6642b91b rn: allow for userInfo and token to be set from the SDK 2019-11-14 12:30:15 +01:00
drimovecz
ffded8d82a Drimovecz/speakerstats (#4851)
* Correctly process speaker stats events when the conference contains a subdomain
2019-11-13 15:37:09 +00:00
Saúl Ibarra Corretgé
00b57c7983 fix(transport): remove legacy code
It has been around bor > 2.5 years already.
2019-11-13 16:15:29 +01:00
Saúl Ibarra Corretgé
5d40a8992a ios: disable bitcode when building the SDK for a release
This makes it possible to compile the SDK with Xcode 10 and 11. The problem is
that the Google SDK (used for sign-in) is compiled with Xcode 11. This avoids
the issue.
2019-11-13 13:17:51 +01:00
Saúl Ibarra Corretgé
e543625295 rn,settings: set the placeholder text color 2019-11-13 10:38:05 +01:00
Saúl Ibarra Corretgé
0b25ff649e ios: fix not displaying TextInput values in SettingsView 2019-11-13 10:38:05 +01:00
Saúl Ibarra Corretgé
63344ac62d deps: react-native-webrtc@1.75.2
Fixes an Android crash on craptacular devices.
2019-11-13 08:31:05 +01:00
Saúl Ibarra Corretgé
2e60aafebf fastlane,ios: add ability to set the changelog 2019-11-12 18:14:02 +01:00
Saúl Ibarra Corretgé
131e8f4aea fastlane: prepare for open beta access 2019-11-12 16:06:15 +01:00
Bettenbuk Zoltan
53f01a39c9 feat: private message interface config flag 2019-11-12 15:48:53 +01:00
Дамян Минков
50f4796144 Adds an option to set email through iframe API init and to stats. (#4842)
* Adds an option to set email through iframe API init and to stats.

* Simplifies configuring email and displayName in stats.

Removes enableStatsID as not needed as when off we are sending as callstats id xmpp resource which is unique per call and id must be something that sticks between calls (callstatsUsername).

* Adds email and displayName in stats config for mobile.

* chore(deps): Updates lib-jitsi-meet to latest dd31f0a.

* Removes enableStatsID from config and whitelist.
2019-11-12 13:37:54 +00:00
Дамян Минков
5bdfae377f Adds a hook to insert body & head html. (#4843)
* Adds a hook to insert body html.

* Adds a hook to insert head html.
2019-11-12 13:37:48 +00:00
Saúl Ibarra Corretgé
44970648ea rn: now working on versions 19.5 / 2.5 2019-11-08 15:21:55 +01:00
Saúl Ibarra Corretgé
3cd7f0b77d settings: fix loading disableCallIntegration 2019-11-08 12:15:49 +01:00
Saúl Ibarra Corretgé
4d243f9b92 android: fix selecting the Bluetooth route
Samsung devices (of course) seem to stick with the earpiece if we first select
Bluetooth but then set speaker to false. Reverse the order to make everyone
happy.

This only applies to the generic and legacy handlers.
2019-11-08 12:15:49 +01:00
Saúl Ibarra Corretgé
6b716f8f56 android: fix initializing audio device handler modules too early
When ConnectionService is used (the default) we were attaching the handlers too
early, and since attaching them requires that the RNConnectionService module is
loaded, it silently failed. Instead, use the initialize() method, which gets
called after all the Catalyst (aka native) modules have been loaded.
2019-11-08 12:15:49 +01:00
Saúl Ibarra Corretgé
5b99219f29 android: log a warning if listeners could not be attached 2019-11-08 12:15:49 +01:00
Saúl Ibarra Corretgé
f0dcb51915 android: make code a bit more readable 2019-11-08 12:15:49 +01:00
Bettenbuk Zoltan
3ff658a13b fix: respect safe area in conference on ios 2019-11-07 12:26:54 +01:00
Bettenbuk Zoltan
3a46513d4b ref: remove unused code 2019-11-07 12:26:54 +01:00
Saúl Ibarra Corretgé
ad0064993d ios: enable Swift mobule stability for the SDK target
Supersedes: https://github.com/jitsi/jitsi-meet/pull/4818
Fixes: https://github.com/jitsi/jitsi-meet/issues/4812
2019-11-06 18:30:26 +01:00
Saúl Ibarra Corretgé
458d4acd22 ios: use the "new" Xcode build system
It was introduced in Xcode 9 and made the default in Xcode 10. We were forcing
the use of the legacy version, which doesn't support some new features that we
wish to enable, such as building the SDK for distribution.
2019-11-06 18:30:26 +01:00
Saúl Ibarra Corretgé
8ebc99175c ios: set deployment target on Pods to 10.0
Matches the app / SDK deployment target and avoids compilation warnings.
2019-11-06 18:30:26 +01:00
Vlad Piersec
9889cb2b69 Add conference name as fallback for subject 2019-11-06 17:23:18 +01:00
Saúl Ibarra Corretgé
191e530071 uri: avoid using String.prototype.normalize
It crashes on Android. Well, on the JSC version React Native uses on Android.

While we could use this fallback only on Android, we have decided to use it
on all mobile platforms for consistency.
2019-11-06 15:37:14 +01:00
Mihai Uscat
ae30d39b4d feat(PromotionalFooter): Implement 2019-11-06 03:29:49 -08:00
Leonard Kim
c354e46846 chore(deps): update lib so newer FF does not need click for gum 2019-11-06 07:47:14 +00:00
Hristo Terezov
5da4e43e50 fix(settings): respect configWhitelist 2019-11-05 02:13:54 -08:00
Hristo Terezov
eae6f7760f fix(configWhitelist): add startWithAudioMuted. 2019-11-05 02:13:54 -08:00
Mihai Uscat
00161212c8 feat(welcome): Add responsive text to go button 2019-11-04 05:48:55 -08:00
Mark Anthony Sison
8976b92842 doc(install): adds cd command to jitsi-meet installation 2019-11-03 19:46:34 +00:00
Vlad Piersec
c3a6a8fb17 Add participants count 2019-10-31 09:08:59 -07:00
Saúl Ibarra Corretgé
391e5ca483 deps: react-native@0.61.3 2019-10-31 16:44:31 +01:00
Saúl Ibarra Corretgé
36654cb808 rn: disable H.264 on select devices even when not in P2P
iOS 10 crashes, so don't use it there, in any case.
2019-10-31 16:41:08 +01:00
Saúl Ibarra Corretgé
6d16e087d9 rn: add a new advanced settings section
Currently only 2 options are implemented, mainly aimed at helping troubleshoot
audio related problems:

- Disable native call integration (it disables CallKit / ConnectionService)
- Disable P2P
2019-10-31 16:41:08 +01:00
Saúl Ibarra Corretgé
fe90e5aa8f rn,settings: remove top margin 2019-10-31 16:41:08 +01:00
Saúl Ibarra Corretgé
3c22cd8ef4 rn,android: refactor audio device handling module
Separate each implementation (3 as of this writing) into each own "handler"
class.

This should make the code easier to understand, maintain and extend.
2019-10-31 16:41:08 +01:00
Bettenbuk Zoltan
5429b8568e feat: feature flag for invite functionalities 2019-10-29 11:27:25 +01:00
George Politis
0eccaf9a21 bumps ljm@5521a40aa85cb6f128f8a6dad9b72a5646132484 (#4791) 2019-10-24 14:52:38 +02:00
Aaron van Meerten
be0950c1ec multidomain mapper functionality and examples (#4773)
* first pass at mod_muc_domain open source plus example

* doc - prosody config and config.js examples for mapper
2019-10-24 12:42:11 +01:00
drimovecz
6ecd150f75 Add context user on speaker stats 2019-10-23 09:24:43 +01:00
Mihai Uscat
02fb37189b fix(welcome): Add extra variables 2019-10-22 13:24:44 -07:00
Jaya Allamsetty
8fe2536996 Update LJM for taking the changes for capScreenshareBitrate 2019-10-22 13:28:14 -05:00
Paweł Domas
4b9e156c5d Generic iOS .ipa build script (#4775) 2019-10-22 12:45:28 -05:00
Bettenbuk Zoltan
9265e1ffec ui: web chat facelift 2019-10-22 13:16:00 +02:00
Bettenbuk Zoltan
d11735b04c feat: make the hangup button first 2019-10-21 19:00:12 +02:00
Saúl Ibarra Corretgé
d33b700477 rn,blank-page: refactor BlankPage
- Remove network-activity "feature"
    - It wasn't in use
    - It relied on internal React Native components, bound to break anytime
- Show an infinite loading indicator
- Style it just like the LoadConfigOverlay
    - Since it kinda represents the opposite, an "unload" then SDK is done
2019-10-21 11:17:56 +02:00
Saúl Ibarra Corretgé
97d75c2cb9 android: fix SDK release script for new dependency syntax
Skip the first character, since it's now like ^123456.0.0
2019-10-21 11:12:26 +02:00
Saúl Ibarra Corretgé
287115f4c3 deps: react-native-webrtc@latest
Fixes a crash on iOS when disposing streams.
2019-10-18 14:05:18 +02:00
Saúl Ibarra Corretgé
63a221212b ios: add ability to manually toggle WebRTC logging 2019-10-18 14:05:18 +02:00
Bettenbuk Zoltan
6a916fd0e1 fix: fix filmstrip-only toolbar 2019-10-18 13:16:15 +02:00
yanas
220691d61d Merge pull request #4762 from jitsi/fix-etherpad-follow-me
Fixes showing etherpad in follow-me mode.
2019-10-17 13:44:10 +01:00
damencho
5cafc4bcbd Fixes showing etherpad in follow-me mode. 2019-10-17 13:39:01 +01:00
yanas
b3a78dc2e6 Merge pull request #4761 from zbettenbuk/aot-icons
fix: fix and refactor AoT css
2019-10-17 12:34:13 +01:00
Bettenbuk Zoltan
bebc6eabe5 fix: fix and refactor AoT css 2019-10-17 12:15:29 +02:00
paweldomas
26dc6a4ac2 update logger and LJM to support log timestamps 2019-10-16 15:59:58 -05:00
Hristo Terezov
ff2626723a fix(HelpButton): Improvements. 2019-10-16 13:34:43 -07:00
Mihai Uscat
72bb897269 feat(DownloadOverflowButton): Implement. 2019-10-16 11:30:06 -07:00
damencho
f46387a226 Adds room name validation logic for web. 2019-10-16 17:52:24 +01:00
damencho
a4cbbccb2a Fixes loading recent lists on wrong meeting name stored.
decodeURIComponent is not needed any more and after adding a validation such meeting name should not happen to be stored.
2019-10-16 17:52:24 +01:00
damencho
3e1a008399 Adds copy icon next to the meeting url in info dialog. 2019-10-16 17:52:24 +01:00
Bettenbuk Zoltan
7e70a8c1de feat: make mobile chat messages selectable 2019-10-16 16:05:10 +02:00
Hristo Terezov
8efee04a10 feat(package.json): Node 12 support. 2019-10-16 06:34:44 -07:00
Bettenbuk Zoltan
a35099f949 feat: add chat color scheming 2019-10-16 10:38:28 +02:00
2059 changed files with 167087 additions and 52655 deletions

View File

@@ -5,6 +5,9 @@ build/*
# modify as little as possible.
flow-typed/*
libs/*
resources/*
react/features/stream-effects/virtual-background/vendor/*
load-test/*
# ESLint will by default ignore its own configuration file. However, there does
# not seem to be a reason why we will want to risk being inconsistent with our

View File

@@ -4,25 +4,45 @@ about: Create a report to help us improve
---
*This Issue tracker is only for reporting bugs and tracking code related issues.*
<!--
Before posting, please make sure you check community.jitsi.org to see if the same or similar bugs have already been discussed.
General questions, installation help, and feature requests can also be posted to community.jitsi.org.
This issue tracker is only for reporting bugs and tracking issues related to the source code.
## Description
---
Before posting, please make sure to check if the same or similar bugs have already been discussed: https://github.com/jitsi/jitsi-meet/issues
## Current behavior
---
General questions regarding usage, installation, etc. should be posted at https://community.jitsi.org. They will be closed if posted here.
## Expected Behavior
---
-->
## Possible Solution
---
### Description:
## Steps to reproduce
---
<!-- Please describe the bug clearly and concisely. -->
# Environment details
---
### Steps to reproduce:
1. <!-- Open '...' -->
2. <!-- Click on '...' -->
3. <!-- and so on... -->
### Expected behavior:
<!-- Please describe what should happen. -->
### Actual behavior:
<!-- Please describe what actually happens. -->
<!-- Please attach screenshot if possible. -->
### Server information:
- Jitsi Meet version:
- Operating System:
### Client information:
- Browser / app version:
- Operating System:
### Additional information:
<!-- Please provide additional information about the bug, if any. -->

View File

@@ -1,7 +1,9 @@
---
name: "Feature request"
about: Suggest an idea for this project
title: ''
labels: 'feature-request'
assignees: ''
---
<!--
@@ -9,7 +11,7 @@ Thank you for suggesting an idea to make Jitsi Meet better.
Please fill in as much of the template below as you're able.
Note that the ultimate decission for implementing features lies on the Jitsi team, not all feature requests shall be accepted.
Note that the ultimate decision for implementing features lies on the Jitsi team, not all feature requests shall be accepted.
-->
**Is your feature request related to a problem you are facing?**

View File

@@ -1,10 +0,0 @@
---
name: Need help with Jitsi Meet?
about: Please ask it in our community at https://community.jitsi.org
---
If you have a question about Jitsi Meet that is not a bug report or feature
request, please post it in https://community.jitsi.org
Questions posted to this repository will be closed.

View File

@@ -1,11 +0,0 @@
---
name: Security issues
about: Please email security@jitsi.org
---
We take security very seriously and develop all Jitsi projects to be secure and safe.
If you find (or simply suspect) a security issue in any of the Jitsi projects, please send us an email to security@jitsi.org.
We encourage responsible disclosure for the sake of our users, so please reach out before posting in a public space.

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Need help with Jitsi Meet?
url: https://community.jitsi.org
about: Please ask it in our community.

5
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,5 @@
<!--
Thank you for your pull request. Please provide a thorough description below.
Contributors guide: https://github.com/jitsi/jitsi-meet/blob/master/CONTRIBUTING.md
-->

23
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: Simple CI
on: [pull_request]
jobs:
run-ci:
name: Build Frontend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '14.x'
- run: npm i -g npm@7
- run: npm install
- name: Check git status
run: git status
- name: Check git diff
run: git diff
- name: Check if the git repository is clean
run: exit $( git status --porcelain --untracked-files=no | head -255 | wc -l )
- run: npm run lint
- run: make

14
.gitignore vendored
View File

@@ -61,20 +61,15 @@ buck-out/
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
# Build artifacts
*.jsbundle
*.framework
android/app/debug
android/app/release
ios/sdk/out
# precommit-hook
.jshintignore
@@ -90,3 +85,10 @@ android/app/google-services.json
ios/app/dropbox.key
ios/app/GoogleService-Info.plist
.vscode
# TWA
twa/*.apk
twa/*.aab
twa/assetlinks.json

3
.npmrc Normal file
View File

@@ -0,0 +1,3 @@
package-lock=true
; FIXME Set legacy-peer-deps=false when we upgrade RN.
legacy-peer-deps=true

View File

@@ -27,3 +27,145 @@ in the agreement, unfortunately, we cannot accept your contribution.
- Maintain a clean list of commits, squash them if necessary.
- Rebase your topic branch on top of the master branch before creating the pull
request.
## Coding style
### Comments
* Comments documenting the source code are required.
* Comments from which documentation is automatically generated are **not**
subject to case-by-case decisions. Such comments are used, for example, on
types and their members. Examples of tools which automatically generate
documentation from such comments include JSDoc, Javadoc, Doxygen.
* Comments which are not automatically processed are strongly encouraged. They
are subject to case-by-case decisions. Such comments are often observed in
function bodies.
* Comments should be formatted as proper English sentences. Such formatting pays
attention to, for example, capitalization and punctuation.
### Duplication
* Don't copy-paste source code. Reuse it.
### Formatting
* Line length is limited to 120 characters.
* Sort by alphabetical order in order to make the addition of new entities as
easy as looking a word up in a dictionary. Otherwise, one risks duplicate
entries (with conflicting values in the cases of key-value pairs). For
example:
* Within an `import` of multiple names from a module, sort the names in
alphabetical order. (Of course, the default name stays first as required by
the `import` syntax.)
````javascript
import {
DOMINANT_SPEAKER_CHANGED,
JITSI_CLIENT_CONNECTED,
JITSI_CLIENT_CREATED,
JITSI_CLIENT_DISCONNECTED,
JITSI_CLIENT_ERROR,
JITSI_CONFERENCE_JOINED,
MODERATOR_CHANGED,
PEER_JOINED,
PEER_LEFT,
RTC_ERROR
} from './actionTypes';
````
* Within a group of imports (e.g. groups of imports delimited by an empty line
may be: third-party modules, then project modules, and eventually the
private files of a module), sort the module names in alphabetical order.
````javascript
import React, { Component } from 'react';
import { connect } from 'react-redux';
````
### Indentation
* Align `switch` and `case`/`default`. Don't indent the `case`/`default` more
than its `switch`.
````javascript
switch (i) {
case 0:
...
break;
default:
...
}
````
### Naming
* An abstraction should have one name within the project and across multiple
projects. For example:
* The instance of lib-jitsi-meet's `JitsiConnection` type should be named
`connection` or `jitsiConnection` in jitsi-meet, not `client`.
* The class `ReducerRegistry` should be defined in ReducerRegistry.js and its
imports in other files should use the same name. Don't define the class
`Registry` in ReducerRegistry.js and then import it as `Reducers` in other
files.
* The names of global constants (including ES6 module-global constants) should
be written in uppercase with underscores to separate words. For example,
`BACKGROUND_COLOR`.
* The underscore character at the beginning of a name signals that the
respective variable, function, property is non-public i.e. private, protected,
or internal. In contrast, the lack of an underscore at the beginning of a name
signals public API.
### Feature layout
When adding a new feature, this would be the usual layout.
```
react/features/sample/
├── actionTypes.js
├── actions.js
├── components
│   ├── AnotherComponent.js
│   ├── OneComponent.js
│   └── index.js
├── middleware.js
└── reducer.js
```
The middleware must be imported in `react/features/app/` specifically
in `middlewares.any`, `middlewares.native.js` or `middlewares.web.js` where appropriate.
Likewise for the reducer.
An `index.js` file must not be provided for exporting actions, action types and
component. Features / files requiring those must import them explicitly.
This has not always been the case and the entire codebase hasn't been migrated to
this model but new features should follow this new layout.
When working on an old feature, adding the necessary changes to migrate to the new
model is encouraged.
### Avoiding bundle bloat
When adding a new feature it's possible that it triggers a build failure due to the increased bundle size. We have safeguards inplace to avoid bundles growing disproportionatelly. While there are legit reasons for increasing the limits, please analyze the bundle first to make sure no unintended dependencies have been included, causing the increase in size.
First, make a production build with bundle-analysis enabled:
```
npx webpack -p --analyze-bundle
```
Then open the interactive bundle analyzer tool:
```
npx webpack-bundle-analyzer build/app-stats.json
```

View File

@@ -1,11 +0,0 @@
/**
* Notifies interested parties that hangup procedure will start.
*/
export const BEFORE_HANGUP = 'conference.before_hangup';
/**
* Notifies interested parties that desktop sharing enable/disable state is
* changed.
*/
export const DESKTOP_SHARING_ENABLED_CHANGED
= 'conference.desktop_sharing_enabled_changed';

View File

@@ -3,25 +3,32 @@ CLEANCSS = ./node_modules/.bin/cleancss
DEPLOY_DIR = libs
LIBJITSIMEET_DIR = node_modules/lib-jitsi-meet/
LIBFLAC_DIR = node_modules/libflacjs/dist/min/
OLM_DIR = node_modules/@matrix-org/olm
RNNOISE_WASM_DIR = node_modules/rnnoise-wasm/dist/
NODE_SASS = ./node_modules/.bin/node-sass
TFLITE_WASM = react/features/stream-effects/virtual-background/vendor/tflite
MEET_MODELS_DIR = react/features/stream-effects/virtual-background/vendor/models/
NODE_SASS = ./node_modules/.bin/sass
NPM = npm
OUTPUT_DIR = .
STYLES_BUNDLE = css/all.bundle.css
STYLES_DESTINATION = css/all.css
STYLES_MAIN = css/main.scss
WEBPACK = ./node_modules/.bin/webpack
WEBPACK_DEV_SERVER = ./node_modules/.bin/webpack-dev-server
WEBPACK_DEV_SERVER = ./node_modules/.bin/webpack serve --mode development
all: compile deploy clean
compile:
$(WEBPACK) -p
compile: compile-load-test
$(WEBPACK)
compile-load-test:
${NPM} install --prefix resources/load-test && ${NPM} run build --prefix resources/load-test
clean:
rm -fr $(BUILD_DIR)
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac deploy-css deploy-local
.NOTPARALLEL:
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-css deploy-local
deploy-init:
rm -fr $(DEPLOY_DIR)
@@ -37,8 +44,6 @@ deploy-appbundle:
$(BUILD_DIR)/external_api.min.map \
$(BUILD_DIR)/flacEncodeWorker.min.js \
$(BUILD_DIR)/flacEncodeWorker.min.map \
$(BUILD_DIR)/device_selection_popup_bundle.min.js \
$(BUILD_DIR)/device_selection_popup_bundle.min.map \
$(BUILD_DIR)/dial_in_info_bundle.min.js \
$(BUILD_DIR)/dial_in_info_bundle.min.map \
$(BUILD_DIR)/alwaysontop.min.js \
@@ -46,16 +51,17 @@ deploy-appbundle:
$(OUTPUT_DIR)/analytics-ga.js \
$(BUILD_DIR)/analytics-ga.min.js \
$(BUILD_DIR)/analytics-ga.min.map \
$(BUILD_DIR)/video-blur-effect.min.js \
$(BUILD_DIR)/video-blur-effect.min.map \
$(BUILD_DIR)/rnnoise-processor.min.js \
$(BUILD_DIR)/rnnoise-processor.min.map \
$(DEPLOY_DIR)
cp \
$(BUILD_DIR)/close3.min.js \
$(BUILD_DIR)/close3.min.map \
$(DEPLOY_DIR) || true
deploy-lib-jitsi-meet:
cp \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.js \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.min.map \
$(LIBJITSIMEET_DIR)/lib-jitsi-meet.e2ee-worker.js \
$(LIBJITSIMEET_DIR)/connection_optimization/external_connect.js \
$(LIBJITSIMEET_DIR)/modules/browser/capabilities.json \
$(DEPLOY_DIR)
@@ -66,25 +72,41 @@ deploy-libflac:
$(LIBFLAC_DIR)/libflac4-1.3.2.min.js.mem \
$(DEPLOY_DIR)
deploy-olm:
cp \
$(OLM_DIR)/olm.wasm \
$(DEPLOY_DIR)
deploy-rnnoise-binary:
cp \
$(RNNOISE_WASM_DIR)/rnnoise.wasm \
$(DEPLOY_DIR)
deploy-tflite:
cp \
$(TFLITE_WASM)/*.wasm \
$(DEPLOY_DIR)
deploy-meet-models:
cp \
$(MEET_MODELS_DIR)/*.tflite \
$(DEPLOY_DIR)
deploy-css:
$(NODE_SASS) $(STYLES_MAIN) $(STYLES_BUNDLE) && \
$(CLEANCSS) $(STYLES_BUNDLE) > $(STYLES_DESTINATION) ; \
$(CLEANCSS) --skip-rebase $(STYLES_BUNDLE) > $(STYLES_DESTINATION) ; \
rm $(STYLES_BUNDLE)
deploy-local:
([ ! -x deploy-local.sh ] || ./deploy-local.sh)
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-lib-jitsi-meet deploy-libflac
.NOTPARALLEL:
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm
$(WEBPACK_DEV_SERVER)
source-package:
mkdir -p source_package/jitsi-meet/css && \
cp -r *.js *.html connection_optimization favicon.ico fonts images libs static sounds LICENSE lang source_package/jitsi-meet && \
cp -r *.js *.html resources/*.txt connection_optimization favicon.ico fonts images libs static sounds LICENSE lang source_package/jitsi-meet && \
cp css/all.css source_package/jitsi-meet/css && \
(cd source_package ; tar cjf ../jitsi-meet.tar.bz2 jitsi-meet) && \
rm -rf source_package

117
README.md
View File

@@ -1,71 +1,88 @@
# Jitsi Meet - Secure, Simple and Scalable Video Conferences
# <p align="center">Jitsi Meet</p>
Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses [Jitsi Videobridge](https://jitsi.org/videobridge) to provide high quality, [secure](#security) and scalable video conferences. Jitsi Meet in action can be seen at [here at the session #482 of the VoIP Users Conference](http://youtu.be/7vFUVClsNh0).
Jitsi Meet is a set of Open Source projects which empower users to use and deploy
video conferencing platforms with state-of-the-art video quality and features.
The Jitsi Meet client runs in your browser, without installing anything on your computer. You can try it out at https://meet.jit.si .
<hr />
Jitsi Meet allows very efficient collaboration. Users can stream their desktop or only some windows. It also supports shared document editing with Etherpad.
<p align="center">
<img src="https://raw.githubusercontent.com/jitsi/jitsi-meet/master/readme-img1.png" width="900" />
</p>
## Installation
<hr />
On the client side, no installation is necessary. You just point your browser to the URL of your deployment. This section is about installing a Jitsi Meet suite on your server and hosting your own conferencing service.
Amongst others here are the main features Jitsi Meet offers:
Installing Jitsi Meet is a simple experience. For Debian-based system, following the [quick-install](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md) document, which uses the package system. You can also see a demonstration of the process in [this tutorial video](https://jitsi.org/tutorial).
* Support for all current browsers
* Mobile applications
* Web and native SDKs for integration
* HD audio and video
* Content sharing
* End-to-End Encryption
* Raise hand and reactions
* Chat with private conversations
* Polls
* Virtual backgrounds
For other systems, or if you wish to install all components manually, see the [detailed manual installation instructions](https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md).
And many more!
## Download
## Using Jitsi Meet
| Latest stable release | [![release](https://img.shields.io/badge/release-latest-green.svg)](https://github.com/jitsi/jitsi-meet/releases/latest) |
|---|---|
Using Jitsi Meet is straightforward, as it's browser based. Head over to [meet.jit.si](https://meet.jit.si) and give it a try. It's anonymous, scalable and free to use. All browsers are supported!
You can download Debian/Ubuntu binaries:
* [stable](https://download.jitsi.org/stable/) ([instructions](https://jitsi.org/downloads/ubuntu-debian-installations-instructions/))
* [testing](https://download.jitsi.org/testing/) ([instructions](https://jitsi.org/downloads/ubuntu-debian-installations-instructions-for-testing/))
* [nightly](https://download.jitsi.org/unstable/) ([instructions](https://jitsi.org/downloads/ubuntu-debian-installations-instructions-nightly/))
Using mobile? No problem, you can either use your mobile web browser or our fully-featured
mobile apps:
You can download source archives (produced by ```make source-package```):
* [source builds](https://download.jitsi.org/jitsi-meet/src/)
| Android | Android (F-Droid) | iOS |
|:-:|:-:|:-:|
| [<img src="resources/img/google-play-badge.png" height="50">](https://play.google.com/store/apps/details?id=org.jitsi.meet) | [<img src="resources/img/f-droid-badge.png" height="50">](https://f-droid.org/en/packages/org.jitsi.meet/) | [<img src="resources/img/appstore-badge.png" height="50">](https://itunes.apple.com/us/app/jitsi-meet/id1165103905) |
You can get our mobile versions from here:
* [Android](https://play.google.com/store/apps/details?id=org.jitsi.meet)
* [iOS](https://itunes.apple.com/us/app/jitsi-meet/id1165103905)
If you are feeling adventurous and want to get an early scoop of the features as they are being
developed you can also sign up for our open beta testing here:
## Development
* [Android](https://play.google.com/apps/testing/org.jitsi.meet)
* [iOS](https://testflight.apple.com/join/isy6ja7S)
For web development see [here](doc/development.md), and for mobile see [here](doc/mobile.md).
## Running your own instance
If you'd like to run your own Jitsi Meet installation head over to the [handbook](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-start) to get started.
We provide Debian packages and a comprehensive Docker setup to make deployments as simple as possible.
Advanced users also have the possibility of building all the components from source.
You can check the latest releases [here](https://jitsi.github.io/handbook/docs/releases).
## Jitsi as a Service
If you like the branding capabilities of running your own instance but you'd like
to avoid dealing with the complexity of monitoring, scaling and updates, JaaS might be
for you.
[8x8 Jitsi as a Service (JaaS)](https://jaas.8x8.vc) is an enterprise-ready video meeting platform that allows developers, organizations and businesses to easily build and deploy video solutions. With Jitsi as a Service we now give you all the power of Jitsi running on our global platform so you can focus on building secure and branded video experiences.
## Documentation
All the Jitsi Meet documentation is available in [the handbook](https://jitsi.github.io/handbook/).
## Security
For a comprehensive description of all Jitsi Meet's security aspects, please check [this link](https://jitsi.org/security).
For a detailed description of Jitsi Meet's End-to-End Encryption (E2EE) implementation,
please check [this link](https://jitsi.org/e2ee-whitepaper/).
For information on reporting security vulnerabilities in Jitsi Meet, see [SECURITY.md](./SECURITY.md).
## Contributing
If you are looking to contribute to Jitsi Meet, first of all, thank you! Please
see our [guidelines for contributing](CONTRIBUTING.md).
## Embedding in external applications
<br />
<br />
Jitsi Meet provides a very flexible way of embedding in external applications by using the [Jitsi Meet API](doc/api.md).
## Security
WebRTC does not (yet) provide a way of conducting multi-party conversations with end-to-end encryption.
Unless you consistently compare DTLS fingerprints with your peers vocally, the same goes for one-to-one calls.
As a result, your stream is encrypted on the network but decrypted on the machine that hosts the bridge when using Jitsi Meet.
The Jitsi Meet architecture allows you to deploy your own version, including
all server components. In that case, your security guarantees will be roughly
equivalent to a direct one-to-one WebRTC call. This is the uniqueness of
Jitsi Meet in terms of security.
The [meet.jit.si](https://meet.jit.si) service is maintained by the Jitsi team
at [8x8](https://8x8.com).
## Security issues
We take security very seriously and develop all Jitsi projects to be secure and safe.
If you find (or simply suspect) a security issue in any of the Jitsi projects, please send us an email to security@jitsi.org.
**We encourage responsible disclosure for the sake of our users, so please reach out before posting in a public space.**
## Acknowledgements
Jitsi Meet started out as a sample conferencing application using Jitsi Videobridge. It was originally developed by ESTOS' developer Philipp Hancke who then contributed it to the community where development continues with joint forces!
<footer>
<p align="center" style="font-size: smaller;">
Built with ❤️ by the Jitsi team at <a href="https://8x8.com" target="_blank">8x8</a> and our community.
</p>
</footer>

9
SECURITY.md Normal file
View File

@@ -0,0 +1,9 @@
# Security
## Reporting security issues
We take security very seriously and develop all Jitsi projects to be secure and safe.
If you find (or simply suspect) a security issue in any of the Jitsi projects, please report it to us via [HackerOne](https://hackerone.com/8x8) or send us an email to security@jitsi.org.
**We encourage responsible disclosure for the sake of our users, so please reach out before posting in a public space.**

View File

@@ -1,380 +1,3 @@
# Jitsi Meet SDK for Android
## Sample applications using the SDK
If you want to see how easy integrating the Jitsi Meet SDK into a native application is, take a look at the
[sample applications repository](https://github.com/jitsi/jitsi-meet-sdk-samples).
## Build your own, or use a pre-build SDK artifacts/binaries
Jitsi conveniently provides a pre-build SDK artifacts/binaries in its Maven repository. When you do not require any
modification to the SDK itself or any of its dependencies, it's suggested to use the pre-build SDK. This avoids the
complexity of building and installing your own SDK artifacts/binaries.
### Use pre-build SDK artifacts/binaries
In your project, add the Maven repository
`https://github.com/jitsi/jitsi-maven-repository/raw/master/releases` and the
dependency `org.jitsi.react:jitsi-meet-sdk` into your `build.gradle` files.
The repository typically goes into the `build.gradle` file in the root of your project:
```gradle
allprojects {
repositories {
google()
jcenter()
maven {
url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
}
}
}
```
Dependency definitions belong in the individual module `build.gradle` files:
```gradle
dependencies {
// (other dependencies)
implementation ('org.jitsi.react:jitsi-meet-sdk:2.+') { transitive = true }
}
```
### Build and use your own SDK artifacts/binaries
<details>
<summary>Show building instructions</summary>
Start by making sure that your development environment [is set up correctly](https://github.com/jitsi/jitsi-meet/blob/master/doc/mobile.md).
A note on dependencies: Apart from the SDK, Jitsi also publishes a binary Maven artifact for some of the SDK dependencies (that are not otherwise publicly available) to the Jitsi Maven repository. When you're planning to use a SDK that is built from source, you'll likely use a version of the source code that is newer (or at least _different_) than the version of the source that was used to create the binary SDK artifact. As a consequence, the dependencies that your project will need, might also be different from those that are published in the Jitsi Maven repository. This might lead to build problems, caused by dependencies that are unavailable.
If you want to use a SDK that is built from source, you will likely benefit from composing a local Maven repository that contains these dependencies. The text below describes how you create a repository that includes both the SDK as well as these dependencies. For illustration purposes, we'll define the location of this local Maven repository as `/tmp/repo`
In source code form, the Android SDK dependencies are locked/pinned by package.json and package-lock.json of the Jitsi Meet project. To obtain the data, execute NPM in the jitsi-meet project directory:
npm install
This will pull in the dependencies in either binary format, or in source code format, somewhere under /node_modules/
Third-party React Native _modules_, which Jitsi Meet SDK for Android depends on, are download by NPM in source code
or binary form. These need to be assembled into Maven artifacts, and then published to your local Maven repository.
A script is provided to facilitate this. From the root of the jitsi-meet project repository, run:
./android/scripts/release-sdk.sh /tmp/repo
This will build and publish the SDK, and all of its dependencies to the specified Maven repository (`/tmp/repo`) in
this example.
You're now ready to use the artifacts. In _your_ project, add the Maven repository that you used above (`/tmp/repo`) into your top-level `build.gradle` file:
allprojects {
repositories {
maven { url "file:/tmp/repo" }
google()
jcenter()
}
}
You can use your local repository to replace the Jitsi repository (`maven { url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases" }`) when you published _all_ subprojects. If you didn't do that, you'll have to add both repositories. Make sure your local repository is listed first!
Then, define the dependency `org.jitsi.react:jitsi-meet-sdk` into the `build.gradle` file of your module:
implementation ('org.jitsi.react:jitsi-meet-sdk:+') { transitive = true }
Note that there should not be a need to explicitly add the other dependencies, as they will be pulled in as transitive
dependencies of `jitsi-meet-sdk`.
</details>
## Using the API
Jitsi Meet SDK is an Android library which embodies the whole Jitsi Meet
experience and makes it reusable by third-party apps.
First, add Java 1.8 compatibility support to your project by adding the
following lines into your `build.gradle` file:
```
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
```
To get started, extends your `android.app.Activity` from
`org.jitsi.meet.sdk.JitsiMeetActivity`:
```java
package org.jitsi.example;
import org.jitsi.meet.sdk.JitsiMeetActivity;
public class MainActivity extends JitsiMeetActivity {
}
```
Alternatively, you can use the `org.jitsi.meet.sdk.JitsiMeetView` class which
extends `android.view.View`.
Note that this should only be needed when `JitsiMeetActivity` cannot be used for
some reason. Extending `JitsiMeetView` requires manual wiring of the view to
the activity, using a lot of boilerplate code. Using the Activity instead of the
View is strongly recommended.
<details>
<summary>Show example</summary>
```java
package org.jitsi.example;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import org.jitsi.meet.sdk.JitsiMeetView;
import org.jitsi.meet.sdk.ReactActivityLifecycleCallbacks;
// Example
//
public class MainActivity extends FragmentActivity implements JitsiMeetActivityInterface {
private JitsiMeetView view;
@Override
protected void onActivityResult(
int requestCode,
int resultCode,
Intent data) {
JitsiMeetActivityDelegate.onActivityResult(
this, requestCode, resultCode, data);
}
@Override
public void onBackPressed() {
JitsiMeetActivityDelegate.onBackPressed();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = new JitsiMeetView(this);
JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
.setRoom("https://meet.jit.si/test123")
.build();
view.join(options);
setContentView(view);
}
@Override
protected void onDestroy() {
super.onDestroy();
view.dispose();
view = null;
JitsiMeetActivityDelegate.onHostDestroy(this);
}
@Override
public void onNewIntent(Intent intent) {
JitsiMeetActivityDelegate.onNewIntent(intent);
}
@Override
public void onRequestPermissionsResult(
final int requestCode,
final String[] permissions,
final int[] grantResults) {
JitsiMeetActivityDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void onResume() {
super.onResume();
JitsiMeetActivityDelegate.onHostResume(this);
}
@Override
protected void onStop() {
super.onStop();
JitsiMeetActivityDelegate.onHostPause(this);
}
}
```
</details>
### JitsiMeetActivity
This class encapsulates a high level API in the form of an Android `FragmentActivity`
which displays a single `JitsiMeetView`. You can pass a URL as a `ACTION_VIEW`
on the Intent when starting it and it will join the conference, and will be
automatically terminated (finish() will be called on the activity) when the
conference ends or fails.
### JitsiMeetView
The `JitsiMeetView` class is the core of Jitsi Meet SDK. It's designed to
display a Jitsi Meet conference (or a welcome page).
#### join(options)
Joins the conference specified by the given `JitsiMeetConferenceOptions`.
#### leave()
Leaves the currently active conference. If the welcome page is enabled it will
go back to it, otherwise a black window will be shown.
#### dispose()
Releases all resources associated with this view. This method MUST be called
when the Activity holding this view is going to be destroyed, usually in the
`onDestroy()` method.
#### getListener()
Returns the `JitsiMeetViewListener` instance attached to the view.
#### setListener(listener)
Sets the given listener (class implementing the `JitsiMeetViewListener`
interface) on the view.
### JitsiMeetConferenceOptions
This object encapsulates all the options that can be tweaked when joining
a conference.
Example:
```java
JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
.setServerURL(new URL("https://meet.jit.si"))
.setRoom("test123")
.setAudioMuted(false)
.setVideoMuted(false)
.setAudioOnly(false)
.setWelcomePageEnabled(false)
.build();
```
See the `JitsiMeetConferenceOptions` implementation for all available options.
### JitsiMeetActivityDelegate
This class handles the interaction between `JitsiMeetView` and its enclosing
`Activity`. Generally this shouldn't be consumed by users, because they'd be
using `JitsiMeetActivity` instead, which is already completely integrated.
All its methods are static.
#### onActivityResult(...)
Helper method to handle results of auxiliary activities launched by the SDK.
Should be called from the activity method of the same name.
#### onBackPressed()
Helper method which should be called from the activity's `onBackPressed` method.
If this function returns `true`, it means the action was handled and thus no
extra processing is required; otherwise the app should call the parent's
`onBackPressed` method.
#### onHostDestroy(...)
Helper method which should be called from the activity's `onDestroy` method.
#### onHostResume(...)
Helper method which should be called from the activity's `onResume` or `onStop`
method.
#### onHostStop(...)
Helper method which should be called from the activity's `onSstop` method.
#### onNewIntent(...)
Helper method for integrating the *deep linking* functionality. If your app's
activity is launched in "singleTask" mode this method should be called from the
activity's `onNewIntent` method.
#### onRequestPermissionsResult(...)
Helper method to handle permission requests inside the SDK. It should be called
from the activity method of the same name.
#### onUserLeaveHint()
Helper method for integrating automatic Picture-in-Picture. It should be called
from the activity's `onUserLeaveHint` method.
This is a static method.
#### JitsiMeetViewListener
`JitsiMeetViewListener` provides an interface apps can implement to listen to
the state of the Jitsi Meet conference displayed in a `JitsiMeetView`.
#### onConferenceJoined
Called when a conference was joined.
The `data` `Map` contains a "url" key with the conference URL.
#### onConferenceTerminated
Called when a conference was terminated either by user choice or due to a
failure.
The `data` `Map` contains an "error" key with the error and a "url" key
with the conference URL. If the conference finished gracefully no `error`
key will be present.
#### onConferenceWillJoin
Called before a conference is joined.
The `data` `Map` contains a "url" key with the conference URL.
## ProGuard rules
When using the SDK on a project some proguard rules have to be added in order
to avoid necessary code being stripped. Add the following to your project's
rules file: https://github.com/jitsi/jitsi-meet/blob/master/android/app/proguard-rules.pro
## Picture-in-Picture
`JitsiMeetView` will automatically adjust its UI when presented in a
Picture-in-Picture style scenario, in a rectangle too small to accommodate its
"full" UI.
## Dropbox integration
To setup the Dropbox integration, follow these steps:
1. Add the following to the app's AndroidManifest.xml and change `<APP_KEY>` to
your Dropbox app key:
```
<activity
android:configChanges="keyboard|orientation"
android:launchMode="singleTask"
android:name="com.dropbox.core.android.AuthActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="db-<APP_KEY>" />
</intent-filter>
</activity>
```
2. Add the following to the app's strings.xml and change `<APP_KEY>` to your
Dropbox app key:
```
<string name="dropbox_app_key"><APP_KEY></string>
```
This document has been moved to [The Handbook](https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-android-sdk).

View File

@@ -1,24 +1,25 @@
apply plugin: 'com.android.application'
boolean googleServicesEnabled \
= project.file('google-services.json').exists() && !rootProject.ext.libreBuild
// Crashlytics integration is done as part of Firebase now, so it gets
// automagically activated with google-services.json
if (googleServicesEnabled) {
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.crashlytics'
}
// Use the number of seconds/10 since Jan 1 2019 as the versionCode.
// This lets us upload a new build at most every 10 seconds for the
// next ~680 years.
// https://stackoverflow.com/a/38643838
def vcode = (int)(((new Date().getTime()/1000) - 1546297200) / 10)
def vcode = (int) (((new Date().getTime() / 1000) - 1546297200) / 10)
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
packagingOptions {
exclude 'lib/*/libhermes*.so'
}
defaultConfig {
applicationId 'org.jitsi.meet'
versionCode vcode
@@ -32,12 +33,23 @@ android {
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
buildTypes {
debug {
buildConfigField "boolean", "GOOGLE_SERVICES_ENABLED", "${googleServicesEnabled}"
buildConfigField "boolean", "LIBRE_BUILD", "${rootProject.ext.libreBuild}"
}
release {
// Uncomment the following line for singing a test release build.
//signingConfig signingConfigs.debug
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.pro'
buildConfigField "boolean", "GOOGLE_SERVICES_ENABLED", "${googleServicesEnabled}"
@@ -62,14 +74,11 @@ android {
}
}
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
if (!rootProject.ext.libreBuild) {
implementation 'com.google.android.gms:play-services-auth:16.0.1'
@@ -77,15 +86,12 @@ dependencies {
// Firebase
// - Crashlytics
// - Dynamic Links
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.8'
implementation 'com.google.firebase:firebase-dynamic-links:16.1.5'
implementation 'com.google.firebase:firebase-analytics:17.5.0'
implementation 'com.google.firebase:firebase-crashlytics:17.2.1'
implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
}
implementation project(':sdk')
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1'
}
gradle.projectsEvaluated {
@@ -103,6 +109,7 @@ gradle.projectsEvaluated {
def dropboxActivity = """
<activity
android:configChanges="keyboard|orientation"
android:exported="true"
android:launchMode="singleTask"
android:name="com.dropbox.core.android.AuthActivity">
<intent-filter>
@@ -116,7 +123,7 @@ gradle.projectsEvaluated {
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.getProcessManifestProvider().get().doLast {
def outputDir = manifestOutputDirectory.get().asFile
def outputDir = multiApkManifestOutputDirectory.get().asFile
def manifestPath = new File(outputDir, 'AndroidManifest.xml')
def charset = 'UTF-8'
def text
@@ -133,8 +140,8 @@ gradle.projectsEvaluated {
def targetName = variant.name.capitalize()
def currentRunPackagerTask = tasks.create(
name: "run${targetName}ReactPackager",
type: Exec) {
name: "run${targetName}ReactPackager",
type: Exec) {
group = "react"
description = "Run the React packager."
@@ -165,5 +172,5 @@ gradle.projectsEvaluated {
}
if (googleServicesEnabled) {
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.gms.google-services'
}

BIN
android/app/debug.keystore Normal file

Binary file not shown.

View File

@@ -1,15 +1,20 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="org.jitsi.meet">
package="org.jitsi.meet"
android:installLocation="auto">
<application
android:allowBackup="true"
android:extractNativeLibs="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name=".MainApplication"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
<meta-data
android:name="android.content.APP_RESTRICTIONS"
android:resource="@xml/app_restrictions" />
<activity
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:name=".MainActivity"

View File

@@ -3,10 +3,10 @@ package org.jitsi.meet;
import android.net.Uri;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
import io.fabric.sdk.android.Fabric;
import org.jitsi.meet.sdk.JitsiMeet;
import org.jitsi.meet.sdk.JitsiMeetActivity;
/**
@@ -21,8 +21,7 @@ final class GoogleServicesHelper {
if (BuildConfig.GOOGLE_SERVICES_ENABLED) {
Log.d(activity.getClass().getSimpleName(), "Initializing Google Services");
Fabric.with(activity, new Crashlytics());
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!JitsiMeet.isCrashReportingDisabled(activity));
FirebaseDynamicLinks.getInstance().getDynamicLink(activity.getIntent())
.addOnSuccessListener(activity, pendingDynamicLinkData -> {
Uri dynamicLink = null;

View File

@@ -1,6 +1,5 @@
/*
* Copyright @ 2018-present 8x8, Inc.
* Copyright @ 2017-2018 Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,12 +16,18 @@
package org.jitsi.meet;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.RestrictionEntry;
import android.content.RestrictionsManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import androidx.annotation.Nullable;
import org.jitsi.meet.sdk.JitsiMeet;
@@ -32,7 +37,8 @@ import org.jitsi.meet.sdk.JitsiMeetConferenceOptions;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
import java.util.Collection;
import java.util.HashMap;
/**
* The one and only Activity that the Jitsi Meet app needs. The
@@ -49,9 +55,36 @@ public class MainActivity extends JitsiMeetActivity {
private static final int OVERLAY_PERMISSION_REQUEST_CODE
= (int) (Math.random() * Short.MAX_VALUE);
/**
* ServerURL configuration key for restriction configuration using {@link android.content.RestrictionsManager}
*/
public static final String RESTRICTION_SERVER_URL = "SERVER_URL";
/**
* Broadcast receiver for restrictions handling
*/
private BroadcastReceiver broadcastReceiver;
/**
* Flag if configuration is provided by RestrictionManager
*/
private boolean configurationByRestrictions = false;
/**
* Default URL as could be obtained from RestrictionManager
*/
private String defaultURL;
// JitsiMeetActivity overrides
//
@Override
protected void onCreate(Bundle savedInstanceState) {
JitsiMeet.showSplashScreen(this);
super.onCreate(null);
}
@Override
protected boolean extraInitialize() {
Log.d(this.getClass().getSimpleName(), "LIBRE_BUILD="+BuildConfig.LIBRE_BUILD);
@@ -69,7 +102,7 @@ public class MainActivity extends JitsiMeetActivity {
// In Debug builds React needs permission to write over other apps in
// order to display the warning and error overlays.
if (BuildConfig.DEBUG) {
if (canRequestOverlayPermission() && !Settings.canDrawOverlays(this)) {
if (!Settings.canDrawOverlays(this)) {
Intent intent
= new Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
@@ -86,20 +119,72 @@ public class MainActivity extends JitsiMeetActivity {
@Override
protected void initialize() {
// Set default options
JitsiMeetConferenceOptions defaultOptions
= new JitsiMeetConferenceOptions.Builder()
.setWelcomePageEnabled(true)
.setServerURL(buildURL("https://meet.jit.si"))
.build();
JitsiMeet.setDefaultConferenceOptions(defaultOptions);
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// As new restrictions including server URL are received,
// conference should be restarted with new configuration.
leave();
recreate();
}
};
registerReceiver(broadcastReceiver,
new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED));
resolveRestrictions();
setJitsiMeetConferenceDefaultOptions();
super.initialize();
}
@Override
public void onConferenceTerminated(Map<String, Object> data) {
Log.d(TAG, "Conference terminated: " + data);
public void onDestroy() {
if (broadcastReceiver != null) {
unregisterReceiver(broadcastReceiver);
broadcastReceiver = null;
}
super.onDestroy();
}
private void setJitsiMeetConferenceDefaultOptions() {
// Set default options
JitsiMeetConferenceOptions defaultOptions
= new JitsiMeetConferenceOptions.Builder()
.setWelcomePageEnabled(true)
.setServerURL(buildURL(defaultURL))
.setFeatureFlag("call-integration.enabled", false)
.setFeatureFlag("resolution", 360)
.setFeatureFlag("server-url-change.enabled", !configurationByRestrictions)
.build();
JitsiMeet.setDefaultConferenceOptions(defaultOptions);
}
private void resolveRestrictions() {
RestrictionsManager manager =
(RestrictionsManager) getSystemService(Context.RESTRICTIONS_SERVICE);
Bundle restrictions = manager.getApplicationRestrictions();
Collection<RestrictionEntry> entries = manager.getManifestRestrictions(
getApplicationContext().getPackageName());
for (RestrictionEntry restrictionEntry : entries) {
String key = restrictionEntry.getKey();
if (RESTRICTION_SERVER_URL.equals(key)) {
// If restrictions are passed to the application.
if (restrictions != null &&
restrictions.containsKey(RESTRICTION_SERVER_URL)) {
defaultURL = restrictions.getString(RESTRICTION_SERVER_URL);
configurationByRestrictions = true;
// Otherwise use default URL from app-restrictions.xml.
} else {
defaultURL = restrictionEntry.getSelectedString();
configurationByRestrictions = false;
}
}
}
}
@Override
protected void onConferenceTerminated(HashMap<String, Object> extraData) {
Log.d(TAG, "Conference terminated: " + extraData);
}
// Activity lifecycle method overrides
@@ -107,8 +192,7 @@ public class MainActivity extends JitsiMeetActivity {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OVERLAY_PERMISSION_REQUEST_CODE
&& canRequestOverlayPermission()) {
if (requestCode == OVERLAY_PERMISSION_REQUEST_CODE) {
if (Settings.canDrawOverlays(this)) {
initialize();
return;
@@ -131,6 +215,18 @@ public class MainActivity extends JitsiMeetActivity {
return super.onKeyUp(keyCode, event);
}
@Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
super.onPictureInPictureModeChanged(isInPictureInPictureMode);
Log.d(TAG, "Is in picture-in-picture mode: " + isInPictureInPictureMode);
if (!isInPictureInPictureMode) {
this.startActivity(new Intent(this, getClass())
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
}
}
// Helper methods
//
@@ -141,10 +237,4 @@ public class MainActivity extends JitsiMeetActivity {
return null;
}
}
private boolean canRequestOverlayPermission() {
return
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.M;
}
}

View File

@@ -0,0 +1,70 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="262.91376dp"
android:height="262.91376dp"
android:viewportWidth="262.91376"
android:viewportHeight="262.91376">
<group>
<clip-path
android:pathData="m0,0 l262.914,-0L262.914,262.914 0,262.914 0,0Z"/>
<path
android:pathData="m142.646,105.099c0.117,0.026 0.255,0.036 0.406,0.036 3.186,-0 10.297,-4.615 11.617,-6.721l0.1,-0.17 0.153,-0.135c0.451,-0.441 1.746,-2.773 2.374,-4.17 -6.751,-2.023 -7.49,-5.677 -8.153,-8.919 -0.069,-0.376 -0.138,-0.717 -0.204,-1.019 -0.074,-0.397 -0.153,-0.8 -0.226,-1.112C138.668,86.221 135.593,88.094 133.921,89.483 133.056,90.201 132.542,92.251 135.042,97.926 136.323,100.816 140.727,104.733 142.646,105.099"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m115.413,146.042c5.934,-0 18.464,-3.543 26.748,-5.887 1.21,-0.336 2.33,-0.66 3.351,-0.944 0.166,-0.046 0.321,-0.091 0.472,-0.124 -0.463,-0.461 -1.239,-1.159 -2.497,-2.216 -5.521,-3.741 -10.736,-5.484 -16.403,-5.484 -1.237,-0 -2.522,0.071 -3.923,0.231 -4.801,0.55 -8.8,1.69 -10.722,2.237 -0.967,0.284 -1.263,0.366 -1.567,0.366 -0.58,-0 -1.079,-0.341 -1.273,-0.878 -0.194,-0.534 -0.027,-1.121 0.425,-1.507l0.024,-0.011c3.316,-2.784 9.489,-7.951 21.198,-10.256 2.027,-0.401 4.202,-0.605 6.454,-0.605 5.242,-0 10.67,1.086 16.125,3.219 7.436,2.899 12.521,6.625 16.602,9.62 2.199,1.609 4.105,3.007 5.755,3.771 0.421,0.2 0.637,0.255 0.746,0.265 0.074,-0.095 0.23,-0.365 0.474,-1.069 0.066,-0.185 0.529,-2.161 -2.806,-13.374 -1.931,-6.51 -4.264,-13.156 -5.479,-16.104 -2.356,-5.711 -1.778,-9.76 -1.051,-12.125 -1.999,0.735 -4.033,1.87 -6.174,3.446L161.758,98.711C160.694,99.506 159.599,100.404 158.426,101.454 151.517,107.64 146.344,110.864 143.035,111.04l-0.093,0.004 -0.093,-0.009c-2.912,-0.245 -7.324,-4.489 -9.133,-6.634 -0.373,-0.251 -0.8,-0.366 -1.366,-0.366 -0.564,-0 -1.202,0.116 -1.82,0.235C130.086,104.354 129.623,104.441 129.167,104.489 127.708,104.632 125.668,105.106 123.694,105.561 122.746,105.777 121.762,106.005 120.864,106.189 120.851,106.19 120.463,106.272 119.774,106.454 114.903,107.891 111.228,109.55 109.432,111.111 109.414,111.127 109.352,111.174 109.266,111.242 108.048,112.105 105.124,114.567 104.248,118.762L104.237,118.795C102.398,126.516 105.187,136.087 108.892,141.554 110.636,144.125 112.513,145.727 114.048,145.959 114.437,146.015 114.891,146.042 115.413,146.042"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m90.093,173.175c-1.252,-1.472 -1.783,-3.324 -1.574,-5.521 0.884,-10.642 -0.329,-13.215 -0.891,-13.829 -0.131,-0.144 -0.207,-0.144 -0.265,-0.144 -0.022,-0 -0.041,0.003 -0.064,0.003 -1.044,0.248 -8.066,5.002 -9.615,19.171 -0.749,6.845 0.561,15.63 1.679,20.974 0.897,-3.155 2.314,-6.624 5.057,-10.204 2.556,-3.326 5.345,-5.955 8.801,-8.253C92.143,174.93 90.991,174.235 90.093,173.175"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m94.906,156.389c-0.03,2.229 -0.326,4.36 -0.61,6.445 -0.151,1.119 -0.314,2.286 -0.434,3.46 -0.161,2.341 0.346,3.166 0.571,3.406 0.127,0.136 0.326,0.287 0.76,0.287 0.339,-0 0.741,-0.091 1.161,-0.268 4.202,-1.756 8.195,-4.815 10.115,-6.515C103.522,161.892 98.995,159.058 94.906,156.389"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m154.002,81.595c-0.031,0.074 -0.065,0.148 -0.101,0.216 -0.821,2.403 0.306,5.664 2.419,6.898 0.561,0.327 1.106,0.526 1.624,0.596 0.072,0.006 0.148,0.009 0.219,0.009 1.645,-0 2.971,-1.199 3.961,-3.561C162.752,83.959 162.836,81.827 162.37,79.904 162.003,78.409 161.057,76.627 160.453,75.738 159.332,76.509 157.111,78.207 155.585,79.553 154.518,80.582 154.136,81.229 154.002,81.595"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="M148.97,77.699C153.957,73.194 156.988,65.754 158.253,61.334 153.915,65.513 148.633,67.758 145.25,69.198 144.084,69.695 143.08,70.124 142.477,70.476 142.224,70.623 141.965,70.77 141.708,70.919 139.654,72.109 136.55,73.905 136.1,75.011l-0.012,0.036 -0.012,0.034c-1.406,2.956 -2.199,7.401 -2.457,9.95 3.266,-1.99 6.625,-3.322 9.416,-4.42C145.628,79.585 147.863,78.703 148.97,77.699"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m164.464,51.921c-0.84,5.539 -2.205,10.799 -4.751,16.347 2.781,-3.144 4.396,-6.568 4.941,-10.401C164.886,56.275 165.097,54.756 164.464,51.921"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="M148.749,142.639C148.718,142.598 148.684,142.56 148.658,142.519 148.523,142.539 148.307,142.584 147.972,142.683l-0.14,0.04c-1.726,0.644 -4.899,1.708 -8.556,2.946 -4.396,1.479 -9.365,3.154 -13.526,4.649 -5.297,1.975 -7.021,2.755 -7.557,3.024 -0.098,0.266 -0.203,0.599 -0.327,0.965 -1.254,3.816 -4.125,12.541 -18.276,18.653 2.928,2.956 9.289,8.27 21.809,8.27 1.082,-0 2.21,-0.036 3.341,-0.12 9.451,-0.666 18.342,-4.855 25.026,-11.78 6.087,-6.291 9.538,-14.136 9.585,-21.7C157.876,147.509 155.367,147.135 153.043,146.033 153.014,146.02 150.361,144.745 148.749,142.639"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m189.478,117.853c-0.523,9.749 -2.122,18.424 -4.744,25.8 -2.128,5.988 -4.94,11.134 -8.356,15.316 -5.676,6.931 -11.555,9.256 -12.804,9.304 -0.866,-0 -1.313,-0.309 -3.046,-1.528 -0.17,-0.114 -0.37,-0.252 -0.581,-0.4 -3.313,5.953 -8.505,11.097 -15.065,14.959 -7.079,4.144 -15.297,6.423 -23.157,6.423 -9.078,-0 -17.13,-2.924 -23.341,-8.456 -7.467,4.799 -12.31,9.074 -16.267,27.005l-1.363,6.17 -2.971,-5.564c-0.424,-0.786 -1.929,-3.731 -3.332,-8.887 -1.934,-7.104 -2.86,-15.181 -2.758,-24.01 0.117,-10.049 3.154,-16.526 5.68,-20.186 2.98,-4.314 6.837,-6.994 10.076,-6.994 0.216,-0 0.428,0.006 0.616,0.035 5.159,0.575 8.435,2.75 14.396,6.686l1.899,1.252c2.059,1.344 4.481,2.7 5.259,2.989 0.54,-0.284 1.749,-2.3 2.155,-5.271l0.069,-0.451c0.005,-0.045 0.009,-0.091 0.014,-0.131 -0.036,-0.02 -0.065,-0.029 -0.094,-0.041 -4.008,-1.375 -9.539,-7.7 -12.364,-17.134 -2.684,-9.382 -2.129,-17.185 1.644,-23.193 6.12,-9.736 19.198,-11.974 23.466,-12.702 1.331,-0.266 2.716,-0.511 4.041,-0.717 0.255,-0.061 0.469,-0.121 0.642,-0.168 -0.031,-0.126 -0.071,-0.265 -0.114,-0.43 -0.108,-0.417 -0.23,-0.891 -0.354,-1.447 -1.345,-6.035 -0.664,-11.069 0.181,-15.193 0.928,-4.546 1.489,-7.287 3.747,-9.936 3.029,-4.165 8.319,-5.936 11.479,-6.991 0.746,-0.249 1.511,-0.509 1.894,-0.689 8.988,-4.31 11.82,-8.739 12.615,-11.694 0.656,-2.451 1.699,-8.884 1.251,-13.335 -0.085,-0.805 0.129,-1.521 0.621,-2.065 0.45,-0.505 1.101,-0.794 1.778,-0.794 1.515,-0 2.82,-0 7.511,14.598 2.481,7.698 0.645,14.903 -5.45,21.424l-0.226,0.231c0.024,0.044 0.049,0.09 0.08,0.144 2.57,4.236 3.963,9.54 3.553,13.51 -0.099,0.906 -0.265,1.775 -0.419,2.549 -0.003,0.01 -0.003,0.016 -0.004,0.029 0.516,-0.032 1.119,-0.055 1.775,-0.055 3.052,-0 7.435,0.474 10.989,2.735 2.135,1.352 4.845,3.439 6.835,7.615C189.223,102.942 190.076,109.575 189.478,117.853m4.77,-23.191c-2.916,-6.1 -6.989,-9.177 -9.793,-10.96 -2.355,-1.494 -5.064,-2.584 -8.077,-3.24l-0.676,-0.146 -0.111,-0.689c-0.339,-2.119 -0.918,-4.275 -1.715,-6.406l-0.185,-0.49 0.292,-0.434c5.095,-7.594 6.323,-16.17 3.54,-24.802 -2.191,-6.824 -3.895,-11.211 -5.341,-13.799 -2.954,-5.305 -7.006,-6.417 -9.891,-6.417 -2.964,-0 -5.8,1.261 -7.789,3.457 -2.043,2.254 -2.993,5.207 -2.678,8.31 0.316,3.134 -0.494,8.516 -1.014,10.439 -0.04,0.117 -0.975,2.929 -8.201,6.428 -0.162,0.056 -0.512,0.179 -1.053,0.359 -3.729,1.246 -10.666,3.571 -15.258,9.64 -3.465,4.205 -4.332,8.441 -5.338,13.346 -0.586,2.865 -1.236,6.744 -1.079,11.344l0.026,0.841 -0.824,0.188c-11.646,2.585 -20.025,7.835 -24.909,15.605 -5.054,8.04 -5.919,18.055 -2.543,29.853 0.063,0.204 0.126,0.407 0.189,0.615l0.527,1.608 -1.665,-0.286c-0.561,-0.101 -1.135,-0.18 -1.729,-0.241 -0.493,-0.06 -1.001,-0.082 -1.509,-0.082 -5.633,-0 -11.663,3.585 -16.128,9.592 -3.451,4.641 -7.588,12.849 -7.735,25.601 -0.114,9.573 0.906,18.401 3.038,26.228 1.581,5.795 3.326,9.329 4.004,10.577l13.306,24.94 6.096,-27.619c2.454,-11.09 4.864,-15.262 7.725,-18.111l0.561,-0.563 0.679,0.411c6.605,3.977 14.466,6.084 22.73,6.084 9.286,-0 18.965,-2.682 27.259,-7.551 5.38,-3.16 9.974,-7.036 13.649,-11.531l0.45,-0.369 0.85,-0.02c2.156,-0.068 5.16,-1.164 8.222,-3.004 2.6,-1.555 6.543,-4.428 10.501,-9.262 3.997,-4.884 7.274,-10.854 9.716,-17.734 2.876,-8.073 4.625,-17.489 5.204,-28.004 0.689,-9.668 -0.434,-17.641 -3.327,-23.704"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m180.026,98.414c-1.67,-2.596 -3.771,-4.206 -5.475,-4.206 -0.313,-0 -0.613,0.051 -0.895,0.161 -0.911,0.361 -2.356,4.532 -1.714,7.566 0.434,2.066 2.938,9.04 4.151,12.394 0.456,1.281 0.68,1.91 0.754,2.142 0.064,0.183 0.145,0.448 0.256,0.774 0.97,2.971 3.467,10.586 4.206,16.761 1.549,-6.579 2.424,-14.512 2.085,-23.997C183.235,105.662 182.04,101.538 180.026,98.414"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="M168.088,142.604C169.896,142.111 171.33,141.705 172.398,141.395 170.213,139.874 167.689,137.979 164.247,135.304c-8.418,-6.546 -17.449,-9.87 -26.839,-9.87 -5.135,-0 -9.611,0.991 -13.156,2.186 0.882,-0.05 1.779,-0.079 2.7,-0.079 1.1,-0 2.247,0.04 3.411,0.119 3.652,0.246 13.061,1.901 21.565,12.047 1.714,2.039 3.559,3.73 8.794,3.73 1.873,-0 4.051,-0.207 6.662,-0.645C167.544,142.751 167.793,142.678 168.088,142.604"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
<path
android:pathData="m164.3,147.583c-0.122,1.563 -0.376,4.509 -0.782,6.76 -0.495,2.719 -1.31,5.02 -1.791,6.226 0.85,0.786 1.694,1.553 2.247,2.043 2.214,-1.447 9.47,-6.96 14.483,-19.474C176.847,144.229 174.59,145.178 171.671,146.018 168.701,146.861 165.82,147.357 164.3,147.583"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
</group>
</vector>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/ic_jitsi_logosvg"/>
</RelativeLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#17A0DB</color>
<color name="colorPrimaryDark">#1081B2</color>
</resources>

View File

@@ -1,3 +1,5 @@
<resources>
<string name="app_name">Jitsi Meet</string>
<string name="restriction_server_url_description">URL of Jitsi Meet server instance to connect to</string>
<string name="restriction_server_url_title">Server URL</string>
</resources>

View File

@@ -2,6 +2,6 @@
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:navigationBarColor">#1081B2</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
</style>
</resources>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Server URL configuration -->
<restriction
android:defaultValue="https://meet.jit.si"
android:description="@string/restriction_server_url_description"
android:key="SERVER_URL"
android:restrictionType="string"
android:title="@string/restriction_server_url_title"/>
</restrictions>

View File

@@ -1,6 +1,12 @@
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
</domain-config>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
</domain-config>
</network-security-config>

View File

@@ -1,4 +1,5 @@
import groovy.json.JsonSlurper
import org.gradle.util.VersionNumber
// Top-level build file where you can add configuration options common to all
// sub-projects/modules.
@@ -7,20 +8,38 @@ buildscript {
repositories {
google()
jcenter()
repositories {
maven { url 'https://maven.fabric.io/public' }
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.google.gms:google-services:4.2.0'
classpath 'io.fabric.tools:gradle:1.27.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files.
classpath 'com.android.tools.build:gradle:4.1.2'
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
}
}
ext {
buildToolsVersion = "30.0.3"
compileSdkVersion = 31
minSdkVersion = 23
targetSdkVersion = 31
supportLibVersion = "28.0.0"
// The Maven artifact groupdId of the third-party react-native modules which
// Jitsi Meet SDK for Android depends on and which are not available in
// third-party Maven repositories so we have to deploy to a Maven repository
// of ours.
moduleGroupId = 'com.facebook.react'
// Maven repo where artifacts will be published
mavenRepo = System.env.MVN_REPO ?: ""
mavenUser = System.env.MVN_USER ?: ""
mavenPassword = System.env.MVN_PASSWORD ?: ""
// Libre build
libreBuild = (System.env.LIBRE_BUILD ?: "false").toBoolean()
googleServicesEnabled = project.file('app/google-services.json').exists() && !libreBuild
}
allprojects {
repositories {
google()
@@ -91,7 +110,7 @@ allprojects {
project.version = "${json.version}-jitsi-${versionQualifierNumber}"
task androidSourcesJar(type: Jar) {
task jitsiAndroidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.source
}
@@ -105,7 +124,7 @@ allprojects {
artifact("${project.buildDir}/outputs/aar/${project.name}-release.aar") {
extension "aar"
}
artifact(androidSourcesJar)
artifact(jitsiAndroidSourcesJar)
pom.withXml {
def pomXml = asNode()
pomXml.appendNode('name', project.name)
@@ -143,72 +162,6 @@ allprojects {
}
}
ext {
buildToolsVersion = "28.0.3"
compileSdkVersion = 28
minSdkVersion = 21
targetSdkVersion = 28
supportLibVersion = "28.0.0"
// The Maven artifact groupdId of the third-party react-native modules which
// Jitsi Meet SDK for Android depends on and which are not available in
// third-party Maven repositories so we have to deploy to a Maven repository
// of ours.
moduleGroupId = 'com.facebook.react'
// Maven repo where artifacts will be published
mavenRepo = System.env.MVN_REPO ?: ""
mavenUser = System.env.MVN_USER ?: ""
mavenPassword = System.env.MVN_PASSWORD ?: ""
// Libre build
libreBuild = (System.env.LIBRE_BUILD ?: "false").toBoolean()
}
// If Android SDK is not installed, accept its license so that it
// is automatically downloaded.
afterEvaluate { project ->
// Either the environment variable ANDROID_HOME or the property sdk.dir in
// local.properties identifies where Android SDK is installed.
def androidHome = System.env.ANDROID_HOME
if (!androidHome) {
// ANDROID_HOME is not set. Is sdk.dir set?
def file = file("${project.rootDir}/local.properties")
def props = new Properties()
if (file.canRead()) {
file.withInputStream {
props.load(it)
androidHome = props.'sdk.dir'
}
}
if (!androidHome && (!file.exists() || file.canWrite())) {
// Neither ANDROID_HOME nor sdk.dir is set. Set sdk.dir (because
// environment variables cannot be set).
props.'sdk.dir' = "${project.buildDir}/android-sdk".toString()
file.withOutputStream {
props.store(it, null)
androidHome = props.'sdk.dir'
}
}
}
// If the license is not accepted, accept it so that automatic downloading
// kicks in.
// The license hash can be taken from the accepted licenses, by doing this
// on your local machine the file is
// ${androidHome}/licenses/android-sdk-license
if (androidHome) {
def dir = file("${androidHome}/licenses")
dir.mkdirs()
def file = file("${dir.path}/android-sdk-license")
if (!file.exists()) {
file.withWriter {
def hash = 'd56f5187479451eabf01fb78af6dfcb131a6481e'
it.write(hash, 0, hash.length())
}
}
}
}
// Force the version of the Android build tools we have chosen on all
// subprojects. The forcing was introduced for react-native and the third-party
// modules that we utilize such as react-native-background-timer.

View File

@@ -24,7 +24,7 @@ platform :android do
# Upload built artifact to the Closed Beta track
upload_to_play_store(
track: "Closed Beta",
track: "beta",
json_key: ENV["JITSI_JSON_KEY_FILE"],
skip_upload_metadata: true,
skip_upload_images: true,

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -10,15 +10,21 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# This one fixes a weird WebRTC runtime problem on some devices.
# https://github.com/jitsi/jitsi-meet/issues/7911#issuecomment-714323255
android.enableDexingArtifactTransform.desugaring=false
android.useAndroidX=true
android.enableJetifier=true
android.bundle.enableUncompressedNativeLibs=false
appVersion=19.4.0
sdkVersion=2.4.0
appVersion=21.5.0
sdkVersion=4.0.0

View File

@@ -1,6 +1,6 @@
#Fri Mar 08 13:36:51 CET 2019
#Wed Sep 23 11:48:00 EEST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip

View File

@@ -9,8 +9,8 @@ THE_MVN_REPO=${MVN_REPO:-${1:-$DEFAULT_MVN_REPO}}
MVN_HTTP=0
DEFAULT_SDK_VERSION=$(grep sdkVersion ${THIS_DIR}/../gradle.properties | cut -d"=" -f2)
SDK_VERSION=${OVERRIDE_SDK_VERSION:-${DEFAULT_SDK_VERSION}}
RN_VERSION=$(jq -r '.dependencies."react-native"' ${THIS_DIR}/../../package.json)
JSC_VERSION="r"$(jq -r '.dependencies."jsc-android"' ${THIS_DIR}/../../node_modules/react-native/package.json | cut -d . -f 1)
RN_VERSION=$(jq -r '.version' ${THIS_DIR}/../../node_modules/react-native/package.json)
JSC_VERSION="r"$(jq -r '.dependencies."jsc-android"' ${THIS_DIR}/../../node_modules/react-native/package.json | cut -d . -f 1 | cut -c 2-)
DO_GIT_TAG=${GIT_TAG:-0}
if [[ $THE_MVN_REPO == http* ]]; then
@@ -89,7 +89,9 @@ fi
# Now build and publish the Jitsi Meet SDK and its dependencies
echo "Building and publishing the Jitsi Meet SDK"
pushd ${THIS_DIR}/../
./gradlew clean assembleRelease publish
./gradlew clean
./gradlew assembleRelease
./gradlew publish
popd
if [[ $DO_GIT_TAG == 1 ]]; then

View File

@@ -0,0 +1,5 @@
#!/bin/bash
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
exec ${THIS_DIR}/../../node_modules/react-native/scripts/launchPackager.command --reset-cache

View File

@@ -8,7 +8,7 @@ THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOUR
export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${THIS_DIR}/../../node_modules/react-native/scripts/.packager.env"
adb reverse tcp:8081 tcp:8081
adb reverse tcp:$RCT_METRO_PORT tcp:$RCT_METRO_PORT
if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
if ! curl -s "http://localhost:${RCT_METRO_PORT}/status" | grep -q "packager-status:running" ; then
@@ -16,11 +16,10 @@ if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
exit 2
fi
else
CMD="${THIS_DIR}/../../node_modules/react-native/scripts/launchPackager.command"
CMD="$THIS_DIR/run-packager-helper.command"
if [[ `uname` == "Darwin" ]]; then
open -g "${CMD}" || echo "Can't start packager automatically"
else
xdg-open "${CMD}" || echo "Can't start packager automatically"
fi
fi

View File

@@ -12,21 +12,19 @@ android {
buildTypes {
debug {
buildConfigField "boolean", "LIBRE_BUILD", "${rootProject.ext.libreBuild}"
buildConfigField "boolean", "GOOGLE_SERVICES_ENABLED", "${rootProject.ext.googleServicesEnabled}"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "boolean", "LIBRE_BUILD", "${rootProject.ext.libreBuild}"
buildConfigField "boolean", "GOOGLE_SERVICES_ENABLED", "${rootProject.ext.googleServicesEnabled}"
}
}
sourceSets {
main {
java {
if (rootProject.ext.libreBuild) {
srcDir "src"
exclude "**/AmplitudeModule.java"
}
exclude "test/"
}
}
@@ -36,34 +34,55 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.fragment:fragment:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.fragment:fragment:1.2.5'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
//noinspection GradleDynamicVersion
api 'com.facebook.react:react-native:+'
//noinspection GradleDynamicVersion
implementation 'org.webkit:android-jsc:+'
implementation 'com.dropbox.core:dropbox-core-sdk:3.0.8'
implementation 'com.dropbox.core:dropbox-core-sdk:4.0.1'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation 'com.squareup.duktape:duktape-android:1.3.0'
implementation 'com.google.code.gson:gson:2.8.6'
implementation "androidx.startup:startup-runtime:1.1.0"
if (!rootProject.ext.libreBuild) {
implementation 'com.amplitude:android-sdk:2.14.1'
if (rootProject.ext.libreBuild) {
implementation(project(':react-native-device-info')) {
exclude group: 'com.google.firebase'
exclude group: 'com.google.android.gms'
exclude group: 'com.android.installreferrer'
}
} else {
implementation project(':react-native-amplitude')
implementation project(':react-native-device-info')
implementation(project(":react-native-google-signin")) {
exclude group: 'com.google.android.gms'
exclude group: 'androidx'
}
}
implementation project(':react-native-async-storage')
implementation project(':react-native-background-timer')
implementation project(':react-native-calendar-events')
implementation project(':react-native-community-async-storage')
implementation project(':react-native-community_netinfo')
implementation project(':react-native-default-preference')
implementation project(':react-native-gesture-handler')
implementation project(':react-native-immersive')
implementation project(':react-native-keep-awake')
implementation project(':react-native-linear-gradient')
implementation project(':react-native-masked-view_masked-view')
implementation project(':react-native-performance')
implementation project(':react-native-reanimated')
implementation project(':react-native-safe-area-context')
implementation project(':react-native-screens')
implementation project(':react-native-slider')
implementation project(':react-native-sound')
implementation project(':react-native-splash-screen')
implementation project(':react-native-svg')
implementation project(':react-native-video')
implementation project(':react-native-webrtc')
implementation project(':react-native-webview')
@@ -139,21 +158,14 @@ android.libraryVariants.all { def variant ->
mergeResourcesTask.dependsOn(currentBundleTask)
mergeAssetsTask.doLast {
def assetsDir = mergeAssetsTask.outputDir
def assetsDir = mergeAssetsTask.outputDir.get()
// Bundle sounds
//
copy {
from("${projectDir}/../../sounds/incomingMessage.wav")
from("${projectDir}/../../sounds/joined.wav")
from("${projectDir}/../../sounds/left.wav")
from("${projectDir}/../../sounds/liveStreamingOn.mp3")
from("${projectDir}/../../sounds/liveStreamingOff.mp3")
from("${projectDir}/../../sounds/outgoingRinging.wav")
from("${projectDir}/../../sounds/outgoingStart.wav")
from("${projectDir}/../../sounds/recordingOn.mp3")
from("${projectDir}/../../sounds/recordingOff.mp3")
from("${projectDir}/../../sounds/rejected.wav")
from("${projectDir}/../../sounds")
include("*.wav")
include("*.mp3")
into("${assetsDir}/sounds")
}
@@ -173,7 +185,7 @@ android.libraryVariants.all { def variant ->
if (currentBundleTask.enabled) {
copy {
from(resourcesDir)
into(mergeResourcesTask.outputDir)
into(mergeResourcesTask.outputDir.get())
}
}
}

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.jitsi.meet.sdk">
<!-- XXX ACCESS_NETWORK_STATE is required by WebRTC. -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -12,7 +13,7 @@
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature
android:glEsVersion="0x00020000"
@@ -34,19 +35,36 @@
android:launchMode="singleTask"
android:resizeableActivity="true"
android:supportsPictureInPicture="true"
android:windowSoftInputMode="adjustResize">
</activity>
android:windowSoftInputMode="adjustResize"/>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<service
android:name=".ConnectionService"
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="android.telecom.ConnectionService" />
</intent-filter>
</service>
<service android:name="org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService" />
<service
android:name="org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService"
android:foregroundServiceType="mediaProjection" />
<provider
android:name="com.reactnativecommunity.webview.RNCWebViewFileProvider"
android:authorities="${applicationId}.fileprovider"
android:enabled="false"
tools:replace="android:authorities">
</provider>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false">
<meta-data android:name="org.jitsi.meet.sdk.JitsiInitializer"
android:value="androidx.startup" />
</provider>
</application>
</manifest>

View File

@@ -1,102 +0,0 @@
/*
* Copyright @ 2019-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.amplitude.api.Amplitude;
import com.facebook.react.module.annotations.ReactModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Implements the react-native module for the Amplitude integration.
*/
@ReactModule(name = AmplitudeModule.NAME)
class AmplitudeModule
extends ReactContextBaseJavaModule {
public static final String NAME = "Amplitude";
public AmplitudeModule(ReactApplicationContext reactContext) {
super(reactContext);
}
/**
* Initializes the Amplitude SDK.
*
* @param instanceName The name of the Amplitude instance. Should
* be used only for multi-project logging.
* @param apiKey The API_KEY of the Amplitude project.
*/
@ReactMethod
public void init(String instanceName, String apiKey) {
Amplitude.getInstance(instanceName).initialize(getCurrentActivity(), apiKey);
}
/**
* Sets the user ID for an Amplitude instance.
*
* @param instanceName The name of the Amplitude instance.
* @param userId The new value for the user ID.
*/
@ReactMethod
public void setUserId(String instanceName, String userId) {
Amplitude.getInstance(instanceName).setUserId(userId);
}
/**
* Sets the user properties for an Amplitude instance.
*
* @param instanceName The name of the Amplitude instance.
* @param userProps JSON string with user properties to be set.
*/
@ReactMethod
public void setUserProperties(String instanceName, ReadableMap userProps) {
if (userProps != null) {
Amplitude.getInstance(instanceName).setUserProperties(
new JSONObject(userProps.toHashMap()));
}
}
/**
* Log an analytics event.
*
* @param instanceName The name of the Amplitude instance.
* @param eventType The event type.
* @param eventPropsString JSON string with the event properties.
*/
@ReactMethod
public void logEvent(String instanceName, String eventType, String eventPropsString) {
try {
JSONObject eventProps = new JSONObject(eventPropsString);
Amplitude.getInstance(instanceName).logEvent(eventType, eventProps);
} catch (JSONException e) {
JitsiMeetLogger.e(e, "Error logging event");
}
}
@Override
public String getName() {
return NAME;
}
}

View File

@@ -76,6 +76,7 @@ class AppInfoModule
"version",
packageInfo == null ? "" : packageInfo.versionName);
constants.put("LIBRE_BUILD", BuildConfig.LIBRE_BUILD);
constants.put("GOOGLE_SERVICES_ENABLED", BuildConfig.GOOGLE_SERVICES_ENABLED);
return constants;
}

View File

@@ -0,0 +1,183 @@
/*
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.content.Context;
import android.media.AudioManager;
import android.os.Build;
import android.telecom.CallAudioState;
import androidx.annotation.RequiresApi;
import java.util.HashSet;
import java.util.Set;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
/**
* {@link AudioModeModule.AudioDeviceHandlerInterface} module implementing device handling for
* Android versions >= O when ConnectionService is enabled.
*/
@RequiresApi(Build.VERSION_CODES.O)
class AudioDeviceHandlerConnectionService implements
AudioModeModule.AudioDeviceHandlerInterface,
RNConnectionService.CallAudioStateListener {
private final static String TAG = AudioDeviceHandlerConnectionService.class.getSimpleName();
/**
* {@link AudioManager} instance used to interact with the Android audio subsystem.
*/
private AudioManager audioManager;
/**
* Reference to the main {@code AudioModeModule}.
*/
private AudioModeModule module;
/**
* Converts any of the "DEVICE_" constants into the corresponding
* {@link android.telecom.CallAudioState} "ROUTE_" number.
*
* @param audioDevice one of the "DEVICE_" constants.
* @return a route number {@link android.telecom.CallAudioState#ROUTE_EARPIECE} if
* no match is found.
*/
private static int audioDeviceToRouteInt(String audioDevice) {
if (audioDevice == null) {
return CallAudioState.ROUTE_SPEAKER;
}
switch (audioDevice) {
case AudioModeModule.DEVICE_BLUETOOTH:
return CallAudioState.ROUTE_BLUETOOTH;
case AudioModeModule.DEVICE_EARPIECE:
return CallAudioState.ROUTE_EARPIECE;
case AudioModeModule.DEVICE_HEADPHONES:
return CallAudioState.ROUTE_WIRED_HEADSET;
case AudioModeModule.DEVICE_SPEAKER:
return CallAudioState.ROUTE_SPEAKER;
default:
JitsiMeetLogger.e(TAG + " Unsupported device name: " + audioDevice);
return CallAudioState.ROUTE_SPEAKER;
}
}
/**
* Populates given route mask into the "DEVICE_" list.
*
* @param supportedRouteMask an integer coming from
* {@link android.telecom.CallAudioState#getSupportedRouteMask()}.
* @return a list of device names.
*/
private static Set<String> routesToDeviceNames(int supportedRouteMask) {
Set<String> devices = new HashSet<>();
if ((supportedRouteMask & CallAudioState.ROUTE_EARPIECE) == CallAudioState.ROUTE_EARPIECE) {
devices.add(AudioModeModule.DEVICE_EARPIECE);
}
if ((supportedRouteMask & CallAudioState.ROUTE_BLUETOOTH) == CallAudioState.ROUTE_BLUETOOTH) {
devices.add(AudioModeModule.DEVICE_BLUETOOTH);
}
if ((supportedRouteMask & CallAudioState.ROUTE_SPEAKER) == CallAudioState.ROUTE_SPEAKER) {
devices.add(AudioModeModule.DEVICE_SPEAKER);
}
if ((supportedRouteMask & CallAudioState.ROUTE_WIRED_HEADSET) == CallAudioState.ROUTE_WIRED_HEADSET) {
devices.add(AudioModeModule.DEVICE_HEADPHONES);
}
return devices;
}
/**
* Used to store the most recently reported audio devices.
* Makes it easier to compare for a change, because the devices are stored
* as a mask in the {@link android.telecom.CallAudioState}. The mask is populated into
* the {@code availableDevices} on each update.
*/
private int supportedRouteMask = -1;
public AudioDeviceHandlerConnectionService(AudioManager audioManager) {
this.audioManager = audioManager;
}
@Override
public void onCallAudioStateChange(final CallAudioState state) {
module.runInAudioThread(new Runnable() {
@Override
public void run() {
boolean audioRouteChanged
= audioDeviceToRouteInt(module.getSelectedDevice()) != state.getRoute();
int newSupportedRoutes = state.getSupportedRouteMask();
boolean audioDevicesChanged = supportedRouteMask != newSupportedRoutes;
if (audioDevicesChanged) {
supportedRouteMask = newSupportedRoutes;
Set<String> devices = routesToDeviceNames(supportedRouteMask);
module.replaceDevices(devices);
JitsiMeetLogger.i(TAG + " Available audio devices: " + devices.toString());
}
if (audioRouteChanged || audioDevicesChanged) {
module.resetSelectedDevice();
module.updateAudioRoute();
}
}
});
}
@Override
public void start(AudioModeModule audioModeModule) {
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
module = audioModeModule;
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
if (rcs != null) {
rcs.setCallAudioStateListener(this);
} else {
JitsiMeetLogger.w(TAG + " Couldn't set call audio state listener, module is null");
}
}
@Override
public void stop() {
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
if (rcs != null) {
rcs.setCallAudioStateListener(null);
} else {
JitsiMeetLogger.w(TAG + " Couldn't set call audio state listener, module is null");
}
}
public void setAudioRoute(String audioDevice) {
int newAudioRoute = audioDeviceToRouteInt(audioDevice);
RNConnectionService.setAudioRoute(newAudioRoute);
}
@Override
public boolean setMode(int mode) {
if (mode != AudioModeModule.DEFAULT) {
// This shouldn't be needed when using ConnectionService, but some devices have been
// observed not doing it.
try {
audioManager.setMicrophoneMute(false);
} catch (Throwable tr) {
JitsiMeetLogger.w(tr, TAG + " Failed to unmute the microphone");
}
}
return true;
}
}

View File

@@ -0,0 +1,246 @@
/*
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.media.AudioAttributes;
import android.media.AudioDeviceInfo;
import android.media.AudioFocusRequest;
import android.media.AudioManager;
import android.os.Build;
import java.util.HashSet;
import java.util.Set;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
/**
* {@link AudioModeModule.AudioDeviceHandlerInterface} module implementing device handling for
* all post-M Android versions. This handler can be used on any Android versions >= M, but by
* default it's only used on versions < O, since versions >= O use ConnectionService, but it
* can be disabled.
*/
class AudioDeviceHandlerGeneric implements
AudioModeModule.AudioDeviceHandlerInterface,
AudioManager.OnAudioFocusChangeListener {
private final static String TAG = AudioDeviceHandlerGeneric.class.getSimpleName();
/**
* Reference to the main {@code AudioModeModule}.
*/
private AudioModeModule module;
/**
* Constant defining a USB headset. Only available on API level >= 26.
* The value of: AudioDeviceInfo.TYPE_USB_HEADSET
*/
private static final int TYPE_USB_HEADSET = 22;
/**
* Indicator that we have lost audio focus.
*/
private boolean audioFocusLost = false;
/**
* {@link AudioManager} instance used to interact with the Android audio
* subsystem.
*/
private AudioManager audioManager;
/**
* {@link Runnable} for running audio device detection in the audio thread.
* This is only used on Android >= M.
*/
private final Runnable onAudioDeviceChangeRunner = new Runnable() {
@Override
public void run() {
Set<String> devices = new HashSet<>();
AudioDeviceInfo[] deviceInfos = audioManager.getDevices(AudioManager.GET_DEVICES_ALL);
for (AudioDeviceInfo info: deviceInfos) {
switch (info.getType()) {
case AudioDeviceInfo.TYPE_BLUETOOTH_SCO:
devices.add(AudioModeModule.DEVICE_BLUETOOTH);
break;
case AudioDeviceInfo.TYPE_BUILTIN_EARPIECE:
devices.add(AudioModeModule.DEVICE_EARPIECE);
break;
case AudioDeviceInfo.TYPE_BUILTIN_SPEAKER:
devices.add(AudioModeModule.DEVICE_SPEAKER);
break;
case AudioDeviceInfo.TYPE_WIRED_HEADPHONES:
case AudioDeviceInfo.TYPE_WIRED_HEADSET:
case TYPE_USB_HEADSET:
devices.add(AudioModeModule.DEVICE_HEADPHONES);
break;
}
}
module.replaceDevices(devices);
JitsiMeetLogger.i(TAG + " Available audio devices: " + devices.toString());
module.updateAudioRoute();
}
};
private final android.media.AudioDeviceCallback audioDeviceCallback =
new android.media.AudioDeviceCallback() {
@Override
public void onAudioDevicesAdded(
AudioDeviceInfo[] addedDevices) {
JitsiMeetLogger.d(TAG + " Audio devices added");
onAudioDeviceChange();
}
@Override
public void onAudioDevicesRemoved(
AudioDeviceInfo[] removedDevices) {
JitsiMeetLogger.d(TAG + " Audio devices removed");
onAudioDeviceChange();
}
};
public AudioDeviceHandlerGeneric(AudioManager audioManager) {
this.audioManager = audioManager;
}
/**
* Helper method to trigger an audio route update when devices change. It
* makes sure the operation is performed on the audio thread.
*/
private void onAudioDeviceChange() {
module.runInAudioThread(onAudioDeviceChangeRunner);
}
/**
* {@link AudioManager.OnAudioFocusChangeListener} interface method. Called
* when the audio focus of the system is updated.
*
* @param focusChange - The type of focus change.
*/
@Override
public void onAudioFocusChange(final int focusChange) {
module.runInAudioThread(new Runnable() {
@Override
public void run() {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN: {
JitsiMeetLogger.d(TAG + " Audio focus gained");
// Some other application potentially stole our audio focus
// temporarily. Restore our mode.
if (audioFocusLost) {
module.resetAudioRoute();
}
audioFocusLost = false;
break;
}
case AudioManager.AUDIOFOCUS_LOSS:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: {
JitsiMeetLogger.d(TAG + " Audio focus lost");
audioFocusLost = true;
break;
}
}
}
});
}
/**
* Helper method to set the output route to a Bluetooth device.
*
* @param enabled true if Bluetooth should use used, false otherwise.
*/
private void setBluetoothAudioRoute(boolean enabled) {
if (enabled) {
audioManager.startBluetoothSco();
audioManager.setBluetoothScoOn(true);
} else {
audioManager.setBluetoothScoOn(false);
audioManager.stopBluetoothSco();
}
}
@Override
public void start(AudioModeModule audioModeModule) {
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
module = audioModeModule;
// Setup runtime device change detection.
audioManager.registerAudioDeviceCallback(audioDeviceCallback, null);
// Do an initial detection.
onAudioDeviceChange();
}
@Override
public void stop() {
audioManager.unregisterAudioDeviceCallback(audioDeviceCallback);
}
@Override
public void setAudioRoute(String device) {
// Turn speaker on / off
audioManager.setSpeakerphoneOn(device.equals(AudioModeModule.DEVICE_SPEAKER));
// Turn bluetooth on / off
setBluetoothAudioRoute(device.equals(AudioModeModule.DEVICE_BLUETOOTH));
}
@Override
public boolean setMode(int mode) {
if (mode == AudioModeModule.DEFAULT) {
audioFocusLost = false;
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.abandonAudioFocus(this);
audioManager.setSpeakerphoneOn(false);
setBluetoothAudioRoute(false);
return true;
}
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setMicrophoneMute(false);
int gotFocus;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
gotFocus = audioManager.requestAudioFocus(new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
.setAudioAttributes(
new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
)
.setAcceptsDelayedFocusGain(true)
.setOnAudioFocusChangeListener(this)
.build()
);
} else {
gotFocus = audioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN);
}
if (gotFocus == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
JitsiMeetLogger.w(TAG + " Audio focus request failed");
return false;
}
return true;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,16 +16,10 @@
package org.jitsi.meet.sdk;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.os.Build;
import androidx.annotation.RequiresApi;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
@@ -61,9 +55,7 @@ import java.util.concurrent.Executors;
* {@code AudioModeModule.DEFAULT} mode should be used.
*/
@ReactModule(name = AudioModeModule.NAME)
class AudioModeModule extends ReactContextBaseJavaModule
implements AudioManager.OnAudioFocusChangeListener {
class AudioModeModule extends ReactContextBaseJavaModule {
public static final String NAME = "AudioMode";
/**
@@ -75,161 +67,39 @@ class AudioModeModule extends ReactContextBaseJavaModule
* - VIDEO_CALL: Used for video calls. It will use the speaker by default,
* unless a wired or Bluetooth headset is connected.
*/
private static final int DEFAULT = 0;
private static final int AUDIO_CALL = 1;
private static final int VIDEO_CALL = 2;
/**
* Constant defining the action for plugging in a headset. This is used on
* our device detection system for API < 23.
*/
private static final String ACTION_HEADSET_PLUG
= (Build.VERSION.SDK_INT >= 21)
? AudioManager.ACTION_HEADSET_PLUG
: Intent.ACTION_HEADSET_PLUG;
/**
* Constant defining a USB headset. Only available on API level >= 26.
* The value of: AudioDeviceInfo.TYPE_USB_HEADSET
*/
private static final int TYPE_USB_HEADSET = 22;
static final int DEFAULT = 0;
static final int AUDIO_CALL = 1;
static final int VIDEO_CALL = 2;
/**
* The {@code Log} tag {@code AudioModeModule} is to log messages with.
*/
static final String TAG = NAME;
/**
* Converts any of the "DEVICE_" constants into the corresponding
* {@link android.telecom.CallAudioState} "ROUTE_" number.
*
* @param audioDevice one of the "DEVICE_" constants.
* @return a route number {@link android.telecom.CallAudioState#ROUTE_EARPIECE} if
* no match is found.
*/
@RequiresApi(api = Build.VERSION_CODES.M)
private static int audioDeviceToRouteInt(String audioDevice) {
if (audioDevice == null) {
return android.telecom.CallAudioState.ROUTE_EARPIECE;
}
switch (audioDevice) {
case DEVICE_BLUETOOTH:
return android.telecom.CallAudioState.ROUTE_BLUETOOTH;
case DEVICE_EARPIECE:
return android.telecom.CallAudioState.ROUTE_EARPIECE;
case DEVICE_HEADPHONES:
return android.telecom.CallAudioState.ROUTE_WIRED_HEADSET;
case DEVICE_SPEAKER:
return android.telecom.CallAudioState.ROUTE_SPEAKER;
default:
JitsiMeetLogger.e(TAG + " Unsupported device name: " + audioDevice);
return android.telecom.CallAudioState.ROUTE_EARPIECE;
}
}
/**
* Populates given route mask into the "DEVICE_" list.
*
* @param supportedRouteMask an integer coming from
* {@link android.telecom.CallAudioState#getSupportedRouteMask()}.
* @return a list of device names.
*/
@RequiresApi(api = Build.VERSION_CODES.M)
private static Set<String> routesToDeviceNames(int supportedRouteMask) {
Set<String> devices = new HashSet<>();
if ((supportedRouteMask & android.telecom.CallAudioState.ROUTE_EARPIECE)
== android.telecom.CallAudioState.ROUTE_EARPIECE) {
devices.add(DEVICE_EARPIECE);
}
if ((supportedRouteMask & android.telecom.CallAudioState.ROUTE_BLUETOOTH)
== android.telecom.CallAudioState.ROUTE_BLUETOOTH) {
devices.add(DEVICE_BLUETOOTH);
}
if ((supportedRouteMask & android.telecom.CallAudioState.ROUTE_SPEAKER)
== android.telecom.CallAudioState.ROUTE_SPEAKER) {
devices.add(DEVICE_SPEAKER);
}
if ((supportedRouteMask & android.telecom.CallAudioState.ROUTE_WIRED_HEADSET)
== android.telecom.CallAudioState.ROUTE_WIRED_HEADSET) {
devices.add(DEVICE_HEADPHONES);
}
return devices;
}
/**
* Whether or not the ConnectionService is used for selecting audio devices.
*/
static boolean useConnectionService() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
}
/**
* Indicator that we have lost audio focus.
*/
private boolean audioFocusLost = false;
private static final boolean supportsConnectionService = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
private static boolean useConnectionService_ = supportsConnectionService;
static boolean useConnectionService() {
return supportsConnectionService && useConnectionService_;
}
/**
* {@link AudioManager} instance used to interact with the Android audio
* subsystem.
*/
private final AudioManager audioManager;
private AudioManager audioManager;
/**
* {@link BluetoothHeadsetMonitor} for detecting Bluetooth device changes in
* old (< M) Android versions.
*/
private BluetoothHeadsetMonitor bluetoothHeadsetMonitor;
private AudioDeviceHandlerInterface audioDeviceHandler;
/**
* {@link ExecutorService} for running all audio operations on a dedicated
* thread.
*/
private static final ExecutorService executor
= Executors.newSingleThreadExecutor();
/**
* {@link Runnable} for running audio device detection the main thread.
* This is only used on Android >= M.
*/
private final Runnable onAudioDeviceChangeRunner = new Runnable() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public void run() {
Set<String> devices = new HashSet<>();
AudioDeviceInfo[] deviceInfos
= audioManager.getDevices(AudioManager.GET_DEVICES_ALL);
for (AudioDeviceInfo info: deviceInfos) {
switch (info.getType()) {
case AudioDeviceInfo.TYPE_BLUETOOTH_SCO:
devices.add(DEVICE_BLUETOOTH);
break;
case AudioDeviceInfo.TYPE_BUILTIN_EARPIECE:
devices.add(DEVICE_EARPIECE);
break;
case AudioDeviceInfo.TYPE_BUILTIN_SPEAKER:
devices.add(DEVICE_SPEAKER);
break;
case AudioDeviceInfo.TYPE_WIRED_HEADPHONES:
case AudioDeviceInfo.TYPE_WIRED_HEADSET:
case TYPE_USB_HEADSET:
devices.add(DEVICE_HEADPHONES);
break;
}
}
availableDevices = devices;
JitsiMeetLogger.i(TAG + " Available audio devices: " +
availableDevices.toString());
// Reset user selection
userSelectedDevice = null;
if (mode != -1) {
updateAudioRoute(mode);
}
}
};
private static final ExecutorService executor = Executors.newSingleThreadExecutor();
/**
* Audio mode currently in use.
@@ -239,10 +109,10 @@ class AudioModeModule extends ReactContextBaseJavaModule
/**
* Audio device types.
*/
private static final String DEVICE_BLUETOOTH = "BLUETOOTH";
private static final String DEVICE_EARPIECE = "EARPIECE";
private static final String DEVICE_HEADPHONES = "HEADPHONES";
private static final String DEVICE_SPEAKER = "SPEAKER";
static final String DEVICE_BLUETOOTH = "BLUETOOTH";
static final String DEVICE_EARPIECE = "EARPIECE";
static final String DEVICE_HEADPHONES = "HEADPHONES";
static final String DEVICE_SPEAKER = "SPEAKER";
/**
* Device change event.
@@ -259,15 +129,6 @@ class AudioModeModule extends ReactContextBaseJavaModule
*/
private String selectedDevice;
/**
* Used on API >= 26 to store the most recently reported audio devices.
* Makes it easier to compare for a change, because the devices are stored
* as a mask in the {@link android.telecom.CallAudioState}. The mask is populated into
* the {@link #availableDevices} on each update.
*/
@RequiresApi(api = Build.VERSION_CODES.O)
private int supportedRouteMask;
/**
* User selected device. When null the default is used depending on the
* mode.
@@ -284,30 +145,7 @@ class AudioModeModule extends ReactContextBaseJavaModule
public AudioModeModule(ReactApplicationContext reactContext) {
super(reactContext);
audioManager
= (AudioManager)
reactContext.getSystemService(Context.AUDIO_SERVICE);
// Starting Oreo the ConnectionImpl from ConnectionService is used to
// detect the available devices.
if (!useConnectionService()) {
// Setup runtime device change detection.
setupAudioRouteChangeDetection();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Do an initial detection on Android >= M.
onAudioDeviceChange();
} else {
// On Android < M, detect if we have an earpiece.
PackageManager pm = reactContext.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
availableDevices.add(DEVICE_EARPIECE);
}
// Always assume there is a speaker.
availableDevices.add(DEVICE_SPEAKER);
}
}
audioManager = (AudioManager)reactContext.getSystemService(Context.AUDIO_SERVICE);
}
/**
@@ -364,132 +202,39 @@ class AudioModeModule extends ReactContextBaseJavaModule
}
/**
* Helper method to trigger an audio route update when devices change. It
* makes sure the operation is performed on the main thread.
*
* Only used on Android >= M.
*/
void onAudioDeviceChange() {
runInAudioThread(onAudioDeviceChangeRunner);
}
/**
* Helper method to trigger an audio route update when Bluetooth devices are
* connected / disconnected.
*
* Only used on Android < M. Runs on the main thread.
*/
void onBluetoothDeviceChange() {
if (bluetoothHeadsetMonitor != null && bluetoothHeadsetMonitor.isHeadsetAvailable()) {
availableDevices.add(DEVICE_BLUETOOTH);
} else {
availableDevices.remove(DEVICE_BLUETOOTH);
}
if (mode != -1) {
updateAudioRoute(mode);
}
}
/**
* Helper method to trigger an audio route update when a headset is plugged
* or unplugged.
*
* Only used on Android < M.
*/
void onHeadsetDeviceChange() {
runInAudioThread(new Runnable() {
@Override
public void run() {
// XXX: isWiredHeadsetOn is not deprecated when used just for
// knowing if there is a wired headset connected, regardless of
// audio being routed to it.
//noinspection deprecation
if (audioManager.isWiredHeadsetOn()) {
availableDevices.add(DEVICE_HEADPHONES);
} else {
availableDevices.remove(DEVICE_HEADPHONES);
}
if (mode != -1) {
updateAudioRoute(mode);
}
}
});
}
@RequiresApi(api = Build.VERSION_CODES.O)
void onCallAudioStateChange(Object callAudioState_) {
final android.telecom.CallAudioState callAudioState
= (android.telecom.CallAudioState)callAudioState_;
runInAudioThread(new Runnable() {
@Override
public void run() {
int newSupportedRoutes = callAudioState.getSupportedRouteMask();
boolean audioDevicesChanged
= supportedRouteMask != newSupportedRoutes;
if (audioDevicesChanged) {
supportedRouteMask = newSupportedRoutes;
availableDevices = routesToDeviceNames(supportedRouteMask);
JitsiMeetLogger.i(TAG + " Available audio devices: "
+ availableDevices.toString());
}
boolean audioRouteChanged
= audioDeviceToRouteInt(selectedDevice)
!= callAudioState.getRoute();
if (audioRouteChanged || audioDevicesChanged) {
// Reset user selection
userSelectedDevice = null;
// If the OS changes the Audio Route or Devices we could have lost
// the selected audio device
selectedDevice = null;
if (mode != -1) {
updateAudioRoute(mode);
}
}
}
});
}
/**
* {@link AudioManager.OnAudioFocusChangeListener} interface method. Called
* when the audio focus of the system is updated.
*
* @param focusChange - The type of focus change.
* Initializes the audio device handler module. This function is called *after* all Catalyst
* modules have been created, and that's why we use it, because {@link AudioDeviceHandlerConnectionService}
* needs access to another Catalyst module, so doing this in the constructor would be too early.
*/
@Override
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN: {
JitsiMeetLogger.d(TAG + " Audio focus gained");
// Some other application potentially stole our audio focus
// temporarily. Restore our mode.
if (audioFocusLost) {
updateAudioRoute(mode);
public void initialize() {
runInAudioThread(new Runnable() {
@Override
public void run() {
setAudioDeviceHandler();
}
audioFocusLost = false;
break;
}
case AudioManager.AUDIOFOCUS_LOSS:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: {
JitsiMeetLogger.d(TAG + " Audio focus lost");
audioFocusLost = true;
break;
});
}
private void setAudioDeviceHandler() {
if (audioDeviceHandler != null) {
audioDeviceHandler.stop();
}
if (useConnectionService()) {
audioDeviceHandler = new AudioDeviceHandlerConnectionService(audioManager);
} else {
audioDeviceHandler = new AudioDeviceHandlerGeneric(audioManager);
}
audioDeviceHandler.start(this);
}
/**
* Helper function to run operations on a dedicated thread.
* @param runnable
*/
public void runInAudioThread(Runnable runnable) {
void runInAudioThread(Runnable runnable) {
executor.execute(runnable);
}
@@ -512,52 +257,12 @@ class AudioModeModule extends ReactContextBaseJavaModule
if (mode != -1) {
JitsiMeetLogger.i(TAG + " User selected device set to: " + device);
userSelectedDevice = device;
updateAudioRoute(mode);
updateAudioRoute(mode, false);
}
}
});
}
/**
* The API >= 26 way of adjusting the audio route.
*
* @param audioDevice one of the "DEVICE_" names to set as the audio route.
*/
@RequiresApi(api = Build.VERSION_CODES.O)
private void setAudioRoute(String audioDevice) {
int newAudioRoute = audioDeviceToRouteInt(audioDevice);
RNConnectionService.setAudioRoute(newAudioRoute);
}
/**
* The API < 26 way of adjusting the audio route.
*
* @param audioDevice one of the "DEVICE_" names to set as the audio route.
*/
private void setAudioRoutePreO(String audioDevice) {
// Turn bluetooth on / off
setBluetoothAudioRoute(audioDevice.equals(DEVICE_BLUETOOTH));
// Turn speaker on / off
audioManager.setSpeakerphoneOn(audioDevice.equals(DEVICE_SPEAKER));
}
/**
* Helper method to set the output route to a Bluetooth device.
*
* @param enabled true if Bluetooth should use used, false otherwise.
*/
private void setBluetoothAudioRoute(boolean enabled) {
if (enabled) {
audioManager.startBluetoothSco();
audioManager.setBluetoothScoOn(true);
} else {
audioManager.setBluetoothScoOn(false);
audioManager.stopBluetoothSco();
}
}
/**
* Public method to set the current audio mode.
*
@@ -572,13 +277,22 @@ class AudioModeModule extends ReactContextBaseJavaModule
return;
}
Activity currentActivity = getCurrentActivity();
if (currentActivity != null) {
if (mode == DEFAULT) {
currentActivity.setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
} else {
currentActivity.setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
}
}
runInAudioThread(new Runnable() {
@Override
public void run() {
boolean success;
try {
success = updateAudioRoute(mode);
success = updateAudioRoute(mode, false);
} catch (Throwable e) {
success = false;
JitsiMeetLogger.e(e, TAG + " Failed to update audio route for mode: " + mode);
@@ -587,70 +301,27 @@ class AudioModeModule extends ReactContextBaseJavaModule
AudioModeModule.this.mode = mode;
promise.resolve(null);
} else {
promise.reject(
"setMode",
"Failed to set audio mode to " + mode);
promise.reject("setMode", "Failed to set audio mode to " + mode);
}
}
});
}
/**
* Setup the audio route change detection mechanism. We use the
* {@link android.media.AudioDeviceCallback} on 23 >= Android API < 26.
* Sets whether ConnectionService should be used (if available) for setting the audio mode
* or not.
*
* @param use Boolean indicator of where it should be used or not.
*/
private void setupAudioRouteChangeDetection() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
setupAudioRouteChangeDetectionM();
} else {
setupAudioRouteChangeDetectionPreM();
}
}
/**
* Audio route change detection mechanism for 23 >= Android API < 26.
*/
@TargetApi(Build.VERSION_CODES.M)
private void setupAudioRouteChangeDetectionM() {
android.media.AudioDeviceCallback audioDeviceCallback =
new android.media.AudioDeviceCallback() {
@Override
public void onAudioDevicesAdded(
AudioDeviceInfo[] addedDevices) {
JitsiMeetLogger.d(TAG + " Audio devices added");
onAudioDeviceChange();
}
@Override
public void onAudioDevicesRemoved(
AudioDeviceInfo[] removedDevices) {
JitsiMeetLogger.d(TAG + " Audio devices removed");
onAudioDeviceChange();
}
};
audioManager.registerAudioDeviceCallback(audioDeviceCallback, null);
}
/**
* Audio route change detection mechanism for Android API < 23.
*/
private void setupAudioRouteChangeDetectionPreM() {
Context context = getReactApplicationContext();
// Detect changes in wired headset connections.
IntentFilter wiredHeadSetFilter = new IntentFilter(ACTION_HEADSET_PLUG);
BroadcastReceiver wiredHeadsetReceiver = new BroadcastReceiver() {
@ReactMethod
public void setUseConnectionService(final boolean use) {
runInAudioThread(new Runnable() {
@Override
public void onReceive(Context context, Intent intent) {
JitsiMeetLogger.d(TAG + " Wired headset added / removed");
onHeadsetDeviceChange();
public void run() {
useConnectionService_ = use;
setAudioDeviceHandler();
}
};
context.registerReceiver(wiredHeadsetReceiver, wiredHeadSetFilter);
// Detect Bluetooth device changes.
bluetoothHeadsetMonitor = new BluetoothHeadsetMonitor(this, context);
});
}
/**
@@ -660,17 +331,14 @@ class AudioModeModule extends ReactContextBaseJavaModule
* @return {@code true} if the audio route was updated successfully;
* {@code false}, otherwise.
*/
private boolean updateAudioRoute(int mode) {
private boolean updateAudioRoute(int mode, boolean force) {
JitsiMeetLogger.i(TAG + " Update audio route for mode: " + mode);
if (!audioDeviceHandler.setMode(mode)) {
return false;
}
if (mode == DEFAULT) {
if (!useConnectionService()) {
audioFocusLost = false;
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.abandonAudioFocus(this);
audioManager.setSpeakerphoneOn(false);
setBluetoothAudioRoute(false);
}
selectedDevice = null;
userSelectedDevice = null;
@@ -678,20 +346,6 @@ class AudioModeModule extends ReactContextBaseJavaModule
return true;
}
if (!useConnectionService()) {
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setMicrophoneMute(false);
if (audioManager.requestAudioFocus(
this,
AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN)
== AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
JitsiMeetLogger.w(TAG + " Audio focus request failed");
return false;
}
}
boolean bluetoothAvailable = availableDevices.contains(DEVICE_BLUETOOTH);
boolean headsetAvailable = availableDevices.contains(DEVICE_HEADPHONES);
@@ -706,27 +360,118 @@ class AudioModeModule extends ReactContextBaseJavaModule
}
// Consider the user's selection
if (userSelectedDevice != null
&& availableDevices.contains(userSelectedDevice)) {
if (userSelectedDevice != null && availableDevices.contains(userSelectedDevice)) {
audioDevice = userSelectedDevice;
}
// If the previously selected device and the current default one
// match, do nothing.
if (selectedDevice != null && selectedDevice.equals(audioDevice)) {
if (!force && selectedDevice != null && selectedDevice.equals(audioDevice)) {
return true;
}
selectedDevice = audioDevice;
JitsiMeetLogger.i(TAG + " Selected audio device: " + audioDevice);
if (useConnectionService()) {
setAudioRoute(audioDevice);
} else {
setAudioRoutePreO(audioDevice);
}
audioDeviceHandler.setAudioRoute(audioDevice);
notifyDevicesChanged();
return true;
}
/**
* Gets the currently selected audio device.
*
* @return The selected audio device.
*/
String getSelectedDevice() {
return selectedDevice;
}
/**
* Resets the current device selection.
*/
void resetSelectedDevice() {
selectedDevice = null;
userSelectedDevice = null;
}
/**
* Adds a new device to the list of available devices.
*
* @param device The new device.
*/
void addDevice(String device) {
availableDevices.add(device);
resetSelectedDevice();
}
/**
* Removes a device from the list of available devices.
*
* @param device The old device to the removed.
*/
void removeDevice(String device) {
availableDevices.remove(device);
resetSelectedDevice();
}
/**
* Replaces the current list of available devices with a new one.
*
* @param devices The new devices list.
*/
void replaceDevices(Set<String> devices) {
availableDevices = devices;
resetSelectedDevice();
}
/**
* Re-sets the current audio route. Needed when devices changes have happened.
*/
void updateAudioRoute() {
if (mode != -1) {
updateAudioRoute(mode, false);
}
}
/**
* Re-sets the current audio route. Needed when focus is lost and regained.
*/
void resetAudioRoute() {
if (mode != -1) {
updateAudioRoute(mode, true);
}
}
/**
* Interface for the modules implementing the actual audio device management.
*/
interface AudioDeviceHandlerInterface {
/**
* Start detecting audio device changes.
* @param audioModeModule Reference to the main {@link AudioModeModule}.
*/
void start(AudioModeModule audioModeModule);
/**
* Stop audio device detection.
*/
void stop();
/**
* Set the appropriate route for the given audio device.
*
* @param device Audio device for which the route must be set.
*/
void setAudioRoute(String device);
/**
* Set the given audio mode.
*
* @param mode The new audio mode to be used.
* @return Whether the operation was successful or not.
*/
boolean setMode(int mode);
}
}

View File

@@ -99,6 +99,7 @@ public abstract class BaseReactView<ListenerT>
* The listener (e.g. {@link JitsiMeetViewListener}) instance for reporting
* events occurring in Jitsi Meet.
*/
@Deprecated
private ListenerT listener;
/**
@@ -167,6 +168,7 @@ public abstract class BaseReactView<ListenerT>
*
* @return The listener set on this {@code BaseReactView}.
*/
@Deprecated
public ListenerT getListener() {
return listener;
}
@@ -179,8 +181,10 @@ public abstract class BaseReactView<ListenerT>
* @param data - The details of the event associated with/specific to the
* specified {@code name}.
*/
@Deprecated
protected abstract void onExternalAPIEvent(String name, ReadableMap data);
@Deprecated
protected void onExternalAPIEvent(
Map<String, Method> listenerMethods,
String name, ReadableMap data) {
@@ -215,6 +219,7 @@ public abstract class BaseReactView<ListenerT>
*
* @param listener The listener to set on this {@code BaseReactView}.
*/
@Deprecated
public void setListener(ListenerT listener) {
this.listener = listener;
}

View File

@@ -1,194 +0,0 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
/**
* Helper class to detect and handle Bluetooth device changes. It monitors
* Bluetooth headsets being connected / disconnected and notifies the module
* about device changes when this occurs.
*/
class BluetoothHeadsetMonitor {
/**
* {@link AudioModeModule} where this monitor reports.
*/
private final AudioModeModule audioModeModule;
/**
* The {@link Context} in which {@link #audioModeModule} executes.
*/
private final Context context;
/**
* Reference to a proxy object which allows us to query connected devices.
*/
private BluetoothHeadset headset;
/**
* Flag indicating if there are any Bluetooth headset devices currently
* available.
*/
private boolean headsetAvailable = false;
/**
* Helper for running Bluetooth operations on the main thread.
*/
private final Runnable updateDevicesRunnable
= new Runnable() {
@Override
public void run() {
headsetAvailable
= (headset != null)
&& !headset.getConnectedDevices().isEmpty();
audioModeModule.onBluetoothDeviceChange();
}
};
public BluetoothHeadsetMonitor(
AudioModeModule audioModeModule,
Context context) {
this.audioModeModule = audioModeModule;
this.context = context;
AudioManager audioManager
= (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (!audioManager.isBluetoothScoAvailableOffCall()) {
JitsiMeetLogger.w(AudioModeModule.TAG + " Bluetooth SCO is not available");
return;
}
if (getBluetoothHeadsetProfileProxy()) {
registerBluetoothReceiver();
// Initial detection.
updateDevices();
}
}
private boolean getBluetoothHeadsetProfileProxy() {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null) {
JitsiMeetLogger.w(AudioModeModule.TAG + " Device doesn't support Bluetooth");
return false;
}
// XXX: The profile listener listens for system services of the given
// type being available to the application. That is, if our Bluetooth
// adapter has the "headset" profile.
BluetoothProfile.ServiceListener listener
= new BluetoothProfile.ServiceListener() {
@Override
public void onServiceConnected(
int profile,
BluetoothProfile proxy) {
if (profile == BluetoothProfile.HEADSET) {
headset = (BluetoothHeadset) proxy;
updateDevices();
}
}
@Override
public void onServiceDisconnected(int profile) {
// The logic is the same as the logic of onServiceConnected.
onServiceConnected(profile, /* proxy */ null);
}
};
return
adapter.getProfileProxy(
context,
listener,
BluetoothProfile.HEADSET);
}
/**
* Returns the current headset availability.
*
* @return {@code true} if there is a Bluetooth headset connected;
* {@code false}, otherwise.
*/
public boolean isHeadsetAvailable() {
return headsetAvailable;
}
private void onBluetoothReceiverReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {
// XXX: This action will be fired when a Bluetooth headset is
// connected or disconnected to the system. This is not related to
// audio routing.
int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, -99);
switch (state) {
case BluetoothHeadset.STATE_CONNECTED:
case BluetoothHeadset.STATE_DISCONNECTED:
JitsiMeetLogger.d(AudioModeModule.TAG + " BT headset connection state changed: " + state);
updateDevices();
break;
}
} else if (action.equals(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED)) {
// XXX: This action will be fired when the connection established
// with a Bluetooth headset (called a SCO connection) changes state.
// When the SCO connection is active we route audio to it.
int state
= intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -99);
switch (state) {
case AudioManager.SCO_AUDIO_STATE_CONNECTED:
case AudioManager.SCO_AUDIO_STATE_DISCONNECTED:
JitsiMeetLogger.d(AudioModeModule.TAG + " BT SCO connection state changed: " + state);
updateDevices();
break;
}
}
}
private void registerBluetoothReceiver() {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onBluetoothReceiverReceive(context, intent);
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED);
filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
context.registerReceiver(receiver, filter);
}
/**
* Detects if there are new devices connected / disconnected and fires the
* {@link AudioModeModule#onAudioDeviceChange()} callback.
*/
private void updateDevices() {
audioModeModule.runInAudioThread(updateDevicesRunnable);
}
}

View File

@@ -0,0 +1,100 @@
package org.jitsi.meet.sdk;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.bridge.WritableNativeMap;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.HashMap;
/**
* Wraps the name and extra data for events that were broadcasted locally.
*/
public class BroadcastAction {
private static final String TAG = BroadcastAction.class.getSimpleName();
private final Type type;
private final HashMap<String, Object> data;
public BroadcastAction(Intent intent) {
this.type = Type.buildTypeFromAction(intent.getAction());
this.data = buildDataFromBundle(intent.getExtras());
}
public Type getType() {
return this.type;
}
public HashMap<String, Object> getData() {
return this.data;
}
public WritableNativeMap getDataAsWritableNativeMap() {
WritableNativeMap nativeMap = new WritableNativeMap();
for (String key : this.data.keySet()) {
try {
if (this.data.get(key) instanceof Boolean) {
nativeMap.putBoolean(key, (Boolean) this.data.get(key));
} else if (this.data.get(key) instanceof Integer) {
nativeMap.putInt(key, (Integer) this.data.get(key));
} else if (this.data.get(key) instanceof Double) {
nativeMap.putDouble(key, (Double) this.data.get(key));
} else if (this.data.get(key) instanceof String) {
nativeMap.putString(key, (String) this.data.get(key));
} else {
throw new Exception("Unsupported extra data type");
}
} catch (Exception e) {
JitsiMeetLogger.w(TAG + " invalid extra data in event", e);
}
}
return nativeMap;
}
private static HashMap<String, Object> buildDataFromBundle(Bundle bundle) {
HashMap<String, Object> map = new HashMap<>();
if (bundle != null) {
for (String key : bundle.keySet()) {
map.put(key, bundle.get(key));
}
}
return map;
}
enum Type {
SET_AUDIO_MUTED("org.jitsi.meet.SET_AUDIO_MUTED"),
HANG_UP("org.jitsi.meet.HANG_UP"),
SEND_ENDPOINT_TEXT_MESSAGE("org.jitsi.meet.SEND_ENDPOINT_TEXT_MESSAGE"),
TOGGLE_SCREEN_SHARE("org.jitsi.meet.TOGGLE_SCREEN_SHARE"),
RETRIEVE_PARTICIPANTS_INFO("org.jitsi.meet.RETRIEVE_PARTICIPANTS_INFO"),
OPEN_CHAT("org.jitsi.meet.OPEN_CHAT"),
CLOSE_CHAT("org.jitsi.meet.CLOSE_CHAT"),
SEND_CHAT_MESSAGE("org.jitsi.meet.SEND_CHAT_MESSAGE"),
SET_VIDEO_MUTED("org.jitsi.meet.SET_VIDEO_MUTED");
private final String action;
Type(String action) {
this.action = action;
}
public String getAction() {
return action;
}
private static Type buildTypeFromAction(String action) {
for (Type type : Type.values()) {
if (type.action.equalsIgnoreCase(action)) {
return type;
}
}
return null;
}
}
}

View File

@@ -0,0 +1,30 @@
package org.jitsi.meet.sdk;
import android.content.Context;
import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.facebook.react.bridge.ReadableMap;
/**
* Class used to emit events through the LocalBroadcastManager, called when events
* from JS occurred. Takes an action name from JS, builds and broadcasts the {@link BroadcastEvent}
*/
public class BroadcastEmitter {
private final LocalBroadcastManager localBroadcastManager;
public BroadcastEmitter(Context context) {
localBroadcastManager = LocalBroadcastManager.getInstance(context);
}
public void sendBroadcast(String name, ReadableMap data) {
BroadcastEvent event = new BroadcastEvent(name, data);
Intent intent = event.buildIntent();
if (intent != null) {
localBroadcastManager.sendBroadcast(intent);
}
}
}

View File

@@ -0,0 +1,155 @@
package org.jitsi.meet.sdk;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.bridge.ReadableMap;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.HashMap;
/**
* Wraps the name and extra data for the events that occur on the JS side and are
* to be broadcasted.
*/
public class BroadcastEvent {
private static final String TAG = BroadcastEvent.class.getSimpleName();
private final Type type;
private final HashMap<String, Object> data;
public BroadcastEvent(String name, ReadableMap data) {
this.type = Type.buildTypeFromName(name);
this.data = data.toHashMap();
}
public BroadcastEvent(Intent intent) {
this.type = Type.buildTypeFromAction(intent.getAction());
this.data = buildDataFromBundle(intent.getExtras());
}
public Type getType() {
return this.type;
}
public HashMap<String, Object> getData() {
return this.data;
}
public Intent buildIntent() {
if (type != null && type.action != null) {
Intent intent = new Intent(type.action);
for (String key : this.data.keySet()) {
try {
intent.putExtra(key, this.data.get(key).toString());
} catch (Exception e) {
JitsiMeetLogger.w(TAG + " invalid extra data in event", e);
}
}
return intent;
}
return null;
}
private static HashMap<String, Object> buildDataFromBundle(Bundle bundle) {
if (bundle != null) {
try {
HashMap<String, Object> map = new HashMap<>();
for (String key : bundle.keySet()) {
map.put(key, bundle.get(key));
}
return map;
} catch (Exception e) {
JitsiMeetLogger.w(TAG + " invalid extra data", e);
}
}
return null;
}
public enum Type {
CONFERENCE_JOINED("org.jitsi.meet.CONFERENCE_JOINED"),
CONFERENCE_TERMINATED("org.jitsi.meet.CONFERENCE_TERMINATED"),
CONFERENCE_WILL_JOIN("org.jitsi.meet.CONFERENCE_WILL_JOIN"),
AUDIO_MUTED_CHANGED("org.jitsi.meet.AUDIO_MUTED_CHANGED"),
PARTICIPANT_JOINED("org.jitsi.meet.PARTICIPANT_JOINED"),
PARTICIPANT_LEFT("org.jitsi.meet.PARTICIPANT_LEFT"),
ENDPOINT_TEXT_MESSAGE_RECEIVED("org.jitsi.meet.ENDPOINT_TEXT_MESSAGE_RECEIVED"),
SCREEN_SHARE_TOGGLED("org.jitsi.meet.SCREEN_SHARE_TOGGLED"),
PARTICIPANTS_INFO_RETRIEVED("org.jitsi.meet.PARTICIPANTS_INFO_RETRIEVED"),
CHAT_MESSAGE_RECEIVED("org.jitsi.meet.CHAT_MESSAGE_RECEIVED"),
CHAT_TOGGLED("org.jitsi.meet.CHAT_TOGGLED"),
VIDEO_MUTED_CHANGED("org.jitsi.meet.VIDEO_MUTED_CHANGED");
private static final String CONFERENCE_WILL_JOIN_NAME = "CONFERENCE_WILL_JOIN";
private static final String CONFERENCE_JOINED_NAME = "CONFERENCE_JOINED";
private static final String CONFERENCE_TERMINATED_NAME = "CONFERENCE_TERMINATED";
private static final String AUDIO_MUTED_CHANGED_NAME = "AUDIO_MUTED_CHANGED";
private static final String PARTICIPANT_JOINED_NAME = "PARTICIPANT_JOINED";
private static final String PARTICIPANT_LEFT_NAME = "PARTICIPANT_LEFT";
private static final String ENDPOINT_TEXT_MESSAGE_RECEIVED_NAME = "ENDPOINT_TEXT_MESSAGE_RECEIVED";
private static final String SCREEN_SHARE_TOGGLED_NAME = "SCREEN_SHARE_TOGGLED";
private static final String PARTICIPANTS_INFO_RETRIEVED_NAME = "PARTICIPANTS_INFO_RETRIEVED";
private static final String CHAT_MESSAGE_RECEIVED_NAME = "CHAT_MESSAGE_RECEIVED";
private static final String CHAT_TOGGLED_NAME = "CHAT_TOGGLED";
private static final String VIDEO_MUTED_CHANGED_NAME = "VIDEO_MUTED_CHANGED";
private final String action;
Type(String action) {
this.action = action;
}
public String getAction() {
return action;
}
private static Type buildTypeFromAction(String action) {
for (Type type : Type.values()) {
if (type.action.equalsIgnoreCase(action)) {
return type;
}
}
return null;
}
private static Type buildTypeFromName(String name) {
switch (name) {
case CONFERENCE_WILL_JOIN_NAME:
return CONFERENCE_WILL_JOIN;
case CONFERENCE_JOINED_NAME:
return CONFERENCE_JOINED;
case CONFERENCE_TERMINATED_NAME:
return CONFERENCE_TERMINATED;
case AUDIO_MUTED_CHANGED_NAME:
return AUDIO_MUTED_CHANGED;
case PARTICIPANT_JOINED_NAME:
return PARTICIPANT_JOINED;
case PARTICIPANT_LEFT_NAME:
return PARTICIPANT_LEFT;
case ENDPOINT_TEXT_MESSAGE_RECEIVED_NAME:
return ENDPOINT_TEXT_MESSAGE_RECEIVED;
case SCREEN_SHARE_TOGGLED_NAME:
return SCREEN_SHARE_TOGGLED;
case PARTICIPANTS_INFO_RETRIEVED_NAME:
return PARTICIPANTS_INFO_RETRIEVED;
case CHAT_MESSAGE_RECEIVED_NAME:
return CHAT_MESSAGE_RECEIVED;
case CHAT_TOGGLED_NAME:
return CHAT_TOGGLED;
case VIDEO_MUTED_CHANGED_NAME:
return VIDEO_MUTED_CHANGED;
}
return null;
}
}
}

View File

@@ -0,0 +1,51 @@
package org.jitsi.meet.sdk;
import android.content.Intent;
public class BroadcastIntentHelper {
public static Intent buildSetAudioMutedIntent(boolean muted) {
Intent intent = new Intent(BroadcastAction.Type.SET_AUDIO_MUTED.getAction());
intent.putExtra("muted", muted);
return intent;
}
public static Intent buildHangUpIntent() {
return new Intent(BroadcastAction.Type.HANG_UP.getAction());
}
public static Intent buildSendEndpointTextMessageIntent(String to, String message) {
Intent intent = new Intent(BroadcastAction.Type.SEND_ENDPOINT_TEXT_MESSAGE.getAction());
intent.putExtra("to", to);
intent.putExtra("message", message);
return intent;
}
public static Intent buildToggleScreenShareIntent(boolean enabled) {
Intent intent = new Intent(BroadcastAction.Type.TOGGLE_SCREEN_SHARE.getAction());
intent.putExtra("enabled", enabled);
return intent;
}
public static Intent buildOpenChatIntent(String participantId) {
Intent intent = new Intent(BroadcastAction.Type.OPEN_CHAT.getAction());
intent.putExtra("to", participantId);
return intent;
}
public static Intent buildCloseChatIntent() {
return new Intent(BroadcastAction.Type.CLOSE_CHAT.getAction());
}
public static Intent buildSendChatMessageIntent(String participantId, String message) {
Intent intent = new Intent(BroadcastAction.Type.SEND_CHAT_MESSAGE.getAction());
intent.putExtra("to", participantId);
intent.putExtra("message", message);
return intent;
}
public static Intent buildSetVideoMutedIntent(boolean muted) {
Intent intent = new Intent(BroadcastAction.Type.SET_VIDEO_MUTED.getAction());
intent.putExtra("muted", muted);
return intent;
}
}

View File

@@ -0,0 +1,34 @@
package org.jitsi.meet.sdk;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
/**
* Listens for {@link BroadcastAction}s on LocalBroadcastManager. When one occurs,
* it emits it to JS.
*/
public class BroadcastReceiver extends android.content.BroadcastReceiver {
public BroadcastReceiver(Context context) {
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
IntentFilter intentFilter = new IntentFilter();
for (BroadcastAction.Type type : BroadcastAction.Type.values()) {
intentFilter.addAction(type.getAction());
}
localBroadcastManager.registerReceiver(this, intentFilter);
}
@Override
public void onReceive(Context context, Intent intent) {
BroadcastAction action = new BroadcastAction(intent);
String actionName = action.getType().getAction();
ReactInstanceManagerHolder.emitEvent(actionName, action.getDataAsWritableNativeMap());
}
}

View File

@@ -123,14 +123,17 @@ public class ConnectionService extends android.telecom.ConnectionService {
* {@link android.telecom.Connection#STATE_ACTIVE}.
*
* @param callUUID the call UUID which identifies the connection.
* @return Whether the connection was set as active or not.
*/
static void setConnectionActive(String callUUID) {
static boolean setConnectionActive(String callUUID) {
ConnectionImpl connection = connections.get(callUUID);
if (connection != null) {
connection.setActive();
return true;
} else {
JitsiMeetLogger.e("%s setConnectionActive - no connection for UUID: %s", TAG, callUUID);
JitsiMeetLogger.w("%s setConnectionActive - no connection for UUID: %s", TAG, callUUID);
return false;
}
}
@@ -403,11 +406,9 @@ public class ConnectionService extends android.telecom.ConnectionService {
@Override
public void onCallAudioStateChanged(CallAudioState state) {
JitsiMeetLogger.d(TAG + " onCallAudioStateChanged: " + state);
AudioModeModule audioModeModule
= ReactInstanceManagerHolder
.getNativeModule(AudioModeModule.class);
if (audioModeModule != null) {
audioModeModule.onCallAudioStateChange(state);
RNConnectionService module = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
if (module != null) {
module.onCallAudioStateChange(state);
}
}

View File

@@ -8,6 +8,8 @@ import android.text.TextUtils;
import com.dropbox.core.DbxException;
import com.dropbox.core.DbxRequestConfig;
import com.dropbox.core.android.Auth;
import com.dropbox.core.oauth.DbxCredential;
import com.dropbox.core.v2.DbxClientV2;
import com.dropbox.core.v2.users.FullAccount;
import com.dropbox.core.v2.users.SpaceAllocation;
@@ -17,7 +19,6 @@ import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.dropbox.core.android.Auth;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.module.annotations.ReactModule;
@@ -66,7 +67,7 @@ class DropboxModule
@ReactMethod
public void authorize(final Promise promise) {
if (isEnabled) {
Auth.startOAuth2Authentication(this.getCurrentActivity(), appKey);
Auth.startOAuth2PKCE(this.getCurrentActivity(), appKey, DbxRequestConfig.newBuilder(clientId).build());
this.promise = promise;
} else {
promise.reject(
@@ -181,11 +182,23 @@ class DropboxModule
@Override
public void onHostResume() {
String token = Auth.getOAuth2Token();
DbxCredential credential = Auth.getDbxCredential();
if (this.promise != null ) {
if (credential != null) {
WritableMap result = Arguments.createMap();
result.putString("token", credential.getAccessToken());
result.putString("rToken", credential.getRefreshToken());
result.putDouble("expireDate", credential.getExpiresAt());
this.promise.resolve(result);
this.promise = null;
} else {
this.promise.reject("Invalid dropbox credentials");
}
if (token != null && this.promise != null) {
this.promise.resolve(token);
this.promise = null;
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,6 +24,9 @@ import com.facebook.react.module.annotations.ReactModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.HashMap;
import java.util.Map;
/**
* Module implementing an API for sending events from JavaScript to native code.
*/
@@ -35,6 +38,9 @@ class ExternalAPIModule
private static final String TAG = NAME;
private final BroadcastEmitter broadcastEmitter;
private final BroadcastReceiver broadcastReceiver;
/**
* Initializes a new module instance. There shall be a single instance of
* this module throughout the lifetime of the app.
@@ -44,6 +50,11 @@ class ExternalAPIModule
*/
public ExternalAPIModule(ReactApplicationContext reactContext) {
super(reactContext);
broadcastEmitter = new BroadcastEmitter(reactContext);
broadcastReceiver = new BroadcastReceiver(reactContext);
ParticipantsService.init(reactContext);
}
/**
@@ -56,6 +67,29 @@ class ExternalAPIModule
return NAME;
}
/**
* Gets a mapping with the constants this module is exporting.
*
* @return a {@link Map} mapping the constants to be exported with their
* values.
*/
@Override
public Map<String, Object> getConstants() {
Map<String, Object> constants = new HashMap<>();
constants.put("SET_AUDIO_MUTED", BroadcastAction.Type.SET_AUDIO_MUTED.getAction());
constants.put("HANG_UP", BroadcastAction.Type.HANG_UP.getAction());
constants.put("SEND_ENDPOINT_TEXT_MESSAGE", BroadcastAction.Type.SEND_ENDPOINT_TEXT_MESSAGE.getAction());
constants.put("TOGGLE_SCREEN_SHARE", BroadcastAction.Type.TOGGLE_SCREEN_SHARE.getAction());
constants.put("RETRIEVE_PARTICIPANTS_INFO", BroadcastAction.Type.RETRIEVE_PARTICIPANTS_INFO.getAction());
constants.put("OPEN_CHAT", BroadcastAction.Type.OPEN_CHAT.getAction());
constants.put("CLOSE_CHAT", BroadcastAction.Type.CLOSE_CHAT.getAction());
constants.put("SEND_CHAT_MESSAGE", BroadcastAction.Type.SEND_CHAT_MESSAGE.getAction());
constants.put("SET_VIDEO_MUTED", BroadcastAction.Type.SET_VIDEO_MUTED.getAction());
return constants;
}
/**
* Dispatches an event that occurred on the JavaScript side of the SDK to
* the specified {@link BaseReactView}'s listener.
@@ -79,7 +113,8 @@ class ExternalAPIModule
JitsiMeetLogger.d(TAG + " Sending event: " + name + " with data: " + data);
try {
view.onExternalAPIEvent(name, data);
} catch(Exception e) {
broadcastEmitter.sendBroadcast(name, data);
} catch (Exception e) {
JitsiMeetLogger.e(e, TAG + " onExternalAPIEvent: error sending event");
}
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright @ 2021-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.startup.Initializer;
import com.facebook.soloader.SoLoader;
import java.util.ArrayList;
import java.util.List;
public class JitsiInitializer implements Initializer<Boolean> {
@NonNull
@Override
public Boolean create(@NonNull Context context) {
SoLoader.init(context, /* native exopackage */ false);
return true;
}
@NonNull
@Override
public List<Class<? extends Initializer<?>>> dependencies() {
return new ArrayList<>();
}
}

View File

@@ -1,6 +1,5 @@
/*
* Copyright @ 2018-present 8x8, Inc.
* Copyright @ 2017-2018 Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,11 +15,18 @@
*/
package org.jitsi.meet.sdk;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import com.facebook.react.ReactInstanceManager;
import org.devio.rn.splashscreen.SplashScreen;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
public class JitsiMeet {
/**
* Default {@link JitsiMeetConferenceOptions} which will be used for all conferences. When
* joining a conference these options will be merged with the ones passed to
@@ -72,4 +78,23 @@ public class JitsiMeet {
reactInstanceManager.showDevOptionsDialog();
}
}
}
public static boolean isCrashReportingDisabled(Context context) {
SharedPreferences preferences = context.getSharedPreferences("jitsi-default-preferences", Context.MODE_PRIVATE);
String value = preferences.getString("isCrashReportingDisabled", "");
return Boolean.parseBoolean(value);
}
/**
* Helper method to show the SplashScreen.
*
* @param activity - The activity on which to show the SplashScreen {@link Activity}.
*/
public static void showSplashScreen(Activity activity) {
try {
SplashScreen.show(activity);
} catch (Exception e) {
JitsiMeetLogger.e(e, "Failed to show splash screen");
}
}
}

View File

@@ -16,32 +16,42 @@
package org.jitsi.meet.sdk;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.facebook.react.modules.core.PermissionListener;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.Map;
import java.util.HashMap;
import android.app.Activity;
/**
* A base activity for SDK users to embed. It uses {@link JitsiMeetFragment} to do the heavy
* lifting and wires the remaining Activity lifecycle methods so it works out of the box.
*/
public class JitsiMeetActivity extends FragmentActivity
implements JitsiMeetActivityInterface, JitsiMeetViewListener {
public class JitsiMeetActivity extends AppCompatActivity
implements JitsiMeetActivityInterface {
protected static final String TAG = JitsiMeetActivity.class.getSimpleName();
private static final String ACTION_JITSI_MEET_CONFERENCE = "org.jitsi.meet.CONFERENCE";
private static final String JITSI_MEET_CONFERENCE_OPTIONS = "JitsiMeetConferenceOptions";
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onBroadcastReceived(intent);
}
};
// Helpers for starting the activity
//
@@ -49,6 +59,9 @@ public class JitsiMeetActivity extends FragmentActivity
Intent intent = new Intent(context, JitsiMeetActivity.class);
intent.setAction(ACTION_JITSI_MEET_CONFERENCE);
intent.putExtra(JITSI_MEET_CONFERENCE_OPTIONS, options);
if (!(context instanceof Activity)) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
context.startActivity(intent);
}
@@ -67,6 +80,8 @@ public class JitsiMeetActivity extends FragmentActivity
setContentView(R.layout.activity_jitsi_meet);
registerForBroadcastMessages();
if (!extraInitialize()) {
initialize();
}
@@ -87,6 +102,8 @@ public class JitsiMeetActivity extends FragmentActivity
}
JitsiMeetOngoingConferenceService.abort(this);
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
super.onDestroy();
}
@@ -103,26 +120,39 @@ public class JitsiMeetActivity extends FragmentActivity
protected JitsiMeetView getJitsiView() {
JitsiMeetFragment fragment
= (JitsiMeetFragment) getSupportFragmentManager().findFragmentById(R.id.jitsiFragment);
return fragment.getJitsiView();
return fragment != null ? fragment.getJitsiView() : null;
}
public void join(@Nullable String url) {
JitsiMeetConferenceOptions options
= new JitsiMeetConferenceOptions.Builder()
.setRoom(url)
.build();
.setRoom(url)
.build();
join(options);
}
public void join(JitsiMeetConferenceOptions options) {
getJitsiView().join(options);
JitsiMeetView view = getJitsiView();
if (view != null) {
view.join(options);
} else {
JitsiMeetLogger.w("Cannot join, view is null");
}
}
public void leave() {
getJitsiView().leave();
JitsiMeetView view = getJitsiView();
if (view != null) {
view.leave();
} else {
JitsiMeetLogger.w("Cannot leave, view is null");
}
}
private @Nullable JitsiMeetConferenceOptions getConferenceOptions(Intent intent) {
private @Nullable
JitsiMeetConferenceOptions getConferenceOptions(Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
@@ -141,7 +171,7 @@ public class JitsiMeetActivity extends FragmentActivity
* Helper function called during activity initialization. If {@code true} is returned, the
* initialization is delayed and the {@link JitsiMeetActivity#initialize()} method is not
* called. In this case, it's up to the subclass to call the initialize method when ready.
*
* <p>
* This is mainly required so we do some extra initialization in the Jitsi Meet app.
*
* @return {@code true} if the initialization will be delayed, {@code false} otherwise.
@@ -151,19 +181,49 @@ public class JitsiMeetActivity extends FragmentActivity
}
protected void initialize() {
// Listen for conference events.
getJitsiView().setListener(this);
// Join the room specified by the URL the app was launched with.
// Joining without the room option displays the welcome page.
join(getConferenceOptions(getIntent()));
}
protected void onConferenceJoined(HashMap<String, Object> extraData) {
JitsiMeetLogger.i("Conference joined: " + extraData);
// Launch the service for the ongoing notification.
JitsiMeetOngoingConferenceService.launch(this);
}
protected void onConferenceTerminated(HashMap<String, Object> extraData) {
JitsiMeetLogger.i("Conference terminated: " + extraData);
finish();
}
protected void onConferenceWillJoin(HashMap<String, Object> extraData) {
JitsiMeetLogger.i("Conference will join: " + extraData);
}
protected void onParticipantJoined(HashMap<String, Object> extraData) {
try {
JitsiMeetLogger.i("Participant joined: ", extraData);
} catch (Exception e) {
JitsiMeetLogger.w("Invalid participant joined extraData", e);
}
}
protected void onParticipantLeft(HashMap<String, Object> extraData) {
try {
JitsiMeetLogger.i("Participant left: ", extraData);
} catch (Exception e) {
JitsiMeetLogger.w("Invalid participant left extraData", e);
}
}
// Activity lifecycle methods
//
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
JitsiMeetActivityDelegate.onActivityResult(this, requestCode, resultCode, data);
}
@@ -188,7 +248,11 @@ public class JitsiMeetActivity extends FragmentActivity
@Override
protected void onUserLeaveHint() {
getJitsiView().enterPictureInPicture();
JitsiMeetView view = getJitsiView();
if (view != null) {
view.enterPictureInPicture();
}
}
// JitsiMeetActivityInterface
@@ -204,24 +268,37 @@ public class JitsiMeetActivity extends FragmentActivity
JitsiMeetActivityDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
// JitsiMeetViewListener
//
private void registerForBroadcastMessages() {
IntentFilter intentFilter = new IntentFilter();
@Override
public void onConferenceJoined(Map<String, Object> data) {
JitsiMeetLogger.i("Conference joined: " + data);
// Launch the service for the ongoing notification.
JitsiMeetOngoingConferenceService.launch(this);
for (BroadcastEvent.Type type : BroadcastEvent.Type.values()) {
intentFilter.addAction(type.getAction());
}
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter);
}
@Override
public void onConferenceTerminated(Map<String, Object> data) {
JitsiMeetLogger.i("Conference terminated: " + data);
finish();
}
private void onBroadcastReceived(Intent intent) {
if (intent != null) {
BroadcastEvent event = new BroadcastEvent(intent);
@Override
public void onConferenceWillJoin(Map<String, Object> data) {
JitsiMeetLogger.i("Conference will join: " + data);
switch (event.getType()) {
case CONFERENCE_JOINED:
onConferenceJoined(event.getData());
break;
case CONFERENCE_WILL_JOIN:
onConferenceWillJoin(event.getData());
break;
case CONFERENCE_TERMINATED:
onConferenceTerminated(event.getData());
break;
case PARTICIPANT_JOINED:
onParticipantJoined(event.getData());
break;
case PARTICIPANT_LEFT:
onParticipantLeft(event.getData());
break;
}
}
}
}

View File

@@ -1,6 +1,5 @@
/*
* Copyright @ 2019-present 8x8, Inc.
* Copyright @ 2018 Atlassian Pty Ltd
* Copyright @ 2018-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,17 +16,16 @@
package org.jitsi.meet.sdk;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import com.calendarevents.CalendarEventsPackage;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.core.PermissionListener;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
/**
* Helper class to encapsulate the work which needs to be done on
* {@link Activity} lifecycle methods in order for the React side to be aware of
@@ -118,12 +116,15 @@ public class JitsiMeetActivityDelegate {
= ReactInstanceManagerHolder.getReactInstanceManager();
if (reactInstanceManager != null) {
// Try to avoid a crash because some devices trip on this assert:
// https://github.com/facebook/react-native/blob/df4e67fe75d781d1eb264128cadf079989542755/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java#L512
// Why this happens is a mystery wrapped in an enigma.
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
if (reactContext != null && activity == reactContext.getCurrentActivity()) {
try {
reactInstanceManager.onHostPause(activity);
} catch (AssertionError e) {
// There seems to be a problem in RN when resuming an Activity when
// rotation is involved and the planets align. There doesn't seem to
// be a proper solution, but since the activity is going away anyway,
// we'll YOLO-ignore the exception and hope fo the best.
// Ref: https://github.com/facebook/react-native/search?q=Pausing+an+activity+that+is+not+the+current+activity%2C+this+is+incorrect%21&type=issues
JitsiMeetLogger.e(e, "Error running onHostPause, ignoring");
}
}
}
@@ -167,13 +168,7 @@ public class JitsiMeetActivityDelegate {
}
public static void onRequestPermissionsResult(
final int requestCode,
final String[] permissions,
final int[] grantResults) {
CalendarEventsPackage.onRequestPermissionsResult(
requestCode,
permissions,
grantResults);
final int requestCode, final String[] permissions, final int[] grantResults) {
permissionsCallback = new Callback() {
@Override
public void invoke(Object... args) {
@@ -185,9 +180,18 @@ public class JitsiMeetActivityDelegate {
};
}
@TargetApi(Build.VERSION_CODES.M)
public static void requestPermissions(Activity activity, String[] permissions, int requestCode, PermissionListener listener) {
permissionListener = listener;
activity.requestPermissions(permissions, requestCode);
// The RN Permissions module calls this in a non-UI thread. What we observe is a crash in ViewGroup.dispatchCancelPendingInputEvents,
// which is called on the calling (ie, non-UI) thread. This doesn't look very safe, so try to avoid a crash by pretending the permission
// was denied.
try {
activity.requestPermissions(permissions, requestCode);
} catch (Exception e) {
JitsiMeetLogger.e(e, "Error requesting permissions");
onRequestPermissionsResult(requestCode, permissions, new int[0]);
}
}
}

View File

@@ -40,10 +40,6 @@ public class JitsiMeetConferenceOptions implements Parcelable {
* Room name.
*/
private String room;
/**
* Conference subject.
*/
private String subject;
/**
* JWT token used for authentication.
*/
@@ -54,19 +50,16 @@ public class JitsiMeetConferenceOptions implements Parcelable {
*/
private Bundle colorScheme;
/**
* Config. See: https://github.com/jitsi/jitsi-meet/blob/master/config.js
*/
private Bundle config;
/**
* Feature flags. See: https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/flags/constants.js
*/
private Bundle featureFlags;
/**
* Set to {@code true} to join the conference with audio / video muted or to start in audio
* only mode respectively.
*/
private Boolean audioMuted;
private Boolean audioOnly;
private Boolean videoMuted;
/**
* USer information, to be used when no token is specified.
*/
@@ -80,10 +73,6 @@ public class JitsiMeetConferenceOptions implements Parcelable {
return room;
}
public String getSubject() {
return subject;
}
public String getToken() {
return token;
}
@@ -96,18 +85,6 @@ public class JitsiMeetConferenceOptions implements Parcelable {
return featureFlags;
}
public boolean getAudioMuted() {
return audioMuted;
}
public boolean getAudioOnly() {
return audioOnly;
}
public boolean getVideoMuted() {
return videoMuted;
}
public JitsiMeetUserInfo getUserInfo() {
return userInfo;
}
@@ -118,19 +95,16 @@ public class JitsiMeetConferenceOptions implements Parcelable {
public static class Builder {
private URL serverURL;
private String room;
private String subject;
private String token;
private Bundle colorScheme;
private Bundle config;
private Bundle featureFlags;
private Boolean audioMuted;
private Boolean audioOnly;
private Boolean videoMuted;
private JitsiMeetUserInfo userInfo;
public Builder() {
config = new Bundle();
featureFlags = new Bundle();
}
@@ -162,7 +136,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
* @return - The {@link Builder} object itself so the method calls can be chained.
*/
public Builder setSubject(String subject) {
this.subject = subject;
setConfigOverride("subject", subject);
return this;
}
@@ -193,11 +167,11 @@ public class JitsiMeetConferenceOptions implements Parcelable {
/**
* Indicates the conference will be joined with the microphone muted.
* @param muted - Muted indication.
* @param audioMuted - Muted indication.
* @return - The {@link Builder} object itself so the method calls can be chained.
*/
public Builder setAudioMuted(boolean muted) {
this.audioMuted = muted;
public Builder setAudioMuted(boolean audioMuted) {
setConfigOverride("startWithAudioMuted", audioMuted);
return this;
}
@@ -209,7 +183,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
* @return - The {@link Builder} object itself so the method calls can be chained.
*/
public Builder setAudioOnly(boolean audioOnly) {
this.audioOnly = audioOnly;
setConfigOverride("startAudioOnly", audioOnly);
return this;
}
@@ -219,7 +193,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
* @return - The {@link Builder} object itself so the method calls can be chained.
*/
public Builder setVideoMuted(boolean videoMuted) {
this.videoMuted = videoMuted;
setConfigOverride("startWithVideoMuted", videoMuted);
return this;
}
@@ -261,6 +235,36 @@ public class JitsiMeetConferenceOptions implements Parcelable {
return this;
}
public Builder setConfigOverride(String config, String value) {
this.config.putString(config, value);
return this;
}
public Builder setConfigOverride(String config, int value) {
this.config.putInt(config, value);
return this;
}
public Builder setConfigOverride(String config, boolean value) {
this.config.putBoolean(config, value);
return this;
}
public Builder setConfigOverride(String config, Bundle bundle) {
this.config.putBundle(config, bundle);
return this;
}
public Builder setConfigOverride(String config, String[] list) {
this.config.putStringArray(config, list);
return this;
}
/**
* Builds the immutable {@link JitsiMeetConferenceOptions} object with the configuration
* that this {@link Builder} instance specified.
@@ -271,13 +275,10 @@ public class JitsiMeetConferenceOptions implements Parcelable {
options.serverURL = this.serverURL;
options.room = this.room;
options.subject = this.subject;
options.token = this.token;
options.colorScheme = this.colorScheme;
options.config = this.config;
options.featureFlags = this.featureFlags;
options.audioMuted = this.audioMuted;
options.audioOnly = this.audioOnly;
options.videoMuted = this.videoMuted;
options.userInfo = this.userInfo;
return options;
@@ -288,18 +289,13 @@ public class JitsiMeetConferenceOptions implements Parcelable {
}
private JitsiMeetConferenceOptions(Parcel in) {
serverURL = (URL) in.readSerializable();
room = in.readString();
subject = in.readString();
token = in.readString();
colorScheme = in.readBundle();
config = in.readBundle();
featureFlags = in.readBundle();
userInfo = new JitsiMeetUserInfo(in.readBundle());
byte tmpAudioMuted = in.readByte();
audioMuted = tmpAudioMuted == 0 ? null : tmpAudioMuted == 1;
byte tmpAudioOnly = in.readByte();
audioOnly = tmpAudioOnly == 0 ? null : tmpAudioOnly == 1;
byte tmpVideoMuted = in.readByte();
videoMuted = tmpVideoMuted == 0 ? null : tmpVideoMuted == 1;
}
Bundle asProps() {
@@ -316,21 +312,6 @@ public class JitsiMeetConferenceOptions implements Parcelable {
props.putBundle("colorScheme", colorScheme);
}
Bundle config = new Bundle();
if (audioMuted != null) {
config.putBoolean("startWithAudioMuted", audioMuted);
}
if (audioOnly != null) {
config.putBoolean("startAudioOnly", audioOnly);
}
if (videoMuted != null) {
config.putBoolean("startWithVideoMuted", videoMuted);
}
if (subject != null) {
config.putString("subject", subject);
}
Bundle urlProps = new Bundle();
// The room is fully qualified
@@ -349,7 +330,7 @@ public class JitsiMeetConferenceOptions implements Parcelable {
urlProps.putString("jwt", token);
}
if (token == null && userInfo != null) {
if (userInfo != null) {
props.putBundle("userInfo", userInfo.asBundle());
}
@@ -376,15 +357,13 @@ public class JitsiMeetConferenceOptions implements Parcelable {
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeSerializable(serverURL);
dest.writeString(room);
dest.writeString(subject);
dest.writeString(token);
dest.writeBundle(colorScheme);
dest.writeBundle(config);
dest.writeBundle(featureFlags);
dest.writeBundle(userInfo != null ? userInfo.asBundle() : new Bundle());
dest.writeByte((byte) (audioMuted == null ? 0 : audioMuted ? 1 : 2));
dest.writeByte((byte) (audioOnly == null ? 0 : audioOnly ? 1 : 2));
dest.writeByte((byte) (videoMuted == null ? 0 : videoMuted ? 1 : 2));
}
@Override

View File

@@ -57,22 +57,6 @@ public class JitsiMeetFragment extends Fragment {
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
JitsiMeetActivityDelegate.onActivityResult(
getActivity(), requestCode, resultCode, data);
}
@Override
public void onDestroyView() {
if (view != null) {
view.dispose();
view = null;
}
super.onDestroyView();
}
@Override
public void onDestroy() {
super.onDestroy();

View File

@@ -21,11 +21,13 @@ import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.os.IBinder;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
/**
* This class implements an Android {@link Service}, a foreground one specifically, and it's
@@ -35,19 +37,18 @@ import org.jitsi.meet.sdk.log.JitsiMeetLogger;
* See: https://developer.android.com/guide/components/services
*/
public class JitsiMeetOngoingConferenceService extends Service
implements OngoingConferenceTracker.OngoingConferenceListener {
implements OngoingConferenceTracker.OngoingConferenceListener {
private static final String TAG = JitsiMeetOngoingConferenceService.class.getSimpleName();
static final class Actions {
static final String START = TAG + ":START";
static final String HANGUP = TAG + ":HANGUP";
}
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver();
private boolean isAudioMuted;
static void launch(Context context) {
OngoingNotification.createOngoingConferenceNotificationChannel();
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
intent.setAction(Actions.START);
intent.setAction(Action.START.getName());
ComponentName componentName;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -70,11 +71,16 @@ public class JitsiMeetOngoingConferenceService extends Service
super.onCreate();
OngoingConferenceTracker.getInstance().addListener(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BroadcastEvent.Type.AUDIO_MUTED_CHANGED.getAction());
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(broadcastReceiver, intentFilter);
}
@Override
public void onDestroy() {
OngoingConferenceTracker.getInstance().removeListener(this);
LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(broadcastReceiver);
super.onDestroy();
}
@@ -86,26 +92,37 @@ public class JitsiMeetOngoingConferenceService extends Service
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final String action = intent.getAction();
if (Actions.START.equals(action)) {
Notification notification = OngoingNotification.buildOngoingConferenceNotification();
if (notification == null) {
final String actionName = intent.getAction();
final Action action = Action.fromName(actionName);
switch (action) {
case UNMUTE:
case MUTE:
Intent muteBroadcastIntent = BroadcastIntentHelper.buildSetAudioMutedIntent(action == Action.MUTE);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(muteBroadcastIntent);
break;
case START:
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted);
if (notification == null) {
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
} else {
startForeground(OngoingNotification.NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " Service started");
}
break;
case HANGUP:
JitsiMeetLogger.i(TAG + " Hangup requested");
Intent hangupBroadcastIntent = BroadcastIntentHelper.buildHangUpIntent();
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(hangupBroadcastIntent);
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
} else {
startForeground(OngoingNotification.NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " Service started");
}
} else if (Actions.HANGUP.equals(action)) {
JitsiMeetLogger.i(TAG + " Hangup requested");
// Abort all ongoing calls
if (AudioModeModule.useConnectionService()) {
ConnectionService.abortConnections();
}
stopSelf();
} else {
JitsiMeetLogger.w(TAG + " Unknown action received: " + action);
stopSelf();
break;
default:
JitsiMeetLogger.w(TAG + " Unknown action received: " + action);
stopSelf();
break;
}
return START_NOT_STICKY;
@@ -115,7 +132,50 @@ public class JitsiMeetOngoingConferenceService extends Service
public void onCurrentConferenceChanged(String conferenceUrl) {
if (conferenceUrl == null) {
stopSelf();
OngoingNotification.resetStartingtime();
JitsiMeetLogger.i(TAG + "Service stopped");
}
}
public enum Action {
START(TAG + ":START"),
HANGUP(TAG + ":HANGUP"),
MUTE(TAG + ":MUTE"),
UNMUTE(TAG + ":UNMUTE");
private final String name;
Action(String name) {
this.name = name;
}
public static Action fromName(String name) {
for (Action action : Action.values()) {
if (action.name.equalsIgnoreCase(name)) {
return action;
}
}
return null;
}
public String getName() {
return name;
}
}
private class BroadcastReceiver extends android.content.BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
isAudioMuted = Boolean.parseBoolean(intent.getStringExtra("muted"));
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted);
if (notification == null) {
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
} else {
startForeground(OngoingNotification.NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " Service started");
}
}
}
}

View File

@@ -1,6 +1,5 @@
/*
* Copyright @ 2018-present 8x8, Inc.
* Copyright @ 2017-2018 Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -126,7 +125,7 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
= ReactInstanceManagerHolder.getNativeModule(
PictureInPictureModule.class);
if (pipModule != null
&& PictureInPictureModule.isPictureInPictureSupported()
&& pipModule.isPictureInPictureSupported()
&& !JitsiMeetActivityDelegate.arePermissionsBeingRequested()
&& this.url != null) {
try {
@@ -198,7 +197,14 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
* by/associated with the specified {@code name}.
*/
@Override
@Deprecated
protected void onExternalAPIEvent(String name, ReadableMap data) {
onExternalAPIEvent(LISTENER_METHODS, name, data);
}
@Override
protected void onDetachedFromWindow() {
dispose();
super.onDetachedFromWindow();
}
}

View File

@@ -21,6 +21,7 @@ import java.util.Map;
/**
* Interface for listening to events coming from Jitsi Meet.
*/
@Deprecated
public interface JitsiMeetViewListener {
/**
* Called when a conference was joined.

View File

@@ -32,6 +32,7 @@ import java.util.regex.Pattern;
* Utility methods for helping with transforming {@link ExternalAPIModule}
* events into listener methods. Used with descendants of {@link BaseReactView}.
*/
@Deprecated
public final class ListenerUtils {
/**
* Extracts the methods defined in a listener and creates a mapping of this

View File

@@ -47,7 +47,7 @@ class LocaleDetector extends ReactContextBaseJavaModule {
public Map<String, Object> getConstants() {
Context context = getReactApplicationContext();
HashMap<String,Object> constants = new HashMap<>();
constants.put("locale", context.getResources().getConfiguration().locale.toString());
constants.put("locale", context.getResources().getConfiguration().locale.toLanguageTag());
return constants;
}
@@ -55,4 +55,4 @@ class LocaleDetector extends ReactContextBaseJavaModule {
public String getName() {
return "LocaleDetector";
}
}
}

View File

@@ -0,0 +1,10 @@
package org.jitsi.meet.sdk;
import java.util.ArrayList;
import java.util.List;
public class NotificationChannels {
static final String ONGOING_CONFERENCE_CHANNEL_ID = "JitsiOngoingConferenceChannel";
public static List<String> allIds = new ArrayList<String>() {{ add(ONGOING_CONFERENCE_CHANNEL_ID); }};
}

View File

@@ -16,6 +16,8 @@
package org.jitsi.meet.sdk;
import static org.jitsi.meet.sdk.NotificationChannels.ONGOING_CONFERENCE_CHANNEL_ID;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -23,13 +25,14 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import androidx.annotation.StringRes;
import androidx.core.app.NotificationCompat;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.Random;
/**
* Helper class for creating the ongoing notification which is used with
* {@link JitsiMeetOngoingConferenceService}. It allows the user to easily get back to the app
@@ -38,11 +41,8 @@ import java.util.Random;
class OngoingNotification {
private static final String TAG = OngoingNotification.class.getSimpleName();
private static final String CHANNEL_ID = "JitsiNotificationChannel";
private static final String CHANNEL_NAME = "Ongoing Conference Notifications";
static final int NOTIFICATION_ID = new Random().nextInt(99999) + 10000;
private static long startingTime = 0;
static void createOngoingConferenceNotificationChannel() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
@@ -56,16 +56,16 @@ class OngoingNotification {
}
NotificationManager notificationManager
= (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel
= notificationManager.getNotificationChannel(CHANNEL_ID);
= notificationManager.getNotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID);
if (channel != null) {
// The channel was already created, no need to do it again.
return;
}
channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
channel = new NotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID, context.getString(R.string.ongoing_notification_action_unmute), NotificationManager.IMPORTANCE_DEFAULT);
channel.enableLights(false);
channel.enableVibration(false);
channel.setShowBadge(false);
@@ -73,7 +73,7 @@ class OngoingNotification {
notificationManager.createNotificationChannel(channel);
}
static Notification buildOngoingConferenceNotification() {
static Notification buildOngoingConferenceNotification(boolean isMuted) {
Context context = ReactInstanceManagerHolder.getCurrentActivity();
if (context == null) {
JitsiMeetLogger.w(TAG + " Cannot create notification: no current context");
@@ -81,13 +81,12 @@ class OngoingNotification {
}
Intent notificationIntent = new Intent(context, context.getClass());
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder = new NotificationCompat.Builder(context, CHANNEL_ID);
} else {
builder = new NotificationCompat.Builder(context);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, ONGOING_CONFERENCE_CHANNEL_ID);
if (startingTime == 0) {
startingTime = System.currentTimeMillis();
}
builder
@@ -97,23 +96,36 @@ class OngoingNotification {
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setOngoing(true)
.setWhen(startingTime)
.setUsesChronometer(true)
.setAutoCancel(false)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setUsesChronometer(true)
.setOnlyAlertOnce(true)
.setSmallIcon(context.getResources().getIdentifier("ic_notification", "drawable", context.getPackageName()));
// Add a "hang-up" action only if we are using ConnectionService.
if (AudioModeModule.useConnectionService()) {
Intent hangupIntent = new Intent(context, JitsiMeetOngoingConferenceService.class);
hangupIntent.setAction(JitsiMeetOngoingConferenceService.Actions.HANGUP);
PendingIntent hangupPendingIntent
= PendingIntent.getService(context, 0, hangupIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Action hangupAction = new NotificationCompat.Action(0, "Hang up", hangupPendingIntent);
NotificationCompat.Action hangupAction = createAction(context, JitsiMeetOngoingConferenceService.Action.HANGUP, R.string.ongoing_notification_action_hang_up);
builder.addAction(hangupAction);
}
JitsiMeetOngoingConferenceService.Action toggleAudioAction = isMuted
? JitsiMeetOngoingConferenceService.Action.UNMUTE : JitsiMeetOngoingConferenceService.Action.MUTE;
int toggleAudioTitle = isMuted ? R.string.ongoing_notification_action_unmute : R.string.ongoing_notification_action_mute;
NotificationCompat.Action audioAction = createAction(context, toggleAudioAction, toggleAudioTitle);
builder.addAction(hangupAction);
builder.addAction(audioAction);
return builder.build();
}
static void resetStartingtime() {
startingTime = 0;
}
private static NotificationCompat.Action createAction(Context context, JitsiMeetOngoingConferenceService.Action action, @StringRes int titleId) {
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
intent.setAction(action.getName());
PendingIntent pendingIntent
= PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
String title = context.getString(titleId);
return new NotificationCompat.Action(0, title, pendingIntent);
}
}

View File

@@ -0,0 +1,27 @@
package org.jitsi.meet.sdk;
import com.google.gson.annotations.SerializedName;
public class ParticipantInfo {
@SerializedName("participantId")
public String id;
@SerializedName("displayName")
public String displayName;
@SerializedName("avatarUrl")
public String avatarUrl;
@SerializedName("email")
public String email;
@SerializedName("name")
public String name;
@SerializedName("isLocal")
public boolean isLocal;
@SerializedName("role")
public String role;
}

View File

@@ -0,0 +1,90 @@
package org.jitsi.meet.sdk;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Nullable;
public class ParticipantsService extends android.content.BroadcastReceiver {
private static final String TAG = ParticipantsService.class.getSimpleName();
private static final String REQUEST_ID = "requestId";
private final Map<String, WeakReference<ParticipantsInfoCallback>> participantsInfoCallbackMap = new HashMap<>();
private static ParticipantsService instance;
@Nullable
public static ParticipantsService getInstance() {
return instance;
}
private ParticipantsService(Context context) {
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BroadcastEvent.Type.PARTICIPANTS_INFO_RETRIEVED.getAction());
localBroadcastManager.registerReceiver(this, intentFilter);
}
static void init(Context context) {
instance = new ParticipantsService(context);
}
public void retrieveParticipantsInfo(ParticipantsInfoCallback participantsInfoCallback) {
String callbackKey = UUID.randomUUID().toString();
this.participantsInfoCallbackMap.put(callbackKey, new WeakReference<>(participantsInfoCallback));
String actionName = BroadcastAction.Type.RETRIEVE_PARTICIPANTS_INFO.getAction();
WritableMap data = Arguments.createMap();
data.putString(REQUEST_ID, callbackKey);
ReactInstanceManagerHolder.emitEvent(actionName, data);
}
@Override
public void onReceive(Context context, Intent intent) {
BroadcastEvent event = new BroadcastEvent(intent);
switch (event.getType()) {
case PARTICIPANTS_INFO_RETRIEVED:
try {
List<ParticipantInfo> participantInfoList = new Gson().fromJson(
event.getData().get("participantsInfo").toString(),
new TypeToken<ArrayList<ParticipantInfo>>() {
}.getType());
ParticipantsInfoCallback participantsInfoCallback = this.participantsInfoCallbackMap.get(event.getData().get(REQUEST_ID).toString()).get();
if (participantsInfoCallback != null) {
participantsInfoCallback.onReceived(participantInfoList);
this.participantsInfoCallbackMap.remove(participantsInfoCallback);
}
} catch (Exception e) {
JitsiMeetLogger.w(TAG + "error parsing participantsList", e);
}
break;
}
}
public interface ParticipantsInfoCallback {
void onReceived(List<ParticipantInfo> participantInfoList);
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@ package org.jitsi.meet.sdk;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.PictureInPictureParams;
import android.os.Build;
import android.util.Rational;
@@ -30,20 +31,42 @@ import com.facebook.react.module.annotations.ReactModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.HashMap;
import java.util.Map;
import static android.content.Context.ACTIVITY_SERVICE;
@ReactModule(name = PictureInPictureModule.NAME)
class PictureInPictureModule
extends ReactContextBaseJavaModule {
class PictureInPictureModule extends ReactContextBaseJavaModule {
public static final String NAME = "PictureInPicture";
private static final String TAG = NAME;
static boolean isPictureInPictureSupported() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
}
private static boolean isSupported;
private boolean isDisabled;
public PictureInPictureModule(ReactApplicationContext reactContext) {
super(reactContext);
ActivityManager am = (ActivityManager) reactContext.getSystemService(ACTIVITY_SERVICE);
// Android Go devices don't support PiP. There doesn't seem to be a better way to detect it than
// to use ActivityManager.isLowRamDevice().
// https://stackoverflow.com/questions/58340558/how-to-detect-android-go
isSupported = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !am.isLowRamDevice();
}
/**
* Gets a {@code Map} of constants this module exports to JS. Supports JSON
* types.
*
* @return a {@link Map} of constants this module exports to JS
*/
@Override
public Map<String, Object> getConstants() {
Map<String, Object> constants = new HashMap<>();
constants.put("SUPPORTED", isSupported);
return constants;
}
/**
@@ -61,7 +84,11 @@ class PictureInPictureModule
*/
@TargetApi(Build.VERSION_CODES.O)
public void enterPictureInPicture() {
if (!isPictureInPictureSupported()) {
if (isDisabled) {
return;
}
if (!isSupported) {
throw new IllegalStateException("Picture-in-Picture not supported");
}
@@ -104,6 +131,15 @@ class PictureInPictureModule
}
}
@ReactMethod
public void setPictureInPictureDisabled(Boolean disabled) {
this.isDisabled = disabled;
}
public boolean isPictureInPictureSupported() {
return isSupported;
}
@Override
public String getName() {
return NAME;

View File

@@ -1,5 +1,5 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,21 +33,10 @@ import com.facebook.react.module.annotations.ReactModule;
* is used with the conference audio-only mode.
*/
@ReactModule(name = ProximityModule.NAME)
class ProximityModule
extends ReactContextBaseJavaModule {
class ProximityModule extends ReactContextBaseJavaModule {
public static final String NAME = "Proximity";
/**
* This type of wake lock (the one activated by the proximity sensor) has
* been available for a while, but the constant was only exported in API
* level 21 (Android Marshmallow) so make no assumptions and use its value
* directly.
*
* TODO: Remove when we bump the API level to 21.
*/
private static final int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
/**
* {@link WakeLock} instance.
*/
@@ -71,7 +60,7 @@ class ProximityModule
try {
wakeLock
= powerManager.newWakeLock(
PROXIMITY_SCREEN_OFF_WAKE_LOCK,
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
"jitsi:"+NAME);
} catch (Throwable ignored) {
wakeLock = null;

View File

@@ -29,13 +29,18 @@ import org.jitsi.meet.sdk.log.JitsiMeetLogger;
*/
@RequiresApi(api = Build.VERSION_CODES.O)
@ReactModule(name = RNConnectionService.NAME)
class RNConnectionService
extends ReactContextBaseJavaModule {
class RNConnectionService extends ReactContextBaseJavaModule {
public static final String NAME = "ConnectionService";
private static final String TAG = ConnectionService.TAG;
/**
* Handler for dealing with call state changes. We are acting as a proxy between ConnectionService
* and other modules such as {@link AudioModeModule}.
*/
private CallAudioStateListener callAudioStateListener;
/**
* Sets the audio route on all existing {@link android.telecom.Connection}s
*
@@ -84,9 +89,17 @@ class RNConnectionService
ReactApplicationContext ctx = getReactApplicationContext();
Uri address = Uri.fromParts(PhoneAccount.SCHEME_SIP, handle, null);
PhoneAccountHandle accountHandle
= ConnectionService.registerPhoneAccount(
getReactApplicationContext(), address, callUUID);
PhoneAccountHandle accountHandle;
try {
accountHandle
= ConnectionService.registerPhoneAccount(getReactApplicationContext(), address, callUUID);
} catch (Throwable tr) {
JitsiMeetLogger.e(tr, TAG + " error in startCall");
promise.reject(tr);
return;
}
Bundle extras = new Bundle();
extras.putParcelable(
@@ -100,15 +113,23 @@ class RNConnectionService
ConnectionService.registerStartCallPromise(callUUID, promise);
try {
TelecomManager tm
= (TelecomManager) ctx.getSystemService(
Context.TELECOM_SERVICE);
TelecomManager tm = null;
try {
tm = (TelecomManager) ctx.getSystemService(Context.TELECOM_SERVICE);
tm.placeCall(address, extras);
} catch (Exception e) {
} catch (Throwable tr) {
JitsiMeetLogger.e(tr, TAG + " error in startCall");
if (tm != null) {
try {
tm.unregisterPhoneAccount(accountHandle);
} catch (Throwable tr1) {
// UnsupportedOperationException: System does not support feature android.software.connectionservice
// was observed here. Ignore.
}
}
ConnectionService.unregisterStartCallPromise(callUUID);
promise.reject(e);
promise.reject(tr);
}
}
@@ -146,8 +167,11 @@ class RNConnectionService
@ReactMethod
public void reportConnectedOutgoingCall(String callUUID, Promise promise) {
JitsiMeetLogger.d(TAG + " reportConnectedOutgoingCall " + callUUID);
ConnectionService.setConnectionActive(callUUID);
promise.resolve(null);
if (ConnectionService.setConnectionActive(callUUID)) {
promise.resolve(null);
} else {
promise.reject("CONNECTION_NOT_FOUND_ERROR", "Connection wasn't found.");
}
}
@Override
@@ -168,4 +192,28 @@ class RNConnectionService
public void updateCall(String callUUID, ReadableMap callState) {
ConnectionService.updateCall(callUUID, callState);
}
public CallAudioStateListener getCallAudioStateListener() {
return callAudioStateListener;
}
public void setCallAudioStateListener(CallAudioStateListener callAudioStateListener) {
this.callAudioStateListener = callAudioStateListener;
}
/**
* Handler for call state changes. {@code ConnectionServiceImpl} will call this handler when the
* call audio state changes.
*
* @param callAudioState The current call's audio state.
*/
void onCallAudioStateChange(android.telecom.CallAudioState callAudioState) {
if (callAudioStateListener != null) {
callAudioStateListener.onCallAudioStateChange(callAudioState);
}
}
interface CallAudioStateListener {
void onCallAudioStateChange(android.telecom.CallAudioState callAudioState);
}
}

View File

@@ -1,6 +1,5 @@
/*
* Copyright @ 2019-present 8x8, Inc.
* Copyright @ 2017-2018 Atlassian Pty Ltd
* Copyright @ 2017-present 8x8, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,27 +17,25 @@
package org.jitsi.meet.sdk;
import android.app.Activity;
import androidx.annotation.Nullable;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.common.LifecycleState;
import com.facebook.react.devsupport.DevInternalSettings;
import com.facebook.react.jscexecutor.JSCExecutorFactory;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.uimanager.ViewManager;
import com.facebook.soloader.SoLoader;
import com.oney.WebRTCModule.RTCVideoViewManager;
import com.oney.WebRTCModule.WebRTCModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import org.devio.rn.splashscreen.SplashScreenModule;
import org.webrtc.SoftwareVideoDecoderFactory;
import org.webrtc.SoftwareVideoEncoderFactory;
import org.webrtc.VideoDecoderFactory;
import org.webrtc.VideoEncoderFactory;
import org.webrtc.audio.AudioDeviceModule;
import org.webrtc.audio.JavaAudioDeviceModule;
@@ -70,6 +67,7 @@ class ReactInstanceManagerHolder {
new JavaScriptSandboxModule(reactContext),
new LocaleDetector(reactContext),
new LogBridgeModule(reactContext),
new SplashScreenModule(reactContext),
new PictureInPictureModule(reactContext),
new ProximityModule(reactContext),
new WiFiStatsModule(reactContext),
@@ -85,23 +83,13 @@ class ReactInstanceManagerHolder {
AudioDeviceModule adm = JavaAudioDeviceModule.builder(reactContext)
.createAudioDeviceModule();
VideoDecoderFactory videoDecoderFactory = new SoftwareVideoDecoderFactory();
VideoEncoderFactory videoEncoderFactory = new SoftwareVideoEncoderFactory();
options.setAudioDeviceModule(adm);
options.setVideoDecoderFactory(videoDecoderFactory);
options.setVideoEncoderFactory(videoEncoderFactory);
options.setVideoDecoderFactory(new SoftwareVideoDecoderFactory());
options.setVideoEncoderFactory(new SoftwareVideoEncoderFactory());
nativeModules.add(new WebRTCModule(reactContext, options));
try {
Class<?> amplitudeModuleClass = Class.forName("org.jitsi.meet.sdk.AmplitudeModule");
Constructor constructor = amplitudeModuleClass.getConstructor(ReactApplicationContext.class);
nativeModules.add((NativeModule)constructor.newInstance(reactContext));
} catch (Exception e) {
// Ignore any error, the module is not compiled when LIBRE_BUILD is enabled.
}
return nativeModules;
}
@@ -185,21 +173,28 @@ class ReactInstanceManagerHolder {
return;
}
SoLoader.init(activity, /* native exopackage */ false);
List<ReactPackage> packages
= new ArrayList<>(Arrays.asList(
new com.BV.LinearGradient.LinearGradientPackage(),
new com.reactnativecommunity.asyncstorage.AsyncStoragePackage(),
new com.ocetnik.timer.BackgroundTimerPackage(),
new com.calendarevents.CalendarEventsPackage(),
new com.corbt.keepawake.KCKeepAwakePackage(),
new com.facebook.react.shell.MainReactPackage(),
new com.horcrux.svg.SvgPackage(),
new com.ocetnik.timer.BackgroundTimerPackage(),
new com.reactnativecommunity.asyncstorage.AsyncStoragePackage(),
new com.reactnativecommunity.netinfo.NetInfoPackage(),
new com.oblador.performance.PerformancePackage(),
new com.reactnativecommunity.slider.ReactSliderPackage(),
new com.brentvatne.react.ReactVideoPackage(),
new com.swmansion.reanimated.ReanimatedPackage(),
new org.reactnative.maskedview.RNCMaskedViewPackage(),
new com.reactnativecommunity.webview.RNCWebViewPackage(),
new com.kevinresol.react_native_default_preference.RNDefaultPreferencePackage(),
new com.learnium.RNDeviceInfo.RNDeviceInfo(),
new com.swmansion.gesturehandler.react.RNGestureHandlerPackage(),
new com.rnimmersive.RNImmersivePackage(),
new com.swmansion.rnscreens.RNScreensPackage(),
new com.zmxv.RNSound.RNSoundPackage(),
new com.th3rdwave.safeareacontext.SafeAreaContextPackage(),
new com.horcrux.svg.SvgPackage(),
new ReactPackageAdapter() {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
@@ -211,6 +206,16 @@ class ReactInstanceManagerHolder {
}
}));
// AmplitudeReactNativePackage
try {
Class<?> amplitudePackageClass = Class.forName("com.amplitude.reactnative.AmplitudeReactNativePackage");
Constructor constructor = amplitudePackageClass.getConstructor();
packages.add((ReactPackage)constructor.newInstance());
} catch (Exception e) {
// Ignore any error, the module is not compiled when LIBRE_BUILD is enabled.
}
// RNGoogleSigninPackage
try {
Class<?> googlePackageClass = Class.forName("co.apptailor.googlesignin.RNGoogleSigninPackage");
Constructor constructor = googlePackageClass.getConstructor();

View File

@@ -24,11 +24,24 @@ public class JitsiMeetLogger {
}
public static void addHandler(JitsiMeetBaseLogHandler handler) {
Timber.plant(handler);
if (!Timber.forest().contains(handler)) {
try {
Timber.plant(handler);
} catch (Throwable t) {
Timber.w(t, "Couldn't add log handler");
}
}
}
public static void removeHandler(JitsiMeetBaseLogHandler handler) {
Timber.uproot(handler);
if (Timber.forest().contains(handler)) {
try {
Timber.uproot(handler);
} catch (Throwable t) {
Timber.w(t, "Couldn't remove log handler");
}
}
}
public static void v(String message, Object... args) {

View File

@@ -3,4 +3,8 @@
<string name="dropbox_app_key"></string>
<string name="ongoing_notification_title">Ongoing meeting</string>
<string name="ongoing_notification_text">You are currently in a meeting. Tap to return to it.</string>
<string name="ongoing_notification_action_hang_up">Hang up</string>
<string name="ongoing_notification_action_mute">Mute</string>
<string name="ongoing_notification_action_unmute">Unmute</string>
<string name="ongoing_notification_channel_name">Ongoing Conference Notifications</string>
</resources>

View File

@@ -1,26 +1,48 @@
rootProject.name = 'jitsi-meet'
include ':app', ':sdk'
include ':react-native-amplitude'
project(':react-native-amplitude').projectDir = new File(rootProject.projectDir, '../node_modules/@amplitude/react-native//android')
include ':react-native-async-storage'
project(':react-native-async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-async-storage/async-storage/android')
include ':react-native-background-timer'
project(':react-native-background-timer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-timer/android')
include ':react-native-calendar-events'
project(':react-native-calendar-events').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-calendar-events/android')
include ':react-native-community-async-storage'
project(':react-native-community-async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/async-storage/android')
include ':react-native-community_netinfo'
project(':react-native-community_netinfo').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/netinfo/android')
include ':react-native-default-preference'
project(':react-native-default-preference').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-default-preference/android')
include ':react-native-device-info'
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
include ':react-native-google-signin'
project(':react-native-google-signin').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/google-signin/android')
include ':react-native-immersive'
project(':react-native-immersive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immersive/android')
include ':react-native-keep-awake'
project(':react-native-keep-awake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keep-awake/android')
include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')
include ':react-native-masked-view_masked-view'
project(':react-native-masked-view_masked-view').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-masked-view/masked-view/android')
include ':react-native-performance'
project(':react-native-performance').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-performance/android')
include ':react-native-reanimated'
project(':react-native-reanimated').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-reanimated/android')
include ':react-native-safe-area-context'
project(':react-native-safe-area-context').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-safe-area-context/android')
include ':react-native-screens'
project(':react-native-screens').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-screens/android')
include ':react-native-slider'
project(':react-native-slider').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/slider/android')
include ':react-native-sound'
project(':react-native-sound').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sound/android')
include ':react-native-splash-screen'
project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android')
include ':react-native-svg'
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
include ':react-native-video'
project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android')
include ':react-native-webrtc'
project(':react-native-webrtc').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webrtc/android')
include ':react-native-webview'

25
app.js
View File

@@ -1,15 +1,29 @@
/* application specific logic */
import 'jquery';
import 'jquery-contextmenu';
import 'jQuery-Impromptu';
import '@matrix-org/olm';
import 'focus-visible';
// We need to setup the jitsi-local-storage as early as possible so that we can start using it.
// NOTE: If jitsi-local-storage is used before the initial setup is performed this will break the use case when we use
// the local storage from the parent page when the localStorage is disabled. Also the setup is relying that
// window.location is not changed and still has all URL parameters.
import './react/features/base/jitsi-local-storage/setup';
import conference from './conference';
import API from './modules/API';
import keyboardshortcut from './modules/keyboardshortcut/keyboardshortcut';
import remoteControl from './modules/remotecontrol/RemoteControl';
import translation from './modules/translation/translation';
import UI from './modules/UI/UI';
import keyboardshortcut from './modules/keyboardshortcut/keyboardshortcut';
import translation from './modules/translation/translation';
// Initialize Olm as early as possible.
if (window.Olm) {
window.Olm.init().catch(e => {
console.error('Failed to initialize Olm, E2EE will be disabled', e);
delete window.Olm;
});
}
window.APP = {
API,
@@ -32,7 +46,6 @@ window.APP = {
},
keyboardshortcut,
remoteControl,
translation,
UI
};

9
babel.config.js Normal file
View File

@@ -0,0 +1,9 @@
module.exports = {
presets: [ 'module:metro-react-native-babel-preset' ],
env: {
production: {
plugins: [ 'react-native-paper/babel' ]
}
},
plugins: [ 'optional-require' ]
};

View File

@@ -0,0 +1 @@
<base href="/" />

File diff suppressed because it is too large Load Diff

848
config.js

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,33 @@
/* global APP, JitsiMeetJS, config */
import AuthHandler from './modules/UI/authentication/AuthHandler';
import jitsiLocalStorage from './modules/util/JitsiLocalStorage';
import { jitsiLocalStorage } from '@jitsi/js-utils';
import Logger from 'jitsi-meet-logger';
import { redirectToTokenAuthService } from './modules/UI/authentication/AuthHandler';
import { LoginDialog } from './react/features/authentication/components';
import { isTokenAuthEnabled } from './react/features/authentication/functions';
import {
connectionEstablished,
connectionFailed
} from './react/features/base/connection';
} from './react/features/base/connection/actions';
import { openDialog } from './react/features/base/dialog/actions';
import { setJWT } from './react/features/base/jwt';
import {
isFatalJitsiConnectionError,
JitsiConnectionErrors,
JitsiConnectionEvents
} from './react/features/base/lib-jitsi-meet';
import { getCustomerDetails } from './react/features/jaas/actions.any';
import { isVpaasMeeting, getJaasJWT } from './react/features/jaas/functions';
import { setPrejoinDisplayNameRequired } from './react/features/prejoin/actions';
const logger = Logger.getLogger(__filename);
const logger = require('jitsi-meet-logger').getLogger(__filename);
/**
* The feature announced so we can distinguish jibri participants.
*
* @type {string}
*/
export const DISCO_JIBRI_FEATURE = 'http://jitsi.org/protocol/jibri';
/**
* Checks if we have data to use attach instead of connect. If we have the data
@@ -71,17 +85,38 @@ function checkForAttachParametersAndConnect(id, password, connection) {
* @returns {Promise<JitsiConnection>} connection if
* everything is ok, else error.
*/
function connect(id, password, roomName) {
export async function connect(id, password, roomName) {
const connectionConfig = Object.assign({}, config);
const { issuer, jwt } = APP.store.getState()['features/base/jwt'];
const state = APP.store.getState();
let { jwt } = state['features/base/jwt'];
const { iAmRecorder, iAmSipGateway } = state['features/base/config'];
connectionConfig.bosh += `?room=${roomName}`;
if (!iAmRecorder && !iAmSipGateway && isVpaasMeeting(state)) {
await APP.store.dispatch(getCustomerDetails());
const connection
= new JitsiMeetJS.JitsiConnection(
null,
jwt && issuer && issuer !== 'anonymous' ? jwt : undefined,
connectionConfig);
if (!jwt) {
jwt = await getJaasJWT(state);
APP.store.dispatch(setJWT(jwt));
}
}
// Use Websocket URL for the web app if configured. Note that there is no 'isWeb' check, because there's assumption
// that this code executes only on web browsers/electron. This needs to be changed when mobile and web are unified.
let serviceUrl = connectionConfig.websocket || connectionConfig.bosh;
serviceUrl += `?room=${roomName}`;
connectionConfig.serviceUrl = serviceUrl;
if (connectionConfig.websocketKeepAliveUrl) {
connectionConfig.websocketKeepAliveUrl += `?room=${roomName}`;
}
const connection = new JitsiMeetJS.JitsiConnection(null, jwt, connectionConfig);
if (config.iAmRecorder) {
connection.addFeature(DISCO_JIBRI_FEATURE);
}
return new Promise((resolve, reject) => {
connection.addEventListener(
@@ -93,6 +128,10 @@ function connect(id, password, roomName) {
connection.addEventListener(
JitsiConnectionEvents.CONNECTION_FAILED,
connectionFailedHandler);
connection.addEventListener(
JitsiConnectionEvents.DISPLAY_NAME_REQUIRED,
displayNameRequiredHandler
);
/* eslint-disable max-params */
/**
@@ -146,6 +185,14 @@ function connect(id, password, roomName) {
reject(err);
}
/**
* Marks the display name for the prejoin screen as required.
* This can happen if a user tries to join a room with lobby enabled.
*/
function displayNameRequiredHandler() {
APP.store.dispatch(setPrejoinDisplayNameRequired());
}
checkForAttachParametersAndConnect(id, password, connection);
});
}
@@ -178,14 +225,41 @@ export function openConnection({ id, password, retry, roomName }) {
return connect(id, password, roomName).catch(err => {
if (retry) {
const { issuer, jwt } = APP.store.getState()['features/base/jwt'];
const { jwt } = APP.store.getState()['features/base/jwt'];
if (err === JitsiConnectionErrors.PASSWORD_REQUIRED
&& (!jwt || issuer === 'anonymous')) {
return AuthHandler.requestAuth(roomName, connect);
if (err === JitsiConnectionErrors.PASSWORD_REQUIRED && !jwt) {
return requestAuth(roomName);
}
}
throw err;
});
}
/**
* Show Authentication Dialog and try to connect with new credentials.
* If failed to connect because of PASSWORD_REQUIRED error
* then ask for password again.
* @param {string} [roomName] name of the conference room
*
* @returns {Promise<JitsiConnection>}
*/
function requestAuth(roomName) {
const config = APP.store.getState()['features/base/config'];
if (isTokenAuthEnabled(config)) {
// This Promise never resolves as user gets redirected to another URL
return new Promise(() => redirectToTokenAuthService(roomName));
}
return new Promise(resolve => {
const onSuccess = connection => {
resolve(connection);
};
APP.store.dispatch(
openDialog(LoginDialog, { onSuccess,
roomName })
);
});
}

Some files were not shown because too many files have changed in this diff Show More