Compare commits

...

982 Commits

Author SHA1 Message Date
Alex Bumbu
1893ced556 iOS: toggle audio mute & leave meeting lock screen widgets (#12581) 2022-11-18 13:25:48 +02:00
Calin-Teodor
7d9c13a618 feat(prejoin): updated styles 2022-11-18 11:02:05 +02:00
Hristo Terezov
48ed3b7dc6 fix(dialog): cancel hide timeout on openDialog
Since we unmount the dialog after a timeout because of an animation we
need to cancel the timeout in case we need to render new dialog.
Otherwise the actual hiding can be executed after we render the new
dialog.
2022-11-17 17:00:02 -06:00
Hristo Terezov
04abfe1a3b feat(dialog): add disableAutoHideOnSubmit prop
Needed for shared video dialog.
2022-11-17 17:00:02 -06:00
Alex Bumbu
d45decc393 Update JitsiMeet.h (#12574) 2022-11-17 16:31:37 +02:00
Saúl Ibarra Corretgé
88f8f48465 fix(participants) don't treat Jigasi like a fake participant
We only really want to know if a participant is Jigasi for displaying a
specific icon, for all other intents and purposes it's a normal
participant.
2022-11-17 15:13:54 +01:00
Saúl Ibarra Corretgé
8127ea2479 feat(redux) throw exception in case invalid listeners are registered
This allows catching mistakes early.
2022-11-17 11:07:57 +01:00
Saúl Ibarra Corretgé
b22915c169 fix(rn,filmstrip) fix invalid selector registered as state listener 2022-11-17 11:07:57 +01:00
Saúl Ibarra Corretgé
14fcd153e5 fix(rn,connection-indicator) align rendering with web
Use the same way for calculating que perceived quality and display it.
2022-11-17 11:07:57 +01:00
Robert Pintilii
48efe36cdf fix(dial-in) Fix warning (#12571)
Only show warning if the feature is enabled
2022-11-16 12:14:58 +02:00
Saúl Ibarra Corretgé
0c373e105b ref(StageFilmstrip) mark as experimental
THere are a bunch of unhandled corner cases involving virtual
screen-sharing participants.
2022-11-15 10:34:58 -06:00
Shawn
e57c7f92a8 refactor(end-conference): distinguish between component vs host module logic 2022-11-15 10:34:40 -06:00
Jaya Allamsetty
70fa44f85f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1533.0.0+7b257686...v1535.0.0+e6263e7c
2022-11-15 11:08:37 -05:00
rinenweb
bcc5beb73d fix(lang) fixup main-el.json
Missing "{" in line 74 and name is not displayed at all when {name} is used in line 520.
2022-11-15 09:41:43 +01:00
Joseph Garrone
4ef4e45ee4 fix(styles) Remove Theme type annotation (#12544)
* tss-react doesn't need a type anotation for the Theme

* Update tss-react to 4.4.4
2022-11-15 09:50:22 +02:00
TTG
c9ff0bb75f lang: Remove Indonesian & Norwegian translations (#12554)
* Remove Indonesian translation

* Remove Norwegian translation
2022-11-13 21:38:42 -06:00
chipechop
282817db28 lang: Update main-it.json (#12541)
refining
2022-11-11 16:37:54 -06:00
Shawn
93ab7725e7 feat(toolbox) notify click for hangup-menu and end-meeting menu button 2022-11-11 16:06:53 -06:00
Calin-Teodor
53ccb97d34 fix(welcome/native): removed unused constant 2022-11-11 18:11:41 +01:00
Calin-Teodor
6346d99d0e fix(welcome/native): placeholder fix 2022-11-11 18:11:41 +01:00
Saúl Ibarra Corretgé
79c4cabbad feat(rn) make status bar visible at all times 2022-11-11 17:25:28 +01:00
Robert Pintilii
7a9f51b01b ref(TS) Convert some features to TS (#12546) 2022-11-11 10:20:33 +02:00
Robert Pintilii
a884a6b232 fix(ui) Fix new icons issues (#12545) 2022-11-11 09:58:55 +02:00
Jaya Allamsetty
b00a17c1c3 fix(connection-stats) Do not display max enabled resolution on SS tile. 2022-11-10 17:00:34 -05:00
bgrozev
99955df5c8 Cleanup sounds (switch to mp3, encode at lower bitrate).' (#12507)
* Reencode mp3 sounds at lower bitrate, mono.
* Encode wav sounds as mp3.
* Remove unused sound file.
* Add opus encoded sounds.
* Add a script to encode sounds.
2022-11-10 10:06:40 -06:00
Calin-Teodor
c0f0803f01 feat(base/modal): addBottomPadding default prop for extra padding on JitsiScreen 2022-11-10 17:22:36 +02:00
dependabot[bot]
b2c864cbba chore(deps): bump loader-utils from 1.4.0 to 1.4.1
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.1.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.1/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.1)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-10 11:30:02 +01:00
Saúl Ibarra Corretgé
31957d4085 chore(fonts) drop no longer used font 2022-11-10 11:16:22 +01:00
Saúl Ibarra Corretgé
4f83fc2a6d fix(ios) fix uploading symbols to Crashlytics
Since we no longer use bitcode we need to upload them when we build the
app.
2022-11-10 11:16:06 +01:00
Robert Pintilii
4bd27730ce ref(TS) Convert some features to TS (#12523) 2022-11-10 10:45:56 +02:00
Robert Pintilii
817d7f0c0d fix(thumbnail) Fix top indicators sizes (#12539)
Fix sizes after icon update
2022-11-10 10:22:57 +02:00
Robert Pintilii
19a9b17425 fix(recording) Fix local recording (#12531)
Starting chrome 107, the recorder does not record any data if the audio stream has no tracks
To fix this we create a track for the local user (muted track)
2022-11-10 10:22:42 +02:00
Robert Pintilii
cc33930259 fix(thumbnail) Open native video context menu (#12532) 2022-11-10 09:20:42 +02:00
Jaya Allamsetty
6223e16ca5 ref(config) Cleanup unused flags related to multi-stream mode. 2022-11-09 15:23:30 -05:00
José Luís Andrade
99385ae3d7 fix(config) add "whiteboard" to toolbarButtons 2022-11-09 17:37:51 +01:00
Shawn
17cace070e feat(external-api) Add endConference command 2022-11-09 16:00:17 +01:00
Calin-Teodor
cdb2436b73 feat(base/ui): updated BUTTON_TYPES imports based upon native or web 2022-11-09 16:35:08 +02:00
Calin-Teodor
10db5ecf1f feat(welcome/native): improved ui 2022-11-09 14:52:26 +02:00
Robert Pintilii
cbb8b5f620 fix(dialog) Fix initial focus (#12509)
Don't focus on the close button if there's another focusable element
2022-11-09 12:07:37 +02:00
Jaya Allamsetty
f3e4c57036 Remove legacy signaling and legacy SS mode. (#12499)
* fix(connection-status): remove unused participant connectionStatus.
Always use trackStreamingStatus now that legacy endpoint based signaling has been removed.

* remove the check for source-name signaling.
Default to source-name signaling always.

* Remove the check for multi-stream mode.
Make that the default mode and remove the support for legacy SS mode.

* Remove presenter mode.

* update latest@lib-jitsi-meet
2022-11-08 14:15:49 -05:00
Calinteodor
1731d5188d feat(prejoin/native): updated UI (#12528) 2022-11-08 19:14:29 +02:00
Calinteodor
2c7dc5e40e feat(base/ui/native): Use new Input component (#12526)
feat(base/ui/native): replaced react native TextInput component with our native Input component
2022-11-08 17:46:46 +02:00
Calinteodor
74cd486232 feat(chat/native): moved ChatAndPollsNavigator to mobile/navigation (#12527)
* feat(chat/native): moved ChatAndPollsNavigator to mobile/navigation
2022-11-08 17:43:02 +02:00
Alexey Matveev
30f3bac217 feat(ios) add ability to go PiP while screen sharing 2022-11-08 16:25:36 +01:00
Vadim A. Misbakh-Soloviov
84fc4dd63f (feat) OpenResty Support
Signed-off-by: Vadim A. Misbakh-Soloviov <git@mva.name>
2022-11-08 08:53:50 -06:00
Robert Pintilii
936a1a6b0e ref(design) Update icons (#12489)
Remove unused icons
Remove fill none from icons
Rename some icons
2022-11-08 12:24:32 +02:00
Gabriel Borlea
f4e8f860b1 feat(rtc-stats): send camera off and on events (#12522)
* feat(rtc-stats): send camera off and on events

* code review
2022-11-08 11:41:53 +02:00
Nils Ohlmeier
ee544d25f8 chore(deps) @jitsi/rtcstats 9.4.1 (#12512)
* chore(deps) @jitsi/rtcstats 9.4.1

* squash: Fix missing package-lock change.

Co-authored-by: damencho <damencho@jitsi.org>
2022-11-07 09:59:35 -06:00
Alexey Matveev
c32866f6a2 flag to hide settings button in overflow menu (#12515)
* flag to hide settings button in overflow menu
2022-11-07 14:00:46 +02:00
Alexey Matveev
215c2825de fix(rn) fix hangup all action
Co-authored-by: Alexey Matveev <malex@1forma.ru>
2022-11-07 10:30:08 +01:00
Christoph Settgast
edb614783b fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-11-05 14:18:16 -05:00
Alexey Matveev
0e19bc9cd6 ru-localization minors 2022-11-04 13:46:41 -05:00
Johan Bernhardsson
caff0c64af lang: Update Swedish 100% translation (#12511)
* first Swedish update

* 100% swedish

* Update main-sv.json

* Updated Swedish translation

* Updated Swedish translation dropped product name

Co-authored-by: Johan Bernhardsson <johan@kafait.se>
2022-11-04 13:45:15 -05:00
Petr Ferschmann
fcb1845e2a lang: Updated Czech Translation (#12388)
* Translation to czech language

* Updated czech translation

* Updated czech translation

Co-authored-by: Дамян Минков <damencho@jitsi.org>
2022-11-03 16:01:31 -05:00
Suleyman BİLGİN
977295bd87 lang: Update Turkish translation (#12348)
* Turkish translations that were missing were added, and certain terms were changed to sound pleasant.

* squash: new line

Co-authored-by: Suleyman Bilgin <suleymanbilgin@thy.com>
Co-authored-by: Дамян Минков <damencho@jitsi.org>
2022-11-03 16:01:12 -05:00
apetrus20
ed139f53ca fix(polls) refactor storage of poll data 2022-11-03 16:08:20 +01:00
Alexey Matveev
5692c3cb4d fix(lang) update Russian translation 2022-11-03 14:24:58 +01:00
TTG
ed62409ad5 fix(lang) update translations 2022-11-03 10:53:25 +01:00
Robert Pintilii
b52b4c2a78 ref(TS ) Improve TS (#12491)
Remove global variables from files
Change type to interface
2022-11-03 10:35:51 +02:00
Duduman Bogdan Vlad
36bef94c3c Remove logic show toolbar on new message received (#12488) 2022-11-03 09:18:21 +02:00
Hristo Terezov
a995b33753 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1528.0.0+23644901...v1530.0.0+f2af389e
2022-11-03 07:28:05 +01:00
Nils Ohlmeier
bfb15a2523 chore(deps) @jitsi/rtcstats 9.4.0 2022-11-03 07:26:14 +01:00
TTG
1d59c8122d fix(lang) update Chinese translations (#12344)
* Update Simplified Chinese translation

* Update Traditional Chinese translation

* Update translations

* Updated translation for #12391

* Updated translation for 12371
2022-11-02 16:41:26 -05:00
Hristo Terezov
31766c891b Fix get rooms info (#12492)
* Include local participant; filter out hidden participants for getRoomsInfo

* Review fixes: include ts changes and types

Co-authored-by: Bogdan Duduman <bogdan.duduman@8x8.com>
2022-11-02 12:06:45 -05:00
Robert Pintilii
7a3b8d6ac4 fix(recording-dialog) Fix broken dialog content (#12490) 2022-11-02 12:49:30 +02:00
Saúl Ibarra Corretgé
edf5e1c094 fix(ts) fix mysterious linting errors
We have a rule that should apply here, but somehow it doesn't...
2022-11-02 09:03:14 +01:00
Saúl Ibarra Corretgé
7cd39b7983 feat(ts) make tsc happy 2022-11-02 09:03:14 +01:00
Hristo Terezov
49bcf5c179 fix(iframeAPI): pinParticipant & setLargeVideo
Add the ability to specify video type when in multistream mode.
2022-11-01 18:33:09 -05:00
Filip Rejmus
2b3989e5e6 ref(features/base) remove no sound for id warn 2022-11-01 19:05:22 +01:00
Saúl Ibarra Corretgé
9b1e662a93 fix(connection-indicator) use SSRCs to match tiles to stats 2022-11-01 16:21:29 +01:00
Saúl Ibarra Corretgé
73160de3b7 fix(connection-stats) make local / remote layout consistent
Move region information and server count to the "More" section on both
types of tiles.
2022-11-01 16:21:29 +01:00
Saúl Ibarra Corretgé
f5fc524030 fix(connection-stats) fix rendering codec information
Ref: https://github.com/jitsi/lib-jitsi-meet/pull/2143
2022-11-01 16:21:29 +01:00
Saúl Ibarra Corretgé
6e3b3879cc chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1522.0.0+28436e57...v1528.0.0+23644901
2022-11-01 16:21:07 +01:00
Filip Rejmus
c9f9708166 ref(remove ReactInstanceHolder from AudioModule 2022-11-01 12:45:13 +01:00
Calinteodor
7a8350356a feat(base/react): removed old web Switch component and exports (#12481)
* feat(base/react): removed old Switch component and exports
2022-11-01 11:42:36 +02:00
Saúl Ibarra Corretgé
2596c463fe fix(ts) make tsc (almost) not cry on native
Co-authored-by: Calinteodor <calin.chitu@8x8.com>
Co-authored-by: Robert Pintilii <robert.pin9@gmail.com>
2022-11-01 10:07:10 +01:00
Saúl Ibarra Corretgé
2de0520835 chore(deps) eslint-config-jitsi@latest 2022-11-01 10:07:10 +01:00
JohnProv
c276c204ac lang: Update main-nl.json (#12479)
Fix name
2022-10-31 12:20:02 -05:00
Calinteodor
67cf6e6d18 feat(base/ui/native): removed unused files and updated imports (#12477)
* feat(base/ui/native): removed unused files and updated imports
2022-10-31 16:34:26 +02:00
Robert Pintilii
b321cf3639 ref(add-people-dialog) Update design (#12468)
Convert some files to TS
2022-10-31 09:56:26 +02:00
TTG
8e54a69160 feat: Adjust language list to be shown in native language (#12475)
* Remove language lists

* Replace with native language

* Remove languages resource
2022-10-29 09:20:50 -05:00
Milo Ivir
93e5e48648 lang: Update Croatian translation (#12441)
* Update Croatian translation

- update according to the current "main.json" file

* Update main-hr.json

- added the comma at line 486
I hope that solves the issue.
2022-10-28 11:22:25 -05:00
polfernandez
c945b9cc5e Misspelling. Update main-ca.json
There is a misspelling in the "joiningTitle" label. "S'està demanat per a entrar a la reunió...", should be "S'ha demanat per a entrar a la reunió..."
2022-10-28 09:33:39 -05:00
Robert Pintilii
7c3d2010e4 ref(TS) Convert some features to TS (#12471) 2022-10-28 11:53:24 +03:00
José Luís Andrade
894c5cd788 fix(lang) update Portuguese translation 2022-10-28 10:05:09 +02:00
chipechop
1c7e457879 fix(lang) update Italian translation 2022-10-28 10:04:30 +02:00
chipechop
b6b536962d fix(lang) update Italian language list 2022-10-28 10:03:35 +02:00
nomadbyte
b625b7b0ec fix(lang) update Ukrainian translation 2022-10-28 10:00:14 +02:00
Saúl Ibarra Corretgé
eb59949dfa fix(dialog,web) fix opening dialogs in succession
If onSubmit opens a new dialog, we'd be hiding it otherwise.
2022-10-28 08:57:56 +02:00
Robert Pintilii
69f4b116a9 ref(TS) Convert some features to TS (#12469) 2022-10-28 09:41:12 +03:00
Robert Pintilii
75d7c4b160 ref(dialog) Update some dialogs' styles (#12467) 2022-10-27 11:36:50 +03:00
Robert Pintilii
b5065306e5 ref(audio-popup) Replace InlineDialog with Popover (#12466) 2022-10-27 11:03:28 +03:00
Robert Pintilii
9f5a56bbc7 ref(TS) Convert some features to TS (#12462) 2022-10-27 10:33:11 +03:00
Mihaela Dumitru
b4809fe083 feat(gif) Support rating config + show display name over gif tile (#12461) 2022-10-26 16:23:39 +03:00
Robert Pintilii
6dedc7fb1a ref(TS) Convert some features to TS (#12454) 2022-10-26 09:59:21 +03:00
Robert Pintilii
a780051720 fix(input) Fix background color (#12452)
Use theme background on autofill Firefox
2022-10-26 09:09:58 +03:00
Armel Chesnais
51ac3ef64a fix(noise-suppression) exit out early if no input data to Worklet
Disconnecting the input node to the worklet causes the worklet to crash. Adding a guard clause for empty input prevents this.
2022-10-25 21:55:47 +02:00
Filip Rejmus
a915238b49 chore(deps) @react-native-async-storage 1.17.3 2022-10-25 21:49:59 +02:00
Robert Pintilii
687837310a ref(components) Replace some InlineDialogs with Popover (#12453)
Remove comments referencing InlineDialog
2022-10-25 16:11:55 +03:00
Robert Pintilii
7f879d2154 ref(SCSS) Remove some unused SASS variables (#12451) 2022-10-25 11:01:53 +03:00
Robert Pintilii
faec46dd17 ref(popover) Update Popover to support click trigger (#12447)
Convert Popover to TS
Update OverflowMenu to use Popover instead of InlineDialog
2022-10-24 12:51:18 +03:00
Saúl Ibarra Corretgé
33ec975e19 fix(rn,config) fix forcing VP8 for bridge calls 2022-10-24 10:28:38 +02:00
Saúl Ibarra Corretgé
db6165209b feat(rn) use H.264 (HW codec) for P2P calls
This requires a custom video encoder / decoder factory which uses the
hardware codec only for H.264 and the software implementations for the rest.
2022-10-24 10:28:38 +02:00
Robert Pintilii
27775de48d fix(label) Fix Participants Count label color (#12445) 2022-10-24 10:44:41 +03:00
Saúl Ibarra Corretgé
8818f4f4e6 fix(rn,filmstrip) fix dropping tiles on conference join 2022-10-21 18:45:56 +02:00
Jaya Allamsetty
aebe4885bb ref(filmstrip) Remove the option to disable thumbnail re-ordering. 2022-10-21 09:17:17 -04:00
Saúl Ibarra Corretgé
146cc2f9c9 fix(deps) update xmldom@0.7.6 2022-10-21 14:21:31 +02:00
Saúl Ibarra Corretgé
3b5878d078 fix(ios) also bump the lite SDK version when bumping versions 2022-10-21 13:34:30 +02:00
Robert Pintilii
6ab996568b ref(TS, rn) Fix some TS errors on tsconfig.native (#12432) 2022-10-21 14:09:15 +03:00
Robert Pintilii
4755f5a031 fix(dialog) Wrap dialog in FocusLock (#12431)
Improve accessibility by not allowing the user to navigate outside the dialog
2022-10-21 10:42:00 +03:00
Robert Pintilii
0b48e55a35 ref(TS) Convert some features to TS (#12425) 2022-10-21 10:33:10 +03:00
Hristo Terezov
9e1ac3bea6 fix(recording): recording link.
Show the start recording notification on jicofo update only. This way
the initiator will be available and we will be able to fetch and display
recording link and send iframe API event.
2022-10-20 20:09:50 -05:00
Shawn
7249406960 fix(persistent_lobby): properly destroy main room when empty 2022-10-20 12:15:56 -05:00
Saúl Ibarra Corretgé
a9f5829e58 fix(rn,filmstrip) clear participants cache when changing conferences 2022-10-20 17:03:30 +02:00
Saúl Ibarra Corretgé
4bb1697115 fix(filmstrip) prevent duplicated participants 2022-10-20 17:03:30 +02:00
Robert Pintilii
2938d1f2dc ref(TS) Require interfaces to start with I (#12424) 2022-10-20 12:11:27 +03:00
Robert Pintilii
10d202439b ref: Update npm scripts (#12422) 2022-10-20 11:17:57 +03:00
Robert Pintilii
af0715dc17 ref(keyboard-avoider) Don't use styled components (#12420) 2022-10-20 10:31:27 +03:00
Дамян Минков
601e21ffcd fix: Drops participants count white background. (#12416)
* fix: Drops participants count white background.

Currently, it is white background with white icon.

* squash: Drop unused import.
2022-10-19 11:42:28 -05:00
Robert Pintilii
ff29196f3a ref(participants-pane) Change to function component (#12410)
Use makeStyles instead of withStyles
2022-10-19 14:38:54 +03:00
Robert Pintilii
748b66b04a ref(toolbox) Convert feature to TS (#12413) 2022-10-19 14:38:38 +03:00
Robert Pintilii
ca4db54e6e ref(overflow-menu-button) Change to function component (#12411)
Use makeStyles instead of withStyles
2022-10-19 11:43:10 +03:00
Robert Pintilii
3eecf8063f ref(TS) Remove unnecessary ts-ignores (#12412)
Remove ts-ignores that are no longer needed because of tsconfig.web.json
Change ts-ignore to ts-expect-error for files outside react/features
2022-10-19 11:42:54 +03:00
Robert Pintilii
440339dea8 ref(display-name) Change to function component (#12402)
Use makeStyles instead of withStyles
2022-10-19 10:19:40 +03:00
Jaya Allamsetty
dbb0a953c6 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1519.0.0+eb623e75...v1522.0.0+28436e57
2022-10-18 17:41:21 -04:00
Robert Pintilii
442ae6c3cb chore(TS): Create web tsconfig (#12381)
* fix(ts,connection) avoid mixing web and native code

* chore(ts) split config

The mobile part is still WIP.

* Remove default tsconfig

* Fix ts-loader - use web tsconfig

* Fix tsconfig

Use noEmit only on npm scripts (for type checking), but don't use it in webpack

* Fix

* Fix import

* Fix

Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2022-10-18 11:21:48 -05:00
tamasdomokos
30051d2b0e feat(translation): add description for source language (#12371) 2022-10-18 14:42:51 +03:00
Robert Pintilii
9ae236a010 ref(keyboard-shortcuts) Change Dialog to function component (#12403)
Use makeStyles instead of withStyles
Fix style
2022-10-18 13:56:26 +03:00
Robert Pintilii
6f209a8139 ref(salesforce) Use new Dialog component (#12400) 2022-10-18 13:56:08 +03:00
Jaya Allamsetty
69567fb371 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1508.0.0+238dd7b2...v1519.0.0+eb623e75
2022-10-17 20:16:33 -04:00
Jaya Allamsetty
66cddddd3e fix(video-layout) Fix auto-pinning latest screenshare. 2022-10-17 16:53:27 -04:00
bogdandarie
485c875ee5 feat(config) add ability to hide speaker stats 2022-10-17 22:40:13 +02:00
Horatiu Muresan
ceb1cd9673 fix(screenshare-jwt) Disable screen share based on jwt 2022-10-17 11:01:56 -05:00
Calinteodor
4d817af060 feat(settings/native): fixed scroll inside screen (#12395)
* feat(settings): fixed scroll, bottom insets and bounce
2022-10-17 18:14:40 +03:00
Дамян Минков
a082a3fb0f feat: Updates deb install texts. (#12394)
* fix: Changes dialog txt for deb install.

* squash: Adjust jaas account creation txt.

* squash: Small update.

* squash: Small update2.
2022-10-17 09:18:31 -05:00
Robert Pintilii
2a321d6b1f ref(TS) Convert some files to TS (#12364) 2022-10-17 14:28:01 +03:00
Robert Pintilii
dd6478b3cf ref(ui-components) Use new Dialog (#12363)
Convert some files to TS
Improve Dialog component
2022-10-17 14:27:48 +03:00
Saúl Ibarra Corretgé
6274299d49 chore(ios) sync project file 2022-10-17 12:51:30 +02:00
Alex Bumbu
d77d2f0c5b fix(iOS, layout): fix iOS 16 layout
This (partially) reverts commit ddab27e292.

We're reverting this to fix the iOS 16 layout problems caused by the interaction between the app rootViewControoler and JitsiMeetViewController, with the downside that using any RN components based on native view controllers will most likely be faulty. The solution for this would be to change the SDK's entry point to a view controller, instead of JitsiMeetView.
2022-10-17 12:33:44 +02:00
Janitz
33be0dc32e fix(lang) add chat.sendButton translation 2022-10-17 12:05:59 +02:00
Robert Pintilii
44c8b31187 ref(styles) Change some withStyles to makeStyles (#12373)
Convert PreMeetingScreen to TS and transform it to function component
2022-10-17 12:28:04 +03:00
bogdandarie
1279c5b0da fix(jaas) redirect to about blank when close meeting opened in iframe 2022-10-17 09:32:18 +02:00
bogdandarie
495957104c fix(notifications) don't show self view notifications if already one is active 2022-10-17 09:03:06 +02:00
Calinteodor
b558d7936c feat(chat): fixed chat counter (#12385)
* feat(chat): fixed chat counter and updated new messages button web styles
2022-10-14 17:09:42 +03:00
Calin-Teodor
1fe2a9193f feat(conference/native): adjusted carmode ui 2022-10-14 16:13:54 +03:00
Calin-Teodor
e8e6beabab feat(prejoin/native): adjusted room name margins 2022-10-14 16:00:44 +03:00
Saúl Ibarra Corretgé
3e31e1816d fix(ios) fix mute "ping-pong" 2022-10-14 14:32:09 +02:00
kerem
eb1c3d8c56 feat(deps,rn) update React Native to version 0.68.4 (#12376)
* BREAKING: update rn to 0.68.4
2022-10-14 14:37:10 +03:00
Saúl Ibarra Corretgé
4a54f4bedc fix(rn,large-video) don't render video for the local SS 2022-10-13 19:14:40 +02:00
Calinteodor
4d84123c71 feat(prejoin/native): clear notifications when joining (#12361)
* feat(prejoin/native): clear notifications when joining
2022-10-13 17:05:21 +03:00
Saúl Ibarra Corretgé
4018e8875f fix(rn,screensharing) fix build 2022-10-13 15:19:24 +02:00
Calinteodor
be93fbd512 feat(toolbox/conference/audio-mode/chat/native): UI fixes and updates (#12375)
feat(toolbox/conference/audio-mode/chat/native): UI fixes and updates
2022-10-13 16:13:00 +03:00
Robert Pintilii
51bbc3f87f ref(ui-components) Use new Button on prejoin (#12372) 2022-10-13 13:42:39 +03:00
Robert Pintilii
f5fb402784 ref(TS) Convert some features to TS (#12366) 2022-10-13 11:26:28 +03:00
Robert Pintilii
70503d2518 ref(label) Convert to function component (#12370)
Fixes issue where Label styles would take precedence over parent styles (raised hand counter would be gray instead of yellow)
2022-10-13 10:46:00 +03:00
Дамян Минков
40e1f28fc2 fix: Fix log messages in end_conference module. (#12369)
* fix: Fix log message.

From `general error No muc_component specified` to `endconference.meet.damencho.net:end_conference error No muc_component specified`

* squash: more.
2022-10-12 13:31:06 -05:00
Calinteodor
935f95a3d5 feat(prejoin/native): ui updates (#12368)
* feat(prejoin/native): ui updates
2022-10-12 15:43:11 +03:00
Hristo Terezov
53e4f584f9 fix(remote-control): when multistream is enabled 2022-10-11 15:48:24 -05:00
Saúl Ibarra Corretgé
e218c0d3af fix(conference) fix Spot wireless screen sharing
Make sure we use the same screen-sharing flow which takes multi-stream
into consideration.
2022-10-11 18:09:50 +02:00
Robert Pintilii
6c3206e4d4 ref: TS Improvements (#12358)
Remove unnecessary ts-ignores
Remove unnecessary eslint-disable
Fix type errors
Change Dispatch type to IStore['dispatch']
2022-10-11 13:47:54 +03:00
Saúl Ibarra Corretgé
6365b699c1 chore(deps) make sure all deps are pinned to exact versions 2022-10-11 11:16:00 +02:00
Saúl Ibarra Corretgé
768cca6162 fix(android) fix crash in Android < 10
Activity.registerActivityLifecycleCallbacks is only available in API level 29.

Ref: https://developer.android.com/reference/android/app/Activity.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)
2022-10-11 11:16:00 +02:00
Calinteodor
abdc5123eb feat(base/ui): fixed native button active style (#12353)
* feat(base/ui): fixed native button active style
2022-10-11 11:26:09 +03:00
Robert Pintilii
6423ed8fb5 ref(ui-components) Use new Dialog component (#12351)
Convert some files to TS
2022-10-11 11:24:11 +03:00
Robert Pintilii
b858496adb ref(ui-components) Use new Dialog component (#12349)
Convert some files to TS
Refactor MuteEveryone and MuteEveryonesVideo dialogs. Move shared code to abstract components. Remove unnecessary code
2022-10-10 12:12:02 +03:00
Jaya Allamsetty
68f79e52e7 fix(virtual-background) Remove unused action type VIRTUAL_BACKGROUND_TRACK_CHANGED. 2022-10-07 19:22:54 -04:00
Jaya Allamsetty
3f78de2d34 fix(virtual-backgroud) Remove desktop share as virtual background.
Its no longer supported in multi-stream mode.
2022-10-07 19:22:54 -04:00
Shawn
2029db5a59 fix(reservations): skip reservations check for breakout rooms 2022-10-07 17:07:28 -05:00
Jaya Allamsetty
6ede5c478f fix(external-api) Remove muted SS tracks from the list of participants currently screensharing.
Fixes an issue where 'contentSharingParticipantsChanged' event and 'getContentSharingParticipants' API continue to list IDs of the participants that have already stopped their screenshares.
2022-10-07 11:25:01 -04:00
Duduman Bogdan Vlad
2ba7b3acb7 fix(large-view) fix selection if local SS auto-select is true 2022-10-07 17:06:25 +02:00
robertpin
ebcd1d85f2 fix(local-recording) don't use tab audio
We have observed that participant audio is distant and garbled, so we
added the tracks individually to the mixer.

In addition, using tab audio prevents us from using preferCurrentTab due
to: https://bugs.chromium.org/p/chromium/issues/detail?id=1317964 so
losing audio effects but having better participant audio quality (in
addition to better UX) is not a bad compromise.
2022-10-07 17:04:31 +02:00
Saúl Ibarra Corretgé
4857664f15 fix(rn,display-name) fix displaying for virtual SS 2022-10-07 15:30:11 +02:00
Saúl Ibarra Corretgé
0f84b0b9fe fix(rn,thumbnail) fix not rendering indicators for virtual SS 2022-10-07 15:30:11 +02:00
Saúl Ibarra Corretgé
eda3e620d3 fix(rn,participants) fix not rendering connection info messages
Also move shouldRenderParticipantVideo to the only place it's used.
2022-10-07 15:30:11 +02:00
Saúl Ibarra Corretgé
e8df8f75a8 fix(rn,participants) fix rendering screen-sharing 2022-10-07 15:30:11 +02:00
Calin-Teodor
f2b2b02029 feat(base/modal): enable scroll for jitsi screen component 2022-10-07 16:27:40 +03:00
Avram Tudor
66769136ed fix(prejoin) show subject in prejoin if available (#12338) 2022-10-07 15:14:53 +03:00
Calin-Teodor
179647c93c feat(base/ui/native): centered button label 2022-10-07 12:21:25 +03:00
Robert Pintilii
25bd824621 ref(ui-components) Use new Dialog component (#12306)
Convert some files to TS
2022-10-07 12:16:41 +03:00
Robert Pintilii
be25ad855f ref(TS) Convert some files to TS (#12307) 2022-10-07 11:39:18 +03:00
Jaya Allamsetty
b1931de7b0 fix(screenshare): Pass _desktopSharingSourceDevice as shareOptions when available.
Fixes an issue when external cam as screensharing source fails on Spot with multi-stream enabled.
2022-10-07 07:38:21 +02:00
Horatiu Muresan
02da4a1c42 fix(hide-buttons-on-jwt) Fix getting disabled buttons (#12326) 2022-10-06 18:01:53 +03:00
damencho
5c2ec5df54 fix: Switches by default mutli-stream and through config.js.
We need that for mobile clients that are not updated.
2022-10-06 09:43:05 -05:00
Mihaela Dumitru
e30b0306f9 fix(whiteboard) account for moderation rights (#12323) 2022-10-06 16:01:45 +03:00
Mihaela Dumitru
11e13e1849 fix(whiteboard) use randomly generated room id for collaboration (#12321) 2022-10-06 15:22:48 +03:00
Calinteodor
0f7aa5a084 feat(mobile/navigation): disabled bottom tab navigator backBehavior (#12320)
* feat(mobile/navigation): disabled backBehavior in bottom tab navigator
2022-10-06 14:55:44 +03:00
Calinteodor
ad4707c660 feat(settings/native): start car mode in low bandwidth mode (#12286)
* feat(settings/native): start car mode in low bandwidth mode
2022-10-06 14:29:39 +03:00
Mihaela Dumitru
d0c22806ec ref(participants) use enum type to store fake participants (#12316) 2022-10-06 14:12:57 +03:00
tmoldovan8x8
be7f2643df fix(rn) disables joinButton while navigating 2022-10-06 13:33:26 +03:00
Robert Pintilii
6c9441fa7b ref(ui-components) Update ContextMenu and move it to base/ui (#12318) 2022-10-06 13:09:40 +03:00
Saúl Ibarra Corretgé
a2d39ca5b1 fix(rn,util) avoid 'clipboard-copy' being bundled in native
The copyText wrapper is used in the `showStartedRecordingNotification`
action, which is common for web and native. Provide a native
implementation so the right one is bundled.
2022-10-06 11:24:20 +02:00
Saúl Ibarra Corretgé
d2a36ea3a8 fix(doc) update README 2022-10-06 07:06:06 +02:00
Дамян Минков
e52c9043a5 feat: Adds some compatibility for building on windows. 2022-10-05 10:49:51 -05:00
Дамян Минков
ee5817539b fix: Fixes cert choice when pre-set in automations. (#12312)
* fix: Fixes cert choice when pre-set in automations.

* squash: fix
2022-10-05 10:49:21 -05:00
Jaya Allamsetty
da9b5a9156 fix(multi-stream): Set mediaType to screenshare on SS tracks.
Fixes an issue where camera video doesn't get requested by RN clients when the remote ep starts SS first before turning on their camera.
2022-10-05 09:50:57 -04:00
Дамян Минков
bb84c47e78 feat: Updates prosody dependency to be at least 0.11.7. 2022-10-05 08:16:43 -05:00
Дамян Минков
13f4da7855 fix: Workaround failure to install jitsi-meet-prosody Fixes #12300 2022-10-05 06:56:25 -05:00
Saúl Ibarra Corretgé
f935b29629 feat(rn,config) default to VP8 on mobile
VP9 is too resource intensive.

H.264 might be coming back for P2P but we need to fix support for
Android first, since it's not available with the default software codec
factory.
2022-10-04 22:43:51 +02:00
mbondarenko
f5f689c53d Added config option for enabling Opus DTX flag which used for reduction in the audio traffic, when a participant is silent then the audio packet won’t be transmitted. 2022-10-04 16:05:35 -04:00
Saúl Ibarra Corretgé
af4ba32803 chore(deps) react-native-webrtc@1.106.1
Last to support Plan B.

The method to embed WebRTC has changed to use CocoaPods.
2022-10-04 22:02:19 +02:00
kerem
9e11bc302b feat(deps,rn) update React Native to version 0.68.3 (#12293)
* feat(deps,rn) update React Native to version 0.68.3

Co-authored-by: keremoge <kerem.oge@albarakatech.com>
2022-10-04 19:29:23 +03:00
Saúl Ibarra Corretgé
438b3924d7 fix(ios,callkit) make sure the start call action is fulfilled 2022-10-04 16:32:46 +02:00
Horatiu Muresan
a2d0492007 feat(toolbar-buttons) Hide buttons disabled through JWT (#12261) 2022-10-04 16:02:49 +03:00
Robert Pintilii
c35d1d8d4b ref(polls) Convert files to TS (#12296) 2022-10-04 15:06:02 +03:00
Robert Pintilii
7d7bf987a1 fix(lobby) Make password hidden by default (#12295) 2022-10-04 13:52:37 +03:00
Robert Pintilii
3e744c5ffe ref(TS) Convert some files to TS (#12289) 2022-10-04 13:52:09 +03:00
Robert Pintilii
f4f8808d95 ref(ui-components) Update some dialogs to use the new component (#12288)
Improve Dialog component to auto close on cancel or on submit
Change logic to determine whether a dialog is using the new component
Convert some files to TS
2022-10-04 12:44:48 +03:00
Robert Pintilii
21bcbdc12f feat(local-recording) Change tab title to help identifying it (#12294) 2022-10-04 11:59:19 +03:00
Saúl Ibarra Corretgé
090433b6e8 feat(ci) cache npm package data
Ref: https://github.com/actions/setup-node#caching-global-packages-data
2022-10-03 13:13:53 +02:00
Saúl Ibarra Corretgé
230cbfac1e feat(ci) move linting to its own step
This allows it to run in parallel, and should make the overall run
faster.
2022-10-03 13:13:53 +02:00
Horatiu Muresan
c56c5bd145 fix(polls) Fix autoscroll for polls causing layout issues 2022-10-03 12:39:08 +03:00
Tamas Domokos
f5a4fd4bc2 fix (translation) remove unused i18n import 2022-10-03 11:15:12 +02:00
Calin-Teodor
cb881311e7 feat(mobile/navigation): updated translations for screen headers 2022-10-03 12:04:06 +03:00
Nakorn
ac2698f829 12272 2022-10-01 07:16:37 +02:00
Nakorn
5fafb5d29e Update Chinese translations 2022-10-01 07:16:37 +02:00
Saúl Ibarra Corretgé
fbcdb250f4 fix(ts) fix build on macOS
Why this line fails is a mystery, but it's only reproducible on macOS.
2022-09-30 15:43:40 -05:00
Saúl Ibarra Corretgé
ba8529d72b feat(ci) run GHA also on macOS 2022-09-30 15:43:40 -05:00
Mihaela Dumitru
1230cebde2 fix(avatar) support icons alongside cors avatars (#12280) 2022-09-30 17:51:16 +03:00
Mihaela Dumitru
93406bb12c feat(whiteboard) add initial implementation (#12185) 2022-09-30 17:50:45 +03:00
dependabot[bot]
d43eea91cf chore(deps): bump nth-check and @svgr/webpack
Bumps [nth-check](https://github.com/fb55/nth-check) to 2.1.1 and updates ancestor dependency [@svgr/webpack](https://github.com/gregberge/svgr). These dependencies need to be updated together.


Updates `nth-check` from 1.0.2 to 2.1.1
- [Release notes](https://github.com/fb55/nth-check/releases)
- [Commits](https://github.com/fb55/nth-check/compare/v1.0.2...v2.1.1)

Updates `@svgr/webpack` from 4.3.2 to 6.3.1
- [Release notes](https://github.com/gregberge/svgr/releases)
- [Changelog](https://github.com/gregberge/svgr/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gregberge/svgr/compare/v4.3.2...v6.3.1)

---
updated-dependencies:
- dependency-name: nth-check
  dependency-type: indirect
- dependency-name: "@svgr/webpack"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 11:08:45 +02:00
Robert Pintilii
7364c7f27b ref(TS) Remove unnecessary ts-ignores 2022-09-30 11:08:03 +02:00
Calinteodor
2de2500080 feat(mobile/navigation/welcome): welcome page tabs translations 2022-09-30 11:07:00 +02:00
TTG
349e4bfb57 fix(lang) update Chinese translations & fix typo 2022-09-30 09:08:34 +02:00
Christoph Settgast
4f92811263 fix(lang) update German translation (#12277) 2022-09-29 22:10:01 +02:00
abora8x8
a4e35f81cf fix(polls) refactor message handling 2022-09-29 19:28:24 +02:00
Alexandru Petrus
7aefc3b94a feat(invite-dialog) Add limit message for invite dialog 2022-09-29 19:06:14 +03:00
Avram Tudor
3c180d3932 ref(join) remove overlay shown for a slow gUM flow (#12268) 2022-09-29 16:55:31 +03:00
Saúl Ibarra Corretgé
c523c07cb7 fix(config) drop debug lefover 2022-09-29 13:47:43 +02:00
Robert Pintilii
5c77f61037 ref(gifs) Convert feature to TS (#12264) 2022-09-29 14:45:34 +03:00
tamasdomokos
8162ae4dbe fix(translation) translation button visibility for users, add missing languages 2022-09-29 13:44:59 +02:00
Calin-Teodor
69e0a37529 feat(base/ui): added autofocus prop 2022-09-29 13:31:20 +03:00
Robert Pintilii
bfa88f13dc feat(ui-components) Add Dialog Component (#12260) 2022-09-29 13:26:34 +03:00
Robert Pintilii
0d917df1fb ref(feedback) Use new Input component (#12265)
Remove @atlaskit/field-text-area dep
2022-09-29 12:40:16 +03:00
Jaya Allamsetty
95a3a8de0b fix(face-landmarks): Check mute state from redux before starting detection. 2022-09-28 11:48:13 -04:00
Bogdan Duduman
f4985d8028 increase heap node for build 2022-09-28 06:27:31 -05:00
William Liang
5d6aec3f3c fix(speaker-stats) decouple sort order from speaker stats (#12197) 2022-09-28 10:51:53 +03:00
Shawn Chin
2e6f14f872 feat(reservations) start lobby and set password from reservation (#12215)
* feat(reservations) support enabling lobby and password based on reservations data

* Add warning about unhandled use case

* feat(lobby) Support automated activation of lobby
2022-09-27 14:59:30 -05:00
TTG
90b17046f6 fix(lang) remove non-existent languages (#12258)
* Remove Thai from all language.json

* Remove Azerbaijani from all language.json
2022-09-27 14:50:37 -05:00
Saúl Ibarra Corretgé
86ab2be65e chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1506.0.0+3fc03265...v1508.0.0+238dd7b2
2022-09-27 21:43:58 +02:00
Saúl Ibarra Corretgé
11f138d28f feat(room-metadata) add module for generic room metadata storage 2022-09-27 20:50:41 +02:00
damencho
e163d6438b chore(deps) update js-utils
Updates dict.
2022-09-27 12:44:53 -05:00
TTG
24cb07b830 lang: Update Chinese translations (#12104)
* lang: Update Chinese translation

* lang: Remove nonexistent language

* Update main-zhTW.json

* Update main-zhCN.json

* Update main-zhTW.json

* Update languages-zhTW.json

* Delete languages.json

* Revert "Delete languages.json"

This reverts commit 7f96a19ba7.

* Update languages.json

* Update languages-zhCN.json

* Update languages-zhTW.json

* Add newline at end of file

* Update languages.json

* Update languages-zhCN.json
2022-09-27 12:44:34 -05:00
Bogdan Duduman
53df3a7b55 fix: fix copyText import 2022-09-27 11:43:29 -05:00
Horatiu Muresan
ca54533153 fix(audio-configs) Fix startWithAudioMuted overrriding startSilent (#12251) 2022-09-27 15:56:59 +03:00
Saúl Ibarra Corretgé
02f5987187 feat(rn,conference) show participants pane in the top bar
Replace the invite button, which is accessible within the participants
pane.

Show the screen-sharing button in the toolbox when space allows, and fix
it so it's rendered when outside the overflow menu.
2022-09-27 13:21:08 +02:00
Horatiu Muresan
ce96b71bfa fix(config) Update link to to UI tokens 2022-09-27 13:32:32 +03:00
Saúl Ibarra Corretgé
a32d237d54 chore(deps,eslint) update eslint-config-jitsi to 4.1.4 2022-09-27 11:22:36 +02:00
Bogdan Duduman
48db099134 feat: include sort members eslint changes 2022-09-27 10:25:20 +02:00
Robert Pintilii
1106a86ba7 ref(connection-indicator) Convert to TS (#12239) 2022-09-27 10:42:30 +03:00
Jaya Allamsetty
54346c065d feat(large-video) Show SS on large-video instead of camera tile.
This is helpful in live streaming scenarios when AUTO_PIN_LATEST_SCREEN_SHARE is disabled and multi-stream is enabled. Dominant speaker's SS tile (if available) will be on stage instead of their camera tile. Fixes https://github.com/jitsi/jitsi-meet/issues/10869.
2022-09-26 16:57:11 -04:00
Filip Rejmus
c3ebde18df fix(helpers) move copyText function to web.js file
It gets bundled on mobile for no reason otherwise.
2022-09-26 19:31:06 +02:00
José Luís Andrade
c613082ce1 lang: Update Portuguese translation (#12241) 2022-09-26 11:26:49 -05:00
Saúl Ibarra Corretgé
eee096e0c0 fix(ts,build) fix TS error in web build 2022-09-26 09:47:35 -05:00
Robert Pintilii
9c6119606f ref(chat) Convert some files to TS (#12238) 2022-09-26 12:54:22 +03:00
Robert Pintilii
077afecdba fix(external-api) Fix pin function (#12236)
Make pin function work with stage filmstrip
2022-09-26 12:13:32 +03:00
Дамян Минков
1b4bbcba3d fix: Fixes jaas and cert choice when package configure is reordered. (#12234)
* fix: Fixes jaas and cert choice when package configure is reordered.

* squash: Checks for jaas-choice before asking.
2022-09-24 08:24:18 -05:00
Jaya Allamsetty
32b8c62ec9 fix(face-landmarks) Do not start detection on muted tracks 2022-09-23 14:26:40 -04:00
Дамян Минков
a9bc83db03 feat: Set LE as default choice when installing. (#12232)
* feat: Set LE as default choice when installing.

* squash: Text updates.
2022-09-23 13:10:06 -05:00
Horatiu Muresan
90bcbebedb fix(carmode) Don`t show rec/live labels after rec/ls finished 2022-09-23 15:26:33 +03:00
Robert Pintilii
c06d456ae6 fix(external-api) Fix start recording (#12227)
Check recording is enabled before start
2022-09-23 13:22:37 +03:00
Saúl Ibarra Corretgé
fe0c804cc0 feat(android) add logcat helper script 2022-09-23 11:56:49 +02:00
Robert Pintilii
4ee77b1f65 ref(TS) Convert some base files to TS (#12226) 2022-09-23 12:03:25 +03:00
Shawn Chin
7cbb377a66 feat(external-api) start/stop local recording (#12210) 2022-09-23 11:46:54 +03:00
Robert Pintilii
0bccda2c9e ref(TS) Convert more base files to TS (#12222) 2022-09-23 11:13:32 +03:00
Robert Pintilii
3426960d5a ref(TS) Convert base/tracks to TS (#12219) 2022-09-23 10:48:20 +03:00
Horatiu Muresan
fb2cfaa204 fix(carmode) Force portrait when in carmode 2022-09-22 17:17:19 +03:00
Дамян Минков
d61d47fae3 fix: Fixes LE script on existing cert. (#12223)
* fix: Fixes LE script on existing cert.

Updates jaas shown message.

* squash: Make sure .well-known folder exists.

* squash: Fix LE when running apt commands with sudo.

Forces acme.sh to work when it detects sudo.

* squash: Change jaas message on install.

* squash: Uses issue return code to check for existing cert.
2022-09-22 09:08:32 -05:00
Gabriel Borlea
2cb9596536 feat(rtc-stats): send face landmarks detection off timestamp to service (#12183)
* feat(rtc-stats): send camera off timestamp to service

* code review

* improve error handling

* improve rtcstats middleware and complete typescript types
2022-09-22 13:06:31 +03:00
Robert Pintilii
62a10e6587 fix(giphy) Allow space in input (#12221)
Fixes: space closes gif menu
2022-09-22 11:34:46 +03:00
damencho
e38f9a293b fix: Fixes postinst after pull/12213. 2022-09-21 17:28:02 -04:00
Дамян Минков
eba7cfcec5 feat: Adds automatic jaas account creation. (#12213)
* feat: Adds automatic jaas account creation.

* squash: Prints return data if any.

* squash: Moves jitsi-challenge.txt to /usr/share/jitsi-meet/.well-known.
2022-09-21 13:57:30 -05:00
Jaya Allamsetty
ae70370a38 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1505.0.0+f49afde5...v1506.0.0+3fc03265
2022-09-21 14:00:48 -04:00
Jaya Allamsetty
45c67142e9 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1504.0.0+85fb01c0...v1505.0.0+f49afde5
2022-09-21 10:43:18 -04:00
Jaya Allamsetty
6a03e49b9e update config.js 2022-09-21 10:15:38 -04:00
Jaya Allamsetty
25e7b79237 feat(multi-stream) Enable multi-stream by default (if not disabled explicitly). 2022-09-21 10:15:38 -04:00
Robert Pintilii
779ecd6da6 feat(ui-components) Add Tabs component (#12199) 2022-09-21 14:57:59 +03:00
Robert Pintilii
dd4d49a591 fix(filmstrip) Fix stage filmstrip (#12209)
Use new settings action to determine when max has been reduced
2022-09-21 14:57:40 +03:00
Robert Pintilii
63b6b5a72d ref(TS) Convert some files to TS (#12204) 2022-09-21 11:32:50 +03:00
George Politis
df9185f92a ref(callstats): Removes redundant config.js option. 2022-09-20 16:54:25 +03:00
Saúl Ibarra Corretgé
9bb0decb30 fix(build) speed up webpack dev build by 4x
Skip type checking, only do it in prod builds (the CI will check those).

Main bundle build times:

- Before: 255101ms
- After: 58463ms
2022-09-20 08:40:34 +02:00
Saúl Ibarra Corretgé
e18240cfc6 chore(build) rename option for clarity 2022-09-20 08:40:34 +02:00
Jaya Allamsetty
1703ed8b23 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1502.0.0+62b0e5c4...v1504.0.0+85fb01c0
2022-09-19 12:43:05 -04:00
Saúl Ibarra Corretgé
945eda680c chore(ios) sync Podfile.lock 2022-09-19 15:39:32 +02:00
Saúl Ibarra Corretgé
a378ba7827 feat(ios) Xcode 14 compatibility
Bitcode is no longer supported, so remove it. The M106 WebRTC version no
longer contains bitcode either, but it embeds dSYMs.
2022-09-19 15:01:47 +02:00
Saúl Ibarra Corretgé
73ab43ac0c feat(android) disable volume logger thread 2022-09-19 15:01:47 +02:00
Saúl Ibarra Corretgé
3f5fa1e663 feat(rn,deps) update WebRTC to M106 2022-09-19 15:01:47 +02:00
Robert Pintilii
e05ad18ee4 fix(prejoin) Remove no longer needed hack 2022-09-19 14:57:57 +02:00
Robert Pintilii
6dd04136de ref(TS Convert some files to TS (#12191) 2022-09-19 10:40:03 +03:00
Jaya Allamsetty
ffe005ba0a chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1500.0.0+d96dad72...v1502.0.0+62b0e5c4
2022-09-16 15:30:41 -04:00
Jaya Allamsetty
7393c20ed8 fix(testing): Fixes for multi-stream torture tests to work. 2022-09-16 14:31:41 -04:00
tmoldovan8x8
7509b520f3 fix(e2ee) check if e2ee is supported before playing the sound 2022-09-16 14:28:36 +03:00
Robert Pintilii
4c9f3d287a fix(prejoin) Fix focus stealing in settings (#12188)
Remove ref focus from InputField component
Replace input component in GifsMenu and add ref focus
2022-09-16 13:05:15 +03:00
TTG
fef562d767 fix(lang) remove unused language lists 2022-09-16 10:58:28 +02:00
Saúl Ibarra Corretgé
d9bbf35466 fix(settings) fix not storing maxStageParticipants 2022-09-15 23:30:44 +02:00
Saúl Ibarra Corretgé
1cd80a33c6 fix(config) fix check for filmstrip property
The whole object might be undefined.
2022-09-15 19:43:33 +02:00
Robert Pintilii
2d6e181a13 feat(ui-components) Add Select component (#12182)
Remove @atlaskit/dropdown
Convert some files to TS
2022-09-15 15:20:11 +03:00
Robert Pintilii
f5e60a7ca4 fix(filmstrip) Save stage filmstrip in settings (#12170)
Add config for stage participants number
Enable stage filmstrip by default
2022-09-15 10:57:48 +03:00
Hristo Terezov
f0a45a9976 feat: Handle dominant speaker silence 2022-09-14 12:13:41 -05:00
Hristo Terezov
81f5e68382 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1498.0.0+bc3aae02...v1500.0.0+d96dad72
2022-09-14 12:13:16 -05:00
Alex Bumbu
e68ede65e1 feat(iOS): callkit objc implementation 2022-09-14 18:52:39 +02:00
damencho
8c0de928ab fix: Set default choice for jaas, keeps old behavior. 2022-09-14 10:15:49 -05:00
Horatiu Muresan
9d57c8e058 fix(external-api) Add email to local participant info 2022-09-14 17:57:08 +03:00
Horatiu Muresan
35442c6094 fix(external-api) Fix notify audio muted/audio available 2022-09-14 16:39:03 +03:00
Gabriel Borlea
d6f3c2a0f4 ref(face-landmarks): convert to typescript and add detector class (#12144)
* fix(face-landmarks): stop recognition when imageCapture error

* ref(face-landmarks): convert files in typescript

fix: lint issues

* code review

* ref(face-landmarks): move detection part to a class

* ref(face-landmarks): make FaceLandmarksDetector singleton

* fix typo and ts-ignore problematic types

* fix linting issues
2022-09-14 15:42:46 +03:00
tmoldovan8x8
b83c55e9c4 fix(rn) fixes typo in functions.native 2022-09-14 14:49:13 +03:00
Robert Pintilii
a1d20dc188 ref(TS) Convert some features to TS (#12149)
Convert AV Moderation and Breakout Rooms to TS
2022-09-14 14:32:58 +03:00
Robert Pintilii
95084e1004 ref(TS) Convert some base features to TS (#12138) 2022-09-14 10:54:56 +03:00
Saúl Ibarra Corretgé
5502601fb3 fix(subtitles) web components must not be used in generic action files 2022-09-13 16:17:10 +02:00
Saúl Ibarra Corretgé
3fa72c99bc fix(rn,conference) fix mobile build
Looks like Metro is confused by these imports.
2022-09-13 16:17:10 +02:00
Дамян Минков
079a2a505d feat: Adds LE choice when installing debian package. (#12154)
* feat: Adds LE choice when installing debian package.

* Update debian/jitsi-meet-web-config.templates

Co-authored-by: raluca8x8 <raluca.tocmag@8x8.com>

* squash: Print in the console the JaaS link everytime.

* squash: Note that JaaS does not support self-signed certs.

* squash: Fix message.

* squash: Moves acme.sh stuff into a script, so it is easy to re-run.

Co-authored-by: raluca8x8 <raluca.tocmag@8x8.com>
2022-09-13 07:55:00 -05:00
Robert Pintilii
139884fbe7 ref(dep) Upgrade MUI (#12089) 2022-09-13 10:36:00 +03:00
Misha
3ef3233242 ref(conn-indicator): remove E2E RTT (#12139)
There was a fundamental change in how e2e pings work in lib-jitsi-meet where it does few pings at the beginning, pushes metrics and shuts the whole thing down, so there are no more e2ertt updates after that. Plus it's disabled by default. @paweldomas have decided with @bgrozev to remove that instead of trying to adjust. Even if e2e pings are enabled the data is not feed correctly to the indicators, what's wrong there is as soon as the pings stop going the new data does not arrive and then all you get is N/A if the UI component is recreated.
2022-09-12 15:57:15 -05:00
JohnProv
443f4e4feb fix(lang) update Dutch translation 2022-09-12 19:28:25 +02:00
Alexandru Petrus
21a1d52753 fix(large-video) disable screen-sharing placeholder on Spot
Temporary hack, this should likely be configurable.
2022-09-12 18:00:02 +02:00
Bogdan Duduman
0f63e560b0 feat(external_api) add adbility to resize the filmstrip 2022-09-12 14:08:55 +02:00
Horatiu Muresan
43bea201e6 fix(prejoin) Hide conference name based on config 2022-09-12 10:35:37 +03:00
Horatiu Muresan
6e1e6df952 fix(prejoin) Fix roomname showing for 3rd party prejoin app (#12155)
* fix(prejoin) Fix roomname showing for 3rd party prejoin app

* fix: Do not convert roomName to string when undefined.

Co-authored-by: damencho <damencho@jitsi.org>
2022-09-09 12:10:50 -05:00
Saúl Ibarra Corretgé
8ce1423373 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1496.0.0+e1ca2f5a...v1498.0.0+bc3aae02
2022-09-09 16:57:08 +02:00
Saúl Ibarra Corretgé
ede97584f2 fix(ios) fix lite SDK release process 2022-09-09 13:37:08 +02:00
Robert Pintilii
247c54b6c6 ref(TS) Convert constants tiles to TS (#12148)
Remove unnecessary ts-ignores
2022-09-09 12:22:30 +03:00
Robert Pintilii
10bb186c13 ref(eslint) Use new TypeScript ESlint config (#12143)
Use new TS config from @jitsi/eslint
Fix all lint errors
2022-09-08 12:52:36 +03:00
Artur Shepilko
e296008d95 lang: update Ukrainian translation 2022-09-07 18:33:00 -05:00
Jaya Allamsetty
01001d6438 fix(large-video) Update large-video when the streamingStatus of the attached track changes.
This fixes an issue where screenshare appears on the thumbnail but not on the large-video.
2022-09-07 18:31:23 -04:00
damencho
fce15b491d feat: Adds jaas choice when installing. 2022-09-07 08:21:12 -05:00
damencho
cf37ba8771 feat: Drops prosody 0.10 checks. 2022-09-07 08:21:12 -05:00
damencho
0350f18e68 feat: Drops migration from jetty deployments. 2022-09-07 08:21:12 -05:00
Robert Pintilii
c9bbc6c762 ref(TS) Remove unnecessary ts-ignores (#12136) 2022-09-07 11:20:05 +03:00
Christoph Settgast
fa942e9f3b fix(lang) update German translation (#12122)
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-09-07 09:13:19 +02:00
Robert Pintilii
fd67fb652b fix(analytics) Fix lint error (#12135) 2022-09-07 09:54:31 +03:00
Ali Alhaidary
a87d4f4a1d fix(lang) updated Arabic translation 2022-09-06 19:32:47 +02:00
Robert Pintilii
efb69d5382 ref: Improve TS files (#12130)
Remove unnecessary ts-ignores
Change any to actual types
Fix eslint rule
2022-09-06 20:32:20 +03:00
Flying-Light
db988f6e62 fix(lang) improve Arabic translation
Modify some translations for their difficulty for the user.
Add some missing translations like "ask to unmute"
2022-09-06 19:27:44 +02:00
Robert Pintilii
f4b46128bc ref(analytics) Convert to TS (#12099) 2022-09-06 15:51:50 +03:00
Gabriel Borlea
9323b86e3c feat(rtc-stats): support for react native and breakout rooms (#11835)
* feat(rtc-stats): mobile flow

* fix(rtc-stats): create websocket connection event

* feat(rtc-stats): separate middlewares and filter callstats pcs

* fix: linting problems

* fix: linting problems 2

* fix(rtc-stats): middlewares

* ref(rtc-stats): rewrite in typescript

* remove blank line and flow tag

* fix: linting problems

* remove redundant comment

* remove index file

* fix: sort interface keys

* feat(rtc-stats): support for breakout rooms

* ref(rtc-stats): send isBreakoutRoom flag when connecting to rtc stats

* code review

* fix(rtc-stats): rebase issues

* remove empty lines

* chore(rtc-stats): update rtc-stats to latest version

* fix: linting issues
2022-09-06 10:42:59 +03:00
Saúl Ibarra Corretgé
06842c724a fix(rn,video-layout) fix mobile
In adcd9a501b a call to getCurrentLayout
was introduced, which is not mobile-friendly :-(
2022-09-06 09:27:47 +02:00
Duduman Bogdan Vlad
5f62acc67c fix(external_api): Fix number of participants in meeting (#12052) 2022-09-06 09:51:38 +03:00
Robert Pintilii
17008237dc ref: Improve TS state (#12125)
Create IStateful interface
Use IState interface everywhere
Remove unnecessary @ts-ignore
2022-09-05 14:24:13 +03:00
Robert Pintilii
271ea8315b ref: Improve reducers TS (#12123) 2022-09-05 12:05:07 +03:00
Alexey Matveev
f18f8c1061 fix(lang) update Russian translation 2022-09-05 10:22:13 +02:00
Saúl Ibarra Corretgé
b535b8c583 fix(lobby) fix opening lobby chat after API change 2022-09-01 14:21:32 -05:00
Hristo Terezov
adcd9a501b ref(receiver-constraints): Refactor and fixes. 2022-09-01 13:22:09 -05:00
Saúl Ibarra Corretgé
cfb1fef162 fix(breakout-rooms) fix broadcast timer 2022-09-01 18:19:29 +02:00
Saúl Ibarra Corretgé
8b4f2495dc fixup! 2022-09-01 17:13:33 +02:00
Saúl Ibarra Corretgé
7e7107d45a feat(build,ljm) don't expose jquery
lib-jitsi-meet no longer requires it.
2022-09-01 17:13:33 +02:00
Saúl Ibarra Corretgé
45c0597aff chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1494.0.0+c9be46e2...v1496.0.0+e1ca2f5a
2022-09-01 17:12:50 +02:00
Calinteodor
c77e2c8301 feat(settings/native): fixes and updates (#12094)
feat(settings/native): fixes and updates
2022-09-01 15:05:14 +03:00
Robert Pintilii
3403d7bec2 ref: Convert reducers to TS (#12101) 2022-09-01 14:00:49 +03:00
Robert Pintilii
c4557c66aa chore(dep) Update caniuse-lite (#12109) 2022-09-01 11:32:11 +03:00
Robert Pintilii
cfda02ee10 ref(shared-video) Merge web and native reducers (#12108)
Convert reducer to TS
2022-09-01 11:32:01 +03:00
JohnProv
575ab1f1cb fix(lang) update Dutch translation 2022-09-01 09:19:29 +02:00
tamasdomokos
b4f98e7386 feat(translation) enable cc translation (#12046)
* feat(translation) enable cc translation

* Refactor translation for ListItem.

* fix language file sorting

* fix translation order

* change import order
2022-08-31 10:57:31 -05:00
Calin-Teodor
e8de9b4d66 feat(prejoin/native): update react-native-video dep and unmount LargeVideo is Prejoin is not focused 2022-08-31 12:55:02 +03:00
damencho
6fe353cfa4 fix: Fixes lua log lines.
When using directly log( the log lines come from `general` not from the module itself.
`Aug 29 19:38:08 general	info	Starting speakerstats for conference...`
2022-08-30 11:24:28 -05:00
Stefan Weil
882d343e8b chore(typos) fix some typos 2022-08-30 16:21:58 +02:00
Hristo Terezov
cc3a8b7b8d fix(stage-filmstrip): Pinning
Pinning participant was not working for stage filmstrip and
screen sharing filmstirp layouts
2022-08-30 08:41:38 -05:00
Saúl Ibarra Corretgé
104bfe7339 fix(rn,thumbnail) show SS indicator on the local thumbnail 2022-08-30 14:13:17 +02:00
Saúl Ibarra Corretgé
fb9d35a991 fix(rn,tracks) fix muting local screenshare when remote is muted
A "is local" check was missing.
2022-08-30 14:13:17 +02:00
Saúl Ibarra Corretgé
8fabba1679 fix(shared-video) fix exception on mobile
Also use the "standardized" way of instantiating loggers.
2022-08-30 14:13:17 +02:00
Saúl Ibarra Corretgé
5fbf741278 fix(rn,filmstrip) avoid "red" screen sharing tile
Mobile does not render screen-shares in tiles for performance reasons.
This coincidentally fixes the "red" tile that was attempted to be
rendered when the local partitipant started screen-sharing.
2022-08-30 14:13:17 +02:00
Saúl Ibarra Corretgé
bebcc8234f fix(rn,multi-stream) don't send multiple streams on mobile
Mobile does not do multiple local video streams for performance reasons,
so avoid creating the local fake participant.

WIP
2022-08-30 14:13:17 +02:00
Avram Tudor
1e9f599a35 ref(config) move defaultLogoUrl to config object (#12087)
* ref(config) move defaultLogoUrl to config object

* code review changes
2022-08-30 14:52:36 +03:00
Horatiu Muresan
cc5a3e499f feat(aot-prejoin) Add support for showing AOT on prejoin 2022-08-30 11:42:29 +03:00
Calin-Teodor
dbcbafe088 feat(polls/native): fixed scroll inside screen 2022-08-29 17:09:50 +03:00
José Luís Andrade
b034cf27cb lang: Update Portuguese translation (#12081) 2022-08-29 08:08:14 -05:00
Calin-Teodor
126dba8070 feat(security/native): options available only if participant is moderator 2022-08-29 15:30:36 +03:00
Calin-Teodor
a7c1aa4900 feat(settings/native): updated placeholder and placeholder text color 2022-08-29 15:21:50 +03:00
Saúl Ibarra Corretgé
206215c7c1 feat(ios) add generated Swift interface header
We need it for the RN module since it won't be (re)generated. It has not
changed in 4 years, so I guess it's safe to assume it'll stay that way.
2022-08-29 12:49:07 +02:00
Jaya Allamsetty
f38c5f39d2 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1493.0.0+3cf3db1a...v1494.0.0+c9be46e2
2022-08-26 15:12:56 -04:00
wfleischer
09efaecc41 feat(conference) add end conference
Add the ability (for moderators) to end the meeting for everyone.
2022-08-26 20:25:04 +02:00
Saúl Ibarra Corretgé
3bb581c8d9 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1487.0.0+f3f922a8...v1493.0.0+3cf3db1a
2022-08-26 20:24:08 +02:00
Nils Ohlmeier
96099a06a8 feature(rtcstats): expose sendSdp as config option (#12072)
* feature(rtcstats): expose sendSdp as config option

* fixed linting error
2022-08-26 13:03:08 -05:00
Saúl Ibarra Corretgé
4ef5da6c82 fix(ts) fix build 2022-08-26 08:01:59 -05:00
George Politis
289ece42df feat(logging): Store JS console logs in RTCStats.
With this commit JS console logs can optionally be sent to the RTCstats server
for storage and processing.

The functionality is off by default and can be enabled by setting to `true` the
config.js option

    config.analytics.rtcstatsStoreLogs: false // off by default

Obviously, if rtcstats is disabled/not configured nothing will be sent to the
rtcstats backend, even if this setting is set to `true`.

This commit also adds a config.js option that can be used to disable sending the
logs back to callstats:

    config.callstatsStoreLogs: true // on by default

Obviously, if callstats is disabled nothing would be sent in the first place,
but if callstats is enabled and this new configuration parameter is set to
`false`, then callstats will be kept active but no logs will be sent to
callstats.
2022-08-26 14:19:48 +03:00
Saúl Ibarra Corretgé
7dba5f8a7e fix(prejoin) use the conference display name instead of the room name
The room name could be a UUID and the conference display name an actual
name, using the subject.
2022-08-26 12:21:01 +02:00
Robert Pintilii
1010955393 ref: Convert some reducers to TS (#12065) 2022-08-26 12:54:16 +03:00
Robert Pintilii
3bd3be4df0 ref: Convert files to TS (#12007)
Convert files that use material-ui to TS (needed for material-ui upgrade)
2022-08-26 12:54:03 +03:00
Duduman Bogdan Vlad
fc60ab8383 feat(conference) send leave reasons on switching room and when errors occur 2022-08-26 11:53:32 +02:00
Rokixy
85d2123fac fix(chore) fix typo 2022-08-26 10:11:08 +02:00
Дамян Минков
5790742d53 fix(debian) add missing dependency of lua-inspect 2022-08-26 09:31:11 +02:00
bogdandarie
be1752c162 Feat (chat) add new message badge (#11987)
Change scroll to bottom when receive a new message with:
- scroll to bottom if scroll was at the bottom before getting a new message
- keep the scroll in his original position when the scroll position was not at the bottom
- scroll to bottom when open first time the chat
2022-08-26 09:21:41 +03:00
Gabriel Borlea
b9aeb19379 fix(face-landmarks): not sending duplicate expressions when recognition stops (#12067)
fix(facelandmarks): do not perform stop recognition if it is not active
2022-08-25 16:52:03 +03:00
Jaya Allamsetty
7951dc3ce7 fix(audio-only) Do not enable video automatically when audio-only is disabled (#12056)
* fix(audio-only) Do not enable video automatically when audio-only is disabled.
2022-08-25 08:40:32 -04:00
Robert Pintilii
dfb2a07cfa ref: Convert material-ui files to TS (#12013)
Convert files that use material-ui to TS (needed for material-ui upgrade)
2022-08-25 14:35:19 +03:00
Calinteodor
94dc6309de feat(base/native): Switch thumb track color (#12066)
* feat(base/native): Switch thumbColor and trackColor default props
2022-08-25 14:25:13 +03:00
Rokixy
3f2018a1de fix(chore) fix typo 2022-08-25 11:30:39 +02:00
Calin-Teodor
cd4ab8a5f1 feat(polls/native): added thumbColor for android 2022-08-25 10:57:34 +03:00
Hristo Terezov
594f9dfcdd fix(follow-me): SS not visible
The remote screen shares stored in redux were not updated when follow
me is active. Therefore the receiver constraints were not correct.
2022-08-24 16:42:51 -05:00
Robert Pintilii
8dd71a921b ref(ui-components) Improve native and web Switch (#12061)
Bring Switch component more in line
Convert some files to TS
2022-08-24 12:46:22 +03:00
Calinteodor
6d39d13af7 feat(lobby/prejoin): added room name title (#12054)
* feat(lobby/prejoin): added room name title
2022-08-24 12:43:28 +03:00
Robert Pintilii
372c2cb0f9 fix(participant) Avoid unnecessary unpin calls (#12060) 2022-08-24 11:26:09 +03:00
Calin-Teodor
5b41d68d39 feat(settings): changed switch enabled track color 2022-08-24 11:10:26 +03:00
JohnProv
1b9870dade Update main-nl.json 2022-08-23 13:13:27 -05:00
Mariusz Krzaczkowski
38eff2ba24 lang: Update for Polish (#12053)
* [i18n] Update for Polish

* [i18n] Update for Polish

* [i18n] Update for Polish
2022-08-23 09:54:50 -05:00
apetrus20
11f6b442fe feat (screen-share) Added logs and emit iframe event for video and audio sharing (#12051) 2022-08-23 15:17:18 +03:00
Calinteodor
e458eed931 feat(recording): StartRecordingDialogContent web and native (#12009)
* feat(recording): StartRecordingDialogContent web and native
2022-08-23 11:56:02 +03:00
Avram Tudor
f07bd4a0d6 feat(prejoin) add room name to premeeting screen (#12049) 2022-08-22 16:26:35 +03:00
Robert Pintilii
40637aa3dc ref(ui-components) Improve Button component (#12015)
Bring web and native more in line
2022-08-22 12:40:59 +03:00
Jaya Allamsetty
2f10d80184 fix(logging) Add more info logs for device switching. 2022-08-18 21:59:03 -04:00
Artur Shepilko
739c060018 lang: add Ukrainian to more languages 2022-08-18 13:20:02 -05:00
damencho
41a6cbd3fc fix: Jwt context.features to work without context.user. Fixes #12005 2022-08-18 12:01:20 -05:00
Calin-Teodor
61df6f6794 feat(media): added extra percentage padding right to screen share view fit 2022-08-18 18:07:35 +03:00
Artur Shepilko
d44cbb6d1e lang: update Ukrainian translation 2022-08-17 15:46:12 -05:00
Nils Ohlmeier
06ed0e43ad update(rtcstats): fix one more left over comment around poll intervall (#12036) 2022-08-17 12:58:09 -07:00
Calin-Teodor
eb911ec9b5 feat(participants-pane/native): fixed undefined error 2022-08-17 18:21:30 +03:00
Calin-Teodor
e8cdf38fda native ui fixes 2022-08-17 15:45:23 +03:00
Saúl Ibarra Corretgé
e578f6c30f feat(logging) migrate logging to config.js 2022-08-17 14:32:40 +02:00
Saúl Ibarra Corretgé
77d687952d feat(jwt) deprecate and remove enableFeaturesBasedOnToken
The new behavior is as follows:

IF a user has a token and `features` is not set, we treat it as if the
feature was enabled.

IF a user has a token and `features` is set, we check if the feature
name has a value of "true".

`isJwtFeatureEnabled` also provides a way to specify the default value
in case there is no token.
2022-08-17 11:17:29 +02:00
Saúl Ibarra Corretgé
bf222c5094 fix(highlight) check for JaaS features before opening the dialog 2022-08-17 11:17:14 +02:00
Saúl Ibarra Corretgé
08f9dc5e83 fix(participants-pane) fix button impport
Fixes: https://community.jitsi.org/t/navigation-link-in-participants-button-broken-after-usage-of-lobby-chat/116606
2022-08-17 10:34:33 +02:00
Nils Ohlmeier
9c83831b2c update(rtcstats): adjusted poll intervals in comments to match default value 2022-08-16 13:10:20 -05:00
Jaya Allamsetty
97bc41f644 fix(filmstrip) Push dominant speaker to the top of the active speaker list.
The active speaker list in redux is alpha sorted, we need to ensure dominant speaker is at the top otherwise it can get truncated based on the available number of visible slots in the filmstrip.
2022-08-16 14:05:48 -04:00
Nils Ohlmeier
f70ed9cb8a fix(rtcstats): Fix rtcstats poll interval typo and increase default value (#12024)
* fix(rtcstats): fixed typo in rtcstats pollInterval

* fix(rtcstats): set rtcstats default poll interval value to 10s
2022-08-16 10:37:04 -07:00
Saúl Ibarra Corretgé
123ab32e75 chore(config,known-domains) remove legacy code 2022-08-16 17:18:04 +02:00
Saúl Ibarra Corretgé
3c370eb6ca chore(recent-list) remove legacy compatibility code 2022-08-16 17:18:04 +02:00
Saúl Ibarra Corretgé
3e6c988c30 chore(redux) remove legacy compatibility code 2022-08-16 17:18:04 +02:00
Saúl Ibarra Corretgé
649ace1f44 chore(config) remove legacy comment 2022-08-16 17:18:04 +02:00
Saúl Ibarra Corretgé
57f27b4234 chore(analytics) remove lagacy backwards compatibility code 2022-08-16 17:18:04 +02:00
Saúl Ibarra Corretgé
2ae4ba3875 feat(ios) add lite SDK target 2022-08-16 09:58:37 +02:00
Saúl Ibarra Corretgé
0bfa1027a9 fix(virtual-backgrounds) cache loaded model
There is no need to fetch and apply the model every time we want to
createe the effect since it doesn't change.
2022-08-16 08:20:58 +02:00
emrah
f412ff7f11 fix(config) add a missing comma in json list 2022-08-14 11:25:20 +02:00
Jaya Allamsetty
3975db7a68 fix(fimstrip): Do not re-sort the active speakers if dominant speaker is visible.
Fixes a case where re-sorting doesn't happen even when dominant speaker is currently not visible.
2022-08-12 14:18:37 -04:00
Werner Fleischer
02e4d2b902 fix(participants-pane): leave breakout room button appearance 2022-08-12 13:08:49 +02:00
Jaya Allamsetty
ca095240b9 fix(audio-only-ss): Attach a track stopped handler to the audioDesktop track only for audio-only sharing case.
There will be an audio desktop track for regular screensahring when a tab is selected. We do not have to toggle screensharing again when that track is killed.
2022-08-11 16:59:57 -04:00
Jaya Allamsetty
3d60773963 Add debugging for SS streaming issues 2022-08-11 16:59:57 -04:00
Saúl Ibarra Corretgé
895ce56e8d chore(deps) style-loader@3.3.1 2022-08-11 17:54:16 +02:00
Saúl Ibarra Corretgé
d12860082c chore(deps) run npm audit fix 2022-08-11 17:54:16 +02:00
Saúl Ibarra Corretgé
4e03f20a51 chore(deps) update react-native-svg@12.4.3 2022-08-11 17:54:16 +02:00
Robert Pintilii
0435c3cc64 ref(ui-components) Use new input and button in chat (#12000) 2022-08-11 16:32:44 +03:00
Alex Bumbu
ea4be6cb30 fix(iOS): script for enabling multitasking camera access for release build 2022-08-11 14:34:20 +02:00
damencho
fa39c10766 feat: Updates the local stats to match remote for 'connected to'. 2022-08-10 21:13:12 -05:00
tmoldovan8x8
82c047707f fix(mobile externalApi) suppress participant joined and left events for virtual screenshare 2022-08-10 16:34:18 +03:00
Robert Pintilii
00221b7482 ref: Convert some reducers to TS (#12002) 2022-08-10 12:56:24 +03:00
Hristo Terezov
8266d55cb9 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1484.0.0+6d5ca18b...v1487.0.0+f3f922a8
2022-08-10 11:48:42 +03:00
Robert Pintilii
b2396ff809 ref(ui-components) Replace livestream input (#11997) 2022-08-10 10:22:24 +03:00
Robert Pintilii
fb20786b65 ref(ui-components) Replace inputs with new component (#11964) 2022-08-10 09:25:31 +03:00
Saúl Ibarra Corretgé
f5649efa49 fix(dropbox) fix signing out when switching rec providers 2022-08-09 10:23:05 -05:00
Saúl Ibarra Corretgé
7b361b3e23 fix(dropbox) fix incorrect button labels and click on web
The web and mobile Button components are not implemented the same way
and this came to bite us.

This is a stopgap fix, the real fix needs to be to make them have
exactly the same shared props and behavior.
2022-08-09 08:25:44 -05:00
Robert Pintilii
05fdd5f31f ref: Convert some reducers to TS (#11994) 2022-08-09 15:22:18 +03:00
Дамян Минков
5c52ee97ed fix: Adds missing notification in example config.
Add missing 'notify.videoMutedRemotelyTitle'.
2022-08-08 15:58:50 -05:00
Дамян Минков
3626e51c24 feat: Adds a jaas reference when installing. 2022-08-08 10:50:02 -05:00
Saúl Ibarra Corretgé
ef748c576d fix(face-landmarks) fix createImageBitMap polyfill on Safari 14
The polyfill returns an Image object instead of an ImageBitmap. The
latter has a close method, however, which we call.

Make sure we provide a dummy close method to avoid errors.
2022-08-08 17:03:48 +02:00
Saúl Ibarra Corretgé
dd044ad252 fix(settings) fix not showing the more tab
It used to only contain 3 sets of options, so we'd check if any of them
were set before showing it, but it now contains more options, so always
show it if the user requested it.
2022-08-08 14:26:04 +02:00
Robert Pintilii
5f04c5ba64 ref: Convert some reducers to TS (#11988) 2022-08-08 14:06:29 +03:00
Robert Pintilii
8f5eabe1f2 ref(TS) Remove ts-ignores (#11979) 2022-08-08 12:36:06 +03:00
Robert Pintilii
43578474a0 ref: Convert base/participants to TS (#11978)
Remove unnecessary ts-ignores
2022-08-08 11:12:22 +03:00
José Luís Andrade
6dbf283f3d Update Portuguese translation 2022-08-07 12:07:39 +02:00
Jaya Allamsetty
a1e0a46bad fix(audio-only SS) Stop audio-only SS when user stops share from the browser's share in progress window. 2022-08-05 14:30:49 -04:00
Hristo Terezov
627027b167 fix(remote-control): when multistream is enabled
The remote control controller events were sent for the camera
participant instead of the screen sharing one.
2022-08-05 19:04:52 +03:00
Jaya Allamsetty
4d41d36020 fix(remote-control): fix remote-control when multi-stream is enabled. 2022-08-05 09:35:52 -04:00
Robert Pintilii
0f57c37d6a feat(ui-components) Add clickable icon component (#11976) 2022-08-05 15:07:44 +03:00
Robert Pintilii
5b34068435 ref(ui-components) Use new input component (#11965) 2022-08-05 15:07:28 +03:00
apetrus20
52ce9a86ed feat(large-video/web) Add screen share placeholder (#11971)
* feat(large-video/web) new ScreenSharePlaceholder component
2022-08-05 12:11:09 +03:00
Andrei Gavrilescu
bdff92397b fix(noise-suppression): remove no track warning on share audio flow (#11966)
* remove no track warning on share audio flow

* remove unused import
2022-08-04 16:51:13 +03:00
Andrei Gavrilescu
1abc6b1e4a feat(noise-suppression): add toggle noise-suppression API (#11968)
* add toggle noise-suppression API

* switch NS API from toggle to set
2022-08-04 15:47:49 +03:00
Дамян Минков
ca259287be fix: Applies AV moderation checks on screen sharing with multistream on.
Guests trying to screenshare see the notification but also the dialog for choosing content.
2022-08-04 14:28:43 +03:00
Robert Pintilii
5601a62b60 ref(ui-components) Use new Button component (#11969)
Remove atlaskit deps
2022-08-04 13:39:22 +03:00
Robert Pintilii
d3c7b074d4 ref: Convert some files to TS (#11947) 2022-08-04 11:51:33 +03:00
Robert Pintilii
0fa0e99ffa ref(ui-components) Replace Recording dialog switch with new component (#11963)
The additional component is needed because the dialog is shared between native and web
2022-08-04 11:32:00 +03:00
Robert Pintilii
002d0fed42 ref(security-dialog) Use new input component for password (#11946) 2022-08-04 11:26:13 +03:00
Jaya Allamsetty
873cdbb404 fix(external-api) Fix toggleShareScreen in multi-stream mode.
Fixes https://github.com/jitsi/jitsi-meet/issues/11916.
2022-08-03 11:28:09 -04:00
Filip Rejmus
91cbeb0b3f fix(ios) use the RN logger in RN modules
The eventual RN SDK doesn't need to depend on our logger. When the native SDK i used the RN logger is diverted to ours anyway.
2022-08-03 15:16:43 +02:00
Robert Pintilii
3a87282e26 ref(ui-components) Replace Switch with new components (#11956) 2022-08-03 14:24:44 +03:00
Дамян Минков
fa5ee32720 fix: Fixes tenants in default configuration. 2022-08-03 14:06:38 +03:00
Дамян Минков
03c91de5c1 fix(breakout): Do not load token_verification for breakout rooms.
The token verification is not needed for the breakout muc component as we verify the token for the main room and there are other checks for breakoutrooms.
2022-08-03 14:06:38 +03:00
Robert Pintilii
2ec82c371c fix(polls) Fix CSS 2022-08-03 12:57:24 +02:00
Robert Pintilii
abc9d36c4c ref(ui-components) Replace all Checkboxes with new component (#11948)
Remove atlaskit/checkbox dependency
2022-08-03 11:41:26 +03:00
Robert Pintilii
efa0a132c4 fix(config) Fix recording config backwards compatibility (#11953)
Overwrite the new flag with the old one only if the new one is not set
Fix hideStorageWarning config
2022-08-03 10:31:00 +03:00
Jaya Allamsetty
083b009eba chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1481.0.0+7ed3be3b...v1484.0.0+6d5ca18b
2022-08-02 15:10:51 -04:00
Calin-Teodor
f0ba37e605 feat(recording/native): added new Button component 2022-08-02 18:19:52 +03:00
Saúl Ibarra Corretgé
a2c3bdf05f fix(lobby) fix not being able to type password
Autoofocus Strikes Back...
2022-08-02 17:30:16 +03:00
Robert Pintilii
22a52dafca fix(i18n) Fix translate Typescript (#11949) 2022-08-02 14:41:12 +03:00
Robert Pintilii
3960b59765 feat(ui-components) Add Checkbox component (#11927)
Replace all checkboxes in the Settings Dialog
Convert some dialog tabs to TS
2022-08-02 13:51:42 +03:00
Robert Pintilii
db54c45b13 feat(ui-components) Add toggle component (#11933) 2022-08-02 13:31:11 +03:00
Saúl Ibarra Corretgé
3e66e0009d fix(ios) add missing entitlement 2022-08-02 10:59:24 +02:00
Ali Alhaidary
d091881851 fix(lang) update Arabic translation 2022-08-02 10:49:17 +02:00
Calin-Teodor
de44c53482 feat(base/media): fixed linter 2022-08-02 11:30:36 +03:00
Calin-Teodor
64fef80f31 feat(base/media): removed max offset value for wide view screen sharing 2022-08-02 11:30:36 +03:00
Steffen Kolmer
87f6d27fb2 feat(liveStreamting) add configuration to customize streaming dialog 2022-08-02 10:27:18 +02:00
Saúl Ibarra Corretgé
3f0e50a9cd fix(base) drop old button implementation 2022-08-02 08:34:14 +02:00
Jaya Allamsetty
d63e0c5ab6 fix(audio-share): Fix audio-only SS in multi-stream mode.
ShareAudioDialog passes undefined when the user hits continue in the share audio demo modal. Toggle state of audio-share based on the current state of audio share in that case.
2022-08-01 22:12:18 -04:00
Jaya Allamsetty
9b9fbc0bc9 fix(participants-pane): Get the correct participantCount for multi-stream.
Do not add virtual screenshare participants to participantCount.
2022-08-01 13:58:21 -04:00
Jaya Allamsetty
5505f01cd9 fix(screenshot-capture): Impl screenshot capture in multi-stream mode. 2022-08-01 13:58:21 -04:00
Saúl Ibarra Corretgé
7e7d3c0cc7 fix(config) add recordingService to the whitelist
Fixes: https://github.com/jitsi/jitsi-meet/issues/11760#issuecomment-1201049861
2022-08-01 19:11:00 +02:00
Hristo Terezov
1f99ce3457 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1474.0.0+5ae3b47c...v1481.0.0+7ed3be3b
2022-08-01 18:29:55 +03:00
Shawn Chin
94074836ec feat(external-api) Add command to show custom in-meeting notification (#11897)
* feat(external-api) Add command to show custom in-meeting notification

* fix lint

* added uid to showNotifications, added hideNotifications
2022-08-01 13:37:41 +03:00
Calin-Teodor
ccba7e8f75 feat(base/modal): renamed prop and fixed scroll inside webview 2022-08-01 13:12:14 +03:00
José Luís Andrade
727b6dab9e fix(config) add 'noisesuppression' to 'toolbarButtons' 2022-08-01 11:35:17 +02:00
Andrei Gavrilescu
0f1bf09c69 fix(noise-suppression): fix muted state, update icons (#11936) 2022-08-01 11:58:37 +03:00
Robert Pintilii
a6f93db8e3 ref: Convert i18n to TS (#11934) 2022-08-01 10:14:54 +03:00
Robert Pintilii
8e0cb583af ref(thumbnail) Use new button component for video menu trigger (#11921) 2022-08-01 10:05:17 +03:00
Robert Pintilii
30a0a624a2 ref(profile-settings) Use new input component (#11928) 2022-08-01 10:04:36 +03:00
Robert Pintilii
2cea6c7b98 ref: Convert Theme to TS (#11926) 2022-08-01 10:04:23 +03:00
Robert Pintilii
69365d7e1f ref: Convert some files to TS (#11929) 2022-07-29 16:18:14 +03:00
Robert Pintilii
5783e8992a fix(screenshare-filmstrip) Fix pin screenshare (#11892)
On click on a screenshare pin that to stage (allows users to choose between multiple screenshares)
2022-07-29 14:13:02 +03:00
Robert Pintilii
dbc29a08ee fix(dialog) Add key to buttons (#11925) 2022-07-29 11:30:57 +03:00
Robert Pintilii
6f4b858e35 ref: Convert reducer to TS (#11920) 2022-07-29 11:01:50 +03:00
Robert Pintilii
ffef8f78ea ref(polls) Use new button component (#11918) 2022-07-28 16:45:32 +03:00
Saúl Ibarra Corretgé
82b2e77747 chore(deps) react-native-watch-connectivity@latest
This fixes the Android build because the old version depended on fbjs
wiithout actually listing it as a dependency.
2022-07-28 16:13:22 +03:00
Robert Pintilii
abc752635d ref(dialog) Use new button component (#11922) 2022-07-28 16:09:38 +03:00
Calinteodor
5ec6581d2e feat(welcome/native): settings updates (#11830)
feat(settings/native): feature updates
2022-07-28 10:28:29 +03:00
Robert Pintilii
e139c6d32d ref: Convert some reducers to TS (#11915) 2022-07-27 13:28:10 +03:00
Robert Pintilii
4e1af131fb ref(typescript) Remove unnecessary ts-ignores (#11914) 2022-07-27 12:56:07 +03:00
Robert Pintilii
867d998d15 ref(participants-pane) Use new button component (#11913) 2022-07-27 12:33:50 +03:00
Robert Pintilii
b1a9d68cf5 ref(ui-components) Move components to base/ui (#11912) 2022-07-27 11:40:34 +03:00
Jaya Allamsetty
8b4c7ebc03 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1468.0.0+634885b9...v1474.0.0+5ae3b47c
2022-07-27 08:08:29 +02:00
Filip Rejmus
63ea273b20 fix(prejoin) rename Prejoin.js to Prejoin.web.js 2022-07-26 17:13:48 +02:00
Robert Pintilii
ca3bd9138c Revert "fix(html) add doctype and fix HTML errors"
This reverts commit 432d07c2ad.
2022-07-26 15:40:25 +02:00
Robert Pintilii
c5115f99f0 feat(ui-components) Add Input Component (#11882) 2022-07-26 13:58:28 +03:00
Calin-Teodor
0a385c561d feat(prejoin-lobby): ui fixes 2022-07-26 13:36:22 +03:00
Robert Pintilii
44e5fa35af ref: Convert some reducers to TS (#11904) 2022-07-26 13:20:39 +03:00
Bo Frederiksen
432d07c2ad fix(html) add doctype and fix HTML errors
* Changed render mode to standard compliant and adjusted CSS accordantly.

* Fixed HTML errors, removed XHTML reminiscences and whitespace.

* Added doctype and fixed a few HTML errors.

* The input field speakerStatsSearch overflows the dialog box. Added missing box-sizing.

Co-authored-by: Bo Frederiksen <bo.frederiksen@semaphor.dk>
2022-07-26 11:07:19 +02:00
Milo Ivir
2f42af0b70 fix(lang) update Croatian translation 2022-07-25 10:26:47 +02:00
Hristo Terezov
e9055df9e3 fix(externalStorage): Infinitely growing.
In certain scenarios(when the iframe's domain is the same as the parent page)
 the jitsiLocalStorage key from local storage is
included in the serialized local storage and then
propagaded to the parent page. This way we end up with recursion which
grows the localStorage infinitely.
2022-07-25 10:54:21 +03:00
Christoph Settgast
cc7d3247ab fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-07-25 09:29:10 +02:00
Ali Alhaidary
fa8608eea0 fix(lang) update Arabic translation 2022-07-25 09:23:40 +02:00
Christoph Settgast
0d9c4318ba feat(old-client-notification) bump notice for anything older than 2022
Bumped to catch old macOS versions which were not signed and thus did
not have autoupdater working (ie. everything older than
https://github.com/jitsi/jitsi-meet-electron/releases/tag/v2021.11.2)

Signed-off-by: Christoph Settgast <csett86@web.de>
2022-07-25 07:47:33 +02:00
Jaya Allamsetty
2a5e169c2f fix(filmstrip): Remove SS ep from list of active speakers.
This fixes a case where duplicate SS tile appears when SS ep is the dominant speaker and all the active speakers are currently visisble.
2022-07-21 12:25:26 -04:00
Saúl Ibarra Corretgé
2def75db50 fix(android) exclude the Giphy SDK from the libre build
Fixes: https://github.com/jitsi/jitsi-meet/issues/11759
2022-07-21 12:51:43 +02:00
Saúl Ibarra Corretgé
53e05fdea9 feat(config) allow dangling comma
It has been supported in JS since ES5 and it helps users not make syntax
errors by uncommenting lines which are not comma terminated.
2022-07-21 12:39:06 +02:00
Jaya Allamsetty
c727b603af fix(filmstrip) Make dominant speaker visible at all times (#11874)
* fix(filmstrip) Make dominant speaker visible at all times.

* squash: address review comments.
2022-07-20 15:51:47 -04:00
Robert Pintilii
5dbb17bc81 fix(filmstrip) Fix pinning (#11889) 2022-07-20 18:34:46 +03:00
Robert Pintilii
cb712eb4ab fix(local-recording) Notify external api about local recording (#11887) 2022-07-20 18:08:52 +03:00
Robert Pintilii
c1e9724bba ref: Convert some reducers to TS (#11886) 2022-07-20 18:01:16 +03:00
dependabot[bot]
24b9f5d113 chore(deps): bump terser from 5.11.0 to 5.14.2
Bumps [terser](https://github.com/terser/terser) from 5.11.0 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 15:25:36 +02:00
Calin-Teodor
4ef88aa90e feat(base-chat): conditioned should set responder 2022-07-20 15:54:14 +03:00
Andrei Gavrilescu
06491e2406 feat(noise-suppression): Add noise suppression effect. (#11547)
* add denoise effect

* denoise prototype

* improve rnnoise / add comments

* revert some unnecessary changes

* Add noise suppressor worklet

* Send notification on failure

* address code review

* additional comments

* additional comments

* update package-lock

* fix rebase changes

* update rnnoise npm package

* sort lang

* adjust webpack performance hint

* address code review

* address code review

* switch ns files to typescript

* fix null-loader version, lang sort

* fix lint

* missing import

* fix lint / address code review

* use single action for ns state

* move activation to thunk

* increase node heap

* copy noise-suppressor to deploy

* fix ts lint
2022-07-20 15:31:17 +03:00
Milo Ivir
9ce52b237e fix(lang) update Croatian translation 2022-07-20 14:27:29 +02:00
Robert Pintilii
ac2af79807 ref(TS) Alpha sort interfaces (#11883) 2022-07-20 11:47:01 +03:00
Robert Pintilii
4a8c8899a9 feat(tokens) Add new tokens (#11881) 2022-07-20 09:58:51 +03:00
Robert Pintilii
b08ed3ade4 feat(ui-components) Add button component (#11868) 2022-07-20 09:19:59 +03:00
Robert Pintilii
718d32990d feat(theme) Add TS interface for Theme (#11877)
Update typography Tokens
Use new Theme interface
2022-07-19 13:36:02 +03:00
Mihaela Dumitru
009588a3d8 fix(hangup) - redirect after hangup in tenant meetings (#11876) 2022-07-19 12:21:18 +03:00
Robert Pintilii
449d52f26b ref: Convert some reducers to TS (#11875) 2022-07-19 10:58:56 +03:00
bgrozev
5a4ffea9aa feat: Always enable receiveMultipleVideoStreams. (#11871) 2022-07-18 11:23:40 -05:00
Robert Pintilii
d8b435ad16 fix(typescript) Make TS parse tsx files (#11866) 2022-07-18 16:16:08 +03:00
Robert Pintilii
b259757c79 fix(lobby) Fix buttons colors (#11867) 2022-07-18 11:40:16 +03:00
Robert Pintilii
7995c7ed00 ref: Convert registries to TS (#11865) 2022-07-15 15:33:09 +03:00
Robert Pintilii
08173ac1df fix(screensharing-pinning) Clear pin on tile view (#11864) 2022-07-15 15:03:45 +03:00
BinaryWizard904
e33b65da36 fix(debian) add mime.type mapping for wav files
Add mime.type mapping for wav files so Firefox supports playback of these sounds.
2022-07-14 21:53:00 +02:00
Robert Pintilii
defd0d2aaf ref: Convert some reducers to TS (#11862) 2022-07-14 12:38:09 +03:00
luzpaz
c7f96de787 fix(misc) fix typos
Found via `codespell -q 3 -S ./lang -L miliseconds`
2022-07-14 09:10:08 +02:00
José Luís Andrade
29669d88dc fix(lang) update Portuguese translation 2022-07-13 18:13:56 +02:00
William Liang
131eed0f62 fix(screenshare) disable sound when presenter stops sharing 2022-07-13 09:13:40 -04:00
Saúl Ibarra Corretgé
77da65b8ea chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1466.0.0+2682b4ec...v1468.0.0+634885b9
2022-07-13 10:41:12 +02:00
Saúl Ibarra Corretgé
989b8d9c2b fix(dynamic-branding) fix loading on web
The configuration is not stored in Redux by the time we try to fetch it,
so use the global on Window, which will.
2022-07-13 10:22:56 +02:00
Robert Pintilii
eb20e85166 fix(local-recording) Improvements (#11854)
Add config option for self recording
Add Beta label
2022-07-13 10:42:06 +03:00
Дамян Минков
d981acb94a fix(breakout-rooms): Stop previous leave timers if any. (#11842)
* fix(breakout-rooms): Stop previous leave timers if any.

* squash: Rename field.
2022-07-12 16:31:43 +03:00
Horatiu Muresan
155a14b351 fix(virtual-background) Fix virtual backgrounds list (#11833) 2022-07-12 16:18:07 +03:00
Robert Pintilii
139fa9b3f2 fix(theme) Fix tokens (#11822)
Fix elements to use correct tokens
2022-07-12 15:28:20 +03:00
Robert Pintilii
f31a7f31e6 ref: Convert files to TS (#11840) 2022-07-12 14:41:26 +03:00
Robert Pintilii
df887d24a2 fix(local-recording) Fixes (#11834)
Allow service change when only Dropbox and Local recording are enabled
Add space between REC indicator and meeting title
Hide Recording button if the feature is enabled but not supported
Don't play Stop recording sound on self recording
2022-07-12 14:25:56 +03:00
Avram Tudor
6286c76904 fix(more-tab) fix crash when quickly selecting settings more tab (#11837) 2022-07-12 14:11:44 +03:00
Saúl Ibarra Corretgé
780019a711 fix(etherpad) close menu when opening / closing document
Specially when we oopen it, mouse tracking will no longer work, so it
would remain open.
2022-07-12 10:45:46 +02:00
Дамян Минков
4d51aedde0 feat: Adds room info http endpoint jwt protected. (#11738)
* feat: Adds room info http endpoint jwt protected.

Used from dialplan from jigasi for handling passwords in IVR.

* squash: Fixes comments.

* squash: nginx api/rom-info

* fix: Skips tenant checks when enableDomainVerification is false.

* squash: Drops duplicate code and supports multi-shards.

By adding room= parameter in query and tenant prefix for the api we add support for multi-shards setup.

* feat: Enable domain verification by default.

This is used when verifying room access with token_verification module.

* squash: Update docs.
2022-07-12 09:51:13 +03:00
Calin-Teodor
058c82a704 feat(toolbox/conference): review remarks 2022-07-11 18:21:14 +03:00
Calin-Teodor
7e2f3f7d68 feat(toolbox/conference): button places updates 2022-07-11 18:21:14 +03:00
Calin-Teodor
30b0bb7bd6 feat(conference): removed padding 2022-07-11 18:18:33 +03:00
Greg 'Gosha' Galperin
f02a75bc9d fix(lang) update Russian translation 2022-07-11 16:01:05 +02:00
Дамян Минков
6b5a821696 feat: Moves to use jitsi-anonymous by default.
jitsi-anonymous adds by default handling of previd url param, which allows websocket resumption.
2022-07-11 16:17:12 +03:00
Дамян Минков
ad46df0a1a fix: Fixes tokens debian package configuration. Fixes #11702. 2022-07-11 15:33:36 +03:00
Saúl Ibarra Corretgé
b0deb9ec0c fix(lint) make sure eslint also runs on TypeScript files (#11777)
Co-authored-by: robertpin <robert.pin9@gmail.com>
Co-authored-by: Gabriel Borlea <gabriel.borlea@8x8.com>
2022-07-11 15:30:37 +03:00
zobadaniel
61a6ce2a2e lang: add upper sorbian translation (#11610)
* add upper sorbian translation

* add missing entries

* sort files
2022-07-11 14:56:25 +03:00
dependabot[bot]
bacdbeff21 chore(deps): bump moment from 2.29.2 to 2.29.4
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 13:00:38 +02:00
Ali Alhaidary
7fc9f6f515 fix(lang) update Arabic translation 2022-07-11 12:42:03 +02:00
Christoph Settgast
d34aae4a4b fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-07-11 09:27:48 +02:00
Calin-Teodor
ab86d336fb feat(security/native): replaced security dialog buttons with new button 2022-07-08 19:21:12 +03:00
Calin-Teodor
ffc412c18d feat(base): fixed height for buttons 2022-07-08 13:47:14 +03:00
Calin-Teodor
077901cd2b feat(conf/gifs/participants): created ParticipantsPaneFooter and updated comments 2022-07-08 13:47:00 +03:00
Calin-Teodor
ba3cd53017 feat(base): TERTIARY type rework 2022-07-08 13:46:42 +03:00
Calinteodor
0d50f1867d feat(mobile/navigation): revert to stack navigator (#11811)
* feat(mobile/navigation): replaced native stack with stack navigator and other ui fixes
2022-07-07 18:05:58 +03:00
Jaya Allamsetty
e9cfa78aaf chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1464.0.0+28aab9fc...v1466.0.0+2682b4ec
2022-07-07 10:57:38 -04:00
Jaya Allamsetty
76f7f3943f fix(virtual-background) Do not allow desktop as virtual background when multi-stream is enabled. 2022-07-07 08:42:40 -04:00
Jaya Allamsetty
b9b8090996 fix(Toolbox) Render the virtual background button in multi-stream mode.
In multi-stream mode, both camera and desktop streams are available at the same time. Virtual backgrounds can be applied to the camera stream while screensharing is in progress.
2022-07-07 08:42:40 -04:00
Calinteodor
d42e18c7bb feat(base/native): button abstractions (#11795)
* feat(base): created Button.tsx and IconButton.tsx
2022-07-07 15:29:18 +03:00
Mihaela Dumitru
a685f096a0 fix(message/notification): use unique keys for url tokens (#11809) 2022-07-07 14:54:10 +03:00
Calin-Teodor
49357e3cd2 feat(gifs/native): fixed linter 2022-07-07 14:28:27 +03:00
Calin-Teodor
049a3eb7fb feat(gifs/native): created GifsMenuFooter 2022-07-07 14:28:27 +03:00
Calin-Teodor
a31cc62c25 feat(conference/native): created CarModeFooter 2022-07-07 12:22:39 +03:00
Calin-Teodor
75ddf3e75f feat(base): removed PagedList because it is not used anymore 2022-07-07 10:36:48 +03:00
Calin-Teodor
40128277bc feat(etherpad): ui fixes 2022-07-06 23:55:14 +02:00
Saúl Ibarra Corretgé
7770d59c93 chore(rn,versions) set app and sdk versions for development
We'll bump them appropriately in release branches to avoid churn in
master.
2022-07-06 23:18:32 +02:00
Boris Grozev
2dd3c72473 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1461.0.0+96664436...v1464.0.0+28aab9fc
2022-07-06 14:40:59 -04:00
Calinteodor
4a4856f3de feat(conference/native): disabled PiP on WelcomePage (#11801)
* feat(conference/native): disabled PiP on WelcomePage
2022-07-06 18:14:41 +03:00
Titus Moldovan
47bdf800e7 fix(ios) removes scope from sendEvent parameter in ExternalAPI 2022-07-06 17:11:55 +02:00
Robert Pintilii
f6d088149c fix(video-constraints) Fix video constraints for resizable top panel (#11794) 2022-07-05 17:23:01 +03:00
Saúl Ibarra Corretgé
cbe3d6d505 feat(rn) remove use of externalAPIScope
Use the system broadcasting mechanism instead.

On Android I took the chance and removed the no longer needed
BaseReactView and implemented it on JitsiMeetView instead.
2022-07-05 11:40:03 +02:00
Calin-Teodor
b41c71e80b feat(conference): fixed linter 2022-07-05 10:16:13 +03:00
Calin-Teodor
a4b997362a feat(conference): disabled pip if we are not in conference room 2022-07-05 10:16:13 +03:00
Saúl Ibarra Corretgé
a5da90ddaf fix(prejoin) don't hide during auth
Fix the focus issue by disabling autofocus in case an auth (login, ait
for owner or password) dialog is shown.

Fixes: https://github.com/jitsi/docker-jitsi-meet/issues/1336
2022-07-05 07:49:35 +02:00
Saúl Ibarra Corretgé
dffa71666c fix(rn) fix mobile build
Looks like a transform error of some sort, it chokes on the ??=
shorthand syntax.
2022-07-04 21:09:32 +03:00
Calin-Teodor
892751154c feat(etherpad/native): fixed header left close button 2022-07-04 17:48:28 +03:00
Robert Pintilii
935e4d3261 ref(config) Convert config to TypeScript (#11774) 2022-07-04 14:12:12 +03:00
Saúl Ibarra Corretgé
f115028961 fix(rn,dynamic-branding) fix extracting fqdn from URL
On mobile we don't want to look in window.location.
2022-07-04 10:52:13 +03:00
Robert Pintilii
d910b9db57 fix(filmstrip) Fix screensharing filmstrip (#11775) 2022-07-04 10:32:59 +03:00
Robert Pintilii
b2b576f6fb ref(reducers) Convert some reducers to TS (#11768) 2022-07-01 12:33:03 +03:00
Robert Pintilii
a39d9f283d ref(reducers) Convert some reducers to TS (#11768) 2022-07-01 12:32:39 +03:00
Saúl Ibarra Corretgé
0913cf2c4f fix(android) make ongoing service public
Those using the view API may want to integrate iit in their own
Activity.
2022-07-01 11:58:18 +03:00
tmoldovan8x8
51f7b46628 fix(android) explicitly sets the theme for JitsiMeetActivity 2022-06-30 16:44:52 +02:00
George Politis
d029045fda fix: Do not send the videoType for audio tracks (#11742) 2022-06-30 16:21:42 +02:00
Alex Bumbu
ddab27e292 fix(ios, pip): update view hierarchy to present the rn view with view controller 2022-06-29 17:57:51 +02:00
Calin-Teodor
6df2e4009c feat(dynamic-branding): get branding data from state 2022-06-29 18:47:38 +03:00
Robert Pintilii
21cf7f23c2 feat: Add screenshare filmstrip (#11714)
Add new screen share layout with resizable top panel
Only enable new layout in large meetings (min 50 participants - configurable)
2022-06-29 16:59:49 +03:00
Calin-Teodor
bac1347961 feat(lobby/prejoin/native): display name input text color update 2022-06-29 15:56:03 +03:00
Robert Pintilii
c4f39e9c34 feat(recording) Add config to hide storage warning (#11761) 2022-06-29 15:28:20 +03:00
Saúl Ibarra Corretgé
ee266160f9 fix(external-api) fix error if setting some options too early
Specifically: display-name, email and avatar. These are the most common
ones, and the ones currently used by Spot for example.
2022-06-29 13:28:53 +03:00
Robert Pintilii
730d42cba1 fix(local-recording) Improvements (#11754)
Show Start rec button if local rec is enabled but fileRecordings is disabled
Add warning for users to stop the recording
2022-06-29 10:05:55 +03:00
Calin Chitu
3f795cd1ff feat(gifs/native): fixed gify search input 2022-06-28 18:23:14 +03:00
Robert Pintilii
252441da29 feat(transcription) Enable for all (#11739)
Move all transcription configs into new object
2022-06-28 14:11:26 +03:00
Saúl Ibarra Corretgé
b89c470366 chore(deps) react-native-screens@3.13.1 2022-06-28 12:02:47 +03:00
nbeck.indy
6e32a146e3 feat(settings): add option to mute lobby knocking sounds 2022-06-28 08:32:43 +03:00
Alex Bumbu
6f02382472 fix(iOS) fixed running in simulator for apple silicon 2022-06-27 17:12:26 +03:00
Calinteodor
de37c3e809 feat(polls/native): New polls screen (#11741)
* feat(polls/native) style updates
2022-06-27 16:53:52 +03:00
Robert Pintilii
ec47f530bc fix(tile-view, rn) Fix tile view in landscape (#11749)
Increase number of max columns to 4
2022-06-27 15:20:58 +03:00
Mihaela Dumitru
7b538fc3e9 fix(polls) Update limits (#11748) 2022-06-27 09:20:49 +03:00
Saúl Ibarra Corretgé
d5146aaf2e chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1459.0.0+4cb919e0...v1461.0.0+96664436
2022-06-25 17:38:10 -05:00
apetrus20
efb46df3d9 fix(chat) fix scrolling chat in safari 2022-06-24 22:19:55 +02:00
Hristo Terezov
88e6aa3323 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1457.0.0+ad75454f...v1459.0.0+4cb919e0
2022-06-24 15:09:44 -05:00
Robert Pintilii
a7c96e302f feat(local-recording) Add self local recording (#11706)
Only record local participant audio/ video streams
2022-06-24 15:07:40 +03:00
Saúl Ibarra Corretgé
b85da1e1bb fix(build,dev) disable circular dependency detector
It can be enabled with the env var, there are just too many positives at
the moment for it to be useful.
2022-06-24 11:57:04 +02:00
Saúl Ibarra Corretgé
e7c5421e33 fix(build,dev) fix source map generation in development mode 2022-06-24 11:57:04 +02:00
Calinteodor
4b4caf5b1c feat(prejoin/web): updated shouldAutoKnock helper (#11725)
* feat(prejoin) updated shouldAutoKnock helper
2022-06-23 17:39:10 +03:00
Mahdhi Rezvi
8f1fae79e4 feat(settings) add abilty to hide more tab under settings 2022-06-23 14:44:26 +02:00
tmoldovan8x8
9a99c517ab fix(rn, pip) enables PiP on conference mounted 2022-06-23 14:42:41 +03:00
Robert Pintilii
40a6240444 feat(local-recording) Update config (#11731)
Enable feature by default
2022-06-23 14:03:21 +03:00
tmoldovan8x8
4d6ca4383f fix(android) calls startForeground in onCreate
Call startForeground in onCreate to avoid android.app.RemoteServiceException thrown by the system.
2022-06-23 09:41:32 +02:00
Robert Pintilii
ddce2e6bec feat(breakout-rooms) add context menu to participants in other rooms 2022-06-23 09:40:11 +02:00
Robert Pintilii
7dca91a50a fix(local-recording) Add notification config and style fixes (#11728)
Add analytics
2022-06-22 12:52:22 +03:00
Saúl Ibarra Corretgé
31348179d4 fix(auth) simplify auth-and-upgrade procedure
It's not necessary to perform a full join, sending a conference IQ is
enough.
2022-06-21 19:20:09 +02:00
Calinteodor
e77679d025 feat(dynamic-branding): SVG branding image needs to cover the entire screen (#11724)
* feat(dynamic-branding) scale SVG branding image to cover entire screen
2022-06-21 17:51:25 +03:00
Titus Moldovan
44a9363f5b feat(mobile, external_api) exposes setClosedCaptionsEnabled 2022-06-21 16:18:31 +02:00
Calinteodor
bb76090bce feat(lobby/prejoin): updates
* feat(base/modal) added keyboard dismiss functionality

* feat(lobby) updated ui and start knocking if name is set

* feat(prejoin) updated ui and hide input if name is not required

* feat(prejoin) updated join button styles

* feat(prejoin) removed extra empty space

* feat(prejoin) updated disable join condition

* feat(base/modal) moved keaboard dismiss functionality

* feat(conference) updated auto knock condition

* feat(prejoin) updated button styles and disabling condition

* feat(lobby) updated styles

* feat(lobby/prejoin) updated styles for buttons and inputs

* feat(lobby/prejoin) updated contentContainer styles

* feat(lobby/prejoin) created shouldEnableAutoKnock helper
2022-06-21 16:16:38 +02:00
Robert Pintilii
d0790736db feat(external-api) Add participants pane toggled event (#11718) 2022-06-21 16:23:33 +03:00
Jaya Allamsetty
0308ba71b1 fix(audio-only) Do not unmute camera when SS is in progress.
If the audio-only mode is automatically disabled when user starts a screenshare while in audio-only mode, do not unmute the camera track.
2022-06-21 07:48:02 -04:00
Jaya Allamsetty
f7d1a5ec80 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1455.0.0+f3a2f61e...v1457.0.0+ad75454f
2022-06-21 07:24:38 -04:00
Saúl Ibarra Corretgé
d61fe58fcf fix(rn,styles) cleanup unused styles 2022-06-21 11:48:07 +02:00
Titus Moldovan
b428ce2dcd fix(pip) make PiP disabled by default
This reverts commit c84c3c61e2c24014b43023316627f7747bbca7a6.
2022-06-21 10:36:21 +03:00
Titus Moldovan
d1c9720033 fix(rn) add backhandler on Prejoin screen 2022-06-21 10:36:21 +03:00
Andrei Gavrilescu
c29e8bbdd1 feat(analytics): obfuscate room name (#11587)
* obfuscate room name

* fixed js-sha version

* add comma

* check for room change
2022-06-21 09:53:07 +03:00
Horatiu Muresan
3fb3be9727 feat(invite) Consider SHARING_FEATURES on the email invites (#11711) 2022-06-20 23:18:06 +03:00
Saúl Ibarra Corretgé
517ec29d85 fix(rn,dialogs) fix displaying dialogs on top of modal screens
Render them together with bottom sheets in a FullWindowOverlay.
2022-06-20 18:37:28 +03:00
Saúl Ibarra Corretgé
6ad279f029 fix(rn, bottomsheet) fix not rendering above presentation sheets
Move all sheets to render in a new container which uses FullWindowOverlay, which allows rendering above presentation controllers on iOS.
2022-06-20 16:53:19 +02:00
José Luís Andrade
0e98f90205 fix(lang) update Portuguese translation 2022-06-18 23:26:06 +02:00
Saúl Ibarra Corretgé
2c5b132483 fix(util) fix parsing strings in parseURLParams
After https://github.com/jitsi/jitsi-meet/pull/11607 we might call it
with a string. Be nice and accept that in addition to URL objects.
2022-06-18 23:17:55 +02:00
Calinteodor
4d8f29d4fe feat(rn,dynamic-brandind) added background image url to prejoin and lobby 2022-06-18 21:59:10 +02:00
Ali Alhaidary
22be96d838 fix(lang) update Arabic translation 2022-06-18 20:54:51 +02:00
Дамян Минков
ccc1157df5 fix: Fixes navigating back to welcome page after clicking cancel on login window.
It was handling just conference_failed with password required, but not connection failed with password required.
2022-06-17 15:19:06 +03:00
Дамян Минков
f613126776 fix: Hides pre join screen in few login window cases.
In Firefox pre-join was grabbing the focus and yuo cannot type username and password after clicking I'm the host button.
2022-06-17 15:19:06 +03:00
Robert Pintilii
38b21e986d fix(pinning) Fix pinning (#11693)
Hide Pin to Stage button while screensharing
Fix pin indicator while screensharing
2022-06-17 15:15:14 +03:00
Horatiu Muresan
38abca8a65 fix(carmode) Force potrait mode, add connection indicator 2022-06-17 12:54:51 +02:00
Дамян Минков
f3c6b54ffa fix: When adding a room param to urls check for previous params. (#11607)
* fix: When adding a room param to urls check for previous params.

* squash: Uses URL object to modify the url.

* squash: Use common connection options from base/connection.

Normalizes bosh url and for web.

* squash: Adds release param to external api and handles it.

* feat: Adds release handling for mobile(links in welcome page).

* squash: Fixes comments.
2022-06-16 15:27:41 +03:00
Gabriel Borlea
7dd85bb6ad fix(face-landmarks): work only when one face is detected (#11661)
* fix(face-landmarks): work only when one face is detected

* fix: remove redundant check for detection

* fix(face-landmarks): re-center and stop when more faces detected

* fix: remove faceCount checking when sending message from worker

* fix: add again the faceCount

* fix: add comment

* code review
2022-06-16 14:50:31 +03:00
Gabriel Borlea
624f88e069 add(face-landmarks): flag for rtc stats (#11682)
* add(face-landmarks): flag for rtc stats

* fix: check is faceLandmarks is defined
2022-06-16 14:13:36 +03:00
Calinteodor
fbf693b2dc feat(mobile/navigation) updated screens that have footer
* feat(mobile/navigation) updated screens that have footer

* feat(chat/native) reverted style change

* feat(chat/native) reverted changes and added input vertical padding

* feat(base/modal) replaced headerHeight with top safe area inset

* feat(carmode/native) removed unused import and fixed linter

* feat(chat/polls/native) reverted style changes

* feat(base/modal) added isModalPresentation default prop

* feat(base/modal) made isModalPresentation optional

* feat(base/modal) headerHeight based on top notch devices

* feat(polls) updated styles

* feat(base/modal) updated comment
2022-06-16 11:49:53 +02:00
Calinteodor
dbf7bf4750 feat(prejoin) native prejoin screen and other navigation updates
* feat(prejoin) created native Prejoin screen

* feat(prejoin) fixed useState callback and updates warnings

* feat(prejoin) created styles file

* feat(prejoin) moved nav from middleware to appNavigate, created native DeviceStatus

* feat(prejoin) updated styles

* feat(prejoin) review remarks pt. 1

* feat(prejoin) removed unused styles

* feat(prejoin) review remarks pt. 2

* feat(prejoin) comment fix

* feat(prejoin) added header title

* feat(prejoin) review remarks

* feat(lobby) updated styles

* feat(prejoin) updated lobby screen header button functionality

* feat(prejoin) review remarks pt 3

* feat(welcome) removed VideoSwitch component

* feat(mobile/navigation) fixed linter

* feat(welcome) moved isWelcomePageEnabled to functions.ts

* feat(mobile/navigation) screen options and order updates

* feat(app) review remark

* feat(welcome) added translation for screen header title and fixed build

* feat(mobile/navigation) added screen title translation and created screen option

* feat(mobile/navigation) fixed screenOptions import

* feat(mobile/navigation) added DialInSummary title translation, fixed animation and close button

* feat(welcome) fixed build

* feat(welcome) removed extra check

* feat(prejoin) review remarks pt 4

* feat(prejoin) added Join in low bandwidth mode btn

* feat(welcome) changed welcome screen header title

* fixup lobby close
2022-06-16 11:49:07 +02:00
Titus Moldovan
d31eb3b248 fix(android) parse initial isAudioMuted when starting JitsiMeetOngoingConferenceService 2022-06-16 11:54:25 +03:00
Titus Moldovan
9b75fc98c1 feat(rn) send isAudioMuted on conferenceEvent 2022-06-16 11:54:25 +03:00
hmuresan
1ee9f6a7e5 feat(extension-banner) Show edge extension when edge browser detected 2022-06-16 11:43:03 +03:00
Robert Pintilii
06d0cbd418 fix(local-recording) Don't use setCaptureHandle when in iframe (#11687) 2022-06-16 10:43:58 +03:00
Nils Ohlmeier
066dd71afb feat(RTC): report conference start timestamp through rtcstats (#11646) 2022-06-15 15:22:15 -07:00
Hristo Terezov
d573bd41b4 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1454.0.0+fd668c9d...v1455.0.0+f3a2f61e
2022-06-15 16:25:02 -05:00
Robert Pintilii
d06d190229 fix(keyboard-shortcut) Fix error on number keypress (#11680)
Fix error when pressing a number bigger than the number of participants
Fix local recording issue
2022-06-15 14:04:06 +03:00
Shahab
d3b650c741 refactor(prejoin) use jss instead of sass in DialOutDialog (#11361)
* refactor(premeeting): use jss instead of sass in DialOutDialog

* refactor(prejoin): move remaining prejoin-dialog styles to commonStyless
2022-06-15 10:34:09 +03:00
Saúl Ibarra Corretgé
4a04b8b5ee fix(rn,dynamic-branding) filter out gradients 2022-06-14 15:39:14 +02:00
Saúl Ibarra Corretgé
6718ba7423 feat(rn,dynamic-branding) add support for didPageUrl and inviteDomain 2022-06-14 15:39:14 +02:00
robertpin
e662433c2a Add audio constraints 2022-06-14 15:11:00 +02:00
robertpin
08bb957672 fix(local-recording) Add framerate 2022-06-14 15:11:00 +02:00
Saúl Ibarra Corretgé
78d8176cc8 fix(rn,bottom-sheet) fix styling after refactor
I somehow missed all other usages of the ColorSchemeRegistry.
2022-06-14 13:38:45 +02:00
robertpin
59ee984e09 fix(tile-view, rn) Fix landscape mode tile view 2022-06-14 13:38:24 +02:00
Robert Pintilii
f6fab051ce chore(deps) lib-jitsi-meet@latest (#11671)
https://github.com/jitsi/lib-jitsi-meet/compare/v1450.0.0+462996fc...v1454.0.0+fd668c9d
2022-06-14 11:01:04 +03:00
Saúl Ibarra Corretgé
f0ff6a9f1c fix(video-layout) fix usage of disableTileView
The documented behavior is that it would disable auto-switching to it,
but users would still be available to toggle it.

This change restores that behavior. If the user has selected a layout
that will be preferred before cheching for this setting.

Ref: https://community.jitsi.org/t/how-to-disable-titleview/115093
2022-06-13 14:35:30 +02:00
Calin Chitu
dfa761b963 feat(mobile/navigation): added screen orientation based on Platform 2022-06-10 17:55:56 +02:00
Saúl Ibarra Corretgé
ad8cdcd81b fix(rn,bottom-sheet) fix scroll
In the past we used a PanResponder to detect user gestures in the sheet
to show a reduced version or a full-height version of it, and also to
close it.

There is an obvious conflic between the gestures and scrolling, which
didn't work all that great, but we could live with it.

After reactions were introduced we no longer rendered the 2 different
heights, so that functionaligy stopped being used but the PanResponder
still remained there.

This commit removes it completely and sets a max height of 75% on any
BottomSheet, so any tap outside will close it.
2022-06-10 17:54:58 +02:00
Calin Chitu
98ef0e74d6 feat(welcome/native): updated settings name placeholder example text 2022-06-10 17:59:50 +03:00
Saúl Ibarra Corretgé
746fde7c10 fix(local-recordings) fix for browsers not supporting MediaRecorder 2022-06-10 16:15:03 +02:00
Calin Chitu
bedddd4760 fix(lobby/native) removed nav button overwrite 2022-06-10 16:07:56 +03:00
Calin Chitu
7ea78e9845 fix(lobby/native) style updates and local video fix 2022-06-10 16:07:56 +03:00
Gabriel Borlea
9383942cb9 fix(face-landmarks): filter face detections based on detection score (#11658)
* fix(face-landmarks): filter face detections based on detection score

* fix: add blank line and semi column
2022-06-10 15:19:18 +03:00
Avram Tudor
2f1fe637ca fix(prejoin) fix avatar centering (#11655) 2022-06-10 09:16:23 +03:00
abora8x8
15d453de1d Fix: Speaker stats are not delivered for the breakout rooms (#11644)
* Send speaker stats for brk room

* Fix comments component loaded
2022-06-09 13:15:04 -05:00
Calin Chitu
a272995b8c feat(navigation) style updates 2022-06-09 17:54:49 +03:00
Jaya Allamsetty
10b800e57f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1448.0.0+3df2abec...v1450.0.0+462996fc
2022-06-09 10:42:14 -04:00
chipechop
ca77563bf1 Update main-it.json
added car mode and polished many words
2022-06-09 09:22:44 -05:00
Calin Chitu
44ff1aac11 feat(mobile/navigation) - updated shared doc animation 2022-06-09 15:14:54 +02:00
Calin Chitu
79e648867d feat(mobile/navigation) - removed stack dependency and updated animation options 2022-06-09 15:14:54 +02:00
Calin Chitu
fc725c07e9 feat(mobile/navigation) - updated to native stack navigators 2022-06-09 15:14:54 +02:00
Horatiu Muresan
d49c86bd5f feat(deployment-urls): Whitelist deploymentUrls; remove JaaS restriction 2022-06-09 16:00:41 +03:00
Hristo Terezov
aee94ad6fb fix(presenter): Broken stop SS + presenter.
Fixes an issue - not able to stop the screen sharing in presenter
mode from the screen sharing button.
2022-06-08 12:28:57 -05:00
Gabriel Borlea
38011e537a add(face-landmarks): max faces detected config and default value (#11625)
* fix(face-landmarks): set max detected faces up to 4

* add(face-landmarks): config for max faces detected

* fix(config.js): default value for capture interval face-landmarks

* add missing coma
2022-06-08 12:28:41 -05:00
Werner Fleischer
13194ddfba fix(lang): logout question asks to stop the conference
A minor wording change to prevent confusion: On logout one is asked
whether to stop the conference but the conference is only left by the
participant.
2022-06-08 12:28:13 -05:00
Alex Bumbu
7895abb9ea fix(ios, pip) make initialPositionInSuperView property public 2022-06-08 13:38:20 +02:00
Avram Tudor
9060bebca9 fix(prejoin) fix styling of avatar (#11629) 2022-06-08 13:19:08 +03:00
Robert Pintilii
38724458e3 ref(reactions) Re-write using TypeScript (#11603) 2022-06-08 10:44:47 +03:00
Дамян Минков
1bce1524db feat: Fix display name in prejoin stealing focus.
When there is a password and lobby enabled, participants cannot enter password as the display name is stealing the focus.
When there is just password set the same field steals the focus from the password prompt.
2022-06-07 15:53:36 -05:00
Werner Fleischer
def3c76e10 fix(rn, chat): localize the chat button label 2022-06-07 17:14:22 +02:00
Ali Alhaidary
5be770cad1 fix(lang) update Arabic translation 2022-06-07 12:15:53 +02:00
Andrei Gavrilescu
dd867b2a92 bump rtcstats to 9.2.0 2022-06-07 12:15:19 +02:00
Jaya Allamsetty
958ffb3076 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1439.0.0+42f5b4bf...v1448.0.0+3df2abec
2022-06-06 12:38:47 -04:00
Дамян Минков
bab3c4abc4 feat: Fix luajwtjitsi deependencies.
As luajwtjitsi is in jitsi-meet-prosody move its dependencies.
2022-06-06 10:37:49 -05:00
Robert Pintilii
1f342b79a8 fix(local-recording) Fix native (#11622) 2022-06-06 15:25:36 +03:00
Saúl Ibarra Corretgé
3af782f894 chore(rn,versions) bump sdk and app versions 2022-06-03 14:04:06 +02:00
Robert Pintilii
e27069447b feat(local-video-recording) Allow users to record the meeting locally (#11338) 2022-06-03 14:45:27 +03:00
Saúl Ibarra Corretgé
7ac573d628 fix(android) fix incorrect colors on MIUI devices
They "force" a dark mode but we already have a dark palette, so avoid
the system overriding the base colors.

Fixes: https://github.com/jitsi/jitsi-meet/issues/9981
Fixes: https://github.com/jitsi/jitsi-meet/issues/8781
2022-06-03 13:03:53 +02:00
Saúl Ibarra Corretgé
b3db9ce6cf feat(build) make sure we error out if patch-package fails
Ref: https://github.com/jitsi/jitsi-meet/issues/11611
2022-06-03 10:48:21 +02:00
Jaya Allamsetty
1397b9ac80 fix(multi-stream) RN Add listeners for track streaming status updates on large-video.
* fix(multi-stream) RN Add listeners for track streaming status updates on large-video.
Fixes an issue where video on large-video is not being rendered when there is no filmstrip, i.e., there is only 1 remote participant in the call with source-name signaling enabled. Also do not show the screensharing indicator on the camera thumbnail when a virtual SS tile is created for the local screenshare.

* squash: add a comment
2022-06-01 16:13:27 -04:00
Robert Pintilii
de294cae92 fix(giphy-integration) Fix input issues (#11601)
Fix auto focus on menu open
Fix unable to use space in input
2022-05-31 11:58:25 +03:00
José Luís Andrade
5cef3dc1ba fix(lang) update Portuguese translation 2022-05-30 21:23:08 +02:00
Saúl Ibarra Corretgé
1dce802031 fix(prejoin,config) move hidePrejoinDisplayName to the prejoin section 2022-05-30 16:19:27 +02:00
Gabriel Borlea
11d61d6d7d fix(face-landmarks): human helper tensor disposal and async functions (#11596)
* fix(face-landmarks): human helper tensor disposal and async functions

* fix(face-landmarks): rename functions in interface
2022-05-30 16:04:20 +03:00
Saúl Ibarra Corretgé
b5f3cd14c2 fix(ios) fix not using the loudspeaker by default
Fixes: https://github.com/jitsi/jitsi-meet/issues/11563
2022-05-30 14:04:05 +02:00
Calin Chitu
f87ce0defe fix(recording/native) Button import missing 2022-05-30 10:28:19 +03:00
Joan Montané
201ff8f1da fix(lang) update Catalan translation 2022-05-30 08:55:34 +02:00
Avram Tudor
0c44b9a478 feat(prejoin) allow disabling prejoin display name editing (#11575) 2022-05-26 15:38:38 +03:00
Robert Pintilii
9dba1d30b0 fix(raise-hand) Fix multiple raise hand from notification (#11586)
Only dispatch raise hand if hand was not already raised
2022-05-26 14:36:12 +03:00
Jaya Allamsetty
ad70f12cb4 fix(filmstrip) Add handlers for track streaming status on RN. (#11584)
* fix(filmstrip) Add handlers for track streaming status on RN.
This is needed for switching between video and avatar when the track's streaming status changes in source-name signaling mode.

* squash: Add comment.
2022-05-24 21:37:08 -04:00
Hristo Terezov
6ea7ab2b46 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1438.0.0+b9aa0e59...v1439.0.0+42f5b4bf
2022-05-24 17:10:40 -04:00
Hristo Terezov
0ef71f4368 fix(deviceSelection):prejoin-update current device 2022-05-24 15:53:12 -05:00
Hristo Terezov
ae565aaac6 fix(device-selection): Handle properly on prejoin
The device selection initialization on the prejoin use case was handled
like the welcome page. This was introducing issues with selecting the
stored devices and not the ones used, enabling the device selection when
it will fail and others.
2022-05-24 15:53:12 -05:00
Hristo Terezov
7e942173aa fix(device-selection): disable preview for ios 2022-05-24 12:23:48 -05:00
Дамян Минков
e1b87c48bc chore(deps) lib-jitsi-meet Updates backend release num to analytics. (#11574)
https://github.com/jitsi/lib-jitsi-meet/compare/v1437.0.0+966fcd93...v1438.0.0+b9aa0e59
2022-05-23 15:21:54 -05:00
Hristo Terezov
8cd259c43f fix(device-selection):iOS Safari disable previews
On iOS Safari when the tracks for the previews are created the old ones
are auto destroyed which leads many issues like stop sending media while
the devie selectioin is displayed, error messages, etc.
2022-05-23 22:19:50 +03:00
Saúl Ibarra Corretgé
d2d2507e86 fix(app) fix broken import
Introduced in d9eedb0dad
2022-05-23 17:14:54 +02:00
Calinteodor
f3f9cd3d05 feat(dynamic-branding) add initial mobile SDK customization
* feat(dynamic-branding) sdk customization

* feat(dynamic-branding) unsetDynamicBranding when we disconnect

* feat(dynamic-branding) added branding colors to conference

* feat(dynamic-branding) extracted logger to its own file

* feat(dynamic-branding) reverted style change

* feat(dynamic-branding) unset branding if connection failed

* feat(dynamic-branding) removed index.js, updated imports, added ImageBackground component

* feat(dynamic-branding) created logger feature object

* feat(dynamic-branding) moved brandingStyles to mapStateToProps, used SvGUri

* feat(dynamic-branding) created BrandingImageBackground component, fixed styles

* feat(dynamic-branding) moved BrandingImageBackground to dynamic-branding feature

* feat(dynamic-branding) fixed linter

* feat(dynamic-branding) added style comment
2022-05-23 17:02:14 +02:00
Avram Tudor
543f273792 feat(undock) expose buttons for docking / undocking iframe (#11560) 2022-05-23 15:42:25 +03:00
Saúl Ibarra Corretgé
d9eedb0dad fix(recent-list) do not store room when inside an iframe
Due to local storage limitations we might end up making the URL huge
when we save the state there. Avoid the issue at the root by never
storing URLs in that case.

Closes: https://github.com/jitsi/jitsi-meet/issues/11567
2022-05-23 14:26:49 +02:00
Alex Bumbu
7f2fec756d fix(ios) fix PiP resizing and positioning
Co-authored-by: Tobias Marschall <tobias.marschall@online.de>
2022-05-23 14:06:36 +02:00
Robert Pintilii
607021a890 fix(self-view) Add Show self view button in overflow menu (#11568) 2022-05-23 11:29:52 +03:00
Saúl Ibarra Corretgé
b4febf728d feat(toolbox) drop MuteEveryoneButton and MuteEveryonesVideoButton
The functionality is still accessible in the participants pane, with all
moderation controls.
2022-05-20 21:43:05 +02:00
Robert Pintilii
769f0a8452 feat: Add name overwrite API (#11543) 2022-05-20 13:45:09 +03:00
Jaya Allamsetty
f5004a2a0c ref(multi-stream) Use helper function to get the video track. 2022-05-19 17:05:36 -04:00
Jaya Allamsetty
a707022d0b fix(multi-stream): Add a virtual SS tile on RN.
Add a second virtual SS tile on RN when a remote participant that has multi-stream mode enabled starts a screenshare.
2022-05-19 17:05:36 -04:00
Jaya Allamsetty
43b0118ff8 fix(mutli-stream): Use the default display name if none is available.
This fixes an issue where the virual SS tile is not created if the user sharing the screen doesn't have a display name set.
2022-05-19 17:05:36 -04:00
Jaya Allamsetty
97ca3fb622 fix(multi-stream): fix virtual screenshare participant's thumbnail.
Add a screenshare status indicator at the bottom.
Fix the font and size of the resolution/fps stats so that it matches with that of the other thumbnails.
2022-05-19 17:05:36 -04:00
Saúl Ibarra Corretgé
ffa55cca1e fix(av-moderation,breakout-rooms) disable controls on breakout rooms
AV moderation does not work on brerakout rooms.

Since some of the options in the "breakoutRooms" config section no
longer apply, I moved the relevant ones to a new "participantsPane"
section.
2022-05-19 13:47:49 +02:00
Saúl Ibarra Corretgé
0098091a37 fix(participants-pane,video-menu) fix incorrect selector usage 2022-05-19 13:47:49 +02:00
Saúl Ibarra Corretgé
6c1cb5d4be fix(av-moderation) mark as unsupported while in a breakout room 2022-05-19 13:47:49 +02:00
Gabriel Borlea
8240c3703e ref(face-landmarks): move human logic into separate class 2022-05-19 11:36:27 +02:00
Дамян Минков
35572700bf Enables sending release number from backend. (#11552)
* chore(deps) lib-jitsi-meet@latest

https://github.com/jitsi/lib-jitsi-meet/compare/v1436.0.0+d5c46952...v1437.0.0+966fcd93

* squash: Enables sending release number from backend.
2022-05-18 13:04:49 -05:00
Jaya Allamsetty
5df774c569 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1435.0.0+66080c68...v1436.0.0+d5c46952
2022-05-18 13:05:04 -04:00
Gabriel Borlea
8a503e7b40 fix(face-landmarks): dispose tensors to avoid memory leaks
Also send only expressions with score grater than 50%.
2022-05-18 13:41:51 +02:00
Calin Chitu
4f49cde73e feat(react) removed unused native components 2022-05-18 14:09:00 +03:00
Gabriel Borlea
ea5ce3f72f ref(rtc-stats) update faceLandmarks naming 2022-05-17 13:57:18 +02:00
Horatiu Muresan
5152638529 fix(native-notifications) Show notifications on max 2 lines 2022-05-16 17:26:15 +03:00
George Politis
e4b50ba419 send video type to rtcstats (#11426) 2022-05-16 15:56:37 +02:00
Saúl Ibarra Corretgé
05127467c2 feat(notifications) add ability to disable specific notifications
This works together with the broader "notifications" config option. One
might choose to leave the existing option unespecified *thus allowing
all notifications) and then use this new one to be explicit about which
ones to disable.
2022-05-16 13:24:59 +02:00
Horatiu Muresan
420c7c87e3 fix(filmstrip) Do not render filmstrip on prejoin/lobby 2022-05-16 12:30:14 +03:00
Hristo Terezov
c23d38807a fix(tile-view): scrollbar size.
The scrollbar size was changing while scrolling.
2022-05-13 18:27:34 +03:00
Calin Chitu
fb6f38800b fix(chat/native) we need to dispatch close and open chat 2022-05-13 18:07:26 +03:00
Saúl Ibarra Corretgé
4fb698ea04 chore(deps) react-native-webrtc@1.100.1 2022-05-13 14:26:04 +02:00
Calin Chitu
ebe81e2835 feat(mobile/navigation) changed navigation container background color 2022-05-12 16:42:04 +02:00
Gabriel Borlea
c4106b8d89 fix(face-landmarks) set explicit model paths 2022-05-12 13:30:47 +02:00
Jaya Allamsetty
4a350df695 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1431.0.0+742232c9...v1435.0.0+66080c68
2022-05-11 10:30:30 -04:00
Nils Ohlmeier
0638d9d303 feat: enable audio settings menu for Firefox (#11522) 2022-05-11 09:51:00 -04:00
Calinteodor
0fe7383154 fix(chat/native) private message replies (#11521)
Fixes issue #11516
2022-05-10 18:28:23 +03:00
Calin Chitu
9d7b6cafc5 fix(video-menu/native) wrong import path 2022-05-10 15:07:22 +03:00
Hristo Terezov
39d30ea0b4 fix(stage-filmstrip): resize. 2022-05-09 18:17:53 -05:00
Дамян Минков
1400b6ff0a feat: Moves luajwtjitsi in jitsi-meet. (#11501)
* feat: Moves luajwtjitsi in jitsi-meet.

* squash: Fix luajwtjitsi name to include lib.
2022-05-09 09:15:12 -05:00
pangrr
3fc3a217eb fix(stats) split stats for camera and screenshare in multi-stream mode (#11475)
* no ssrc when sourceNameSignalingEnabled
* conditionally use source name for stats
* update doc
* always subscribe to participant id
2022-05-09 09:42:45 -04:00
Andrei Gavrilescu
6068a30488 fix(audio-share): mix newly created audio track with screen audio (#11325)
* mix newly created audio track with screen audio

* check both screen sharing flows
2022-05-09 12:37:50 +03:00
Mihaela Dumitru
36578696bb feat(config) add gravatar config object (#11509) 2022-05-09 08:36:39 +03:00
Ali Alhaidary
64d44f0ac2 fix(lang) update Arabic translation 2022-05-07 13:28:59 +02:00
Ali Alhaidary
5f2147f40f fix(lang) update main.json Syntax Correction (#11511) 2022-05-07 12:34:18 +02:00
Hristo Terezov
084f911699 fix(stage-tile-view): crash when pinning 2022-05-06 16:59:39 -05:00
Saúl Ibarra Corretgé
01bd18b86a fix(notifications) remove unused isDismissAllowed prop 2022-05-06 16:49:08 +02:00
Saúl Ibarra Corretgé
e6ce5fd75f fix(rn,navigation) wait until the root navigator is initialized
There is a race condition in the root navigatior's initialization.

It's possible that it's initialized a touch too late and SDK users who
try to navigate to a conference end up stuck in the connecting screen
because the navigator is null.

This PR waits for it to be initilized by very unorthodox means, it's a
horrible hack which we need to undo, but for that we need to break
appart the inheritance relationship between App.{web,native},
AbstractApp and BaseApp because it's very inflexible.

The flags are now initialized very early so the naviggator sees if the
welcome page is enabled or not.
2022-05-06 15:05:37 +02:00
Gabriel Borlea
0c021868b5 feat(face-landmarks): integrate human library
It replaces face-api.

* feat(face-landmarks): integrate human library

* feat(face-landmarks): rewrite worker in typescript

* fix(face-landmarks): allow worker bundle size up to 2 mib

* fix: remove unwanted comment

* code review
2022-05-06 14:41:08 +02:00
Hristo Terezov
adef5095da feat(RN-filmtrip) stop reordering small meetings 2022-05-06 12:18:57 +02:00
Horatiu Muresan
61abf0d882 feat(carmode) Add carmode screen
- opens as a modal
- lastn is 0, mutes local video while open
- long press to talk
- and more
2022-05-06 13:14:10 +03:00
Saúl Ibarra Corretgé
e628d99544 fix(av-moderation) use a consistent UID for ask to unmute notifications
This way only one will be shown at a time.
2022-05-06 10:36:53 +02:00
Hristo Terezov
f34dde3376 feat(tile-view): expand tiles from last row.
If we have enough space on the last row we expand the width of the tiles
up to 16:9 ratio.
2022-05-05 08:55:02 -05:00
Ianc Oana Emilia
94e39e19b2 Update prosody config for JaaS customers 2022-05-05 07:45:08 -05:00
Saúl Ibarra Corretgé
d1ac4ea637 fix(rn,reactions) don't show raise hand button in menu if disabled 2022-05-05 13:49:36 +02:00
Saúl Ibarra Corretgé
0b57bcb20b feat(load-test) split to a separate repository
It now lives here https://github.com/jitsi/jitsi-meet-load-test
2022-05-05 13:48:58 +02:00
Saúl Ibarra Corretgé
a7abe84479 fix(ios) download WebRTC with bitcode when making an SDK release 2022-05-05 12:25:28 +02:00
Robert Pintilii
bb0d3b4c66 fix: Stage filmstrip (#11495) 2022-05-05 12:20:20 +03:00
Jonathan Lennox
5b86182f94 feat(load-test) make it possible to start multiple load-test clients from the same tab
* Refactor load-test into an object.

* Convert to class syntax.

* Bind member function callbacks.

* More binding and thisage.

* More thisage.

* More tweaks

* Rename numParticipants as remoteParticipants.

* Change back.

* Fix userLeft.

* Add members for event listeners, to be able to remove them.

* Add numClients parameter that allows multiple clients to be started.

* Clear clients array on unload.

* Add latency between starting clients.
2022-05-05 09:12:18 +02:00
Дамян Минков
3ab47ff96c fix: Updates cloud-api.swagger phoneNumberList endpoint. 2022-05-04 11:26:33 -05:00
Дамян Минков
e1706e7868 feat: Adds a prosody config for JaaS customers, disabled by default. 2022-05-04 11:26:33 -05:00
Дамян Минков
8434dda6e5 fix: Updates cloud-api.swagger phoneNumberList endpoint. 2022-05-04 11:26:33 -05:00
Jaya Allamsetty
346aadc23d fix(participant-pane) Do not show virtual SS as a separate participant. 2022-05-04 10:41:31 -04:00
pangrr
b872ea855e fix(large-video) Fix an infinite loop with source name signaling enabled (#11486)
* fix large video updating loop when kicked out

* fix linter issue
2022-05-03 17:33:38 -04:00
Saúl Ibarra Corretgé
e94607ae4b fix(recording) use generic icon for cloud recording 2022-05-03 17:12:18 +02:00
Jaya Allamsetty
2a535bd50e chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1430.0.0+ccf9ebed...v1431.0.0+742232c9
2022-05-03 11:00:35 -04:00
William Liang
f2c3740108 fix(screenshare) use selector for getting screenshare owner display name (#11478) 2022-05-03 10:25:19 -04:00
Saúl Ibarra Corretgé
42632bd5fd feat(welcome) update background
Use something less dull.

Original: https://unsplash.com/photos/Q1p7bh3SHj8
2022-05-03 16:22:11 +02:00
Saúl Ibarra Corretgé
0d0edc05e7 fix(ios) build SDK releases with bitcode
Also, stop bundling WebRTC, it's now a dependency in CocoaPods.
2022-05-03 15:45:38 +02:00
DanielHabenicht
1f9a0e91d2 Update cloud-api.swagger (#11481)
* Update cloud-api.swagger

Update to match with the current implementation

* Update cloud-api.swagger
2022-05-03 08:43:55 -05:00
Saúl Ibarra Corretgé
fe7327cd21 fix(rn,dialin-summary) simplify navigation
Only havee the screen in the hierarchy if we have a welcome page, since
it's the only way to access it.

Use goBack() from the navigator directly and avoid duplicating all props
to the screen.
2022-05-03 15:16:29 +02:00
Saúl Ibarra Corretgé
9dd44fc48e feat(local-recordings) drop old "local recordings" implementation
It's about to become very confusing, since we are going to add actual
local recordings with video.

This feature was never fully finalizeed since it required manual
processing of the files, as they were not uploaded anywhere.

In addition, unless one opens the local audio device without any audio
processing first, any tracks opened later will have audio proceessing
turned on, something not desirable for the scenario this feature was
designed for in the first place: podcasts.

This feature will likely come back as a JaaS demo / MVP where the local
recording is made outside of the Jitsi Meet iframe.
2022-05-03 14:40:12 +02:00
Saúl Ibarra Corretgé
de7c9bd001 fix(rn,screen-sharing) don't disable button when in audio-only mode
Just like the web.
2022-05-03 14:02:50 +02:00
Jaya Allamsetty
fd62ca6c67 fix(audio-only) Do not create a new track for audio-only changes.
Now that screenshare is permitted when a user is in audio-only mode, do not create a new video track if it doesn't exist when audio-only mode is automatically disabled. New tracks should only be prompted by user action such a camera unmute or start screenshare. Fixes https://github.com/jitsi/jitsi-meet/issues/11460.
2022-05-03 07:32:49 -04:00
Jairo Llopis
8e67c8e74f fix(lang) update Spanish translation 2022-05-03 10:33:04 +02:00
Jaya Allamsetty
f266418a3f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1429.0.0+7251f3aa...v1430.0.0+ccf9ebed
2022-05-02 12:29:35 -04:00
Saúl Ibarra Corretgé
1c79e6baa3 fix(rn,lobby) use a header for the main lobby screen
It allows us to place the Cancel button there, and declutter the UI of
buttons.
2022-05-02 16:29:40 +02:00
Saúl Ibarra Corretgé
d78e8fba25 fix(rn,lobby) match button style 2022-05-02 16:29:40 +02:00
Saúl Ibarra Corretgé
721f4dc3d3 feat(rn,ui) use dark gray for screen headers
Skip the welcome page for now, until we can remove the audio / video
toggle.
2022-05-02 16:01:40 +02:00
Saúl Ibarra Corretgé
625206db20 fix(rn,speakerstats) fix not rendering stats 2022-05-02 16:01:13 +02:00
José Luís Andrade
3f7eef5d13 Update Portuguese translation 2022-05-01 09:17:23 -05:00
Дамян Минков
7cd5708ea7 fix: Fixes loading recommendedBrowsers page. (#11465)
* fix: Fixes loading recommendedBrowsers page.

Fixes loading the page and its resources when using html base (cdn).
2022-04-29 12:02:05 -05:00
Jaya Allamsetty
e3f3c00c06 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1428.0.0+eda20c2a...v1429.0.0+7251f3aa
2022-04-29 11:12:07 -04:00
William Liang
d3fe246f61 refactor(multi-stream) refactor virtual screenshare creation and support plan-b clients (#11445)
* fix(multi-stream) update selector to find ss track by videoType or mediaType

* ref(multi-stream) move fake ss creation logic and support video type changed

* refactor(multi-stream) decouple sending and receiving multiple screenshare streams

* fix(multi-stream) fix receiver constraints with signaling and without multi-stream

* fix(mutli-stream) ensure plan b original SS thumbnail displays avatar

* fix(multi-stream) show fake SS for plan b sender

* refactor(multi-stream) poc for moving SS creation to state listener

* remove reference to fake SS creation

* fix lint errors

* rename to virtual screenshare participants

* fix minor bugs

* rename participant subscriber to specify web support only
2022-04-29 10:32:16 -04:00
Saúl Ibarra Corretgé
b9c4d28dac fix(auth) fix WaitForOwnerDialog not vanishing
Since all the auth logic is not ported to React on the web,
`_isWaitingForOwner` will always return `false` because the
`waitForOwner()` action is not (yet) used there.

THis fix always tries to hide the dialog no matter what, which is not a
Bad Thing to do anyway.

There is a related bug remaining, however: if one pressed "I am the
host" and then cancel, it doesn't goo back to the previous dialog, but
it completely kils the meeting. This is a compromise we'll have to live
with for a bit longer.

Fixes: https://github.com/jitsi/jitsi-meet/issues/11413
Fixes: https://github.com/jitsi/jitsi-meet/issues/11432
2022-04-29 14:58:22 +02:00
Saúl Ibarra Corretgé
6802a03b7f fix(ios) sync Podfile.lock 2022-04-29 12:01:34 +02:00
Saúl Ibarra Corretgé
0b642fd225 fix(giphy,privacy) remove custom dynamic fonts 2022-04-29 11:58:32 +02:00
Saúl Ibarra Corretgé
27e2ee07a8 fix(giphy,privacy) disable pingback 2022-04-29 11:58:32 +02:00
Mihaela Dumitru
02aca27c46 feat(external-api) add breakout room configs to hide auto assign and footer menu buttons (#11443)
* hideAutoAssignButton
* hideFooterMenu
* hideModeratorSettingsTab
* hideMoreActionsButton
* hideMuteAllButton
2022-04-29 12:30:49 +03:00
Saúl Ibarra Corretgé
9f3965800c feat(deps,rn) update React Native to version 0.68.1 2022-04-29 10:54:16 +02:00
Saúl Ibarra Corretgé
0ad6bd4d83 fix(dialog) remove obsolete prop no longer used in web 2022-04-29 10:40:21 +02:00
Saúl Ibarra Corretgé
8e65fab544 fix(virtual-background) don't treat timeout as fatal failure
If downloading the model tiemouts, it may succeed in the (near) future,
don't just give up.
2022-04-29 10:07:26 +02:00
pangrr
f62cb7a0c7 Fix(multi-stream) fix an issue where avatar shows up occasionally.
* fix occasional unexpected avatar

* fix ss stats popover not shown

* fix linter issue
2022-04-28 18:25:45 -04:00
Дамян Минков
96ee61ec07 fix: Fixes breaks apache2. 2022-04-28 14:06:18 -05:00
Jaya Allamsetty
6be9f02111 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1425.0.0+6b629a19...v1428.0.0+eda20c2a
2022-04-28 14:47:29 -04:00
Saúl Ibarra Corretgé
fa48223aac fix(config) add a link to config options docs 2022-04-28 17:19:31 +02:00
Дамян Минков
132b44a8b6 feat: Drops nginx dependency for turnserver config.
We used to multiplex the ports in nginx, but we dropped that at some point, so now coturn is on its own listening and nginx dependency is no longer needed. Our turnserver config can be used with nginx | apache2.
2022-04-28 06:12:13 -05:00
Mihaela Dumitru
72111114b6 fix(breakout-rooms) reset rooms when conference is left or failed (#11447) 2022-04-28 11:34:23 +03:00
Hristo Terezov
550c730ed4 fix(tile-view):Recalculate on window height change 2022-04-28 08:35:39 +02:00
Nicolas
2ac2138982 fix(lang) update Russian translation 2022-04-27 14:01:55 +02:00
Robert Pintilii
a84d7c17fa fix(avatar) Center phone icon in participants pane avatars (#11440) 2022-04-27 10:53:58 +03:00
bgrozev
586ad30ed4 feat(config) add testing.setScreenSharingResolutionConstraints to config.js 2022-04-27 09:25:48 +02:00
Jaya Allamsetty
f1c5f314e5 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1422.0.0+cf22aa36...v1425.0.0+6b629a19
2022-04-26 18:19:13 -04:00
bgrozev
64d7305598 chore(deps) lib-jitsi-meet@latest (#11437)
https://github.com/jitsi/lib-jitsi-meet/compare/v1422.0.0+cf22aa36...v1423.0.0+6870779a
2022-04-26 15:52:30 -05:00
pangrr
c03d86e0e3 fix: disabled connectStatusIndicatorIcon cause video not displayed (#11377)
* add and remove JitsiTrackEvents.TRACK_STREAMING_STATUS_CHANGED listener in middlewares

* add/remove listeners in components that use track streaming status

* remove track streaming status handler from ConnectionIndicatorIcon and ConnectionIndicatorContent

* check video track change before hanlding track streaming status
2022-04-26 15:33:50 -05:00
Дамян Минков
0ae2693116 fix: Fixes let's encrypt for latest ubuntu versions. (#11434)
* fix: Fixes let's encrypt for latest ubuntu versions.

* squash: Simplifies the logic.
2022-04-26 13:48:25 -05:00
Horatiu Muresan
20f6ba1736 fix(premeeting) Detach premeeting toolbar buttons visibility
- if hiddenPremeetingButtons is undefined, toolbarButtons overwrite decides what buttons to show
- if hiddenPremeetingButtons is empty array, all buttons are show on premeeting screen regardless of toolbarButtons
- if hiddenPremeetingButtons hides some buttons, only those buttons will be hidden regardless of toolbarButtons overwrite
2022-04-26 15:33:09 +03:00
Horatiu Muresan
eb64ea6aba fix(always-on-top) Fix audio mute button disabled status 2022-04-26 15:32:18 +03:00
Calin Chitu
3e004811e0 feat(lobby/native) LobbyScreen and LobbyChatScreen 2022-04-26 14:55:15 +03:00
Дамян Минков
037b9202a6 fix: Fixes Let's Encrypt script. (#11430)
* fix: Fixes Let's Encrypt script.

It fails when certbot is not installed and exits with an error without installing anything.

* squash: Fixes certbot command after install.
2022-04-26 06:32:08 -05:00
dependabot[bot]
8b8a42e0d1 chore(deps): bump async from 2.6.3 to 2.6.4
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 12:29:56 +02:00
Jaya Allamsetty
4315e19780 fix(device-selection) Enable device selection on mobile Safari. (#11427)
* fix(device-selection) Enable device selection on mobile Safari.
With https://bugs.webkit.org/show_bug.cgi?id=179363 being fixed, we should now be able to switch between devices in call. Also, before the webkit fix, we were able to continue to use the old track when a new track was created for preview in device settings before joining the call. This doesn't work anymore after the fix. Therefore, always replace the track in redux even if the selected device hasn't changed. Depends on https://github.com/jitsi/lib-jitsi-meet/pull/1993.

* chore(deps): update lib-jitsi-meet@latest.
2022-04-25 15:01:10 -04:00
Saúl Ibarra Corretgé
4d2bd932a7 fix(lastN) fix last N getting stuck on 1
If last N goes down to 1 it will be stuck there since it's > 0 and will
be our `lastNSelected`. When limits are applied we'll take the minimum,
so it will end up being 1.

Once can end up in last N being 1 by several means, the more obvious one
by entering Picture-in-Picture mode on mobile.

Fix it by not using the previous last N value for the current
calculation, at all.

Fixes: https://github.com/jitsi/jitsi-meet/issues/10257
Closes: https://github.com/jitsi/jitsi-meet/pull/10491
2022-04-25 17:44:54 +02:00
SiderealArt
6e1f56fad1 fix(lang) update Traditional Chinese translation 2022-04-25 14:18:13 +02:00
Ali Alhaidary
7d2f62a614 fix(lang) update Arabic translation 2022-04-25 11:52:39 +02:00
Robert Pintilii
97b958e9ea Fix import and naming 2022-04-21 09:01:51 -05:00
Robert Pintilii
b00fc92ee6 Native fix 2022-04-21 09:01:51 -05:00
Robert Pintilii
f9d1003527 Fixes 2022-04-21 09:01:51 -05:00
robertpin
0abefa87aa ref(stage-filmstrip) Refactor as new layout
Fixes screensharing selection issues. Now when there’s a screen share we just use the old VERTICAL_FILMSTRIP_VIEW layout
Add THUMBAIL_TYPE to determine how to display thumbnails
2022-04-21 09:01:51 -05:00
Gabriel Borlea
dde8c586da feat(external-api): add toggle subtitles command (#10070)
* feat(external-api): add toggle subtitles command

* feat(external-api): add set subtitles command
2022-04-20 11:43:18 +03:00
Seda Çağlar
aa944e76ad fix(lang) update Turkish translation 2022-04-19 17:33:24 -05:00
Hristo Terezov
4153097cc9 fix(prejoin):Disable device selection on iosSafari
It seems that showing the device selection dialog on ios Safari will
leads to not working audio. This is temporary fix until we find out
better solution.
2022-04-19 15:32:45 -05:00
Hristo Terezov
2a5be074d0 fix(video-layout): functions imports. 2022-04-19 15:15:44 -05:00
Saúl Ibarra Corretgé
2e0ae75774 fix(debian) make sure we install the latest version of luajwtjitsi
Also on update, since we might start depending on a more recent version.
2022-04-19 14:59:51 +02:00
Saúl Ibarra Corretgé
a8017149a0 fix(debian) update Prosody related dependencies 2022-04-19 14:59:51 +02:00
Jaya Allamsetty
e99fc4394d chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1418.0.0+da6d04c2...v1419.0.0+607646a1
2022-04-19 08:30:19 -04:00
philip-cc
46dd88c91b feat(jwt) refactor token authentication plugin to use new luajwtjitsi version 2022-04-19 13:06:20 +02:00
Horatiu Muresan
dbc8f21b01 fix(hangup-button) Add to notify toolbar button clicked 2022-04-19 13:26:07 +03:00
William Liang
5ebe308953 fix(multi-stream) add screenshare display name to i18n 2022-04-18 17:37:22 -05:00
Jaya Allamsetty
7420113079 fix(multi-stream) Do not show join notifications for SS tiles. 2022-04-18 13:19:17 -04:00
Hristo Terezov
221ecac12d feat(tile-vew): Calculate maxColumns dynamically 2022-04-18 11:19:58 -05:00
Jaya Allamsetty
744607a5cc fix(stageFilmstrip) Disable stage filmstrip by default. 2022-04-18 09:57:25 -05:00
Horatiu Muresan
8f641b7bb1 fix(start-silent) Disable AOT mic and unmute notif when start silent 2022-04-18 17:17:51 +03:00
chipechop
045bd44407 fix(lang) update Italian translation 2022-04-18 10:55:05 +02:00
Jaya Allamsetty
13cfc3ba66 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1415.0.0+fa916d41...v1418.0.0+da6d04c2
2022-04-15 10:56:26 -04:00
Дамян Минков
bbfe7b4f32 fix: Skips clearing tracks on conference failed.
In case of conference failed as max number of occupants reached, we should skip clearing the local tracks to keep state of pre-join screen. Otherwise, on join we will join muted even though on prejoin screen it was unmuted on the initial attempt.
2022-04-15 08:48:26 -05:00
William Liang
4a375aa2a4 fix(multi-stream) update screenshare display name (#11376) 2022-04-14 13:07:17 -04:00
Robert Pintilii
a6ad592d25 feat(reactions) Open reactions menu on hover instead of click (#11364)
Fixed issue on DialogPortal where the content would flash to the initial position then move to the correct position
2022-04-13 16:18:54 +03:00
Saúl Ibarra Corretgé
00bb013373 misc(rn,app) log navigation target 2022-04-12 17:12:05 +02:00
Calinteodor
95baf34ba6 feat(participants-pane/native) adjusted styles for when local p is not a moderator (#11349)
* feat(participants-pane/native) adjusted styles for when local p is not a moderator
2022-04-12 14:45:27 +03:00
Saúl Ibarra Corretgé
64385d48e9 fix(security) hide button if the enabled flag is set to false 2022-04-12 12:26:35 +02:00
Saúl Ibarra Corretgé
5d8c87eb76 fix(rn,config) fix loading config due to broken import 2022-04-12 10:53:47 +02:00
Robert Pintilii
8bf42e79a0 fix(stage-filmstrip) Fix issues (#11360)
Fix dominant speaker not removed on leave
Fix video not shown in vertical filmstrip when a remote screensharing was on
Refactor pin/ unpin. Add click to unpin
Remove from stage on unpin, except dominant (just change pin state)
Fix local shows video on both stage and vertical filmstrip
Don't reorder on stage base on queue (sort all by id)
2022-04-12 09:57:01 +03:00
Дамян Минков
930852cd88 fix: Adds testId for context menu items and ids to some components.
Needed to revive the lobby tests.
2022-04-11 13:21:48 -05:00
Дамян Минков
fcc8e98aad Revert "fix(avatar): add ZWNJ between initials of letter avatars"
This reverts commit 6085220bfc.
2022-04-11 11:17:49 -05:00
Jaya Allamsetty
c633929c58 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1413.0.0+474b2ec7...v1415.0.0+fa916d41
2022-04-11 11:33:16 -04:00
Shahab
6085220bfc fix(avatar): add ZWNJ between initials of letter avatars 2022-04-11 14:11:58 +02:00
Saúl Ibarra Corretgé
ed6759c6cf chore(rn,deps) react-native-default-preference@1.4.4
Upstream made a release in npm, we no longer need to link to a commit.
2022-04-11 12:18:59 +02:00
Gabriel Borlea
0259d1c260 feat(rtc-stats) add timestamp to face landmarks when sending to rtc stats 2022-04-11 11:26:31 +02:00
Christoph Settgast
537d3ae53a fix(lang) update German translation
Signed-off-by: Christoph Settgast <csett86@web.de>
2022-04-11 11:20:03 +02:00
dependabot[bot]
bf463e37ca chore(deps): bump moment from 2.29.1 to 2.29.2
Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-09 09:41:40 +02:00
William Liang
c246174555 fix(multi-stream) use highest video quality for screenshare 2022-04-08 15:18:32 -04:00
William Liang
0cf1b7e3d9 fix(multi-stream) fix screenshare auto pin bug 2022-04-08 12:57:39 -04:00
Saúl Ibarra Corretgé
41d8b9fbeb fix(ios) fix not marking speaker as a selected device 2022-04-08 17:29:53 +02:00
Saúl Ibarra Corretgé
cc5f65f58f fix(ios) avoid reapplying config when audio category doesn't change 2022-04-08 17:29:53 +02:00
Saúl Ibarra Corretgé
3097ac8cc4 fix(ios) fix not showing the CarPlay audio interface 2022-04-08 17:29:53 +02:00
Jaya Allamsetty
d78b591e68 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1412.0.0+832d7d35...v1413.0.0+474b2ec7
2022-04-08 11:12:14 -04:00
Calinteodor
7c523f3250 language(typescript) actionTypes.js -> actionTypes.ts (#10940)
* language(typescript) first ts component, added ts configurations, actionTypes.js are now ts files
2022-04-08 15:24:58 +03:00
Saúl Ibarra Corretgé
23b91c0336 fix(android) fix crash when starting foreground service
If we attempt to start it while in the background we'll get a crash. A
more elegant fix would be to wait until the app transitions to the
foreground to start it, but the crash is hurting us now.
2022-04-08 14:04:21 +02:00
Avram Tudor
ceb8d3348d feat(face-landmarks) add API event for providing face landmark data (#11347) 2022-04-08 10:12:38 +03:00
William Liang
ae6454c59c fix(multi-stream) only create local ss particpant with multi-stream enabled 2022-04-07 12:17:56 -04:00
Saúl Ibarra Corretgé
57672ebea8 fix(ios,broadcast-extension) remove unused import
It creates a compilation warning because it forces linking with the SDK.
2022-04-07 16:50:58 +02:00
Calinteodor
41c068feaf feat(chat/web) fixed 2 byte char duplication (#11332)
* feat(chat/web) fixed for 2 byte char duplication on Chat
2022-04-07 17:03:07 +03:00
Gabriel Borlea
856ef757d4 fix(face-landmarks): get face models from node_modules instead of having resoruces folder (#11326) 2022-04-07 13:46:04 +03:00
Avram Tudor
9bcc5896ba chore(deps) lib-jitsi-meet@latest (#11336)
https://github.com/jitsi/lib-jitsi-meet/compare/v1411.0.0+6d8060a4...v1412.0.0+832d7d35
2022-04-07 13:27:15 +03:00
Gabriel Borlea
1fbbe7bc46 fix(speaker-stats): get realtime local face expressions (#11334)
* fix(speaker-stats): get realtime local face expressions

* code review
2022-04-07 13:02:43 +03:00
Saúl Ibarra Corretgé
6342e6b51a chore(ios) sync Podfile.lock 2022-04-07 11:48:22 +02:00
Calin Chitu
ec78cf2784 feat(conference/native) - hide label in one to one meeting 2022-04-07 10:43:37 +02:00
Saúl Ibarra Corretgé
bdd8400057 fix(rn) remove no longer needed hack
RN no longer logs pprops in release builds.
2022-04-07 10:35:51 +02:00
Saúl Ibarra Corretgé
23f40db889 feat(rn,deps) update React Native to 0.67 2022-04-07 10:35:51 +02:00
Saúl Ibarra Corretgé
94ba69dd74 chore(deps) react-native-reanimated@1.13.4
Necessary for the RN update.
2022-04-07 10:35:51 +02:00
Saúl Ibarra Corretgé
a451923ec9 fix(rn,polyfills) remove no longer needed polyfill 2022-04-07 10:35:51 +02:00
Robert Pintilii
c05a983c98 feat(stage-filmstrip) Added user configurable max (#11324)
The user can set the max number of participants that can be displayed on stage
Send the number on follow me to all participants
2022-04-07 11:31:53 +03:00
Дамян Минков
6687c3f4ab fix: Adds undefined check to avoid error.
Was breaking DisableSelfViewTest.
2022-04-06 12:30:05 -05:00
Avram Tudor
42703fed47 ref(face-landmarks) refactor namings (#11307)
* ref(face-landmarks) refactor namings

* code review
2022-04-06 12:10:31 +03:00
Дамян Минков
a99532b0d8 fix: leaking listeners while waiting on auth dialog (#11288)
* fix: Drop duplicate call of wait for owner.

* fix: Fixes leaking listeners while waiting for host to join.

While waiting for the host to join on the dialog we attempt to join over and over again till we are admitted to enter the meeting. While doing that authRequired flag is on, and we were adding listeners on and on.

* feat: Introduces conference join in progress action.

This event is coming from lib-jitsi-meet and is fired when we receive the first presence of series when joining. It is always fired before joined event.

* fix: Moves testing middleware to use CONFERENCE_JOIN_IN_PROGRESS.

* fix: Moves follow-me middleware to use CONFERENCE_JOIN_IN_PROGRESS.

* fix: Moves some polls logic to middleware and use CONFERENCE_JOIN_IN_PROGRESS.

* fix: Moves reactions middleware to use CONFERENCE_JOIN_IN_PROGRESS.

* fix: Moves recordings middleware to use CONFERENCE_JOIN_IN_PROGRESS.

* fix: Moves shared-video middleware to use CONFERENCE_JOIN_IN_PROGRESS.

* fix: Moves videosipgw middleware to use CONFERENCE_JOIN_IN_PROGRESS.

* squash: Fix comments.

* fix: Fixes join in progress on web.

* fix: Moves variable extraction inside handlers.

* fix: Moves variable extraction inside handlers again.

* fix: Moves etherpad middleware to use CONFERENCE_JOIN_IN_PROGRESS.
2022-04-05 21:13:39 -05:00
José Luís Andrade
33db511d93 fix(lang) update Portuguese Translation 2022-04-05 23:56:07 +02:00
William Liang
eb716af29b fix(multi-stream) support screenshare tile in stage filmstrip 2022-04-05 17:09:08 -04:00
Nicolas
92121803a1 fix(lang) update Russian translation 2022-04-05 16:10:34 +02:00
Robert Pintilii
d7c8164b74 fix(follow-me) Make follow me work with stage filmstrip (#11306)
On follow me enabled all participants will see the participants pinned by the moderator
Fix pinned indicator to work when stage filmstrip is disabled
Fix add participant on dominant speaker change: if the participant was already pinned keep it as pinned
Don’t add local participant on stage (on automatic selection)
2022-04-05 16:00:32 +03:00
Robert Pintilii
ed9b85f287 ref(overflow-menu) Use ContextMenu component (#11282)
refactor overflow menu to use ContextMenu component
refactor toolboxItem to use ContextMenuItem when needed
2022-04-05 15:19:03 +03:00
Saúl Ibarra Corretgé
14597e835b chore(deps) npm audit fix 2022-04-05 14:14:42 +02:00
Jaya Allamsetty
9325de8cbc chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1410.0.0+3b38ab37...v1411.0.0+6d8060a4
2022-04-04 21:10:58 -04:00
Jaya Allamsetty
b7c2ccd814 fix(conference) Do not add audio track from screenshare to redux.
In audio-only screenshare mode when there is no local audio track from mic present, do not add the audio track from screenshare to redux. Adding the track to redux will sync the track mute state to that of /base/media and show that the mic is unmuted even when that is not the case. Fixes https://github.com/jitsi/jitsi-meet/issues/10706.
2022-04-04 17:34:55 -04:00
Jaya Allamsetty
0713240c3d feat(multi-stream) Whitelist config flags for multi-stream. 2022-04-04 14:58:50 -04:00
William Liang
70090fd716 feat(multi-stream) Add fake participant tile for screen share.
prioritize participants with screen shares
support local screen share track
auto pin screen share
support screen share for large video
ensure fake screen share participants are sorted
fix local screen share in vertical filmstrip
fix local screen share in tile mode
use FakeScreenShareParticipant component for screen share thumbnails
ensure changes are behind feature flag and update jsdocs
fix bug where local screen share was not rendering
update receiver constraints to include SS source names
remove fake ss participant creation on track update
fix: handle screenshare muted change and track removal
refactor: update key values for sortedFakeScreenShareParticipants
address PR comments
refactor getter for screenshare tracks
rename state to sortedRemoteFakeScreenShareParticipants
2022-04-04 14:57:58 -04:00
Saúl Ibarra Corretgé
14d200a0cf chore(deps) update react-native-webrtc to 1.100.0 2022-04-04 16:50:07 +02:00
Saúl Ibarra Corretgé
5b07b6dc42 chore(rn,versions) bump app and sdk versions 2022-04-04 16:42:44 +02:00
Avram Tudor
2c165d4313 feat(face-landmarks) merge face expressions and face centering (#11283)
* feat(face-landmarks) merge face expressions and face centering

* code review

* code review

* code review
2022-04-04 16:09:14 +03:00
Robert Pintilii
4b84f71021 fix(filmstrip) Fix resizing on chat toggle (#11305)
Fix pinned indicator to be displayed only for pinned participants
2022-04-04 15:39:32 +03:00
Calin Chitu
d415d02f35 feat(participants-pane/native) adjusted styles for participants container 2022-04-04 14:10:12 +03:00
Robert Pintilii
c2399deb55 ref(AOT) Change buttons to not use abstract classes (#11302)
This reduces the bundle size by about 100KB
It also decouples the AOT buttons from the classes that are used to implement other features
2022-04-04 13:38:49 +03:00
Avram Tudor
3443d256f2 fix(highlights) allow highlighting moments if recording is running (#11301) 2022-04-04 12:08:11 +03:00
Ali Alhaidary
db16250e6e fix(lang) updated Arabic translation 2022-04-03 11:23:21 +02:00
gpatel-fr
2039b61a3f fix(lang): update french translation 2022-04-01 16:27:03 -05:00
Jaya Allamsetty
c94726be81 feat(multi-stream) Update config.js. 2022-04-01 13:25:22 -04:00
Calin Chitu
03286eb07e feat(polls/web) fixed issue with duplicating value to next input on keypress 2022-04-01 17:07:18 +03:00
George Politis
84ac6298eb Pushes e2e pings to rtcstats (#11270)
* Pushes e2e pings to rtcstats

* linter fixes

* linter fixes

* Re-use existing event instead of introducing a new one.

* Don't update the connection info popup stats when the e2e rtt changes.

* Bumps ljm version to the latest

* e2e pings should work on mobile

* tweak the e2eRttChanged action properties

* fixes comments
2022-04-01 13:50:52 +01:00
Gabriel Borlea
1e58a7cbec Fixes for highlights mobile (#11209) 2022-04-01 12:58:03 +02:00
Jaya Allamsetty
6e0f53293e fix(large-video) Show the pinned participant on large-video when stage filmstrip is disabled.
Fixes an issue where a non-screenshare participant cannot be pinned on stage with filmstrip on stage feature disabled.
2022-03-31 16:10:59 -04:00
tmoldovan8x8
6a1067733a feat(android) use JitsiMeetView instead of JitsiMeetFragment 2022-03-31 17:47:40 +03:00
Saúl Ibarra Corretgé
cb2b2436eb chore(deps) lib-jitsi-meet@latest (#11284)
https://github.com/jitsi/lib-jitsi-meet/compare/v1408.0.0+7e997fb7...v1409.0.0+88378583
2022-03-31 17:09:52 +03:00
Mihaela Dumitru
e062c394e8 fix(salesforce) use salesforce only in the main room (#11245) 2022-03-31 16:11:44 +03:00
Saúl Ibarra Corretgé
d2c4e81e25 fix(ci) make the "dirty git tree" CI failure clearer
Print the git diff output in the step which fails.
2022-03-31 08:00:50 -05:00
Robert Pintilii
ec0e824a43 feat(rn, thumbnail) Updated indicators on native (#11280)
Remove tint for participant in large view
Change pinned indicator from border to icon
On stage view move screen sharing indicator from top to bottom
On stage view show pinned indicator instead of moderator indicator
2022-03-31 14:39:49 +03:00
Robert Pintilii
343a1b87e2 fix(thumbnails) Fix recalculate tile dimensions on client resize (#11267)
Recalculate after new dimensions are in the store
Fixes issue where on participant pane toggle the tiles would not recalculate correctly
2022-03-31 12:13:33 +03:00
dependabot[bot]
1618093f30 chore(deps): bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 09:31:25 +02:00
dependabot[bot]
0b8bd9da94 chore(deps): bump ansi-regex from 3.0.0 to 3.0.1 in /resources/load-test
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 09:31:02 +02:00
dependabot[bot]
549423da69 chore(deps): bump ansi-regex from 4.1.0 to 4.1.1
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 09:30:49 +02:00
dependabot[bot]
c2c4325ff7 chore(deps): bump plist from 3.0.4 to 3.0.5
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 09:30:35 +02:00
William Lohan
515bb31b95 fix(ios) cycle in dependancies with Xcode 13.3
Fixes: https://github.com/jitsi/jitsi-meet/issues/11188
2022-03-31 09:11:56 +02:00
Saúl Ibarra Corretgé
781bb5bd18 feat(ios) enable Dropbox recording 2022-03-30 19:55:22 +02:00
José Luís Andrade
dc8925cbf4 Update Portuguese translation 2022-03-30 10:10:21 -05:00
Jaya Allamsetty
c69eccb690 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1406.0.0+dcd5f13b...v1408.0.0+7e997fb7
2022-03-30 11:05:54 -04:00
Robert Pintilii
00092d5139 fix(notifications) Change moderation notifications to medium (#11262) 2022-03-30 17:24:50 +03:00
Robert Pintilii
1355876f83 feat(gif, rn) Added GIPHY integration on native (#11236)
Update Android build to support gif
Use GIF format instead of animated webp
Show GIFs in chat messages
Display GIF over tile
Add Giphy button in reactions menu
Added Giphy dialog
Fix isGifMessage to also allow upper case
2022-03-30 16:54:03 +03:00
Robert Pintilii
1a3432d580 fix(gif) Keep showing GIF on hover (#11266) 2022-03-30 16:08:19 +03:00
Robert Pintilii
270070716b fix(context-menu) Don't overwrite hidden prop (#11265)
Fixes issue where the menu would disappear on dominant speaker change
2022-03-30 14:50:41 +03:00
dependabot[bot]
1b1d976791 chore(deps): bump node-forge from 1.2.1 to 1.3.0
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-29 21:57:20 +02:00
sadeghpro
5f858a1c2c Add missing key to Persian lang file 2022-03-29 13:05:58 -05:00
Дамян Минков
be1828d9e9 feat: Updates external-services.lua to latest.
changeset ede9682c2022
https://hg.prosody.im/prosody-modules/file/ede9682c2022/mod_external_services/mod_external_services.lua
2022-03-29 12:29:48 -05:00
Jaya Allamsetty
3a36945c3c Revert "fix(screenshare) Add and then mute the camera track after SS stops instead of not adding the track."
This workaround is not needed anymore since P2P is disabled between plan-b and unified-plan clients.
Fixes https://github.com/jitsi/jitsi-meet/issues/11131

This reverts commit c30038236a.
2022-03-29 11:10:04 -04:00
Horatiu Muresan
00d68f08ab fix(background-alpha) Fix setting background opacity 2022-03-29 17:27:32 +03:00
Saúl Ibarra Corretgé
23c7ac4da4 fix(video-layout) fix incorrect import of isStageFilmstripEnabled 2022-03-29 15:20:08 +02:00
Saúl Ibarra Corretgé
f503bd7352 fix(rn,lobby) fix lobby not showing up on subsequent tries
We need to make sure to hide it explicitly so the Redux state is in sync
with reality.
2022-03-29 15:12:09 +02:00
robertpin
ab91f79448 fix(settings-dialog) Add back CSS classes used by tests 2022-03-29 14:33:41 +02:00
Saúl Ibarra Corretgé
26b3eb34f0 fix(android,back-button) rework back button handling on Android
We used to have a registry which registered a single handlerwith RN.
THis was registered really early in the app.

When React Navigation was introduced we ddidn't realize it interacts
with the back button. In a stack nagigator it will navigate to the
previous screen. This meant our back button handling was broken.

This commit removes our previous registry and uses the RN back button
handler directly in the 2 components that use it: the conference and
bottom sheets.

Since these handlers are registered after navigation, our handlers are
going to run first so we cna implement the behavior we need, namely to
dismiss an open botom sheet or set the conference in PiP mode.
2022-03-29 14:33:25 +02:00
Calin Chitu
ef125968ce feat(participants/native) - fix joining breakout room 2022-03-29 14:57:23 +03:00
Robert Pintilii
45e8140209 fix(rn) Fix native after stage filmstrip merge (#11247) 2022-03-29 13:42:01 +03:00
Shahab
d2f70b0006 refactor(connection-stats): use jss instead of sass in ConnectionStatsTable (#11156) 2022-03-29 12:23:40 +03:00
Shahab
70efa31c16 refactor(virtual-background): use jss instead of sass (#11152) 2022-03-29 12:07:55 +03:00
Shahab
3eafaeeedd refactor: move chat component outside of videoconference_page (#11138) 2022-03-29 12:01:48 +03:00
Shahab
9278414821 refactor(dialog): use jss instead of sass for mute-dialog style (#11154) 2022-03-29 11:59:53 +03:00
Shahab
17faefd757 refactor(settings): use jss instead of css (#11149) 2022-03-29 11:50:32 +03:00
Robert Pintilii
c4db12cbd6 feat(stage) Add stage filmstrip (multiple participants on stage) (#11145)
See multiple participants on stage
Pin and unpin to stage
Automatic selection of participants to be displayed on the stage filmstrip based on dominant speaker changes
Make Filmstrip a reusable component. Used by MainFilmstrip (old functionality) and the new StageFilmstrip
Rename DominantSpeakerName to StageParticipantNameLabel
Active border now showed only for the dominant speaker (no longer for the pinned participant)
Hide video from the vertical filmstrip for the participants on stage
Update video constraints
Updated pinned indicator
2022-03-29 11:45:09 +03:00
Дамян Минков
4db7312d53 feat: Adds a hint for cors headers in default prosody config. 2022-03-28 11:16:58 -05:00
Saúl Ibarra Corretgé
66153087e1 fix(redux) fix not working with Redux Devtools 2022-03-28 16:31:12 +02:00
Saúl Ibarra Corretgé
b7c68d09e7 fix(debian) support installing the prosody-0.12 upstream package 2022-03-28 08:47:34 -05:00
Avram Tudor
7e5ffdb390 fix(face-centering) fix face centering on browsers with no offscreencanvas support (#11234) 2022-03-28 14:13:00 +03:00
gpatel-fr
9ea2b5836a fix(lang): update french translation 2022-03-27 21:15:40 +02:00
Jaya Allamsetty
7208e781b3 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1403.0.0+665ab174...v1406.0.0+dcd5f13b
2022-03-25 15:42:54 -04:00
Saúl Ibarra Corretgé
dc96324d3b fix(rn,recording) fix recording dialog state not updating 2022-03-25 17:22:32 +01:00
Aditya Gupta
0b93569df2 Increase the visibility of 404 error message (#11108)
Changed the font-size and color of the h2 element of the 404 error page so that it can look more vibrant and stand out.
2022-03-25 13:45:40 +02:00
Avram Tudor
c731e2f8cb fix(highlight) set highlight button visibility based on record button… (#11215)
* fix(highlight) set highlight button visibility based on record button props

* code review

* code review

* code review

* code review
2022-03-25 13:44:05 +02:00
Avram Tudor
b1e3f2b50d fix(highlight) implement custom notification for highlight start recording (#11217) 2022-03-25 13:43:51 +02:00
Gabriel Borlea
7751060b63 fix(facial-expressions): base url for models (#11218) 2022-03-25 13:43:32 +02:00
JohnProv
25f53503e8 fix(lang) update Dutch translation 2022-03-25 11:11:34 +01:00
Calin Chitu
8d737adc65 feat(participants/native) - updated container styles 2022-03-25 11:46:04 +02:00
Calinteodor
3fcfb64338 fix(rn,recording) fix start button not being enabled 2022-03-25 10:31:37 +01:00
Shawn
f8628dfeef feat(reservations) add integration with mod_muc_max_occupants 2022-03-24 08:38:34 -05:00
Christoph Settgast
39793110b6 conf(nginx) add keepalive via upstream groups
Incorporate https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/
into the example nginx config
2022-03-24 13:20:50 +01:00
Saúl Ibarra Corretgé
e5e7aa87d3 fix(overlay) fix not showing the correct gUM helper text 2022-03-24 13:19:43 +01:00
Tudor D. Pop
18fa56ff1b fix(lobby) display the entire message in the reject notification 2022-03-24 12:15:30 +01:00
Calin Chitu
ccf7939316 fix(mobile/navigation) - fixed bottom color glitch 2022-03-23 16:37:24 +02:00
Jaya Allamsetty
a518498bff chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1402.0.0+66ff07ce...v1403.0.0+665ab174
2022-03-23 09:57:41 -04:00
Robert Pintilii
9a78011daf feat(external-api) Add grantModerator command (#11199) 2022-03-23 11:31:44 +02:00
Jaya Allamsetty
35d0fefa1e chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1401.0.0+584a8680...v1402.0.0+66ff07ce
2022-03-22 17:35:27 -04:00
bgrozev
b6792d9287 Update config.js with new e2eping properties. (#11195) 2022-03-22 14:12:29 -05:00
Robert Pintilii
cfb480932a fix(chat) Fix iOS web chat (#11193)
Fixes: on iOS web the chat input would move from the bottom when the keyboard was open
2022-03-22 14:56:18 +02:00
Saúl Ibarra Corretgé
21083e6777 fix(mobile,navigation) remove end meeting page
It will just flash for a split second and all it does is dispatch
readyToClose, so do it directly instead.
2022-03-22 12:10:38 +01:00
Calin Chitu
a3c60d5943 fix(mobile/navigation/sdk) - simplified check for sdk 2022-03-22 12:10:38 +01:00
Robert Pintilii
28556e030c fix(settings-dialog) Fix crash (#11191)
Fixes crash when the participant becomes moderator while the dialog is open
2022-03-22 13:10:08 +02:00
Shahab
e54685a566 refactor(premeeting): remove redundant styles from prejoin.scss (#11151)
"prejoin-preview-dropdown-btn" and "prejoin-preview-dropdown-icon" styles are already declared using jss in DropdownButton component.
2022-03-22 09:29:31 +02:00
Hristo Terezov
9ffb3eddb0 fix(shared-video): Can't click controls issue
The Dominant speaker name badge was overlaping the shared video
controls  (audio level, play/pause, etc).
2022-03-21 16:00:24 -05:00
Jaya Allamsetty
d064f607ec chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1399.0.0+1a98d919...v1401.0.0+584a8680
2022-03-21 14:57:59 -04:00
Aaron van Meerten
be454137f9 task: mod_muc_password_whitelist prosody module (#11184) 2022-03-21 11:38:21 -05:00
2096 changed files with 66346 additions and 71680 deletions

View File

@@ -3,12 +3,10 @@ build/*
# Third-party source code which we (1) do not want to modify or (2) try to
# modify as little as possible.
flow-typed/*
libs/*
resources/*
react/features/stream-effects/virtual-background/vendor/*
load-test/*
react/features/facial-recognition/resources/*
react/features/face-landmarks/resources/*
# 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
@@ -16,4 +14,4 @@ react/features/facial-recognition/resources/*
!.eslintrc.js
# Not worth it.
actionTypes.js
actionTypes.ts

View File

@@ -1,5 +1,6 @@
module.exports = {
'extends': [
'@jitsi/eslint-config'
]
],
'ignorePatterns': [ '*.d.ts' ]
};

View File

@@ -3,23 +3,43 @@ name: Simple CI
on: [pull_request]
jobs:
run-ci:
name: Build Frontend
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/setup-node@v3
with:
node-version: '16.x'
node-version: 16
cache: 'npm'
- run: npm install
- name: Check git status
run: git status
- name: Normalize lang files to ensure sorted
run: npm run lang-sort
- 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: $(exit $(git status --porcelain --untracked-files=no | head -255 | wc -l)) || (echo "Dirty git tree"; git diff; exit 1)
- run: npm run lint:ci
- run: for file in lang/*.json; do npx --yes jsonlint -q $file || exit 1; done
linux-build:
name: Build Frontend (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'npm'
- run: npm install
- run: make
macos-ci:
name: Build Frontend (macOS)
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'npm'
- run: npm install
- run: make

1
.gitignore vendored
View File

@@ -92,3 +92,4 @@ twa/*.apk
twa/*.aab
twa/assetlinks.json
tsconfig.json

View File

@@ -3,8 +3,8 @@ We would love to have your help. Before you start working however, please read
and follow this short guide.
# Reporting Issues
Provide as much information as possible. Mention the version of Jitsi Meet,
Jicofo and JVB you are using, and explain (as detailed as you can) how the
Provide as much information as possible. Mention the version of Jitsi Meet,
Jicofo and JVB you are using, and explain (as detailed as you can) how the
problem can be reproduced.
# Code contributions
@@ -130,7 +130,7 @@ When adding a new feature, this would be the usual layout.
```
react/features/sample/
├── actionTypes.js
├── actionTypes.ts
├── actions.js
├── components
│   ├── AnotherComponent.js

View File

@@ -2,35 +2,39 @@ BUILD_DIR = build
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
TF_WASM_DIR = node_modules/@tensorflow/tfjs-backend-wasm/dist/
RNNOISE_WASM_DIR = node_modules/rnnoise-wasm/dist
RNNOISE_WASM_DIR = node_modules/@jitsi/rnnoise-wasm/dist
EXCALIDRAW_DIR = node_modules/@jitsi/excalidraw/dist/excalidraw-assets
EXCALIDRAW_DIR_DEV = node_modules/@jitsi/excalidraw/dist/excalidraw-assets-dev
TFLITE_WASM = react/features/stream-effects/virtual-background/vendor/tflite
MEET_MODELS_DIR = react/features/stream-effects/virtual-background/vendor/models
FACIAL_MODELS_DIR = react/features/facial-recognition/resources
FACE_MODELS_DIR = node_modules/@vladmandic/human-models/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 serve --mode development
ifeq ($(OS),Windows_NT)
WEBPACK = .\node_modules\.bin\webpack
WEBPACK_DEV_SERVER = .\node_modules\.bin\webpack serve --mode development
else
WEBPACK = ./node_modules/.bin/webpack
WEBPACK_DEV_SERVER = ./node_modules/.bin/webpack serve --mode development
endif
all: compile deploy clean
compile: compile-load-test
compile:
NODE_OPTIONS=--max-old-space-size=8192 \
$(WEBPACK)
compile-load-test:
${NPM} install --prefix resources/load-test && ${NPM} run build --prefix resources/load-test
clean:
rm -fr $(BUILD_DIR)
.NOTPARALLEL:
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-tf-wasm deploy-css deploy-local deploy-facial-expressions
deploy: deploy-init deploy-appbundle deploy-rnnoise-binary deploy-excalidraw deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-olm deploy-tf-wasm deploy-css deploy-local deploy-face-landmarks
deploy-init:
rm -fr $(DEPLOY_DIR)
@@ -44,8 +48,6 @@ deploy-appbundle:
$(BUILD_DIR)/do_external_connect.min.js.map \
$(BUILD_DIR)/external_api.min.js \
$(BUILD_DIR)/external_api.min.js.map \
$(BUILD_DIR)/flacEncodeWorker.min.js \
$(BUILD_DIR)/flacEncodeWorker.min.js.map \
$(BUILD_DIR)/dial_in_info_bundle.min.js \
$(BUILD_DIR)/dial_in_info_bundle.min.js.map \
$(BUILD_DIR)/alwaysontop.min.js \
@@ -53,10 +55,10 @@ deploy-appbundle:
$(OUTPUT_DIR)/analytics-ga.js \
$(BUILD_DIR)/analytics-ga.min.js \
$(BUILD_DIR)/analytics-ga.min.js.map \
$(BUILD_DIR)/face-centering-worker.min.js \
$(BUILD_DIR)/face-centering-worker.min.js.map \
$(BUILD_DIR)/facial-expressions-worker.min.js \
$(BUILD_DIR)/facial-expressions-worker.min.js.map \
$(BUILD_DIR)/face-landmarks-worker.min.js \
$(BUILD_DIR)/face-landmarks-worker.min.js.map \
$(BUILD_DIR)/noise-suppressor-worklet.min.js \
$(BUILD_DIR)/noise-suppressor-worklet.min.js.map \
$(DEPLOY_DIR)
cp \
$(BUILD_DIR)/close3.min.js \
@@ -72,12 +74,6 @@ deploy-lib-jitsi-meet:
$(LIBJITSIMEET_DIR)/modules/browser/capabilities.json \
$(DEPLOY_DIR)
deploy-libflac:
cp \
$(LIBFLAC_DIR)/libflac4-1.3.2.min.js \
$(LIBFLAC_DIR)/libflac4-1.3.2.min.js.mem \
$(DEPLOY_DIR)
deploy-olm:
cp \
$(OLM_DIR)/olm.wasm \
@@ -98,14 +94,27 @@ deploy-tflite:
$(TFLITE_WASM)/*.wasm \
$(DEPLOY_DIR)
deploy-excalidraw:
cp -R \
$(EXCALIDRAW_DIR) \
$(DEPLOY_DIR)/
deploy-excalidraw-dev:
cp -R \
$(EXCALIDRAW_DIR_DEV) \
$(DEPLOY_DIR)/
deploy-meet-models:
cp \
$(MEET_MODELS_DIR)/*.tflite \
$(DEPLOY_DIR)
deploy-facial-expressions:
deploy-face-landmarks:
cp \
$(FACIAL_MODELS_DIR)/* \
$(FACE_MODELS_DIR)/blazeface-front.bin \
$(FACE_MODELS_DIR)/blazeface-front.json \
$(FACE_MODELS_DIR)/emotion.bin \
$(FACE_MODELS_DIR)/emotion.json \
$(DEPLOY_DIR)
deploy-css:
@@ -117,7 +126,7 @@ deploy-local:
([ ! -x deploy-local.sh ] || ./deploy-local.sh)
.NOTPARALLEL:
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-libflac deploy-olm deploy-tf-wasm deploy-facial-expressions
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-olm deploy-tf-wasm deploy-excalidraw-dev deploy-face-landmarks
$(WEBPACK_DEV_SERVER)
source-package:

View File

@@ -18,7 +18,6 @@ Amongst others here are the main features Jitsi Meet offers:
* 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

View File

@@ -76,13 +76,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// https://github.com/facebook/react-native/issues/31572
// We can update past 1.4.0 on RN 0.68
implementation ('androidx.appcompat:appcompat:1.3.1') {
version {
strictly '1.3.1'
}
}
implementation 'androidx.appcompat:appcompat:1.4.1'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'

View File

@@ -14,7 +14,7 @@
android:name="android.content.APP_RESTRICTIONS"
android:resource="@xml/app_restrictions" />
<activity
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
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.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
<selector>
<!--
This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
-->
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
</selector>
</inset>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#17A0DB</color>
<color name="colorPrimaryDark">#1081B2</color>
<color name="navigationBarColor">#161618</color>
</resources>

View File

@@ -1,8 +1,8 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:navigationBarColor">@color/navigationBarColor</item>
<item name="android:windowDisablePreview">true</item>
</style>
</resources>

View File

@@ -1,4 +1,5 @@
import groovy.json.JsonSlurper
import org.apache.tools.ant.taskdefs.condition.Os
import org.gradle.util.VersionNumber
// Top-level build file where you can add configuration options common to all
@@ -10,19 +11,26 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'com.android.tools.build:gradle:7.0.4'
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
}
}
ext {
buildToolsVersion = "30.0.3"
buildToolsVersion = "31.0.0"
compileSdkVersion = 31
minSdkVersion = 23
targetSdkVersion = 31
supportLibVersion = "28.0.0"
ndkVersion = "21.4.7075529"
if (System.properties['os.arch'] == "aarch64") {
// For M1 Users we need to use the NDK 24 which added support for aarch64
ndkVersion = "24.0.8215888"
} else {
// Otherwise we default to the side-by-side NDK version from AGP.
ndkVersion = "21.4.7075529"
}
// 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

View File

@@ -9,7 +9,7 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# Default value: -Xmx1024m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
@@ -26,5 +26,5 @@ android.useAndroidX=true
android.enableJetifier=true
android.bundle.enableUncompressedNativeLibs=false
appVersion=22.1.0
sdkVersion=5.0.0
appVersion=99.0.0
sdkVersion=99.0.0

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

269
android/gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,101 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -106,80 +140,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

11
android/scripts/logcat.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
PKG_NAME=${1:-org.jitsi.meet}
APP_PID=$(adb shell ps | grep $PKG_NAME | awk '{print $2}')
if [[ -z "$APP_PID" ]]; then
echo "App is not running"
exit 1
fi
exec adb logcat --pid=$APP_PID

View File

@@ -34,15 +34,8 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// https://github.com/facebook/react-native/issues/31572
// We can update past 1.4.0 on RN 0.68
implementation ('androidx.appcompat:appcompat:1.3.1') {
version {
strictly '1.3.1'
}
}
implementation 'androidx.fragment:fragment:1.4.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.fragment:fragment:1.4.1'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
@@ -51,21 +44,17 @@ dependencies {
//noinspection GradleDynamicVersion
implementation 'org.webkit:android-jsc:+'
implementation 'com.facebook.fresco:animated-gif:2.5.0'
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(project(':react-native-device-info')) {
exclude group: 'com.google.firebase'
exclude group: 'com.google.android.gms'
exclude group: 'com.android.installreferrer'
}
} else {
// Only add these packages if we are NOT doing a LIBRE_BUILD
if (!rootProject.ext.libreBuild) {
implementation project(':react-native-amplitude')
implementation project(':react-native-device-info')
implementation project(':react-native-giphy')
implementation(project(":react-native-google-signin")) {
exclude group: 'com.google.android.gms'
exclude group: 'androidx'
@@ -78,14 +67,19 @@ dependencies {
implementation project(':react-native-community_clipboard')
implementation project(':react-native-community_netinfo')
implementation project(':react-native-default-preference')
implementation(project(':react-native-device-info')) {
exclude group: 'com.google.firebase'
exclude group: 'com.google.android.gms'
exclude group: 'com.android.installreferrer'
}
implementation project(':react-native-gesture-handler')
implementation project(':react-native-get-random-values')
implementation project(':react-native-immersive')
implementation project(':react-native-keep-awake')
implementation project(':react-native-masked-view_masked-view')
implementation project(':react-native-orientation-locker')
implementation project(':react-native-pager-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')

View File

@@ -3,6 +3,6 @@
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application android:usesCleartextTraffic="true">
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false"/>
</application>
</manifest>

View File

@@ -30,8 +30,9 @@
android:supportsRtl="true">
<activity
android:name=".JitsiMeetActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:launchMode="singleTask"
android:theme="@style/JitsiMeetActivityStyle"
android:resizeableActivity="true"
android:supportsPictureInPicture="true"
android:windowSoftInputMode="adjustResize"/>

View File

@@ -22,6 +22,8 @@ import android.os.Build;
import android.telecom.CallAudioState;
import androidx.annotation.RequiresApi;
import com.facebook.react.bridge.ReactContext;
import java.util.HashSet;
import java.util.Set;
@@ -49,6 +51,8 @@ class AudioDeviceHandlerConnectionService implements
*/
private AudioModeModule module;
private RNConnectionService rcs;
/**
* Converts any of the "DEVICE_" constants into the corresponding
* {@link android.telecom.CallAudioState} "ROUTE_" number.
@@ -141,8 +145,8 @@ class AudioDeviceHandlerConnectionService implements
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
module = audioModeModule;
rcs = module.getContext().getNativeModule(RNConnectionService.class);
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
if (rcs != null) {
rcs.setCallAudioStateListener(this);
} else {
@@ -152,9 +156,9 @@ class AudioDeviceHandlerConnectionService implements
@Override
public void stop() {
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
if (rcs != null) {
rcs.setCallAudioStateListener(null);
rcs = null;
} else {
JitsiMeetLogger.w(TAG + " Couldn't set call audio state listener, module is null");
}

View File

@@ -26,10 +26,13 @@ import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
@@ -196,7 +199,7 @@ class AudioModeModule extends ReactContextBaseJavaModule {
deviceInfo.putBoolean("selected", device.equals(selectedDevice));
data.pushMap(deviceInfo);
}
ReactInstanceManagerHolder.emitEvent(DEVICE_CHANGE_EVENT, data);
getContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(DEVICE_CHANGE_EVENT, data);
JitsiMeetLogger.i(TAG + " Updating audio device list");
}
});
@@ -212,6 +215,10 @@ class AudioModeModule extends ReactContextBaseJavaModule {
return NAME;
}
public ReactContext getContext(){
return this.getReactApplicationContext();
}
/**
* 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}

View File

@@ -1,226 +0,0 @@
/*
* Copyright @ 2018-present 8x8, Inc.
* Copyright @ 2018 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.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.react.ReactRootView;
import com.facebook.react.bridge.ReadableMap;
import com.rnimmersive.RNImmersiveModule;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.WeakHashMap;
/**
* Base class for all views which are backed by a React Native view.
*/
public abstract class BaseReactView<ListenerT>
extends FrameLayout {
/**
* Background color used by {@code BaseReactView} and the React Native root
* view.
*/
protected static int BACKGROUND_COLOR = 0xFF111111;
/**
* The collection of all existing {@code BaseReactView}s. Used to find the
* {@code BaseReactView} when delivering events coming from
* {@link ExternalAPIModule}.
*/
static final Set<BaseReactView> views
= Collections.newSetFromMap(new WeakHashMap<BaseReactView, Boolean>());
/**
* Finds a {@code BaseReactView} which matches a specific external API
* scope.
*
* @param externalAPIScope - The external API scope associated with the
* {@code BaseReactView} to find.
* @return The {@code BaseReactView}, if any, associated with the specified
* {@code externalAPIScope}; otherwise, {@code null}.
*/
public static BaseReactView findViewByExternalAPIScope(
String externalAPIScope) {
synchronized (views) {
for (BaseReactView view : views) {
if (view.externalAPIScope.equals(externalAPIScope)) {
return view;
}
}
}
return null;
}
/**
* Gets all registered React views.
*
* @return An {@link ArrayList} containing all views currently held by React.
*/
static ArrayList<BaseReactView> getViews() {
return new ArrayList<>(views);
}
/**
* The unique identifier of this {@code BaseReactView} within the process
* for the purposes of {@link ExternalAPIModule}. The name scope was
* inspired by postis which we use on Web for the similar purposes of the
* iframe-based external API.
*/
protected final String externalAPIScope;
/**
* The listener (e.g. {@link JitsiMeetViewListener}) instance for reporting
* events occurring in Jitsi Meet.
*/
@Deprecated
private ListenerT listener;
/**
* React Native root view.
*/
private ReactRootView reactRootView;
public BaseReactView(@NonNull Context context) {
super(context);
setBackgroundColor(BACKGROUND_COLOR);
ReactInstanceManagerHolder.initReactInstanceManager((Activity)context);
// Hook this BaseReactView into ExternalAPI.
externalAPIScope = UUID.randomUUID().toString();
synchronized (views) {
views.add(this);
}
}
/**
* Creates the {@code ReactRootView} for the given app name with the given
* props. Once created it's set as the view of this {@code FrameLayout}.
*
* @param appName - The name of the "app" (in React Native terms) to load.
* @param props - The React Component props to pass to the app.
*/
public void createReactRootView(String appName, @Nullable Bundle props) {
if (props == null) {
props = new Bundle();
}
props.putString("externalAPIScope", externalAPIScope);
if (reactRootView == null) {
reactRootView = new ReactRootView(getContext());
reactRootView.startReactApplication(
ReactInstanceManagerHolder.getReactInstanceManager(),
appName,
props);
reactRootView.setBackgroundColor(BACKGROUND_COLOR);
addView(reactRootView);
} else {
reactRootView.setAppProperties(props);
}
}
/**
* Releases the React resources (specifically the {@link ReactRootView})
* associated with this view.
*
* MUST be called when the {@link Activity} holding this view is destroyed,
* typically in the {@code onDestroy} method.
*/
public void dispose() {
if (reactRootView != null) {
removeView(reactRootView);
reactRootView.unmountReactApplication();
reactRootView = null;
}
}
/**
* Gets the listener set on this {@code BaseReactView}.
*
* @return The listener set on this {@code BaseReactView}.
*/
@Deprecated
public ListenerT getListener() {
return listener;
}
/**
* Abstract method called by {@link ExternalAPIModule} when an event is
* received for this view.
*
* @param name - The name of the event.
* @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) {
ListenerT listener = getListener();
if (listener != null) {
ListenerUtils.runListenerMethod(
listener, listenerMethods, name, data);
}
}
/**
* Called when the window containing this view gains or loses focus.
*
* @param hasFocus If the window of this view now has focus, {@code true};
* otherwise, {@code false}.
*/
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// https://github.com/mockingbot/react-native-immersive#restore-immersive-state
RNImmersiveModule immersive = RNImmersiveModule.getInstance();
if (hasFocus && immersive != null) {
immersive.emitImmersiveStateChangeEvent();
}
}
/**
* Sets a specific listener on this {@code BaseReactView}.
*
* @param listener The listener to set on this {@code BaseReactView}.
*/
@Deprecated
public void setListener(ListenerT listener) {
this.listener = listener;
}
}

View File

@@ -76,7 +76,8 @@ public class BroadcastAction {
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");
SET_VIDEO_MUTED("org.jitsi.meet.SET_VIDEO_MUTED"),
SET_CLOSED_CAPTIONS_ENABLED("org.jitsi.meet.SET_CLOSED_CAPTIONS_ENABLED");
private final String action;

View File

@@ -48,4 +48,10 @@ public class BroadcastIntentHelper {
intent.putExtra("muted", muted);
return intent;
}
public static Intent buildSetClosedCaptionsEnabledIntent(boolean enabled) {
Intent intent = new Intent(BroadcastAction.Type.SET_CLOSED_CAPTIONS_ENABLED.getAction());
intent.putExtra("enabled", enabled);
return intent;
}
}

View File

@@ -95,37 +95,25 @@ class ExternalAPIModule extends ReactContextBaseJavaModule {
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());
constants.put("SET_CLOSED_CAPTIONS_ENABLED", BroadcastAction.Type.SET_CLOSED_CAPTIONS_ENABLED.getAction());
return constants;
}
/**
* Dispatches an event that occurred on the JavaScript side of the SDK to
* the specified {@link BaseReactView}'s listener.
* the native side.
*
* @param name The name of the event.
* @param data The details/specifics of the event to send determined
* by/associated with the specified {@code name}.
* @param scope
*/
@ReactMethod
public void sendEvent(String name, ReadableMap data, String scope) {
public void sendEvent(String name, ReadableMap data) {
// Keep track of the current ongoing conference.
OngoingConferenceTracker.getInstance().onExternalAPIEvent(name, data);
// The JavaScript App needs to provide uniquely identifying information
// to the native ExternalAPI module so that the latter may match the
// former to the native BaseReactView which hosts it.
BaseReactView view = BaseReactView.findViewByExternalAPIScope(scope);
if (view != null) {
JitsiMeetLogger.d(TAG + " Sending event: " + name + " with data: " + data);
try {
view.onExternalAPIEvent(name, data);
broadcastEmitter.sendBroadcast(name, data);
} catch (Exception e) {
JitsiMeetLogger.e(e, TAG + " onExternalAPIEvent: error sending event");
}
}
JitsiMeetLogger.d(TAG + " Sending event: " + name + " with data: " + data);
broadcastEmitter.sendBroadcast(name, data);
}
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright 2017 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package org.jitsi.meet.sdk;
import org.webrtc.VideoCodecInfo;
import java.util.Map;
import java.util.HashMap;
/** Container for static helper functions related to dealing with H264 codecs. */
class H264Utils {
public static final String H264_FMTP_PROFILE_LEVEL_ID = "profile-level-id";
public static final String H264_FMTP_LEVEL_ASYMMETRY_ALLOWED = "level-asymmetry-allowed";
public static final String H264_FMTP_PACKETIZATION_MODE = "packetization-mode";
public static final String H264_PROFILE_CONSTRAINED_BASELINE = "42e0";
public static final String H264_PROFILE_CONSTRAINED_HIGH = "640c";
public static final String H264_LEVEL_3_1 = "1f"; // 31 in hex.
public static final String H264_CONSTRAINED_HIGH_3_1 =
H264_PROFILE_CONSTRAINED_HIGH + H264_LEVEL_3_1;
public static final String H264_CONSTRAINED_BASELINE_3_1 =
H264_PROFILE_CONSTRAINED_BASELINE + H264_LEVEL_3_1;
public static Map<String, String> getDefaultH264Params(boolean isHighProfile) {
final Map<String, String> params = new HashMap<>();
params.put(VideoCodecInfo.H264_FMTP_LEVEL_ASYMMETRY_ALLOWED, "1");
params.put(VideoCodecInfo.H264_FMTP_PACKETIZATION_MODE, "1");
params.put(VideoCodecInfo.H264_FMTP_PROFILE_LEVEL_ID,
isHighProfile ? VideoCodecInfo.H264_CONSTRAINED_HIGH_3_1
: VideoCodecInfo.H264_CONSTRAINED_BASELINE_3_1);
return params;
}
public static VideoCodecInfo DEFAULT_H264_BASELINE_PROFILE_CODEC =
new VideoCodecInfo("H264", getDefaultH264Params(/* isHighProfile= */ false));
public static VideoCodecInfo DEFAULT_H264_HIGH_PROFILE_CODEC =
new VideoCodecInfo("H264", getDefaultH264Params(/* isHighProfile= */ true));
}

View File

@@ -15,6 +15,7 @@
*/
package org.jitsi.meet.sdk;
import android.app.Application;
import android.content.Context;
import android.util.Log;
@@ -22,6 +23,7 @@ import androidx.annotation.NonNull;
import androidx.startup.Initializer;
import com.facebook.soloader.SoLoader;
import org.wonday.orientation.OrientationActivityLifecycle;
import java.util.Collections;
import java.util.List;
@@ -37,6 +39,10 @@ public class JitsiInitializer implements Initializer<Boolean> {
// Register our uncaught exception handler.
JitsiMeetUncaughtExceptionHandler.register();
// Register activity lifecycle handler for the orientation locker module.
((Application) context).registerActivityLifecycleCallbacks(OrientationActivityLifecycle.getInstance());
return true;
}

View File

@@ -16,10 +16,12 @@
package org.jitsi.meet.sdk;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
@@ -32,11 +34,16 @@ import com.facebook.react.modules.core.PermissionListener;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
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.
* A base activity for SDK users to embed. It contains all the required wiring
* between the {@code JitsiMeetView} and the Activity lifecycle methods.
*
* In this activity we use a single {@code JitsiMeetView} instance. This
* instance gives us access to a view which displays the welcome page and the
* conference itself. All lifecycle methods associated with this Activity are
* hooked to the React Native subsystem via proxy calls through the
* {@code JitsiMeetActivityDelegate} static methods.
*/
public class JitsiMeetActivity extends AppCompatActivity
implements JitsiMeetActivityInterface {
@@ -52,6 +59,12 @@ public class JitsiMeetActivity extends AppCompatActivity
onBroadcastReceived(intent);
}
};
/**
* Instance of the {@link JitsiMeetView} which this activity will display.
*/
private JitsiMeetView jitsiView;
// Helpers for starting the activity
//
@@ -74,11 +87,20 @@ public class JitsiMeetActivity extends AppCompatActivity
// Overrides
//
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jitsi_meet);
this.jitsiView = findViewById(R.id.jitsiView);
registerForBroadcastMessages();
@@ -87,6 +109,18 @@ public class JitsiMeetActivity extends AppCompatActivity
}
}
@Override
public void onResume() {
super.onResume();
JitsiMeetActivityDelegate.onHostResume(this);
}
@Override
public void onStop() {
JitsiMeetActivityDelegate.onHostPause(this);
super.onStop();
}
@Override
public void onDestroy() {
// Here we are trying to handle the following corner case: an application using the SDK
@@ -97,6 +131,9 @@ public class JitsiMeetActivity extends AppCompatActivity
// be operational so the external API won't be able to notify the native side that the
// conference terminated. Thus, try our best to clean up.
leave();
this.jitsiView = null;
if (AudioModeModule.useConnectionService()) {
ConnectionService.abortConnections();
}
@@ -104,6 +141,8 @@ public class JitsiMeetActivity extends AppCompatActivity
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
JitsiMeetActivityDelegate.onHostDestroy(this);
super.onDestroy();
}
@@ -118,9 +157,7 @@ public class JitsiMeetActivity extends AppCompatActivity
//
protected JitsiMeetView getJitsiView() {
JitsiMeetFragment fragment
= (JitsiMeetFragment) getSupportFragmentManager().findFragmentById(R.id.jitsiFragment);
return fragment != null ? fragment.getJitsiView() : null;
return jitsiView;
}
public void join(@Nullable String url) {
@@ -132,23 +169,16 @@ public class JitsiMeetActivity extends AppCompatActivity
}
public void join(JitsiMeetConferenceOptions options) {
JitsiMeetView view = getJitsiView();
if (view != null) {
view.join(options);
if (this.jitsiView != null) {
this.jitsiView .join(options);
} else {
JitsiMeetLogger.w("Cannot join, view is null");
}
}
public void leave() {
JitsiMeetView view = getJitsiView();
if (view != null) {
view.leave();
} else {
JitsiMeetLogger.w("Cannot leave, view is null");
}
protected void leave() {
Intent hangupBroadcastIntent = BroadcastIntentHelper.buildHangUpIntent();
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(hangupBroadcastIntent);
}
private @Nullable
@@ -189,7 +219,7 @@ public class JitsiMeetActivity extends AppCompatActivity
protected void onConferenceJoined(HashMap<String, Object> extraData) {
JitsiMeetLogger.i("Conference joined: " + extraData);
// Launch the service for the ongoing notification.
JitsiMeetOngoingConferenceService.launch(this);
JitsiMeetOngoingConferenceService.launch(this, extraData);
}
protected void onConferenceTerminated(HashMap<String, Object> extraData) {
@@ -252,10 +282,8 @@ public class JitsiMeetActivity extends AppCompatActivity
@Override
protected void onUserLeaveHint() {
JitsiMeetView view = getJitsiView();
if (view != null) {
view.enterPictureInPicture();
if (this.jitsiView != null) {
this.jitsiView .enterPictureInPicture();
}
}

View File

@@ -1,80 +0,0 @@
/*
* Copyright @ 2019-present 8x8, Inc.
* Copyright @ 2017-2018 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.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Base {@link Fragment} for applications integrating Jitsi Meet at a higher level. It
* contains all the required wiring between the {@code JitsiMeetView} and
* the Fragment lifecycle methods already implemented.
*
* In this fragment we use a single {@code JitsiMeetView} instance. This
* instance gives us access to a view which displays the welcome page and the
* conference itself. All lifecycle methods associated with this Fragment are
* hooked to the React Native subsystem via proxy calls through the
* {@code JitsiMeetActivityDelegate} static methods.
*/
public class JitsiMeetFragment extends Fragment {
/**
* Instance of the {@link JitsiMeetView} which this activity will display.
*/
private JitsiMeetView view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
return this.view = new JitsiMeetView(getActivity());
}
public JitsiMeetView getJitsiView() {
return view;
}
@Override
public void onDestroy() {
super.onDestroy();
JitsiMeetActivityDelegate.onHostDestroy(getActivity());
}
@Override
public void onResume() {
super.onResume();
JitsiMeetActivityDelegate.onHostResume(getActivity());
}
@Override
public void onStop() {
super.onStop();
JitsiMeetActivityDelegate.onHostPause(getActivity());
}
}

View File

@@ -17,18 +17,22 @@
package org.jitsi.meet.sdk;
import android.app.Notification;
import android.app.NotificationManager;
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.Bundle;
import android.os.IBinder;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.HashMap;
/**
* This class implements an Android {@link Service}, a foreground one specifically, and it's
* responsible for presenting an ongoing notification when a conference is in progress.
@@ -39,29 +43,44 @@ import org.jitsi.meet.sdk.log.JitsiMeetLogger;
public class JitsiMeetOngoingConferenceService extends Service
implements OngoingConferenceTracker.OngoingConferenceListener {
private static final String TAG = JitsiMeetOngoingConferenceService.class.getSimpleName();
private static final String EXTRA_DATA_KEY = "extraDataKey";
private static final String EXTRA_DATA_BUNDLE_KEY = "extraDataBundleKey";
private static final String IS_AUDIO_MUTED_KEY = "isAudioMuted";
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver();
private boolean isAudioMuted;
static void launch(Context context) {
public static void launch(Context context, HashMap<String, Object> extraData) {
OngoingNotification.createOngoingConferenceNotificationChannel();
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
intent.setAction(Action.START.getName());
Bundle extraDataBundle = new Bundle();
extraDataBundle.putSerializable(EXTRA_DATA_KEY, extraData);
intent.putExtra(EXTRA_DATA_BUNDLE_KEY, extraDataBundle);
ComponentName componentName;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
componentName = context.startForegroundService(intent);
} else {
componentName = context.startService(intent);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
componentName = context.startForegroundService(intent);
} else {
componentName = context.startService(intent);
}
} catch (RuntimeException e) {
// Avoid crashing due to ForegroundServiceStartNotAllowedException (API level 31).
// See: https://developer.android.com/guide/components/foreground-services#background-start-restrictions
JitsiMeetLogger.w(TAG + " Ongoing conference service not started", e);
return;
}
if (componentName == null) {
JitsiMeetLogger.w(TAG + " Ongoing conference service not started");
}
}
static void abort(Context context) {
public static void abort(Context context) {
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
context.stopService(intent);
}
@@ -70,6 +89,15 @@ public class JitsiMeetOngoingConferenceService extends Service
public void onCreate() {
super.onCreate();
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");
}
OngoingConferenceTracker.getInstance().addListener(this);
IntentFilter intentFilter = new IntentFilter();
@@ -92,37 +120,45 @@ public class JitsiMeetOngoingConferenceService extends Service
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Boolean isAudioMuted = tryParseIsAudioMuted(intent);
if (isAudioMuted != null) {
this.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 {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(OngoingNotification.NOTIFICATION_ID, notification);
}
}
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) {
// When starting the service, there is no action passed in the intent
if (action != null) {
switch (action) {
case UNMUTE:
case MUTE:
Intent muteBroadcastIntent = BroadcastIntentHelper.buildSetAudioMutedIntent(action == Action.MUTE);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(muteBroadcastIntent);
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");
}
break;
case HANGUP:
JitsiMeetLogger.i(TAG + " Hangup requested");
Intent hangupBroadcastIntent = BroadcastIntentHelper.buildHangUpIntent();
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(hangupBroadcastIntent);
stopSelf();
break;
default:
JitsiMeetLogger.w(TAG + " Unknown action received: " + action);
stopSelf();
break;
break;
default:
JitsiMeetLogger.w(TAG + " Unknown action received: " + action);
break;
}
}
return START_NOT_STICKY;
@@ -138,7 +174,6 @@ public class JitsiMeetOngoingConferenceService extends Service
}
public enum Action {
START(TAG + ":START"),
HANGUP(TAG + ":HANGUP"),
MUTE(TAG + ":MUTE"),
UNMUTE(TAG + ":UNMUTE");
@@ -163,6 +198,15 @@ public class JitsiMeetOngoingConferenceService extends Service
}
}
private Boolean tryParseIsAudioMuted(Intent intent) {
try {
HashMap<String, Object> extraData = (HashMap<String, Object>) intent.getBundleExtra(EXTRA_DATA_BUNDLE_KEY).getSerializable(EXTRA_DATA_KEY);
return Boolean.parseBoolean((String) extraData.get(IS_AUDIO_MUTED_KEY));
} catch (Exception ignored) {
}
return null;
}
private class BroadcastReceiver extends android.content.BroadcastReceiver {
@Override
@@ -171,10 +215,12 @@ public class JitsiMeetOngoingConferenceService extends Service
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted);
if (notification == null) {
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
JitsiMeetLogger.w(TAG + " Couldn't update service, notification is null");
} else {
startForeground(OngoingNotification.NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " Service started");
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(OngoingNotification.NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " audio muted changed");
}
}
}

View File

@@ -16,35 +16,33 @@
package org.jitsi.meet.sdk;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.ReactRootView;
import com.rnimmersive.RNImmersiveModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.lang.reflect.Method;
import java.util.Map;
public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
implements OngoingConferenceTracker.OngoingConferenceListener {
public class JitsiMeetView extends FrameLayout {
/**
* The {@code Method}s of {@code JitsiMeetViewListener} by event name i.e.
* redux action types.
* Background color used by {@code BaseReactView} and the React Native root
* view.
*/
private static final Map<String, Method> LISTENER_METHODS
= ListenerUtils.mapListenerMethods(JitsiMeetViewListener.class);
private static final int BACKGROUND_COLOR = 0xFF111111;
/**
* The URL of the current conference.
* React Native root view.
*/
// XXX Currently, one thread writes and one thread reads, so it should be
// fine to have this field volatile without additional synchronization.
private volatile String url;
private ReactRootView reactRootView;
/**
* Helper method to recursively merge 2 {@link Bundle} objects representing React Native props.
@@ -95,20 +93,32 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
public JitsiMeetView(@NonNull Context context) {
super(context);
// Check if the parent Activity implements JitsiMeetActivityInterface,
// otherwise things may go wrong.
if (!(context instanceof JitsiMeetActivityInterface)) {
throw new RuntimeException("Enclosing Activity must implement JitsiMeetActivityInterface");
}
OngoingConferenceTracker.getInstance().addListener(this);
initialize(context);
}
@Override
public JitsiMeetView(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}
public JitsiMeetView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize(context);
}
/**
* Releases the React resources (specifically the {@link ReactRootView})
* associated with this view.
*
* MUST be called when the {@link Activity} holding this view is destroyed,
* typically in the {@code onDestroy} method.
*/
public void dispose() {
OngoingConferenceTracker.getInstance().removeListener(this);
super.dispose();
if (reactRootView != null) {
removeView(reactRootView);
reactRootView.unmountReactApplication();
reactRootView = null;
}
}
/**
@@ -126,8 +136,7 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
PictureInPictureModule.class);
if (pipModule != null
&& pipModule.isPictureInPictureSupported()
&& !JitsiMeetActivityDelegate.arePermissionsBeingRequested()
&& this.url != null) {
&& !JitsiMeetActivityDelegate.arePermissionsBeingRequested()) {
try {
pipModule.enterPictureInPicture();
} catch (RuntimeException re) {
@@ -147,10 +156,40 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
}
/**
* Leaves the currently active conference.
* Creates the {@code ReactRootView} for the given app name with the given
* props. Once created it's set as the view of this {@code FrameLayout}.
*
* @param appName - The name of the "app" (in React Native terms) to load.
* @param props - The React Component props to pass to the app.
*/
public void leave() {
setProps(new Bundle());
private void createReactRootView(String appName, @Nullable Bundle props) {
if (props == null) {
props = new Bundle();
}
if (reactRootView == null) {
reactRootView = new ReactRootView(getContext());
reactRootView.startReactApplication(
ReactInstanceManagerHolder.getReactInstanceManager(),
appName,
props);
reactRootView.setBackgroundColor(BACKGROUND_COLOR);
addView(reactRootView);
} else {
reactRootView.setAppProperties(props);
}
}
private void initialize(@NonNull Context context) {
// Check if the parent Activity implements JitsiMeetActivityInterface,
// otherwise things may go wrong.
if (!(context instanceof JitsiMeetActivityInterface)) {
throw new RuntimeException("Enclosing Activity must implement JitsiMeetActivityInterface");
}
setBackgroundColor(BACKGROUND_COLOR);
ReactInstanceManagerHolder.initReactInstanceManager((Activity) context);
}
/**
@@ -167,7 +206,7 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
// by leaving the conference. However, React and, respectively,
// appProperties/initialProperties are declarative expressions i.e. one
// and the same URL will not trigger an automatic re-render in the
// JavaScript source code. The workaround implemented bellow introduces
// JavaScript source code. The workaround implemented below introduces
// "imperativeness" in React Component props by defining a unique value
// per setProps() invocation.
props.putLong("timestamp", System.currentTimeMillis());
@@ -175,36 +214,27 @@ public class JitsiMeetView extends BaseReactView<JitsiMeetViewListener>
createReactRootView("App", props);
}
/**
* Handler for {@link OngoingConferenceTracker} events.
* @param conferenceUrl
*/
@Override
public void onCurrentConferenceChanged(String conferenceUrl) {
// This property was introduced in order to address
// an exception in the Picture-in-Picture functionality which arose
// because of delays related to bridging between JavaScript and Java. To
// reduce these delays do not wait for the call to be transferred to the
// UI thread.
this.url = conferenceUrl;
}
/**
* Handler for {@link ExternalAPIModule} events.
*
* @param name The name of the event.
* @param data The details/specifics of the event to send determined
* 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();
}
/**
* Called when the window containing this view gains or loses focus.
*
* @param hasFocus If the window of this view now has focus, {@code true};
* otherwise, {@code false}.
*/
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// https://github.com/mockingbot/react-native-immersive#restore-immersive-state
RNImmersiveModule immersive = RNImmersiveModule.getInstance();
if (hasFocus && immersive != null) {
immersive.emitImmersiveStateChangeEvent();
}
}
}

View File

@@ -1,51 +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 java.util.Map;
/**
* Interface for listening to events coming from Jitsi Meet.
*/
@Deprecated
public interface JitsiMeetViewListener {
/**
* Called when a conference was joined.
*
* @param data Map with a "url" key with the conference URL.
*/
void onConferenceJoined(Map<String, Object> data);
/**
* Called when the active conference ends, be it because of user choice or
* because of a failure.
*
* @param data Map with 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. The possible values for "error" are described here:
* https://github.com/jitsi/lib-jitsi-meet/blob/master/JitsiConnectionErrors.js
* https://github.com/jitsi/lib-jitsi-meet/blob/master/JitsiConferenceErrors.js
*/
void onConferenceTerminated(Map<String, Object> data);
/**
* Called before the conference is joined.
*
* @param data Map with a "url" key with the conference URL.
*/
void onConferenceWillJoin(Map<String, Object> data);
}

View File

@@ -1,167 +0,0 @@
/*
* Copyright @ 2018-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 com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
import com.facebook.react.bridge.UiThreadUtil;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
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
* form: event name -> method.
*
* @param listener - The listener whose methods we want to slurp.
* @return A mapping with event names - methods.
*/
public static Map<String, Method> mapListenerMethods(Class listener) {
Map<String, Method> methods = new HashMap<>();
// Figure out the mapping between the listener methods
// and the events i.e. redux action types.
Pattern onPattern = Pattern.compile("^on[A-Z]+");
Pattern camelcasePattern = Pattern.compile("([a-z0-9]+)([A-Z0-9]+)");
for (Method method : listener.getDeclaredMethods()) {
// * The method must be public (because it is declared by an
// interface).
// * The method must be/return void.
if (!Modifier.isPublic(method.getModifiers())
|| !Void.TYPE.equals(method.getReturnType())) {
continue;
}
// * The method name must start with "on" followed by a
// capital/uppercase letter (in agreement with the camelcase
// coding style customary to Java in general and the projects of
// the Jitsi community in particular).
String name = method.getName();
if (!onPattern.matcher(name).find()) {
continue;
}
// * The method must accept/have exactly 1 parameter of a type
// assignable from HashMap.
Class<?>[] parameterTypes = method.getParameterTypes();
if (parameterTypes.length != 1
|| !parameterTypes[0].isAssignableFrom(HashMap.class)) {
continue;
}
// Convert the method name to an event name.
name
= camelcasePattern.matcher(name.substring(2))
.replaceAll("$1_$2")
.toUpperCase(Locale.ROOT);
methods.put(name, method);
}
return methods;
}
/**
* Executes the right listener method for the given event.
* NOTE: This function will run asynchronously on the UI thread.
*
* @param listener - The listener on which the method will be called.
* @param listenerMethods - Mapping with event names and the matching
* methods.
* @param eventName - Name of the event.
* @param eventData - Data associated with the event.
*/
public static void runListenerMethod(
final Object listener,
final Map<String, Method> listenerMethods,
final String eventName,
final ReadableMap eventData) {
// Make sure listener methods are invoked on the UI thread. It
// was requested by SDK consumers.
if (UiThreadUtil.isOnUiThread()) {
runListenerMethodOnUiThread(
listener, listenerMethods, eventName, eventData);
} else {
UiThreadUtil.runOnUiThread(new Runnable() {
@Override
public void run() {
runListenerMethodOnUiThread(
listener, listenerMethods, eventName, eventData);
}
});
}
}
/**
* Helper companion for {@link ListenerUtils#runListenerMethod} which runs
* in the UI thread.
*/
private static void runListenerMethodOnUiThread(
Object listener,
Map<String, Method> listenerMethods,
String eventName,
ReadableMap eventData) {
UiThreadUtil.assertOnUiThread();
Method method = listenerMethods.get(eventName);
if (method != null) {
try {
method.invoke(listener, toHashMap(eventData));
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
}
}
/**
* Initializes a new {@code HashMap} instance with the key-value
* associations of a specific {@code ReadableMap}.
*
* @param readableMap the {@code ReadableMap} specifying the key-value
* associations with which the new {@code HashMap} instance is to be
* initialized.
* @return a new {@code HashMap} instance initialized with the key-value
* associations of the specified {@code readableMap}.
*/
private static HashMap<String, Object> toHashMap(ReadableMap readableMap) {
HashMap<String, Object> hashMap = new HashMap<>();
for (ReadableMapKeySetIterator i = readableMap.keySetIterator();
i.hasNextKey();) {
String key = i.nextKey();
hashMap.put(key, readableMap.getString(key));
}
return hashMap;
}
}

View File

@@ -43,7 +43,7 @@ class PictureInPictureModule extends ReactContextBaseJavaModule {
private static final String TAG = NAME;
private static boolean isSupported;
private boolean isDisabled;
private boolean isEnabled;
public PictureInPictureModule(ReactApplicationContext reactContext) {
super(reactContext);
@@ -84,7 +84,7 @@ class PictureInPictureModule extends ReactContextBaseJavaModule {
*/
@TargetApi(Build.VERSION_CODES.O)
public void enterPictureInPicture() {
if (isDisabled) {
if (!isEnabled) {
return;
}
@@ -132,8 +132,8 @@ class PictureInPictureModule extends ReactContextBaseJavaModule {
}
@ReactMethod
public void setPictureInPictureDisabled(Boolean disabled) {
this.isDisabled = disabled;
public void setPictureInPictureEnabled(Boolean enabled) {
this.isEnabled = enabled;
}
public boolean isPictureInPictureSupported() {

View File

@@ -193,7 +193,7 @@ class RNConnectionService extends ReactContextBaseJavaModule {
* Called by the JS side to update the call's state.
*
* @param callUUID - the call's UUID.
* @param callState - the map which carries infor about the current call's
* @param callState - the map which carries info about the current call's
* state. See static fields in {@link ConnectionService.ConnectionImpl}
* prefixed with "KEY_" for the values supported by the Android
* implementation.

View File

@@ -31,12 +31,12 @@ import com.facebook.react.common.LifecycleState;
import com.facebook.react.jscexecutor.JSCExecutorFactory;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.uimanager.ViewManager;
import com.oney.WebRTCModule.EglUtils;
import com.oney.WebRTCModule.RTCVideoViewManager;
import com.oney.WebRTCModule.WebRTCModule;
import org.devio.rn.splashscreen.SplashScreenModule;
import org.webrtc.SoftwareVideoDecoderFactory;
import org.webrtc.SoftwareVideoEncoderFactory;
import org.webrtc.EglBase;
import org.webrtc.audio.AudioDeviceModule;
import org.webrtc.audio.JavaAudioDeviceModule;
@@ -46,6 +46,8 @@ import java.util.Arrays;
import java.util.List;
class ReactInstanceManagerHolder {
private static final String TAG = ReactInstanceManagerHolder.class.getSimpleName();
/**
* FIXME (from linter): Do not place Android context classes in static
* fields (static reference to ReactInstanceManager which has field
@@ -83,11 +85,14 @@ class ReactInstanceManagerHolder {
WebRTCModule.Options options = new WebRTCModule.Options();
AudioDeviceModule adm = JavaAudioDeviceModule.builder(reactContext)
.setEnableVolumeLogger(false)
.createAudioDeviceModule();
options.setAudioDeviceModule(adm);
options.setVideoDecoderFactory(new SoftwareVideoDecoderFactory());
options.setVideoEncoderFactory(new SoftwareVideoEncoderFactory());
EglBase.Context eglContext = EglUtils.getRootEglBaseContext();
options.setVideoDecoderFactory(new WebRTCVideoDecoderFactory(eglContext));
options.setVideoEncoderFactory(new WebRTCVideoEncoderFactory(eglContext));
nativeModules.add(new WebRTCModule(reactContext, options));
@@ -115,7 +120,6 @@ class ReactInstanceManagerHolder {
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(),
@@ -127,6 +131,7 @@ class ReactInstanceManagerHolder {
new com.zmxv.RNSound.RNSoundPackage(),
new com.th3rdwave.safeareacontext.SafeAreaContextPackage(),
new com.horcrux.svg.SvgPackage(),
new org.wonday.orientation.OrientationPackage(),
new ReactPackageAdapter() {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
@@ -145,6 +150,17 @@ class ReactInstanceManagerHolder {
packages.add((ReactPackage)constructor.newInstance());
} catch (Exception e) {
// Ignore any error, the module is not compiled when LIBRE_BUILD is enabled.
Log.d(TAG, "Not loading AmplitudeReactNativePackage");
}
// GiphyReactNativeSdkPackage
try {
Class<?> giphyPackageClass = Class.forName("com.giphyreactnativesdk.GiphyReactNativeSdkPackage");
Constructor constructor = giphyPackageClass.getConstructor();
packages.add((ReactPackage)constructor.newInstance());
} catch (Exception e) {
// Ignore any error, the module is not compiled when LIBRE_BUILD is enabled.
Log.d(TAG, "Not loading GiphyReactNativeSdkPackage");
}
// RNGoogleSignInPackage
@@ -154,6 +170,7 @@ class ReactInstanceManagerHolder {
packages.add((ReactPackage)constructor.newInstance());
} catch (Exception e) {
// Ignore any error, the module is not compiled when LIBRE_BUILD is enabled.
Log.d(TAG, "Not loading RNGoogleSignInPackage");
}
return packages;
@@ -239,7 +256,7 @@ class ReactInstanceManagerHolder {
return;
}
Log.d(ReactInstanceManagerHolder.class.getCanonicalName(), "initializing RN with Application");
Log.d(TAG, "initializing RN with Application");
reactInstanceManager
= ReactInstanceManager.builder()

View File

@@ -0,0 +1,19 @@
package org.jitsi.meet.sdk;
/** Enumeration of supported video codec types. */
public enum VideoCodecMimeType {
VP8("video/x-vnd.on2.vp8"),
VP9("video/x-vnd.on2.vp9"),
H264("video/avc"),
AV1("video/av01");
private final String mimeType;
private VideoCodecMimeType(String mimeType) {
this.mimeType = mimeType;
}
String mimeType() {
return mimeType;
}
}

View File

@@ -0,0 +1,52 @@
package org.jitsi.meet.sdk;
import androidx.annotation.Nullable;
import org.webrtc.EglBase;
import org.webrtc.HardwareVideoDecoderFactory;
import org.webrtc.SoftwareVideoDecoderFactory;
import org.webrtc.VideoCodecInfo;
import org.webrtc.VideoDecoder;
import org.webrtc.VideoDecoderFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* This is a custom video decoder factory for WebRTC which behaves similarly
* to the default one in iOS. It supports the following codecs:
*
* - In hardware: H.264 (baseline)
* - In software: VP8, VP9, AV1
*/
public class WebRTCVideoDecoderFactory implements VideoDecoderFactory {
private final VideoDecoderFactory hardwareVideoDecoderFactory;
private final VideoDecoderFactory softwareVideoDecoderFactory = new SoftwareVideoDecoderFactory();
public WebRTCVideoDecoderFactory(@Nullable EglBase.Context eglContext) {
this.hardwareVideoDecoderFactory = new HardwareVideoDecoderFactory(eglContext);
}
@Nullable
@Override
public VideoDecoder createDecoder(VideoCodecInfo codecInfo) {
if (codecInfo.name.equalsIgnoreCase(VideoCodecMimeType.H264.name())) {
return this.hardwareVideoDecoderFactory.createDecoder(codecInfo);
}
return this.softwareVideoDecoderFactory.createDecoder(codecInfo);
}
@Override
public VideoCodecInfo[] getSupportedCodecs() {
List<VideoCodecInfo> codecs = new ArrayList<>();
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.name(), new HashMap<>()));
codecs.add(H264Utils.DEFAULT_H264_BASELINE_PROFILE_CODEC);
return codecs.toArray(new VideoCodecInfo[codecs.size()]);
}
}

View File

@@ -0,0 +1,53 @@
package org.jitsi.meet.sdk;
import androidx.annotation.Nullable;
import org.webrtc.EglBase;
import org.webrtc.HardwareVideoEncoderFactory;
import org.webrtc.SoftwareVideoEncoderFactory;
import org.webrtc.VideoCodecInfo;
import org.webrtc.VideoEncoder;
import org.webrtc.VideoEncoderFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* This is a custom video encoder factory for WebRTC which behaves similarly
* to the default one in iOS. It supports the following codecs:
*
* - In hardware: H.264 (baseline)
* - In software: VP8, VP9, AV1
*/
public class WebRTCVideoEncoderFactory implements VideoEncoderFactory {
private final VideoEncoderFactory hardwareVideoEncoderFactory;
private final VideoEncoderFactory softwareVideoEncoderFactory = new SoftwareVideoEncoderFactory();
public WebRTCVideoEncoderFactory(@Nullable EglBase.Context eglContext) {
this.hardwareVideoEncoderFactory =
new HardwareVideoEncoderFactory(eglContext, false, false);
}
@Nullable
@Override
public VideoEncoder createEncoder(VideoCodecInfo codecInfo) {
if (codecInfo.name.equalsIgnoreCase(VideoCodecMimeType.H264.name())) {
return this.hardwareVideoEncoderFactory.createEncoder(codecInfo);
}
return this.softwareVideoEncoderFactory.createEncoder(codecInfo);
}
@Override
public VideoCodecInfo[] getSupportedCodecs() {
List<VideoCodecInfo> codecs = new ArrayList<>();
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP8.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.VP9.name(), new HashMap<>()));
codecs.add(new VideoCodecInfo(VideoCodecMimeType.AV1.name(), new HashMap<>()));
codecs.add(H264Utils.DEFAULT_H264_BASELINE_PROFILE_CODEC);
return codecs.toArray(new VideoCodecInfo[codecs.size()]);
}
}

View File

@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/jitsi_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".JitsiMeetActivity">
<fragment
<org.jitsi.meet.sdk.JitsiMeetView
android:id="@+id/jitsiView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="org.jitsi.meet.sdk.JitsiMeetFragment"
android:id="@+id/jitsiFragment"/>
android:layout_height="match_parent" />
</FrameLayout>

View File

@@ -0,0 +1,3 @@
<resources>
<style name="JitsiMeetActivityStyle" parent="Theme.AppCompat.Light.NoActionBar"/>
</resources>

View File

@@ -1,6 +1,8 @@
rootProject.name = 'jitsi-meet'
include ':app', ':sdk'
includeBuild('../node_modules/react-native-gradle-plugin')
include ':react-native-amplitude'
project(':react-native-amplitude').projectDir = new File(rootProject.projectDir, '../node_modules/@amplitude/react-native//android')
include ':react-native-async-storage'
@@ -21,6 +23,8 @@ 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-get-random-values'
project(':react-native-get-random-values').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-get-random-values/android')
include ':react-native-giphy'
project(':react-native-giphy').projectDir = new File(rootProject.projectDir, '../node_modules/@giphy/react-native-sdk/android')
include ':react-native-google-signin'
project(':react-native-google-signin').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-google-signin/google-signin/android')
include ':react-native-immersive'
@@ -29,12 +33,12 @@ 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-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-orientation-locker'
project(':react-native-orientation-locker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-orientation-locker/android')
include ':react-native-pager-view'
project(':react-native-pager-view').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-pager-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'

6
app.js
View File

@@ -1,6 +1,10 @@
/* application specific logic */
import 'jquery';
// Re-export jQuery
// FIXME: Remove this requirement from torture tests.
import $ from 'jquery';
window.$ = window.jQuery = $;
import '@matrix-org/olm';

File diff suppressed because it is too large Load Diff

508
config.js
View File

@@ -1,5 +1,28 @@
/* eslint-disable comma-dangle, no-unused-vars, no-var, prefer-template, vars-on-top */
/* eslint-disable no-unused-vars, no-var */
/*
* NOTE: If you add a new option please remember to document it here:
* https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-configuration
*/
var subdir = '<!--# echo var="subdir" default="" -->';
var subdomain = '<!--# echo var="subdomain" default="" -->';
if (subdomain) {
subdomain = subdomain.substr(0, subdomain.length - 1).split('.')
.join('_')
.toLowerCase() + '.';
}
// In case of no ssi provided by the webserver, use empty strings
if (subdir.startsWith('<!--')) {
subdir = '';
}
if (subdomain.startsWith('<!--')) {
subdomain = '';
}
var enableJaaS = false;
var config = {
// Connection
@@ -19,14 +42,14 @@ var config = {
// focus: 'focus.jitsi-meet.example.com',
// XMPP MUC domain. FIXME: use XEP-0030 to discover it.
muc: 'conference.jitsi-meet.example.com'
muc: 'conference.' + subdomain + 'jitsi-meet.example.com',
},
// BOSH URL. FIXME: use XEP-0156 to discover it.
bosh: '//jitsi-meet.example.com/http-bind',
bosh: '//jitsi-meet.example.com/' + subdir + 'http-bind',
// Websocket URL
// websocket: 'wss://jitsi-meet.example.com/xmpp-websocket',
// websocket: 'wss://jitsi-meet.example.com/' + subdir + 'xmpp-websocket',
// The real JID of focus participant - can be overridden here
// Do not change username - FIXME: Make focus username configurable
@@ -42,43 +65,29 @@ var config = {
// issues related to insertable streams.
// disableE2EE: false,
// Enables/disables thumbnail reordering in the filmstrip. It is enabled by default unless explicitly
// disabled by the below option.
// enableThumbnailReordering: true,
// Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users.
// mobileXmppWsThreshold: 10 // enable XMPP WebSockets on mobile for 10% of the users
// mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users
// P2P test mode disables automatic switching to P2P when there are 2
// participants in the conference.
// p2pTestMode: false,
// Enables the test specific features consumed by jitsi-meet-torture
// testMode: false
// testMode: false,
// Disables the auto-play behavior of *all* newly created video element.
// This is useful when the client runs on a host with limited resources.
// noAutoPlayVideo: false
// noAutoPlayVideo: false,
// Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled,
// simulcast is turned off for the desktop share. If presenter is turned
// on while screensharing is in progress, the max bitrate is automatically
// adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
// the probability for this to be enabled. This setting has been deprecated.
// desktopSharingFrameRate.max now determines whether simulcast will be enabled
// or disabled for the screenshare.
// capScreenshareBitrate: 1 // 0 to disable - deprecated.
// Whether to use fake constraints (height: 99999, width: 99999) when calling getDisplayMedia on
// Chromium based browsers. This is intended as a workaround for
// https://bugs.chromium.org/p/chromium/issues/detail?id=1056311
// setScreenSharingResolutionConstraints: true,
// Enable callstats only for a percentage of users.
// This takes a value between 0 and 100 which determines the probability for
// the callstats to be enabled.
// callStatsThreshold: 5 // enable callstats for 5% of the users.
},
// Feature Flags.
flags: {
// Enables source names in the signaling.
// sourceNameSignaling: false,
// callStatsThreshold: 5, // enable callstats for 5% of the users.
},
// Disables moderator indicators.
@@ -107,7 +116,7 @@ var config = {
// Can be either 'recording' - screensharing screenshots are taken
// only when the recording is also on,
// or 'always' - screensharing screenshots are always taken.
// mode: 'recording'
// mode: 'recording',
// }
// Disables ICE/UDP by filtering out local and remote UDP candidates in
@@ -129,6 +138,7 @@ var config = {
// Disable measuring of audio levels.
// disableAudioLevels: false,
// audioLevelsInterval: 200,
// Enabling this will run the lib-jitsi-meet no audio detection module which
@@ -164,16 +174,19 @@ var config = {
// Enabling it (with #params) will disable local audio output of remote
// participants and to enable it back a reload is needed.
// startSilent: false
// startSilent: false,
// Enables support for opus-red (redundancy for Opus).
// enableOpusRed: false,
// Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio.
// Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.
// Specify enableOpusDtx to enable support for opus-dtx where
// audio packets wont be transmitted while participant is silent or muted.
// audioQuality: {
// stereo: false,
// opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range.
// opusMaxAverageBitrate: null, // Value to fit the 6000 to 510000 range.
// enableOpusDtx: false,
// },
// Video
@@ -184,15 +197,35 @@ var config = {
// Specifies whether the raised hand will hide when someone becomes a dominant speaker or not
// disableRemoveRaisedHandOnFocus: false,
// speakerStats: {
// // Specifies whether the speaker stats is enable or not.
// disabled: false,
// // Specifies whether there will be a search field in speaker stats or not.
// disableSearch: false,
// // Specifies whether participants in speaker stats should be ordered or not, and with what priority.
// // 'role', <- Moderators on top.
// // 'name', <- Alphabetically by name.
// // 'hasLeft', <- The ones that have left in the bottom.
// order: [
// 'role',
// 'name',
// 'hasLeft',
// ],
// },
// DEPRECATED. Please use speakerStats.disableSearch instead.
// Specifies whether there will be a search field in speaker stats or not
// disableSpeakerStatsSearch: false,
// DEPRECATED. Please use speakerStats.order .
// Specifies whether participants in speaker stats should be ordered or not, and with what priority
// speakerStatsOrder: [
// 'role', <- Moderators on top
// 'name', <- Alphabetically by name
// 'hasLeft', <- The ones that have left in the bottom
// ] <- the order of the array elements determines priority
// ], <- the order of the array elements determines priority
// How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD.
// Use -1 to disable.
@@ -208,9 +241,9 @@ var config = {
// height: {
// ideal: 720,
// max: 720,
// min: 240
// }
// }
// min: 240,
// },
// },
// },
// Enable / disable simulcast support.
@@ -245,7 +278,7 @@ var config = {
// Optional desktop sharing frame rate options. Default value: min:5, max:5.
// desktopSharingFrameRate: {
// min: 5,
// max: 5
// max: 5,
// },
// This option has been deprecated since it is no longer supported as per the w3c spec.
@@ -257,49 +290,115 @@ var config = {
// Recording
// Whether to enable file recording or not.
// DEPRECATED. Use recordingService.enabled instead.
// fileRecordingsEnabled: false,
// Enable the dropbox integration.
// dropbox: {
// appKey: '<APP_KEY>' // Specify your app key here.
// appKey: '<APP_KEY>', // Specify your app key here.
// // A URL to redirect the user to, after authenticating
// // by default uses:
// // 'https://jitsi-meet.example.com/static/oauth.html'
// redirectURI:
// 'https://jitsi-meet.example.com/subfolder/static/oauth.html'
// 'https://jitsi-meet.example.com/subfolder/static/oauth.html',
// },
// When integrations like dropbox are enabled only that will be shown,
// by enabling fileRecordingsServiceEnabled, we show both the integrations
// and the generic recording service (its configuration and storage type
// depends on jibri configuration)
// recordingService: {
// // When integrations like dropbox are enabled only that will be shown,
// // by enabling fileRecordingsServiceEnabled, we show both the integrations
// // and the generic recording service (its configuration and storage type
// // depends on jibri configuration)
// enabled: false,
// // Whether to show the possibility to share file recording with other people
// // (e.g. meeting participants), based on the actual implementation
// // on the backend.
// sharingEnabled: false,
// // Hide the warning that says we only store the recording for 24 hours.
// hideStorageWarning: false,
// },
// DEPRECATED. Use recordingService.enabled instead.
// fileRecordingsServiceEnabled: false,
// Whether to show the possibility to share file recording with other people
// (e.g. meeting participants), based on the actual implementation
// on the backend.
// DEPRECATED. Use recordingService.sharingEnabled instead.
// fileRecordingsServiceSharingEnabled: false,
// Whether to enable live streaming or not.
// Local recording configuration.
// localRecording: {
// // Whether to disable local recording or not.
// disable: false,
// // Whether to notify all participants when a participant is recording locally.
// notifyAllParticipants: false,
// // Whether to disable the self recording feature (only local participant streams).
// disableSelfRecording: false,
// },
// Customize the Live Streaming dialog. Can be modified for a non-YouTube provider.
// liveStreaming: {
// // Whether to enable live streaming or not.
// enabled: false,
// // Terms link
// termsLink: 'https://www.youtube.com/t/terms',
// // Data privacy link
// dataPrivacyLink: 'https://policies.google.com/privacy',
// // RegExp string that validates the stream key input field
// validatorRegExpString: '^(?:[a-zA-Z0-9]{4}(?:-(?!$)|$)){4}',
// // Documentation reference for the live streaming feature.
// helpLink: 'https://jitsi.org/live'
// },
// DEPRECATED. Use liveStreaming.enabled instead.
// liveStreamingEnabled: false,
// Transcription (in interface_config,
// subtitles and buttons can be configured)
// DEPRECATED. Use transcription.enabled instead.
// transcribingEnabled: false,
// If true transcriber will use the application language.
// The application language is either explicitly set by participants in their settings or automatically
// detected based on the environment, e.g. if the app is opened in a chrome instance which is using french as its
// default language then transcriptions for that participant will be in french.
// Defaults to true.
// DEPRECATED. Use transcription.useAppLanguage instead.
// transcribeWithAppLanguage: true,
// Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false.
// Available languages can be found in
// ./src/react/features/transcribing/transcriber-langs.json.
// DEPRECATED. Use transcription.preferredLanguage instead.
// preferredTranscribeLanguage: 'en-US',
// Enables automatic turning on captions when recording is started
// DEPRECATED. Use transcription.autoCaptionOnRecord instead.
// autoCaptionOnRecord: false,
// Transcription options.
// transcription: {
// // Whether the feature should be enabled or not.
// enabled: false,
// // Translation languages.
// // Available languages can be found in
// // ./src/react/features/transcribing/translation-languages.json.
// translationLanguages: ['en', 'es', 'fr', 'ro'],
// // Important languages to show on the top of the language list.
// translationLanguagesHead: ['en'],
// // If true transcriber will use the application language.
// // The application language is either explicitly set by participants in their settings or automatically
// // detected based on the environment, e.g. if the app is opened in a chrome instance which
// // is using french as its default language then transcriptions for that participant will be in french.
// // Defaults to true.
// useAppLanguage: true,
// // Transcriber language. This settings will only work if "useAppLanguage"
// // is explicitly set to false.
// // Available languages can be found in
// // ./src/react/features/transcribing/transcriber-langs.json.
// preferredLanguage: 'en-US',
// // Disable start transcription for all participants.
// disableStartForAll: false,
// // Enables automatic turning on captions when recording is started
// autoCaptionOnRecord: false,
// },
// Misc
// Default value for the channel "last N" attribute. -1 for unlimited.
@@ -332,7 +431,7 @@ var config = {
// 30: 15,
// 50: 10,
// 70: 5,
// 90: 2
// 90: 2,
// },
// Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent',
@@ -361,7 +460,7 @@ var config = {
// // This will result in Safari not being able to decode video from endpoints sending VP9 video.
// // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the
// // preferred codec and goes back to the preferred codec when that endpoint leaves.
// // enforcePreferredCodec: false,
// enforcePreferredCodec: false,
//
// // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for
// // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values
@@ -372,18 +471,18 @@ var config = {
// H264: {
// low: 200000,
// standard: 500000,
// high: 1500000
// high: 1500000,
// },
// VP8 : {
// low: 200000,
// standard: 500000,
// high: 1500000
// high: 1500000,
// },
// VP9: {
// low: 100000,
// standard: 300000,
// high: 1200000
// }
// high: 1200000,
// },
// },
//
// // The options can be used to override default thresholds of video thumbnail heights corresponding to
@@ -398,19 +497,16 @@ var config = {
// // the high quality.
// minHeightForQualityLvl: {
// 360: 'standard',
// 720: 'high'
// 720: 'high',
// },
//
// // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas
// // for the presenter mode (camera picture-in-picture mode with screenshare).
// resizeDesktopForPresenter: false
// },
// Notification timeouts
// notificationTimeouts: {
// short: 2500,
// medium: 5000,
// long: 10000
// long: 10000,
// },
// // Options for the recording limit notification.
@@ -425,7 +521,7 @@ var config = {
// appName: 'Unlimited recordings APP',
//
// // The URL of the app with unlimited recordings.
// appURL: 'https://unlimited.recordings.app.com/'
// appURL: 'https://unlimited.recordings.app.com/',
// },
// Disables or enables RTX (RFC 4588) (defaults to false).
@@ -525,12 +621,9 @@ var config = {
// Hides the email section under profile settings.
// hideEmailInSettings: false,
// Whether or not some features are checked based on token.
// enableFeaturesBasedOnToken: false,
// When enabled the password used for locking a room is restricted to up to the number of digits specified
// roomPasswordNumberOfDigits: 10,
// default: roomPasswordNumberOfDigits: false,
// roomPasswordNumberOfDigits: 10,
// Message to show the users. Example: 'The service will be down for
// maintenance at 01:00 AM GMT,
@@ -545,12 +638,16 @@ var config = {
// // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
// // This replaces `prejoinPageEnabled`.
// enabled: true,
// // Hides the participant name editing field in the prejoin screen.
// // If requireDisplayName is also set as true, a name should still be provided through
// // either the jwt or the userInfo from the iframe api init object in order for this to have an effect.
// hideDisplayName: false,
// // List of buttons to hide from the extra join options dropdown.
// hideExtraJoinButtons: ['no-audio', 'by-phone']
// hideExtraJoinButtons: ['no-audio', 'by-phone'],
// },
// When 'true', the user cannot edit the display name.
// (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.)
// (Mainly useful when used in conjunction with the JWT so the JWT name becomes read only.)
// readOnlyName: false,
// If etherpad integration is enabled, setting this to true will
@@ -572,8 +669,17 @@ var config = {
// Array with avatar URL prefixes that need to use CORS.
// corsAvatarURLs: [ 'https://www.gravatar.com/avatar/' ],
// Base URL for a Gravatar-compatible service. Defaults to libravatar.
// gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
// Base URL for a Gravatar-compatible service. Defaults to Gravatar.
// DEPRECATED! Use `gravatar.baseUrl` instead.
// gravatarBaseURL: 'https://www.gravatar.com/avatar/',
// Setup for Gravatar-compatible services.
// gravatar: {
// // Defaults to Gravatar.
// baseUrl: 'https://www.gravatar.com/avatar/',
// // True if Gravatar should be disabled.
// disabled: false,
// },
// App name to be displayed in the invitation email subject, as an alternative to
// interfaceConfig.APP_NAME.
@@ -595,6 +701,7 @@ var config = {
// 'chat',
// 'closedcaptions',
// 'desktop',
// 'dock-iframe',
// 'download',
// 'embedmeeting',
// 'etherpad',
@@ -608,8 +715,7 @@ var config = {
// 'linktosalesforce',
// 'livestreaming',
// 'microphone',
// 'mute-everyone',
// 'mute-video-everyone',
// 'noisesuppression',
// 'participants-pane',
// 'profile',
// 'raisehand',
@@ -623,23 +729,24 @@ var config = {
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'undock-iframe',
// 'videoquality',
// '__end'
// 'whiteboard',
// ],
// Holds values related to toolbar visibility control.
// toolbarConfig: {
// // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT
// // The initial numer of miliseconds for the toolbar buttons to be visible on screen.
// // The initial number of milliseconds for the toolbar buttons to be visible on screen.
// initialTimeout: 20000,
// // Moved from interfaceConfig.TOOLBAR_TIMEOUT
// // Number of miliseconds for the toolbar buttons to be visible on screen.
// // Number of milliseconds for the toolbar buttons to be visible on screen.
// timeout: 4000,
// // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE
// // Whether toolbar should be always visible or should hide after x miliseconds.
// // Whether toolbar should be always visible or should hide after x milliseconds.
// alwaysVisible: false,
// // Indicates whether the toolbar should still autohide when chat is open
// autoHideWhileChatIsOpen: false
// autoHideWhileChatIsOpen: false,
// },
// Toolbar buttons which have their click/tap event exposed through the API on
@@ -660,11 +767,13 @@ var config = {
// 'desktop',
// 'download',
// 'embedmeeting',
// 'end-meeting',
// 'etherpad',
// 'feedback',
// 'filmstrip',
// 'fullscreen',
// 'hangup',
// 'hangup-menu',
// 'help',
// {
// key: 'invite',
@@ -674,6 +783,7 @@ var config = {
// 'microphone',
// 'mute-everyone',
// 'mute-video-everyone',
// 'noisesuppression',
// 'participants-pane',
// 'profile',
// {
@@ -695,8 +805,8 @@ var config = {
// {
// key: 'add-passcode',
// preventExecution: false
// }
// '__end'
// },
// 'whiteboard',
// ],
// List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:
@@ -719,6 +829,7 @@ var config = {
// Application ID and Secret.
// callStatsID: '',
// callStatsSecret: '',
// callStatsApplicationLogsDisabled: false,
// The callstats initialize config params as described in the API:
// https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
@@ -736,10 +847,10 @@ var config = {
// pbxID: "PBX Identifier. Example, walmart.",
// pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
// fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
// sessionID: "Session Identifier. Example, session-12-34"
// sessionID: "Session Identifier. Example, session-12-34",
// },
// collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
// collectIP: true //enables the collection localIP address
// collectIP: true, //enables the collection localIP address
// },
// Enables sending participants' display names to callstats
@@ -748,21 +859,24 @@ var config = {
// Enables sending participants' emails (if available) to callstats and other analytics
// enableEmailInStats: false,
// Enables detecting faces of participants and get their expression and send it to other participants
// enableFacialRecognition: true,
// faceLandmarks: {
// // Enables sharing your face coordinates. Used for centering faces within a video.
// enableFaceCentering: false,
// Enables displaying facial expressions in speaker stats
// enableDisplayFacialExpressions: true,
// // Enables detecting face expressions and sharing data with other participants
// enableFaceExpressionsDetection: false,
// faceCoordinatesSharing: {
// // Enables sharing your face cordinates. Used for centering faces within a video.
// enabled: false,
// // Enables displaying face expressions in speaker stats
// enableDisplayFaceExpressions: false,
// // Minimum required face movement percentage threshold for sending new face coordinates data.
// threshold: 10,
// // Enable rtc stats for face landmarks
// enableRTCStats: false,
// // Miliseconds for processing a new image capture in order to detect face coordinates if they exist.
// captureInterval: 100
// // Minimum required face movement percentage threshold for sending new face centering coordinates data.
// faceCenteringThreshold: 10,
// // Milliseconds for processing a new image capture in order to detect face coordinates if they exist.
// captureInterval: 1000,
// },
// Controls the percentage of automatic feedback shown to participants when callstats is enabled.
@@ -824,8 +938,8 @@ var config = {
stunServers: [
// { urls: 'stun:jitsi-meet.example.com:3478' },
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
]
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' },
],
},
analytics: {
@@ -833,14 +947,18 @@ var config = {
// disabled: false,
// The Google Analytics Tracking ID:
// googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1'
// googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1',
// Matomo configuration:
// matomoEndpoint: 'https://your-matomo-endpoint/',
// matomoSiteID: '42',
// The Amplitude APP Key:
// amplitudeAPPKey: '<APP_KEY>'
// amplitudeAPPKey: '<APP_KEY>',
// Obfuscates room name sent to analytics (amplitude, rtcstats)
// Default value is false.
// obfuscateRoomName: false,
// Configuration for the rtcstats server:
// By enabling rtcstats server every time a conference is joined the rtcstats
@@ -848,19 +966,24 @@ var config = {
// PeerConnection states along with getStats metrics polled at the specified
// interval.
// rtcstatsEnabled: false,
// rtcstatsStoreLogs: false,
// In order to enable rtcstats one needs to provide a endpoint url.
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
// The interval at which rtcstats will poll getStats, defaults to 1000ms.
// The interval at which rtcstats will poll getStats, defaults to 10000ms.
// If the value is set to 0 getStats won't be polled and the rtcstats client
// will only send data related to RTCPeerConnection events.
// rtcstatsPolIInterval: 1000,
// rtcstatsPollInterval: 10000,
// This determines if rtcstats sends the SDP to the rtcstats server or replaces
// all SDPs with an empty string instead.
// rtcstatsSendSdp: false,
// Array of script URLs to load as lib-jitsi-meet "analytics handlers".
// scriptURLs: [
// "libs/analytics-ga.min.js", // google-analytics
// "https://example.com/my-custom-analytics.js"
// "https://example.com/my-custom-analytics.js",
// ],
},
@@ -869,11 +992,11 @@ var config = {
// Information about the jitsi-meet instance we are connecting to, including
// the user region as seen by the server.
deploymentInfo: {
// shard: "shard1",
// region: "europe",
// userRegion: "asia"
},
// deploymentInfo: {
// shard: "shard1",
// region: "europe",
// userRegion: "asia",
// },
// Array<string> of disabled sounds.
// Possible values:
@@ -916,49 +1039,42 @@ var config = {
// chromeExtensionBanner: {
// // The chrome extension to be installed address
// url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb',
// edgeUrl: 'https://microsoftedge.microsoft.com/addons/detail/jitsi-meetings/eeecajlpbgjppibfledfihobcabccihn',
// // Extensions info which allows checking if they are installed or not
// chromeExtensionsInfo: [
// {
// id: 'kglhbbefdnlheedjiejgomgmfplipfeb',
// path: 'jitsi-logo-48x48.png'
// }
// path: 'jitsi-logo-48x48.png',
// },
// // Edge extension info
// {
// id: 'eeecajlpbgjppibfledfihobcabccihn',
// path: 'jitsi-logo-48x48.png',
// },
// ]
// },
// Local Recording
//
// localRecording: {
// Enables local recording.
// Additionally, 'localrecording' (all lowercase) needs to be added to
// the `toolbarButtons`-array for the Local Recording button to show up
// on the toolbar.
//
// enabled: true,
//
// The recording format, can be one of 'ogg', 'flac' or 'wav'.
// format: 'flac'
//
// },
// e2ee: {
// labels,
// externallyManagedKey: false
// externallyManagedKey: false,
// },
// Options related to end-to-end (participant to participant) ping.
// e2eping: {
// // The interval in milliseconds at which pings will be sent.
// // Defaults to 10000, set to <= 0 to disable.
// pingInterval: 10000,
// // Whether ene-to-end pings should be enabled.
// enabled: false,
//
// // The interval in milliseconds at which analytics events
// // with the measured RTT will be sent. Defaults to 60000, set
// // to <= 0 to disable.
// analyticsInterval: 60000,
// },
// // The number of responses to wait for.
// numRequests: 5,
//
// // The max conference size in which e2e pings will be sent.
// maxConferenceSize: 200,
//
// // The maximum number of e2e ping messages per second for the whole conference to aim for.
// // This is used to control the pacing of messages in order to reduce the load on the backend.
// maxMessagesPerSecond: 250,
// },
// If set, will attempt to use the provided video input device label when
// triggering a screenshare, instead of proceeding through the normal flow
@@ -984,7 +1100,8 @@ var config = {
// Disables all invite functions from the app (share, invite, dial out...etc)
// disableInviteFunctions: true,
// Disables storing the room name to the recents list
// Disables storing the room name to the recents list. When in an iframe this is ignored and
// the room is never stored in the recents list.
// doNotStoreRoom: true,
// Deployment specific URLs.
@@ -994,7 +1111,7 @@ var config = {
// userDocumentationURL: 'https://docs.example.com/video-meetings.html',
// // If specified a 'Download our apps' button will be displayed in the overflow menu with a link
// // to the specified URL for an app download page.
// downloadAppsUrl: 'https://docs.example.com/our-apps.html'
// downloadAppsUrl: 'https://docs.example.com/our-apps.html',
// },
// Options related to the remote participant menu.
@@ -1006,7 +1123,7 @@ var config = {
// // If set to true the 'Grant moderator' button will be disabled.
// disableGrantModerator: true,
// // If set to true the 'Send private message' button will be disabled.
// disablePrivateChat: true
// disablePrivateChat: true,
// },
// Endpoint that enables support for salesforce integration with in-meeting resource linking
@@ -1022,7 +1139,7 @@ var config = {
// disableRemoteMute: true,
// Enables support for lip-sync for this client (if the browser supports it).
// enableLipSync: false
// enableLipSync: false,
/**
External API url used to receive branding specific information.
@@ -1051,7 +1168,7 @@ var config = {
// For a list of all possible theme tokens and their current defaults, please check:
// https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json
// For a short explanations on each of the tokens, please check:
// https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.js
// https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.ts
// IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code
// or they are partially applied.
customTheme: {
@@ -1065,15 +1182,15 @@ var config = {
field02Hover: 'red',
action01: 'green',
action01Hover: 'lightgreen',
action02Disabled: 'beige',
disabled01: 'beige',
success02: 'cadetblue',
action02Hover: 'aliceblue'
action02Hover: 'aliceblue',
},
typography: {
labelRegular: {
fontSize: 25,
lineHeight: 30,
fontWeight: 500
fontWeight: 500,
}
}
}
@@ -1081,12 +1198,24 @@ var config = {
*/
// dynamicBrandingUrl: '',
// Options related to the participants pane.
// participantsPane: {
// // Hides the moderator settings tab.
// hideModeratorSettingsTab: false,
// // Hides the more actions button.
// hideMoreActionsButton: false,
// // Hides the mute all button.
// hideMuteAllButton: false,
// },
// Options related to the breakout rooms feature.
// breakoutRooms: {
// // Hides the add breakout room button. This replaces `hideAddRoomButton`.
// hideAddRoomButton: false,
// // Hides the auto assign participants button.
// hideAutoAssignButton: false,
// // Hides the join breakout room button.
// hideJoinRoomButton: false
// hideJoinRoomButton: false,
// },
// When true the user cannot add more images to be used as virtual background.
@@ -1115,7 +1244,7 @@ var config = {
// If a label's id is not in any of the 2 arrays, it will not be visible at all on the header.
// conferenceInfo: {
// // those labels will not be hidden in tandem with the toolbox.
// alwaysVisible: ['recording', 'local-recording', 'raised-hands-count'],
// alwaysVisible: ['recording', 'raised-hands-count'],
// // those labels will be auto-hidden in tandem with the toolbox buttons.
// autoHide: [
// 'subject',
@@ -1125,7 +1254,8 @@ var config = {
// 'transcribing',
// 'video-quality',
// 'insecure-room',
// 'highlight-moment'
// 'highlight-moment',
// 'top-panel-toggle',
// ]
// },
@@ -1152,21 +1282,25 @@ var config = {
// is not persisting the local storage inside the iframe.
// useHostPageLocalStorage: true,
// etherpad ("shared document") integration.
// Etherpad ("shared document") integration.
//
// If set, add a "Open shared document" link to the bottom right menu that
// will open an etherpad document.
// etherpad_base: 'https://your-etherpad-installati.on/p/',
// To enable information about dial-in access to meetings you need to provide
// dialInNumbersUrl and dialInConfCodeUrl.
// dialInNumbersUrl returns a json array of numbers that can be used for dial-in.
// {"countryCode":"US","tollFree":false,"formattedNumber":"+1 123-456-7890"}
// dialInConfCodeUrl is the conference mapper converting a meeting id to a PIN used for dial-in
// or the other way around (more info in resources/cloud-api.swagger)
// List of undocumented settings used in jitsi-meet
/**
_immediateReloadThreshold
debug
debugAudioLevels
deploymentInfo
dialInConfCodeUrl
dialInNumbersUrl
dialOutAuthUrl
dialOutCodesUrl
disableRemoteControl
@@ -1251,7 +1385,6 @@ var config = {
// 'liveStreaming.unavailableTitle', // shown when livestreaming service is not reachable
// 'lobby.joinRejectedMessage', // shown when while in a lobby, user's request to join is rejected
// 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied
// 'localRecording.localRecording', // shown when a local recording is started
// 'notify.chatMessages', // shown when receiving chat messages while the chat window is closed
// 'notify.disconnected', // shown when a participant has left
// 'notify.connectedOneMember', // show when a participant joined
@@ -1261,6 +1394,7 @@ var config = {
// 'notify.leftTwoMembers', // show when two participants left simultaneously
// 'notify.leftThreePlusMembers', // show when more than 2 participants left simultaneously
// 'notify.grantedTo', // shown when moderator rights were granted to a participant
// 'notify.hostAskedUnmute', // shown to participant when host asks them to unmute
// 'notify.invitedOneMember', // shown when 1 participant has been invited
// 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited
// 'notify.invitedTwoMembers', // shown when 2 participants have been invited
@@ -1281,7 +1415,7 @@ var config = {
// 'notify.raisedHand', // shown when a partcipant used raise hand,
// 'notify.startSilentTitle', // shown when user joined with no audio
// 'notify.unmute', // shown to moderator when user raises hand during AV moderation
// 'notify.hostAskedUnmute', // shown to participant when host asks them to unmute
// 'notify.videoMutedRemotelyTitle', // shown when user's video is muted by a remote party,
// 'prejoin.errorDialOut',
// 'prejoin.errorDialOutDisconnected',
// 'prejoin.errorDialOutFailed',
@@ -1294,9 +1428,12 @@ var config = {
// 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected
// 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone
// 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted
// 'transcribing.failedToStart' // shown when transcribing fails to start
// 'transcribing.failedToStart', // shown when transcribing fails to start
// ],
// List of notifications to be disabled. Works in tandem with the above setting.
// disabledNotifications: [],
// Prevent the filmstrip from autohiding when screen width is under a certain threshold
// disableFilmstripAutohiding: false,
@@ -1304,16 +1441,30 @@ var config = {
// // Disables user resizable filmstrip. Also, allows configuration of the filmstrip
// // (width, tiles aspect ratios) through the interfaceConfig options.
// disableResizable: false,
// // Disables the stage filmstrip
// // (displaying multiple participants on stage besides the vertical filmstrip)
// disableStageFilmstrip: false,
// // Default number of participants that can be displayed on stage.
// // The user can change this in settings. Number must be between 1 and 6.
// stageFilmstripParticipants: 1,
// // Disables the top panel (only shown when a user is sharing their screen).
// disableTopPanel: false,
// // The minimum number of participants that must be in the call for
// // the top panel layout to be used.
// minParticipantCountForTopPanel: 50,
// },
// Tile view related config options.
// tileView: {
// // The optimal number of tiles that are going to be shown in tile view. Depending on the screen size it may
// // not be possible to show the exact number of participants specified here.
// numberOfVisibleTiles: 25
// numberOfVisibleTiles: 25,
// },
// Specifies whether the chat emoticons are disabled or not
// disableChatSmileys: false,
@@ -1328,15 +1479,42 @@ var config = {
// // - chat: show the GIF as a message in chat
// // - all: all of the above. This is the default option
// displayMode: 'all',
// // How long the GIF should be displayed on the tile (in miliseconds).
// tileTime: 5000
// // How long the GIF should be displayed on the tile (in milliseconds).
// tileTime: 5000,
// // Limit results by rating: g, pg, pg-13, r. Default value: g.
// rating: 'pg',
// },
// Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value.
makeJsonParserHappy: 'even if last key had a trailing comma'
// Logging
// logging: {
// // Default log level for the app and lib-jitsi-meet.
// defaultLogLevel: 'trace',
// // Option to disable LogCollector (which stores the logs on CallStats).
// //disableLogCollector: true,
// // Individual loggers are customizable.
// loggers: {
// // The following are too verbose in their logging with the default level.
// 'modules/RTC/TraceablePeerConnection.js': 'info',
// 'modules/statistics/CallStats.js': 'info',
// 'modules/xmpp/strophe.util.js': 'log',
// },
// no configuration value should follow this line.
// Application logo url
// defaultLogoUrl: 'images/watermark.svg',
// Settings for the Excalidraw whiteboard integration.
// whiteboard: {
// // Whether the feature is enabled or not.
// enabled: true,
// // The server used to support whiteboard collaboration.
// // https://github.com/jitsi/excalidraw-backend
// collabServerBaseUrl: 'https://excalidraw-backend.example.com',
// },
};
/* eslint-enable no-unused-vars, no-var */
// Set the default values for JaaS customers
if (enableJaaS) {
config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids';
config.dialInConfCodeUrl = 'https://conference-mapper.jitsi.net/v1/access';
config.roomPasswordNumberOfDigits = 10; // skip re-adding it (do not remove comment)
}

View File

@@ -8,18 +8,21 @@ import { LoginDialog } from './react/features/authentication/components';
import { isTokenAuthEnabled } from './react/features/authentication/functions';
import {
connectionEstablished,
connectionFailed
} from './react/features/base/connection/actions';
connectionFailed,
constructOptions
} from './react/features/base/connection/actions.web';
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 { isFatalJitsiConnectionError } from './react/features/base/lib-jitsi-meet/functions';
import { getCustomerDetails } from './react/features/jaas/actions.any';
import { isVpaasMeeting, getJaasJWT } from './react/features/jaas/functions';
import { setPrejoinDisplayNameRequired } from './react/features/prejoin/actions';
import { getJaasJWT, isVpaasMeeting } from './react/features/jaas/functions';
import {
setPrejoinDisplayNameRequired
} from './react/features/prejoin/actions';
const logger = Logger.getLogger(__filename);
/**
@@ -81,12 +84,10 @@ function checkForAttachParametersAndConnect(id, password, connection) {
* Try to open connection using provided credentials.
* @param {string} [id]
* @param {string} [password]
* @param {string} [roomName]
* @returns {Promise<JitsiConnection>} connection if
* everything is ok, else error.
*/
export async function connect(id, password, roomName) {
const connectionConfig = Object.assign({}, config);
export async function connect(id, password) {
const state = APP.store.getState();
let { jwt } = state['features/base/jwt'];
const { iAmRecorder, iAmSipGateway } = state['features/base/config'];
@@ -100,19 +101,7 @@ export async function connect(id, password, roomName) {
}
}
// 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);
const connection = new JitsiMeetJS.JitsiConnection(null, jwt, constructOptions(state));
if (config.iAmRecorder) {
connection.addFeature(DISCO_JIBRI_FEATURE);

View File

@@ -4,11 +4,12 @@
text-align: center;
h2 {
font-size: 36px;
font-size: 48px;
color : #f2f2f2;
}
&__message {
font-size: 24px;
margin-top: 20px;
}
}
}

View File

@@ -28,7 +28,7 @@
/**
* Keep overflow menu within screen vertical bounds and make it scrollable.
*/
.toolbox-button-wth-dialog > div:nth-child(2) {
.toolbox-button-wth-dialog > div:nth-child(2) {
background: $menuBG;
max-height: calc(100vh - #{$newToolbarSizeWithPadding} - 46px);
margin-bottom: 4px;
@@ -36,19 +36,22 @@
overflow-y: auto;
}
/**
* Remove background color and box-shadow for the context menu container.
*/
.toolbox-button-wth-dialog.context-menu > div:nth-child(2) {
background: transparent;
box-shadow: none;
overflow-y: initial;
}
.audio-preview > div:nth-child(2),
.video-preview > div:nth-child(2),
.reactions-menu-popup > div:nth-child(2) {
.video-preview > div:nth-child(2) {
margin-bottom: 4px;
outline: none;
padding: 0;
}
.reactions-menu-popup > div:nth-child(2) {
margin-bottom: 6px;
box-shadow: none;
}
/**
* The following selectors keep the chat modal full-size anywhere between 100px
* and 580px for desktop or 680px for mobile.

View File

@@ -43,18 +43,6 @@ body {
outline: none;
}
/**
* AtlasKit sets a default margin on the rendered modals, so
* when the shift-right class is set when the chat opens, we
* pad the modal container in order for the modals to be centered
* while also taking the chat size into consideration.
*/
@media (min-width: 581px) {
.shift-right .atlaskit-portal > div:not(.Tooltip) {
padding-left: $sidebarWidth;
}
}
.jitsi-icon {
&-default svg {
fill: white;
@@ -194,3 +182,8 @@ form {
background: rgba(0, 0, 0, .5);
border-radius: 4px;
}
/* Necessary for the new icons to work properly. */
.jitsi-icon svg path {
fill: inherit !important;
}

View File

@@ -1,15 +1,20 @@
#sideToolbarContainer {
background-color: $chatBackgroundColor;
box-sizing: border-box;
color: #FFF;
height: 100%;
position: absolute;
top: 0;
flex-shrink: 0;
overflow: hidden;
position: relative;
transition: width .16s ease-in-out;
width: $sidebarWidth;
z-index: $sideToolbarContainerZ;
@media (max-width: 580px) {
width: 100%;
height: 100vh;
height: -webkit-fill-available;
left: 0;
position: fixed;
right: 0;
top: 0;
width: auto;
}
}
@@ -17,7 +22,7 @@
display: flex;
flex-direction: column;
// extract header + tabs height
height: calc(100% - 102px);
height: calc(100% - 119px);
}
.chat-panel-no-tabs {
@@ -25,12 +30,18 @@
height: calc(100% - 70px);
}
#chat-conversation-container {
// extract message input height
height: calc(100% - 68px);
overflow: hidden;
position: relative;
}
#chatconversation {
box-sizing: border-box;
flex: 1;
font-size: 10pt;
// extract message input height
height: calc(100% - 68px);
height: 100%;
line-height: 20px;
overflow: auto;
padding: 16px;
@@ -114,63 +125,18 @@
.chat-input-container {
padding: 0 16px 16px;
&.populated {
#chat-input {
.send-button {
background: #1B67EC;
cursor: pointer;
margin-left: 0.3rem;
@media (hover: hover) and (pointer: fine) {
&:hover {
background: #3D82FB;
}
}
&:active {
background: #0852D4;
}
path {
fill: #fff;
}
}
}
}
}
#chat-input {
border: 1px solid $chatInputSeparatorColor;
display: flex;
align-items: flex-end;
padding: 4px;
border-radius: 3px;
&:focus-within {
border: 1px solid #619CF4;
}
* {
background-color: transparent;
}
position: relative;
}
.send-button-container {
display: flex;
align-items: center;
}
.send-button {
display: flex;
align-items: center;
justify-content: center;
height: 40px;
width: 40px;
border-radius: 3px;
path {
fill: $chatInputSeparatorColor;
}
.chat-input {
flex: 1;
margin-right: 8px;
}
.smiley-button {
@@ -390,7 +356,9 @@
.smiley-input {
display: flex;
position: relative;
position: absolute;
top: 0;
left: 0;
}
.smileys-panel {
@@ -398,7 +366,7 @@
box-sizing: border-box;
background-color: rgba(0, 0, 0, .6) !important;
height: auto;
display: none;
display: flex;
overflow: hidden;
position: absolute;
width: calc(#{$sidebarWidth} - 32px);
@@ -413,11 +381,6 @@
*/
transition: max-height 0.3s;
&.show-smileys {
display: flex;
max-height: 500%;
}
#smileysContainer {
background-color: $chatBackgroundColor;
border-top: 1px solid $chatInputSeparatorColor;
@@ -568,41 +531,3 @@
background: #36383C;
border-radius: 3px;
}
.chat-tabs-container {
width: 100%;
border-bottom: thin solid #292929;
display: flex;
justify-content: space-around;
}
.chat-tab {
font-size: 1.2em;
padding-bottom: 0.5em;
width: 50%;
text-align: center;
color: #8B8B8B;
cursor: pointer;
}
.chat-tab-focus {
border-bottom-style: solid;
color: #FFF;
}
.chat-tab-title {
margin-right: 8px;
}
.chat-tab-badge {
background-color: #165ecc;
border-radius: 50%;
box-sizing: border-box;
font-weight: 700;
overflow: hidden;
text-align: center;
text-overflow: ellipsis;
vertical-align: middle;
padding: 0 4px;
color: #FFF;
}

View File

@@ -1,50 +0,0 @@
%connection-info {
font-size: 12px;
font-weight: 400;
td {
padding: 2px 0;
}
}
.connection-info
{
@extend %connection-info;
> table {
white-space: nowrap;
@extend %connection-info;
}
td:nth-child(n-1) {
padding-left: 5px;
}
&__icon {
margin-right: 2px;
}
&__download
{
@extend .connection-info__icon;
}
&__status
{
font-weight: bold;
}
&__upload
{
@extend .connection-info__icon;
}
&__mobile {
margin: 15px;
}
.connection-actions {
margin: 10px auto;
text-align: center;
}
}

View File

@@ -24,8 +24,6 @@
}
.drawer-menu {
background: #242528;
border-radius: 16px 16px 0 0;
overflow-y: auto;
margin-bottom: env(safe-area-inset-bottom, 0);
width: 100%;

View File

@@ -193,3 +193,17 @@
@mixin transparentBg($color, $alpha) {
background-color: rgba(red($color), green($color), blue($color), $alpha);
}
/**
* Change the direction of the current element to LTR, but do not change the direction
* of its children; Keep them RTL.
*/
@mixin ltr {
body[dir=rtl] & {
direction: ltr;
& > * {
direction: rtl;
}
}
}

View File

@@ -6,10 +6,6 @@
transition: width .16s ease-in-out;
width: 315px;
z-index: $zindex0;
&--closed {
width: 0;
}
}
.participants_pane-content {
@@ -34,11 +30,6 @@
right: 0;
top: 0;
width: auto;
&--closed {
display: none;
width: auto;
}
}
.participants_pane-content {

View File

@@ -28,32 +28,23 @@
}
.poll-answer-container {
display: flex;
padding: 4px;
background: #3D3D3D;
border-radius: 3px;
margin-bottom: 8px;
@media (max-width: 580px) {
&> span {
padding: 8px 0;
}
&> span {
padding: 8px 0;
}
svg {
margin-top: 6px;
}
svg {
margin-top: 6px;
}
}
}
.poll-answer-option {
font-weight: 400;
display: block;
margin: 4px;
@media (max-width: 580px) {
font-size: 16px;
margin: 11px 8px
}
}
.poll-answer-field-list, .poll-answer-list, .poll-result-list {
list-style-type: none;
padding: 0;
@@ -84,11 +75,11 @@ ol.poll-result-list {
}
.poll-create-option-row {
display: 'flex';
display: flex;
margin-bottom: 4;
}
// Needeed to override atlaskit default blue color
// Needed to override atlaskit default blue color
.poll-create-container .jsYMHu {
background: #292929;
border-color: #808090;
@@ -291,6 +282,10 @@ ol.poll-result-list {
h1, strong ,span {
color: #fff;
}
button > span {
color: inherit;
}
}
.poll-create-label {
@@ -315,7 +310,7 @@ ol.poll-result-list {
}
#polls-panel {
height: calc(100% - 102px);
height: calc(100% - 119px);
}
.poll-container {
@@ -363,82 +358,3 @@ ol.poll-result-list {
.poll-answer-footer {
padding: 8px 0 0 0;
}
.poll-button {
align-items: center;
border: 0;
border-radius: 6px;
font-size: 14px;
font-weight: 600;
display: flex;
justify-content: center;
min-height: 40px;
width: 100%;
&:disabled {
cursor: initial;
}
@media (max-width: 580px) {
min-height: 48px;
}
}
.poll-button-primary {
background-color: #0056E0;
&:hover {
background-color: #246FE5;
}
&:active {
background-color: #0045B3;
}
&:focus {
background-color: #0045B3;
border: 3px solid #99BBF3;
}
&:disabled {
background-color: #00225A;
color: #858585;
}
}
.poll-button-secondary {
background-color: #3D3D3D;
&:hover {
background-color: #525252;
}
&:active {
background-color: #292929;
}
&:focus {
background-color: #292929;
border: 3px solid #858585;
}
&:disabled {
background-color: #141414;
color: #858585;
}
}
.poll-button-short {
max-width: 132px;
}
.poll-button-shortest {
max-width: 117px;
}
.poll-button-short,
.poll-button-shortest {
@media (max-width: 580px) {
min-width: 49%;
}
}

View File

@@ -45,3 +45,7 @@
margin: -16px -24px;
z-index: $popoverZ;
}
.excalidraw .popover {
margin: 0;
}

View File

@@ -104,6 +104,10 @@
}
}
.reactions-menu-container {
padding-bottom: 6px;
}
.reactions-animations-container {
position: absolute;
width: 20%;
@@ -112,8 +116,7 @@
height: 0;
}
.reactions-menu-popup-container,
.reactions-menu-popup {
.reactions-menu-popup-container {
display: inline-block;
position: relative;
}

View File

@@ -19,11 +19,34 @@
font-size: 14px;
margin-left: 16px;
}
&.space-top {
margin-top: 10px;
}
}
.recording-header-line {
border-top: 1px solid #5e6d7a;
padding-top: 32px;
padding-top: 16px;
margin-top: 16px;
}
.local-recording-warning {
margin-top: 8px;
display: block;
font-size: 14px;
line-height: 20px;
padding: 8px 16px;
&.text {
color: #fff;
background-color: #3D3D3D;
}
&.notification {
color: #040404;
background-color: #F8AE1A;
}
}
.recording-switch-disabled {
@@ -40,7 +63,7 @@
border-radius: 4px;
height: 40px;
justify-content: center;
width: 56px;
width: 42px;
}
.cloud-content-recording-icon-container {
@@ -52,7 +75,7 @@
}
.jitsi-recording-header {
margin-bottom: 32px;
margin-bottom: 16px;
}
.jitsi-content-recording-icon-container-with-switch {

View File

@@ -25,7 +25,7 @@
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
border-radius: 3px;
cursor: pointer;
padding: 4px;
padding: 1px;
position: absolute;
right: -4px;
top: -3px;
@@ -60,3 +60,15 @@
}
}
}
.settings-button-small-icon-container {
position: absolute;
right: -4px;
top: -3px;
& .settings-button-small-icon {
position: relative;
top: 0;
right: 0;
}
}

View File

@@ -12,6 +12,7 @@
&#autoHide.with-always-on {
overflow: hidden;
animation: hideSubject forwards .6s ease-out;
margin-left: 4px;
& > .subject-info-container {
justify-content: flex-start;
@@ -88,10 +89,6 @@
max-width: calc(100% - 24px);
}
.shift-right .details-container {
margin-left: calc(#{$sidebarWidth} / 2);
}
@keyframes hideSubject {
0% {
max-width: 100%;

View File

@@ -39,13 +39,6 @@
&.no-buttons {
display: none;
}
@media (min-width: 581px) {
&.shift-right {
margin-left: $sidebarWidth;
width: calc(100% - #{$sidebarWidth});
}
}
}
.toolbox-content {
@@ -99,6 +92,10 @@
max-width: 100%;
pointer-events: all;
border-radius: 6px;
.toolbox-content-items {
@include ltr;
}
}
.toolbox-content-wrapper::after {
@@ -137,6 +134,20 @@
}
}
.hangup-menu-button {
background-color: $hangupMenuButtonColor;
@media (hover: hover) and (pointer: fine) {
&:hover {
background-color: $hangupMenuButtonHoverColor;
}
}
svg {
fill: #fff;
}
}
.profile-button-avatar {
align-items: center;
}
@@ -183,6 +194,7 @@
}
.toolbox-content-items {
@include ltr;
border-radius: 0;
display: flex;
justify-content: space-evenly;

View File

@@ -6,7 +6,8 @@
$baseFontFamily: -apple-system, BlinkMacSystemFont, 'open_sanslight', 'Helvetica Neue', Helvetica, Arial, sans-serif;
$hangupColor:#DD3849;
$hangupHoverColor: #F25363;
$hangupFontSize: 2em;
$hangupMenuButtonColor:#0056E0;;
$hangupMenuButtonHoverColor: #246FE5;
/**
* Size variables.
@@ -43,7 +44,6 @@ $newToolbarSizeMobile: 60px;
$newToolbarSizeWithPadding: calc(#{$newToolbarSize} + 24px);
$toolbarTitleFontSize: 19px;
$overflowMenuItemColor: #fff;
$overflowMenuItemBackground: #36383C;
/**
@@ -86,7 +86,7 @@ $chatPrivateMessageBackgroundColor: rgb(153, 69, 77);
$chatRemoteMessageBackgroundColor: #242528;
$sidebarWidth: 315px;
/**
/**
* Misc.
*/
$borderRadius: 4px;
@@ -101,8 +101,6 @@ $zindex0: 0;
$zindex1: 1;
$zindex2: 2;
$zindex3: 3;
$toolbarBackgroundZ: 4;
$labelsZ: 5;
$subtitlesZ: 7;
$popoverZ: 8;
$reloadZ: 20;
@@ -111,10 +109,7 @@ $ringingZ: 300;
$sideToolbarContainerZ: 300;
$toolbarZ: 250;
$drawerZ: 351;
$tooltipsZ: 401;
$dropdownMaskZ: 900;
$dropdownZ: 901;
$centeredVideoLabelZ: 1010;
$overlayZ: 1016;
// Place filmstrip videos over toolbar in order
// to make connection info visible.
@@ -248,7 +243,6 @@ $chromeExtensionBannerRightInMeeeting: 10px;
/**
* media type thresholds
*/
$smallScreen: 700px;
$verySmallScreen: 500px;
/**

View File

@@ -8,6 +8,7 @@
border-radius: 3px;
overflow: auto;
padding: 8px;
margin-bottom: 8px;
}
&-entry {

View File

@@ -6,6 +6,7 @@
}
#layout_wrapper {
@include ltr;
display: flex;
height: 100%;
}
@@ -44,15 +45,6 @@
position: relative;
text-align: center;
overflow: 'hidden';
@media (min-width: 581px) {
&.shift-right {
&#largeVideoContainer {
margin-left: $sidebarWidth;
width: calc(100% - #{$sidebarWidth});
}
}
}
}
#localVideoWrapper {

View File

@@ -68,6 +68,12 @@
}
.buttons {
margin-top: 16px;
display: flex;
align-items: center;
&>button:first-child {
margin-right: 8px;
}
}
}
}

View File

@@ -48,7 +48,8 @@
/**
* The local video identifier.
*/
&#filmstripLocalVideo {
&#filmstripLocalVideo,
&#filmstripLocalScreenShare {
align-self: flex-end;
display: block;
margin-bottom: 8px;

View File

@@ -5,8 +5,6 @@
.remote-videos {
align-items: center;
box-sizing: border-box;
display: flex;
flex-direction: column;
overscroll-behavior: contain;
}
@@ -41,17 +39,6 @@
top: 0;
width: 100%;
@media (min-width: 581px) {
&.shift-right {
margin-left: $sidebarWidth;
width: calc(100% - #{$sidebarWidth});
.remote-videos {
width: calc(100vw - #{$sidebarWidth});
}
}
}
&.collapse {
#remoteVideos {
height: calc(100% - #{$newToolbarSizeMobile}) !important;

View File

@@ -2,7 +2,9 @@
* Various overrides outside of the filmstrip to style the app to support a
* tiled thumbnail experience.
*/
.tile-view {
.tile-view,
.whiteboard-container,
.stage-filmstrip {
/**
* Let the avatar grow with the tile.
*/
@@ -15,9 +17,9 @@
* Hide various features that should not be displayed while in tile view.
*/
#dominantSpeaker,
#filmstripLocalVideoThumbnail,
#largeVideoElementsContainer,
#sharedVideo {
#sharedVideo,
.stage-participant-label {
display: none;
}

View File

@@ -1,156 +1,177 @@
.vertical-filmstrip .filmstrip {
&.hide-videos {
.vertical-filmstrip, .stage-filmstrip {
span:not(.tile-view) .filmstrip {
&.hide-videos {
.remote-videos {
& > div {
opacity: 0;
pointer-events: none;
}
}
}
/*
* Firefox sets flex items to min-height: auto and min-width: auto,
* preventing flex children from shrinking like they do on other browsers.
* Setting min-height and min-width 0 is a workaround for the issue so
* Firefox behaves like other browsers.
* https://bugzilla.mozilla.org/show_bug.cgi?id=1043520
*/
@mixin minHWAutoFix() {
min-height: 0;
min-width: 0;
}
@extend %align-right;
align-items: flex-end;
bottom: 0;
box-sizing: border-box;
display: flex;
flex-direction: column-reverse;
height: 100%;
width: 100%;
padding: 0;
/**
* fixed positioning is necessary for remote menus and tooltips to pop
* out of the scrolling filmstrip. AtlasKit dialogs and tooltips use
* a library called popper which will position its elements fixed if
* any parent is also fixed.
*/
position: fixed;
top: 0;
right: 0;
z-index: $filmstripVideosZ;
&.no-vertical-padding {
padding: 0;
}
/**
* Hide videos by making them slight to the right.
*/
.filmstrip__videos {
@extend %align-right;
bottom: 0;
padding: 0;
position:relative;
right: 0;
width: auto;
/**
* An id selector is used to match id specificity with existing
* filmstrip styles.
*/
&#remoteVideos {
border: $thumbnailsBorder solid transparent;
padding-left: 0;
border-left: 0;
width: 100%;
height: 100%;
justify-content: center;
}
}
/**
* Re-styles the local Video to better fit vertical filmstrip layout.
*/
#filmstripLocalVideo {
align-self: initial;
margin-bottom: 5px;
display: flex;
flex-direction: column-reverse;
height: auto;
justify-content: flex-start;
width: 100%;
#filmstripLocalVideoThumbnail {
width: calc(100% - 15px);
.videocontainer {
height: 0px;
width: 100%;
}
}
}
#filmstripLocalScreenShare {
align-self: initial;
margin-bottom: 5px;
display: flex;
flex-direction: column-reverse;
height: auto;
justify-content: flex-start;
width: 100%;
#filmstripLocalScreenShareThumbnail {
width: calc(100% - 15px);
.videocontainer {
height: 0px;
width: 100%;
}
}
}
/**
* Remove unnecessary padding that is normally used to prevent horizontal
* filmstrip from overlapping the left edge of the screen.
*/
#filmstripLocalVideo,
#filmstripLocalScreenShare,
.remote-videos {
padding: 0;
}
#remoteVideos {
@include minHWAutoFix();
flex-direction: column;
flex-grow: 1;
}
.resizable-filmstrip #remoteVideos .videocontainer {
border-left: 0;
margin: 0;
}
&.reduce-height {
height: calc(100% - calc(#{$newToolbarSizeWithPadding} + #{$scrollHeight}));
}
.filmstrip__videos.vertical-view-grid#remoteVideos {
align-items: 'center';
border: 0px;
padding-right: 7px;
&.has-scroll {
padding-right: 0px;
}
.remote-videos > div {
left: 0px; // fixes an issue on FF - the div is aligned to the right by default for some reason
}
.videocontainer {
border: 0px;
margin: 2px;
}
}
.remote-videos {
display: flex;
overscroll-behavior: contain;
&.height-transition {
transition: height .3s ease-in;
}
& > div {
opacity: 0;
pointer-events: none;
position: absolute;
transition: opacity 1s;
}
&.is-not-overflowing > div {
bottom: 0px;
}
}
}
/*
* Firefox sets flex items to min-height: auto and min-width: auto,
* preventing flex children from shrinking like they do on other browsers.
* Setting min-height and min-width 0 is a workaround for the issue so
* Firefox behaves like other browsers.
* https://bugzilla.mozilla.org/show_bug.cgi?id=1043520
*/
@mixin minHWAutoFix() {
min-height: 0;
min-width: 0;
}
@extend %align-right;
align-items: flex-end;
bottom: 0;
box-sizing: border-box;
display: flex;
flex-direction: column-reverse;
height: 100%;
width: 100%;
padding: 0;
/**
* fixed positioning is necessary for remote menus and tooltips to pop
* out of the scrolling filmstrip. AtlasKit dialogs and tooltips use
* a library called popper which will position its elements fixed if
* any parent is also fixed.
*/
position: fixed;
top: 0;
right: 0;
z-index: $filmstripVideosZ;
&.no-vertical-padding {
padding: 0;
}
/**
* Hide videos by making them slight to the right.
*/
.filmstrip__videos {
@extend %align-right;
bottom: 0;
padding: 0;
position:relative;
right: 0;
width: auto;
/**
* An id selector is used to match id specificity with existing
* filmstrip styles.
*/
&#remoteVideos {
border: $thumbnailsBorder solid transparent;
padding-left: 0;
border-left: 0;
width: 100%;
height: 100%;
justify-content: center;
}
}
/**
* Re-styles the local Video to better fit vertical filmstrip layout.
*/
#filmstripLocalVideo {
align-self: initial;
margin-bottom: 5px;
display: flex;
flex-direction: column-reverse;
height: auto;
justify-content: flex-start;
width: 100%;
#filmstripLocalVideoThumbnail {
width: calc(100% - 15px);
.videocontainer {
height: 0px;
width: 100%;
}
}
}
/**
* Remove unnecssary padding that is normally used to prevent horizontal
* filmstrip from overlapping the left edge of the screen.
*/
#filmstripLocalVideo,
.remote-videos {
padding: 0;
}
#remoteVideos {
@include minHWAutoFix();
flex-direction: column;
flex-grow: 1;
}
.resizable-filmstrip #remoteVideos .videocontainer {
border-left: 0;
margin: 0;
}
&.reduce-height {
height: calc(100% - calc(#{$newToolbarSizeWithPadding} + #{$scrollHeight}));
}
.filmstrip__videos.vertical-view-grid#remoteVideos {
align-items: 'center';
border: 0px;
padding-right: 7px;
&.has-scroll {
padding-right: 0px;
}
.remote-videos > div {
left: 0px; // fixes an issue on FF - the div is aligned to the right by default for some reason
}
.videocontainer {
border: 0px;
margin: 2px;
}
}
.remote-videos {
display: flex;
overscroll-behavior: contain;
&.height-transition {
transition: height .3s ease-in;
}
& > div {
position: absolute;
transition: opacity 1s;
}
&.is-not-overflowing > div {
bottom: 0px;
}
}
}

View File

@@ -3,14 +3,17 @@
* clashing with the filmstrip.
*/
.vertical-filmstrip #etherpad,
.vertical-filmstrip #sharedvideo {
.stage-filmstrip #etherpad,
.vertical-filmstrip #sharedvideo,
.stage-filmstrip #sharedvideo {
text-align: left;
}
/**
* Overrides for small videos in vertical filmstrip mode.
*/
.vertical-filmstrip .filmstrip__videos .videocontainer {
.vertical-filmstrip .filmstrip__videos .videocontainer,
.stage-filmstrip .filmstrip__videos .videocontainer {
.self-view-mobile-portrait video {
object-fit: contain;
}
@@ -27,7 +30,8 @@
* The class opening is for when the filmstrip is transitioning from hidden
* to visible.
*/
.vertical-filmstrip .large-video-labels {
.vertical-filmstrip .large-video-labels,
.stage-filmstrip .large-video-labels {
&.with-filmstrip {
right: 150px;
}
@@ -47,6 +51,7 @@
* Overrides for self view when in portrait mode on mobile.
* This is done in order to keep the aspect ratio.
*/
.vertical-filmstrip .self-view-mobile-portrait #localVideo_container {
.vertical-filmstrip .self-view-mobile-portrait #localVideo_container,
.stage-filmstrip .self-view-mobile-portrait #localVideo_container {
object-fit: contain;
}

View File

@@ -38,11 +38,8 @@ $flagsImagePath: "../images/";
@import 'modals/embed-meeting/embed-meeting';
@import 'modals/feedback/feedback';
@import 'modals/invite/info';
@import 'modals/settings/settings';
@import 'modals/screen-share/share-audio';
@import 'modals/screen-share/share-screen-warning';
@import 'modals/virtual-background/virtual-background';
@import 'modals/local-recording/local-recording';
@import 'videolayout_default';
@import 'notice';
@import 'subject';
@@ -61,7 +58,6 @@ $flagsImagePath: "../images/";
@import 'components/button-control';
@import 'components/input-control';
@import 'components/input-slider';
@import "connection-info";
@import '404';
@import 'policy';
@import 'popover';
@@ -89,7 +85,6 @@ $flagsImagePath: "../images/";
@import 'country-picker';
@import 'modals/invite/invite_more';
@import 'modals/security/security';
@import 'modals/mute/mute-dialog';
@import 'e2ee';
@import 'responsive';
@import 'drawer';

View File

@@ -38,3 +38,7 @@
margin-top: 2px;
display: block;
}
.dialog-bottom-margin {
margin-bottom: 5px;
}

View File

@@ -9,7 +9,6 @@
font-size: 15px;
margin-left: auto;
margin-top: 16px;
width: auto;
}
&-code {

View File

@@ -46,6 +46,8 @@
}
.feedback-dialog {
margin-bottom: 5px;
.details {
textarea {
min-height: 100px;

View File

@@ -38,19 +38,6 @@
color: #fff;
}
.info-password-input {
width: 100%;
background-color: #0E1624;
border-radius: 3px;
border: 2px solid #202B3D;
color: inherit;
padding-left: 0;
}
.info-password-input:focus ,
.info-password-input:active {
border: 2px solid #B8C7E0;
}
.info-password-local {
user-select: text;
}

View File

@@ -84,56 +84,6 @@
}
}
&.icon-container {
display: none;
&.active {
display: flex;
width: calc(100% - 26px);
padding: 8px 8px 8px 16px;
background: #2A3A4B;
border: 1px solid #5E6D7A;
border-top: none;
border-radius: 0 0 3px 3px;
.copy-invite-icon, .provider-icon {
align-items: center;
cursor: pointer;
display: flex;
height: 40px;
place-content: center;
width: 40px;
}
&:hover > div:hover {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 4px;
}
& > :not(:last-child) {
margin-right: 16px;
}
.copy-invite-icon > div > svg > path {
fill: #A4B8D1;
}
}
}
&.dial-in-display {
.info-label {
color: #A4B8D1;
}
.dial-in-copy {
display: inline-block;
vertical-align: middle;
cursor: pointer;
height: 24px;
}
}
&.invite-buttons {
width: 100%;
text-align: right;

View File

@@ -1,92 +0,0 @@
.localrec-participant-stats {
list-style: none;
padding: 0;
width: 100%;
font-weight: 500;
.localrec-participant-stats-item__status-dot {
position: relative;
display: block;
width: 9px;
height: 9px;
border-radius: 50%;
margin: 0 auto;
&.status-on {
background: green;
}
&.status-off {
background: gray;
}
&.status-unknown {
background: darkgoldenrod;
}
&.status-error {
background: darkred;
}
}
.localrec-participant-stats-item__status,
.localrec-participant-stats-item__name,
.localrec-participant-stats-item__sessionid {
display: inline-block;
margin: 5px 0;
vertical-align: middle;
}
.localrec-participant-stats-item__status {
width: 5%;
}
.localrec-participant-stats-item__name {
width: 40%;
}
.localrec-participant-stats-item__sessionid {
width: 55%;
}
.localrec-participant-stats-item__name,
.localrec-participant-stats-item__sessionid {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.localrec-control-info-label {
font-weight: bold;
}
.localrec-control-info-label:after {
content: ' ';
}
.localrec-control-action-link {
display: inline-block;
line-height: 1.5em;
a {
cursor: pointer;
vertical-align: middle;
}
}
.localrec-control-action-link:before {
color: $linkFontColor;
content: '\2022';
font-size: 1.5em;
padding: 0 10px;
vertical-align: middle;
}
.localrec-control-action-link:first-child:before {
content: '';
padding: 0;
}
.localrec-control-action-links {
font-weight: bold;
margin-top: 10px;
white-space: nowrap;
}

View File

@@ -1,19 +0,0 @@
.mute-dialog {
.separator-line {
margin: 24px 0 24px -20px;
padding: 0 20px;
width: 100%;
height: 1px;
background: #5E6D7A;
}
.control-row {
display: flex;
justify-content: space-between;
margin-top: 15px;
label {
font-size: 14px;
}
}
}

View File

@@ -1,11 +1,13 @@
.share-audio-dialog-container {
max-height: none;
}
.share-audio-dialog {
.share-audio-animation {
width: 100%;
height: 90%;
object-fit: contain;
}
input[type="checkbox"] + svg + span {
color: #9FB0CC;
margin-bottom: 10px;
}
.separator-line {

View File

@@ -13,12 +13,14 @@
}
.password {
align-items: center;
align-items: flex-start;
display: flex;
justify-content: space-between;
justify-content: flex-start;
margin-top: 15px;
flex-direction: column;
&-actions {
margin-top: 10px;
a {
cursor: pointer;
text-decoration: none;
@@ -26,8 +28,8 @@
color: #6FB1EA;
}
& > :first-child:not(:last-child) {
margin-right: 24px;
& > :not(:last-child) {
margin-right: 24px;
}
}
}

View File

@@ -1,102 +0,0 @@
.settings-pane {
display: flex;
width: 100%;
&.profile-pane {
flex-direction: column;
}
.auth-name {
margin-bottom: 4px;
}
.calendar-tab,
.device-selection {
margin-top: 20px;
}
.mock-atlaskit-label {
color: #b8c7e0;
font-size: 12px;
font-weight: 600;
line-height: 1.33;
padding: 20px 0px 4px 0px;
}
input[type="checkbox"]:checked + svg {
--checkbox-background-color: #6492e7;
--checkbox-border-color: #6492e7;
}
input[type="checkbox"] + svg + span {
color: #b8c7e0;
}
input[type="checkbox"] + svg + span {
color: #9FB0CC;
}
.calendar-tab,
.more-tab,
.box {
display: flex;
justify-content: space-between;
width: 100%;
}
.profile-edit {
display: flex;
width: 100%;
}
.profile-edit-field {
flex: .5;
}
.settings-sub-pane {
flex: 1;
}
.settings-sub-pane .right {
flex: 1;
}
.settings-sub-pane .left {
flex: 1;
}
.settings-sub-pane-element {
text-align: left;
flex: 1;
}
.moderator-settings-wrapper {
padding-top: 20px;
}
.profile-edit-field {
margin-right: 20px;
}
.calendar-tab {
align-items: center;
flex-direction: column;
font-size: 14px;
min-height: 100px;
text-align: center;
}
.calendar-tab-sign-in {
margin-top: 20px;
}
.sign-out-cta {
margin-bottom: 20px;
}
@media only screen and (max-width: $smallScreen) {
.device-selection {
display: flex;
flex-direction: column;
}
.more-tab {
flex-direction: column;
}
}
}

View File

@@ -1,207 +0,0 @@
.virtual-background-dialog {
margin-left: -10px;
position: relative;
max-height: 300px;
color: white;
display: inline-grid;
grid-template-columns: auto auto auto auto auto;
column-gap: 9px;
cursor: pointer;
.desktop-share:hover,
.thumbnail:hover,
.blur:hover,
.slight-blur:hover,
.virtual-background-none:hover {
opacity: 0.5;
border: 2px solid #99bbf3;
@media (max-width: 632px) {
height: 60px;
width: 60px;
}
}
.background-option {
margin-top: 8px;
border-radius: 6px;
height: 60px;
width: 107px;
text-align: center;
justify-content: center;
font-weight: bold;
box-sizing: border-box;
display: flex;
align-items: center;
}
.thumbnail {
object-fit: cover;
}
.thumbnail:hover ~ .delete-image-icon {
display: block;
}
.thumbnail-selected {
object-fit: cover;
border: 2px solid #246fe5;
}
.blur {
box-shadow: inset 0 0 12px #000000;
background: #7e8287;
padding: 0 10px;
}
.blur-selected {
box-shadow: inset 0 0 12px #000000;
background: #7e8287;
border: 2px solid #246fe5;
padding: 0 10px;
}
.slight-blur {
box-shadow: inset 0 0 12px #000000;
background: #a4a4a4;
padding: 0 10px;
}
.slight-blur-selected {
box-shadow: inset 0 0 12px #000000;
background: #a4a4a4;
border: 2px solid #246fe5;
padding: 0 10px;
}
.virtual-background-none {
background: #525252;
padding: 0 10px;
}
.none-selected {
background: #525252;
border: 2px solid #246fe5;
padding: 0 10px;
}
.desktop-share {
background: #525252;
}
.desktop-share-selected {
background: #525252;
border: 2px solid #246fe5;
padding: 0 10px;
}
@media (max-width: 632px) {
font-size: 1.5vw;
.desktop-share,
.virtual-background-none,
.thumbnail,
.blur,
.slight-blur {
height: 60px;
width: 60px;
}
.desktop-share-selected,
.thumbnail-selected,
.none-selected,
.blur-selected,
.slight-blur-selected {
height: 60px;
width: 60px;
}
}
@media (max-width: 360px) {
grid-template-columns: auto auto auto;
}
}
.modal-dialog-form .virtual-background-loading {
overflow: hidden;
position: fixed;
left: 50%;
margin-top: 10px;
transform: translateX(-50%);
}
.modal-dialog-form .video-preview {
height: 250px;
}
.file-upload-btn {
display: none;
}
.file-upload-label {
font-size: 14px;
font-weight: 600;
line-height: 20px;
margin-left: -10px;
margin-top: 16px;
margin-bottom: 8px;
color: #669aec;
display: inline-flex;
cursor: pointer;
}
.delete-image-icon {
background: #3d3d3d;
position: absolute;
display: none;
left: 96;
bottom: 51;
@media (max-width: 632px) {
left: 51px;
}
}
.delete-image-icon:hover {
display: block;
}
.thumbnail-container {
position: relative;
&:focus-within {
.thumbnail ~ .delete-image-icon {
display: block;
}
}
}
.add-background {
margin-right: 8px;
}
.apply-background-btn {
margin-top: 16px;
float: right;
}
.video-background-preview-entry {
margin-left: -10px;
height: 250px;
width: 570px;
margin-bottom: 8px;
z-index: 2;
@media (max-width: 632px) {
max-width: 336;
}
}
.virtual-background-preview-video {
margin-left: -10;
border-radius: 6px;
height: 100%;
object-fit: cover;
width: 100%;
}
.video-preview-loader {
border-radius: 6px;
background-color: transparent;
height: 250px;
margin-bottom: 8px;
width: 572px;
position: fixed;
z-index: 2;
@media (min-width: 432px) and (max-width: 632px) {
width: 340px;
}
}
.video-preview-loader svg {
position: absolute;
top: 40%;
left: 45%;
}
.dialog-margin-top{
margin-top: 44px;
}

View File

@@ -204,3 +204,7 @@
}
}
}
.lobby-button-margin {
margin-bottom: 16px;
}

View File

@@ -1,5 +1,4 @@
@import 'lobby';
@import 'premeeting-screens';
@import 'prejoin';
@import 'prejoin-dialog';
@import 'prejoin-third-party';

View File

@@ -1,118 +0,0 @@
.prejoin-dialog {
background: #1C2025;
box-shadow: 0px 2px 20px rgba(0, 0, 0, 0.5);
border-radius: 5px;
color: #fff;
height: 400px;
width: 375px;
&--small {
height: 300;
width: 400;
}
&-label {
font-size: 15px;
line-height: 24px;
&-num {
background: #2b3b4b;
border: 1px solid #A4B8D1;
border-radius: 50%;
color: #fff;
display: inline-block;
height: 24px;
margin-right: 8px;
width: 24px;
}
}
&-container {
align-items: center;
background: rgba(0,0,0,0.6);
display: flex;
height: 100vh;
justify-content: center;
left: 0;
position: absolute;
top: 0;
width: 100vw;
z-index: 3;
}
&-flag {
display: inline-block;
margin-right: 8px;
transform: scale(1.2);
}
&-title {
display: inline-block;
font-size: 24px;
line-height: 32px;
}
&-icon {
cursor: pointer;
> svg {
fill: #A4B8D1;
}
}
&-btn {
width: 309px;
}
&-dialin-container {
text-align: center;
}
&-delimiter {
background: #5f6266;
border: 0;
height: 1px;
margin: 0;
padding: 0;
width: 100%;
&-container {
margin: 16px 0 24px 0;
position: relative;
}
&-txt-container {
position: absolute;
text-align: center;
top: -8px;
width: 100%;
}
&-txt {
background: #1C2025;
color: #5f6266;
font-size: 11px;
text-transform: uppercase;
padding: 0 8px;
}
}
.prejoin-dialog-btn.primary,
.action-btn.prejoin-dialog-btn.text {
width: 310px;
}
}
.prejoin-dialog-callout {
padding: 16px;
&-header {
display: flex;
justify-content: space-between;
margin-bottom: 24px;
}
&-picker {
margin: 8px 0 16px 0;
}
}

View File

@@ -3,6 +3,25 @@
width: 100%;
}
&-avatar {
margin: 8px auto 16px;
&-name {
color: white;
font-size: 16px;
font-weight: 600;
line-height: 26px;
margin-bottom: 32px;
text-align: center;
}
&-container {
align-items: center;
display: flex;
flex-direction: column;
}
}
&-error {
background-color: #E04757;
border-radius: 6px;
@@ -23,30 +42,6 @@
padding: 8px 0;
}
&-dropdown-btn {
align-items: center;
color: #1C2025;
cursor: pointer;
display: flex;
height: 40px;
font-size: 15px;
line-height: 24px;
padding: 0 16px;
&:hover {
background-color: #DAEBFA;
}
}
&-dropdown-icon {
display: inline-block;
margin-right: 16px;
& > svg {
fill: #1C2025;
}
}
&-dropdown-container {
position: relative;
width: 100%;

View File

@@ -101,7 +101,7 @@
font-weight: 600;
letter-spacing: -0.015;
line-height: 36px;
margin-bottom: 32px;
margin-bottom: 16px;
text-align: center;
}
@@ -137,6 +137,7 @@
}
.toolbox-content-items {
@include ltr;
background: transparent;
box-shadow: none;
display: flex;

View File

@@ -6,8 +6,6 @@ $baseLight: #FFFFFF;
/**
* Controls
*/
$controlBackground: $baseLight;
$controlColor: #333333;
$sliderTrackBackground: #474747;
$sliderThumbBackground: #3572b0;
@@ -60,42 +58,21 @@ $readOnlyInputColor: #a7a7a7;
$defaultDarkSelectionColor: #ccc;
$buttonFontWeight: 400;
$labelFontWeight: 400;
$hintFontSize: em(13, 14);
$linkFontColor: #3572b0;
$linkHoverFontColor: darken(#3572b0, 10%);
$dropdownColor: #333;
$errorColor: #c61600;
// Feedback colors
$feedbackCancelFontColor: #333;
// Popover colors
$popoverFontColor: #ffffff !important;
$popupSliderColor: #0376da;
// Toolbar
$secondaryToolbarBg: rgba(0, 0, 0, 0.5);
// TOFIX: Once moved to react rename to match the side panel class name.
$sideToolbarContainerBg: rgba(0, 0, 0, 0.75);
$toolbarBackground: rgba(0, 0, 0, 0.5);
$toolbarBadgeBackground: #165ECC;
$toolbarBadgeColor: #FFFFFF;
$toolbarButtonColor: #FFFFFF;
$toolbarSelectBackground: rgba(0, 0, 0, .6);
$toolbarTitleColor: #FFFFFF;
$toolbarToggleBackground: #12499C;
/**
* Forms
*/
//dropdown
$selectFontColor: $controlColor;
$selectBg: $controlBackground;
$selectActiveBg: darken($controlBackground, 5%);
$selectActiveItemBg: darken($controlBackground, 20%);
/**
* TODO: Replace by themed component.
*/
$videoQualityActive: #57A0ff;
$selectBg: $baseLight;

4
custom.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
declare module '*.svg' {
const content: any;
export default content;
}

9
debian/control vendored
View File

@@ -20,7 +20,7 @@ Description: WebRTC JavaScript video conferences
Package: jitsi-meet-web-config
Architecture: all
Depends: openssl, nginx | nginx-full | nginx-extras | apache2
Depends: openssl, nginx | nginx-full | nginx-extras | openresty | apache2, curl
Description: Configuration for web serving of Jitsi Meet
Jitsi Meet is a WebRTC JavaScript application that uses Jitsi
Videobridge to provide high quality, scalable video conferences.
@@ -33,7 +33,7 @@ Description: Configuration for web serving of Jitsi Meet
Package: jitsi-meet-prosody
Architecture: all
Depends: openssl, prosody (>= 0.11.0) | prosody-trunk | prosody-0.11, lua-sec
Depends: openssl, prosody (>= 0.11.7) | prosody-trunk | prosody-0.12 | prosody-0.11, lua-sec, lua-basexx, lua-luaossl, lua-cjson, lua-inspect
Replaces: jitsi-meet-tokens
Description: Prosody configuration for Jitsi Meet
Jitsi Meet is a WebRTC JavaScript application that uses Jitsi
@@ -47,12 +47,11 @@ Description: Prosody configuration for Jitsi Meet
Package: jitsi-meet-tokens
Architecture: all
Depends: ${misc:Depends}, prosody-trunk (>= 1nightly747) | prosody-0.11 | prosody (>= 0.11.2), libssl1.0-dev | libssl-dev, luarocks, jitsi-meet-prosody, git
Depends: ${misc:Depends}, prosody-trunk | prosody-0.11 | prosody-0.12 | prosody (>= 0.11.7), jitsi-meet-prosody
Description: Prosody token authentication plugin for Jitsi Meet
Package: jitsi-meet-turnserver
Architecture: all
Breaks: apache2
Pre-Depends: jitsi-meet-web-config
Depends: ${misc:Depends}, nginx (>= 1.13.10) | nginx-full (>= 1.13.10) | nginx-extras (>= 1.13.10), jitsi-meet-prosody, coturn, dnsutils
Depends: ${misc:Depends}, jitsi-meet-prosody, coturn, dnsutils
Description: Configures coturn to be used with Jitsi Meet

View File

@@ -1,2 +1,3 @@
doc/debian/jitsi-meet-prosody/prosody.cfg.lua-jvb.example /usr/share/jitsi-meet-prosody/
doc/debian/jitsi-meet-prosody/jaas.cfg.lua /usr/share/jitsi-meet-prosody/
resources/prosody-plugins/ /usr/share/jitsi-meet/

View File

@@ -83,6 +83,31 @@ case "$1" in
TURN_SECRET="$RET"
fi
SELF_SIGNED_CHOICE="Generate a new self-signed certificate"
# In the case of updating from an older version the configure of -prosody package may happen before the -config
# one, so if JAAS_INPUT is empty (the question is not asked), let's ask it now.
# If db_get returns an error (workaround for strange Debian failure) continue without stopping the config
db_get jitsi-meet/cert-choice || CERT_CHOICE=$SELF_SIGNED_CHOICE
CERT_CHOICE="$RET"
if [ -z "$CERT_CHOICE" ] ; then
db_input critical jitsi-meet/cert-choice || true
db_go
db_get jitsi-meet/cert-choice
CERT_CHOICE="$RET"
fi
if [ "$CERT_CHOICE" != "$SELF_SIGNED_CHOICE" ]; then
db_get jitsi-meet/jaas-choice
JAAS_INPUT="$RET"
if [ -z "$JAAS_INPUT" ] ; then
db_subst jitsi-meet/jaas-choice domain "${JVB_HOSTNAME}"
db_set jitsi-meet/jaas-choice false
db_input critical jitsi-meet/jaas-choice || true
db_go
db_get jitsi-meet/jaas-choice
JAAS_INPUT="$RET"
fi
fi
# and we're done with debconf
db_stop
@@ -141,7 +166,7 @@ case "$1" in
# New:
# Component "focus.jitmeet.example.com" "client_proxy"
# target_address = "focus@auth.jitmeet.example.com"
if grep -q "Component \"focus.$JVB_HOSTNAME\"" $PROSODY_HOST_CONFIG && ! grep "Component \"focus.$JVB_HOSTNAME\" \"client_proxy\"" $PROSODY_HOST_CONFIG ;then
if grep -q "Component \"focus.$JVB_HOSTNAME\"" $PROSODY_HOST_CONFIG && ! grep -q "Component \"focus.$JVB_HOSTNAME\" \"client_proxy\"" $PROSODY_HOST_CONFIG ;then
sed -i "s/Component \"focus.$JVB_HOSTNAME\"/Component \"focus.$JVB_HOSTNAME\" \"client_proxy\"\n target_address = \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\"/g" $PROSODY_HOST_CONFIG
PROSODY_CONFIG_PRESENT="false"
fi
@@ -166,6 +191,29 @@ case "$1" in
PROSODY_CONFIG_PRESENT="false"
fi
JAAS_HOST_CONFIG="/etc/prosody/conf.avail/jaas.cfg.lua"
if [ "${JAAS_INPUT}" = "true" ] && [ ! -f $JAAS_HOST_CONFIG ]; then
sed -i "s/enabled = false -- Jitsi meet components/enabled = true -- Jitsi meet components/g" $PROSODY_HOST_CONFIG
PROSODY_CONFIG_PRESENT="false"
fi
# For those deployments that don't have the config in the jitsi-meet prosody config add the new jaas file
if [ ! -f $JAAS_HOST_CONFIG ] && ! grep -q "VirtualHost \"jigasi.meet.jitsi\"" $PROSODY_HOST_CONFIG; then
PROSODY_CONFIG_PRESENT="false"
cp /usr/share/jitsi-meet-prosody/jaas.cfg.lua $JAAS_HOST_CONFIG
sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" $JAAS_HOST_CONFIG
fi
if [ "${JAAS_INPUT}" = "true" ]; then
JAAS_HOST_CONFIG_ENABLED="/etc/prosody/conf.d/jaas.cfg.lua "
if [ ! -f $JAAS_HOST_CONFIG_ENABLED ] && ! grep -q "VirtualHost \"jigasi.meet.jitsi\"" $PROSODY_HOST_CONFIG; then
if [ -f $JAAS_HOST_CONFIG ]; then
ln -s $JAAS_HOST_CONFIG $JAAS_HOST_CONFIG_ENABLED
PROSODY_CONFIG_PRESENT="false"
fi
fi
fi
# Make sure the focus@auth user's roster includes the proxy component (this is idempotent)
prosodyctl mod_roster_command subscribe focus.$JVB_HOSTNAME $JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN
@@ -178,32 +226,6 @@ case "$1" in
ln -sf /var/lib/prosody/$JVB_HOSTNAME.crt /etc/prosody/certs/$JVB_HOSTNAME.crt
fi
PRTRUNK_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'prosody-trunk' 2>/dev/null | awk '{print $3}' || true)"
PR10_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'prosody-0.10' 2>/dev/null | awk '{print $3}' || true)"
PR_VER_INSTALLED=$(dpkg-query -f='${Version}\n' --show prosody 2>/dev/null || true)
if [ "$PRTRUNK_INSTALL_CHECK" = "installed" ] \
|| [ "$PRTRUNK_INSTALL_CHECK" = "unpacked" ] ; then
if [ -f $PROSODY_HOST_CONFIG ]; then
sed -i 's/storage = \"memory\"/storage = \"null\"/g' $PROSODY_HOST_CONFIG
# trigger a restart
PROSODY_CONFIG_PRESENT="false"
fi
fi
if [ "$PR10_INSTALL_CHECK" = "installed" ] \
|| [ "$PR10_INSTALL_CHECK" = "unpacked" ] \
|| dpkg --compare-versions "$PR_VER_INSTALLED" gt "0.10" ; then
# if the version is 0.10.X (>0.10 and <0.11)
if [ -f $PROSODY_HOST_CONFIG ] \
&& dpkg --compare-versions "$PR_VER_INSTALLED" lt "0.11" ; then
sed -i 's/storage = \"memory\"/storage = \"none\"/g' $PROSODY_HOST_CONFIG
# trigger a restart
PROSODY_CONFIG_PRESENT="false"
fi
fi
CERT_ADDED_TO_TRUST="false"
if [ ! -f /var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt ]; then

View File

@@ -35,6 +35,8 @@ case "$1" in
if [ -n "$RET" ]; then
rm -f /etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua
rm -f /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua
rm -f /etc/prosody/conf.avail/jaas.cfg.lua
rm -f /etc/prosody/conf.d/jaas.cfg.lua
JICOFO_AUTH_DOMAIN="auth.$JVB_HOSTNAME"
# clean up generated certificates

View File

@@ -1,12 +1,12 @@
Template: jitsi-meet-prosody/jvb-hostname
Type: string
_Description: The hostname of the current installation:
The value for the hostname that is set in Jitsi Videobridge installation.
_Description: The domain of the current installation (e.g. meet.jitsi.com):
The value of the domain that is set in the Jitsi Videobridge installation.
Template: jitsi-videobridge/jvb-hostname
Type: string
_Description: The hostname of the current installation:
The value for the hostname that is set in Jitsi Videobridge installation.
_Description: The domain of the current installation (e.g. meet.jitsi.com):
The value of the domain that is set in the Jitsi Videobridge installation.
Template: jitsi-videobridge/jvbsecret
Type: password

View File

@@ -50,37 +50,15 @@ case "$1" in
if [ -f "$PROSODY_HOST_CONFIG" ] ; then
# search for the token auth, if this is not enabled this is the
# first time we install tokens package and needs a config change
if ! egrep -q '^\s*authentication\s*=\s*"token"' "$PROSODY_HOST_CONFIG"; then
if ! egrep -q '^\s*authentication\s*=\s*"token" -- do not delete me' "$PROSODY_HOST_CONFIG"; then
# enable tokens in prosody host config
sed -i 's/--plugin_paths/plugin_paths/g' $PROSODY_HOST_CONFIG
sed -i 's/authentication = "anonymous"/authentication = "token"/g' $PROSODY_HOST_CONFIG
sed -i 's/ --allow_unencrypted_plain_auth/ allow_unencrypted_plain_auth/g' $PROSODY_HOST_CONFIG
sed -i 's/authentication = "jitsi-anonymous" -- do not delete me/authentication = "token" -- do not delete me/g' $PROSODY_HOST_CONFIG
sed -i "s/ --app_id=\"example_app_id\"/ app_id=\"$APP_ID\"/g" $PROSODY_HOST_CONFIG
sed -i "s/ --app_secret=\"example_app_secret\"/ app_secret=\"$APP_SECRET\"/g" $PROSODY_HOST_CONFIG
sed -i 's/ --modules_enabled = { "token_verification" }/ modules_enabled = { "token_verification" }/g' $PROSODY_HOST_CONFIG
sed -i '/^\s*--\s*"token_verification"/ s/--\s*//' $PROSODY_HOST_CONFIG
# Install luajwt
if ! luarocks install luajwtjitsi 2.0-0; then
echo "Failed to install luajwtjitsi - try installing it manually"
fi
# Install basexx
if ! luarocks install basexx; then
echo "Failed to install basexx - try installing it manually"
fi
PR10_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'prosody-0.10' 2>/dev/null | awk '{print $3}' || true)"
PRTRUNK_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'prosody-trunk' 2>/dev/null | awk '{print $3}' || true)"
PR_VER_INSTALLED=$(dpkg-query -f='${Version}\n' --show prosody 2>/dev/null || true)
if [ "$PR10_INSTALL_CHECK" = "installed" ] \
|| [ "$PR10_INSTALL_CHECK" = "unpacked" ] \
|| [ "$PRTRUNK_INSTALL_CHECK" = "installed" ] \
|| [ "$PRTRUNK_INSTALL_CHECK" = "unpacked" ] \
|| dpkg --compare-versions "$PR_VER_INSTALLED" lt "0.11" ; then
sed -i 's/module:hook_global(/module:hook(/g' /usr/share/jitsi-meet/prosody-plugins/mod_auth_token.lua
fi
if [ -x "/etc/init.d/prosody" ]; then
invoke-rc.d prosody restart || true
fi

View File

@@ -37,7 +37,7 @@ case "$1" in
APP_SECRET=$RET
# Revert prosody config
sed -i 's/authentication = "token"/authentication = "anonymous"/g' $PROSODY_HOST_CONFIG
sed -i 's/authentication = "token" -- do not delete me/authentication = "jitsi-anonymous" -- do not delete me/g' $PROSODY_HOST_CONFIG
sed -i "s/ app_id=\"$APP_ID\"/ --app_id=\"example_app_id\"/g" $PROSODY_HOST_CONFIG
sed -i "s/ app_secret=\"$APP_SECRET\"/ --app_secret=\"example_app_secret\"/g" $PROSODY_HOST_CONFIG
sed -i '/^\s*"token_verification"/ s/"token_verification"/-- "token_verification"/' $PROSODY_HOST_CONFIG

View File

@@ -1,3 +1,2 @@
doc/debian/jitsi-meet-turn/turnserver.conf /usr/share/jitsi-meet-turnserver/
doc/debian/jitsi-meet/jitsi-meet.conf /usr/share/jitsi-meet-turnserver/
doc/debian/jitsi-meet-turn/coturn-certbot-deploy.sh /usr/share/jitsi-meet-turnserver/

View File

@@ -33,7 +33,6 @@ case "$1" in
JVB_HOSTNAME=$(echo "$RET" | xargs echo -n)
TURN_CONFIG="/etc/turnserver.conf"
NGINX_CONFIG="/etc/nginx/sites-available/$JVB_HOSTNAME.conf"
JITSI_MEET_CONFIG="/etc/jitsi/meet/$JVB_HOSTNAME-config.js"
# if there was a turn config backup it so we can configure
@@ -51,19 +50,6 @@ case "$1" in
fi
fi
# this detect only old installations with no nginx
db_get jitsi-meet/jvb-serve || true
if [ ! -f $NGINX_CONFIG -o "$RET" = "true" ] ; then
# nothing to do
echo "------------------------------------------------"
echo ""
echo "turnserver not configured"
echo ""
echo "------------------------------------------------"
db_stop
exit 0
fi
if [[ -f $TURN_CONFIG ]] ; then
echo "------------------------------------------------"
echo ""
@@ -117,11 +103,13 @@ denied-peer-ip=240.0.0.0-255.255.255.255" >> $TURN_CONFIG
sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" $TURN_CONFIG
sed -i "s/__turnSecret__/$TURN_SECRET/g" $TURN_CONFIG
# SSL for nginx
# SSL settings
db_get jitsi-meet/cert-choice
CERT_CHOICE="$RET"
if [ "$CERT_CHOICE" = "I want to use my own certificate" ] ; then
UPLOADED_CERT_CHOICE="I want to use my own certificate"
LE_CERT_CHOICE="Let's Encrypt certificates"
if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ]; then
db_get jitsi-meet/cert-path-key
CERT_KEY="$RET"
db_get jitsi-meet/cert-path-crt
@@ -134,22 +122,13 @@ denied-peer-ip=240.0.0.0-255.255.255.255" >> $TURN_CONFIG
CERT_CRT_ESC=$(echo $CERT_CRT | sed 's/\./\\\./g')
CERT_CRT_ESC=$(echo $CERT_CRT_ESC | sed 's/\//\\\//g')
sed -i "s/cert=\/etc\/jitsi\/meet\/.*crt/cert=$CERT_CRT_ESC/g" $TURN_CONFIG
elif [ "$CERT_CHOICE" = "$LE_CERT_CHOICE" ]; then
/usr/share/jitsi-meet/scripts/coturn-le-update.sh ${JVB_HOSTNAME}
fi
sed -i "s/#TURNSERVER_ENABLED/TURNSERVER_ENABLED/g" /etc/default/coturn
invoke-rc.d coturn restart || true
NGINX_STREAM_CONFIG="/etc/nginx/modules-enabled/60-jitsi-meet.conf"
if [ -f $NGINX_STREAM_CONFIG ] ; then
echo "------------------------------------------------"
echo ""
echo "You have multiplexing enabled, it is recommended to disable it and migrate to using websockets for the bridge channel."
echo "The support for sctp data channels is deprecated and will be dropped at some point."
echo "How to do it at: https://jitsi.org/multiplexing-to-bridge-ws-howto"
echo ""
echo "------------------------------------------------"
fi
# and we're done with debconf
db_stop
;;

View File

@@ -23,26 +23,12 @@ set -e
case "$1" in
remove)
if [ -x "/etc/init.d/nginx" ]; then
invoke-rc.d nginx reload || true
fi
if [ -x "/etc/init.d/apache2" ]; then
invoke-rc.d apache2 reload || true
fi
;;
purge)
rm -rf /etc/turnserver.conf
if [ -x "/etc/init.d/nginx" ]; then
invoke-rc.d nginx reload || true
fi
if [ -x "/etc/init.d/apache2" ]; then
invoke-rc.d apache2 reload || true
fi
# Clear the debconf variable
db_purge
;;
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)

Some files were not shown because too many files have changed in this diff Show More