Compare commits

..

181 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé
38068b33e5 fix(notifications) remove dead code 2023-02-14 10:11:08 +01:00
Robert Pintilii
22ded30b61 feat(audio-menu) Redesign audio picker menu (#12899)
Convert some files to TS
Remove unnecessary files
Implement redesign
Add noise suppression to picker menu
Fix Popover placement on browser resize
2023-02-13 16:01:08 +02:00
Robert Pintilii
533deea5fd ref(password-required) Update component to use new Dialog (#12900)
Convert component to TS
2023-02-13 15:47:42 +02:00
Saúl Ibarra Corretgé
46c6d1057d fix(ios) avoid getting duplicated SDK events
UIView has 2 designated initializers: initWithFrame and initWithCoder,
which means either of them is going to be called, whatever the
constructor.

THus overriding init will cause creating new (and unnecessary)
observers.

Ref: https://community.jitsi.org/t/duplicate-delegate-calls/121051/6
Fixes: https://github.com/jitsi/jitsi-meet/issues/12892
2023-02-13 14:20:44 +01:00
Titus Moldovan
45aa53b1a6 chore(rn) updates react-native-gesture-handler 2023-02-13 15:11:31 +02:00
damencho
7d65123495 fix: Drop unused dependency. 2023-02-13 06:48:53 +01:00
Maria Mironova
e1ac000cd1 fix(chat) keep avatar width inside flex container (#12891)
Co-authored-by: Maria Mironova <maria@example.com>
2023-02-10 14:31:11 +02:00
Saúl Ibarra Corretgé
f98036efa1 fixup! 2023-02-09 16:38:03 +01:00
Saúl Ibarra Corretgé
23aeafcc93 fixup! 2023-02-09 16:38:03 +01:00
Saúl Ibarra Corretgé
0ffe2c2c87 fixup! 2023-02-09 16:38:03 +01:00
Saúl Ibarra Corretgé
dec58afe46 feat(icons) add new moderator icon 2023-02-09 16:38:03 +01:00
Mihaela Dumitru
2aa770e532 feat(config) add flag to disable lobby password & group lobby config flags (#12793) 2023-02-09 14:46:25 +02:00
Gabriel Borlea
1a113ba733 feat: add custom buttons for participant menu and toolbar via config (#12832)
* add custom remote menu button

* add config for custom buttons

* whitelist custom buttons flag

* add toolbox custom button

* fix notify toolbox buttons

* whitelist toolbar custom buttons

* rename and fix notify

* rename participant remote menu

* revert some flag wrong changes

* fix some formatings

* add undefined type to custom buttons toolbox

* code review

* code review 2

* fix linting issue
2023-02-09 13:12:00 +02:00
dependabot[bot]
3a5833829c chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1
Bumps [@sideway/formula](https://github.com/sideway/formula) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sideway/formula/releases)
- [Commits](https://github.com/sideway/formula/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: "@sideway/formula"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 10:36:48 +01:00
Priyanshu Sharma
e6d1f039d2 fix(participant-count) Fix mobile style (#12880) 2023-02-09 10:10:16 +02:00
Horatiu Muresan
fef78152e1 fix(remote-control) Add some missing key codes for numpad (#12879) 2023-02-07 17:00:59 +02:00
Mihaela Dumitru
84221c5c13 feat(dialout) check appId for permission to call outbound destination (#12871) 2023-02-07 16:18:27 +02:00
Calinteodor
3e59359563 feat(base/icon): removed burger icon (#12876)
* feat(base/icons): removed unused icon
2023-02-07 13:02:15 +02:00
Calin-Teodor
e69db9b878 feat(participants-pane): removed unused action 2023-02-07 12:40:35 +02:00
Robert Pintilii
ae7e441e21 fix(context-menu) Minor style fixes (#12874) 2023-02-07 12:05:46 +02:00
Robert Pintilii
6b8afbcceb fix(filmstrip) Minor style fixes (#12870) 2023-02-07 10:10:28 +02:00
José Luís Andrade
d712a565f8 lang: Update Portuguese translation (#12647)
* Update Portuguese translation

* Small fix in the translation

* Add new update

* feat(audioOnly) translation

* chore(welcome-page) translation

* translate "noMicPermission"
2023-02-03 11:41:11 -06:00
Saúl Ibarra Corretgé
36bfbeb81d fix(etherpad) avoid using deprecated property 2023-02-03 15:52:26 +01:00
Saúl Ibarra Corretgé
e7b16b0daf fix(etherpad) fix CORS issues
Avoid modifying the iframe. We don't really need to bubble up mouse
events anymore since the Etherpad frame won't overlap with the toolbar
or filmstrip, so when the user moves over those areas it will just show
up.
2023-02-03 15:52:26 +01:00
Saúl Ibarra Corretgé
92a891e7d3 chore(rn,deps) react-native-webrtc@latest
Brings back Metal rendering and other SDP negotiation improvements.
2023-02-03 13:34:10 +01:00
Robert Pintilii
09e4696c60 feat(title-bar) Update design (#12851)
Convert some files to TS
Move some styles from SCSS to JSS
Update design
2023-02-03 13:31:00 +02:00
Robert Pintilii
a594aac078 fix(toolbar) Fix styles (#12863) 2023-02-03 13:30:38 +02:00
Saúl Ibarra Corretgé
9409e64066 fix(deps) remove nunused dependencies 2023-02-03 11:57:22 +02:00
Robert Pintilii
12318db4c7 fix(local-rec) Handle no mic permission (#12862) 2023-02-03 11:34:07 +02:00
Shawn
749c26b74c fix(toolbox): consistent color of hangup buttons 2023-02-02 15:55:17 +01:00
Robert10B
babe62eb6d fix(lang) updated Dutch translation 2023-02-02 13:50:25 +01:00
Robert Pintilii
fbc0a502e7 ref(TS) Improve TS (#12656) 2023-02-02 13:12:31 +02:00
Shawn
ab262ec8b1 fix(toolbox): do not show hangup menu for non-moderators 2023-02-02 10:50:15 +01:00
Maciej Zakrzewski
cced41665d fix(local-recording) after IFrame sandboxing
Fix local recording saving not working after IFrame sanbox introduciton. The allow-downloads flag was missing.
2023-02-02 10:45:48 +01:00
Mihaela Dumitru
f95e167779 feat(giphy) add sample resource for giphy-proxy 2023-02-02 10:30:40 +01:00
damencho
bf1b7cc856 fix: Fixes follow-me on the side that is screen sharing. 2023-02-01 07:12:15 -06:00
damencho
091e3f69dc fix: Fixes follow-me when there is a screenshare. 2023-01-31 08:40:56 -06:00
Horatiu Muresan
42868c9ec2 fix(context-menu) Fit the overflow menu on small heights (#12848) 2023-01-31 15:19:01 +02:00
Robert Pintilii
0d5dae7ab9 feat(prejoin) Update design (#12844) 2023-01-30 13:34:56 +02:00
Calin-Teodor
992bf47850 feat(polls/native): changed remove option button color to match web 2023-01-30 13:09:52 +02:00
Robert Pintilii
4f34a576d0 feat(polls) Redesign (#12838)
Convert files to TS
Move styles from SCSS to JSS
Implement redesign
2023-01-30 11:35:21 +02:00
Robert Pintilii
921f3ee8cd fix(chat) Break long text in multiple lines (#12842) 2023-01-30 10:48:17 +02:00
Horatiu Muresan
42838e756c fix(self-view) Hide self view when alone in meet as well (#12831) 2023-01-27 16:30:47 +02:00
Werner Fleischer
e6eba3536a feat(ci): using .luacheckrc 2023-01-27 10:59:07 +01:00
Gabriel Borlea
74bdb7bc3f fix(face-landmarks): set session id for webhook using method (#12834) 2023-01-26 23:00:25 +02:00
Mihaela Dumitru
192187db32 feat(config/giphy) add proxyUrl config for giphy requests (#12816) 2023-01-26 16:12:12 +02:00
Saúl Ibarra Corretgé
5dce74e21d fix(external-api) fix sending forms after introduction of sandbox
Ref: https://github.com/jitsi/jitsi-meet-electron/issues/837
2023-01-26 11:36:58 +01:00
Hristo Terezov
fd7b6f457e fix(Thumbnail):limit the size of the avatar to 200 2023-01-26 09:18:25 +02:00
Kirat
2bf3089dbf Fixed overflow of popover (#12814) 2023-01-25 19:09:55 +01:00
Calin-Teodor
d396727e39 feat(base/lib-jitsi-meet): fixed build failing from bad import 2023-01-25 17:30:13 +02:00
Horatiu Muresan
3e58cd8af3 feat(narrow-layout) Use drawer menus on desktop narrow mode (#12799) 2023-01-25 17:02:26 +02:00
Robert Pintilii
cf7e692186 fix(recording-dialog) Fix switch UI (#12826) 2023-01-25 10:45:40 +02:00
Jaya Allamsetty
5e90e72562 Feat ssrc rewriting (#12408)
Use a fixed set of remote tracks for a call based on the ssrc-limit set in jvb config. When this feature is enabled, JVB will signal the audio and video SSRCs and their owner/endpoint info using a bridge channel message. For audio, the mappings are determined based on the energy rankings on the audio sources present in the call and for video, the mappings are calculated based on the video sources the client requests through the video receiver constraints.
Remote tracks are then created/remapped by the client based on these mappings.

* Added track_owner_changed action
* Skip track-based large-video selection in rewriting mode.
* Register OWNER_CHANGED handler at track level.
* feat(participants) Add source info to participants in redux.
With ssrc-rewriting, the receiver constraints need to be generated using the source info received in presence. Currently they are generated from the track info in redux but with ssrc-rewriting, remote sources are not signaled and therefore created until they are being requested through receiver constraints.

Co-authored-by: James A <jqdrqgnq@users.noreply.github.com>
2023-01-24 13:58:58 -05:00
Jaya Allamsetty
cbae997eda chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1577.0.0+5713cb0d...v1578.0.0+5855ca72
2023-01-24 13:51:03 -05:00
Jaya Allamsetty
6bd9a6bd15 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1574.0.0+4d6873c2...v1577.0.0+5713cb0d
2023-01-24 10:18:43 -05:00
Werner Fleischer
e8bd75b2d1 fix(breakout-room, rn): joining room 2023-01-24 15:02:23 +01:00
emrah
46f1cb7b4b feat(ci) add luacheck 2023-01-24 14:58:43 +01:00
Christian Tietze
60dd26c13b fix(conferendce-timer) use "monospace" digits 2023-01-24 14:58:02 +01:00
robertpin
8e1d96cc48 feat(chat) Redesign chat
Move some styles from SCSS to JSS
Convert some files to TS
Implement redesign
2023-01-24 14:56:27 +01:00
Matthieu D
e3166e6faa fix(lang) updated Esperanto 2023-01-24 14:47:08 +01:00
robertpin
6de306e46e feat(participants) Add count badge to toolbar button
Update title bar button: ParticipantsCountLabel -> SpeakerStatsLabel. Only show button when speaker stats is enabled
Add badge to the participants pane button to show participants count
2023-01-24 14:46:33 +01:00
W0olFy
8e91851a2f fix(authentication) don't hide the dialog until auth has completed 2023-01-24 14:41:37 +01:00
Calin-Teodor
0251201e93 feat(settings/native): changed FormSectionAccordion.js to FormSection.tsx 2023-01-24 14:17:22 +01:00
Saúl Ibarra Corretgé
9775ad25ca feat(wifistats) drop support for WiFiStats 2023-01-23 19:39:24 +01:00
Saúl Ibarra Corretgé
da5e19fa98 fix(external-api) fix no longer allowing popups
These are used by the Electron app to open links in the chat, for
example.
2023-01-23 19:06:51 +01:00
Robert Pintilii
a5ddcab084 fix(local-rec) Reset max size on recording stop (#12815) 2023-01-23 11:15:28 +02:00
Robert Pintilii
2c59b44df5 fix(external-api) Don't check recording service for live streaming (#12807) 2023-01-20 11:44:29 +02:00
Horatiu Muresan
507d883503 fix(dialog) Make sure dialog fits in the available height (#12803) 2023-01-19 15:30:17 +02:00
Saúl Ibarra Corretgé
a7b25d6d7b ref(external-api) set ifrma source last
Make sure the ifrme is fully configured before setting the source URL
and thus triggering the load.
2023-01-19 14:11:29 +01:00
Saúl Ibarra Corretgé
43b91b16da feat(external-api) sandbox the iframe
Give it the minimum amount of permissions necessary to run.
2023-01-19 14:11:29 +01:00
Saúl Ibarra Corretgé
726fd3f8a1 fix(config,debian) fix multistream backwards compatibility
Fixes: https://github.com/jitsi/jitsi-meet/issues/12788
2023-01-17 08:41:03 -06:00
Saúl Ibarra Corretgé
817a05cf7b fix(deep-linking) drop broken an unused setting
The showImage setting has been broken for about 2 years since the asset
is not there.

Fixes: https://github.com/jitsi/jitsi-meet/issues/5409
Ref: https://community.jitsi.org/t/error-nginx-usr-share-jitsi-meet-images-deep-linking-image-png-failed/120418
2023-01-16 20:07:01 +01:00
Horatiu Muresan
6048279eb2 fix(welcome-page) Fix narrow mode (#12781)
- enable calendar card and footer on narrow mode
2023-01-16 11:50:37 +02:00
Jaya Allamsetty
43b3db11e0 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1573.0.0+10acace6...v1574.0.0+4d6873c2
2023-01-13 12:33:02 -05:00
Calinteodor
77e75815dc feat(polls): removed platform check and fixed button arrangement (#12780)
* feat(polls): removed platform check and fixed button arrangement
2023-01-13 16:04:39 +02:00
Saúl Ibarra Corretgé
e1485fc253 feat(rn,deps) update react-native-webrtc to 106.0.4 2023-01-13 10:06:02 +01:00
damencho
d6d71ab412 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1572.0.0+2028cce3...v1573.0.0+10acace6
2023-01-12 16:56:14 -06:00
Jaya Allamsetty
59c47a0575 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1569.0.0+5f8d02c9...v1572.0.0+2028cce3
2023-01-12 13:59:03 -05:00
damencho
8793d67f0b fix: Drops jicofo-authuser as we use hardcoded value. 2023-01-12 08:54:37 -06:00
Saúl Ibarra Corretgé
d6888fa2d8 chore(deps) run npm audit fix 2023-01-12 15:36:13 +01:00
Saúl Ibarra Corretgé
222021f3bc feat(rn,deps) update react-native-webrtc to 106.0.3 2023-01-12 15:36:13 +01:00
Calin-Teodor
14c24a8851 feat(polls): added marginTop 2023-01-12 15:48:16 +02:00
Calinteodor
246a2d6bbf feat(share-room): created getInviteOthersControl helper (#12769)
* feat(participants-pane/share-room): getInviteOthersControl helper
2023-01-12 15:47:44 +02:00
Calinteodor
838b26f770 ref(dep): updated react navigation dependencies (#12768)
* updated react navigation dependencies to latest
2023-01-12 15:47:03 +02:00
bgrozev
bc88ebe443 fix: Fix appending URL params. (#12763)
* fix: Fix appending URL params.

* squash: Lint.
2023-01-12 07:37:54 -06:00
Saúl Ibarra Corretgé
7f54fa4ed8 feat(rn,deps) update react-native-webrtc to 106.0.2 2023-01-12 14:12:52 +01:00
Calinteodor
361428d245 chore(deps): update rn-safe-area-context to latest (#12760)
chore(deps): update rn-safe-area-context
2023-01-12 12:14:55 +02:00
Calinteodor
7ad57e6baf chore(deps): update rn-gesture-handler to latest (#12759)
chore(deps): updated rn-gesture-handler
2023-01-12 12:14:25 +02:00
Calinteodor
a59ab3b0d9 feat(share-room): disable Invite Others button when Share is visible (#12765)
* feat(share-room): disable/enable Invite Others button
2023-01-12 12:13:18 +02:00
Calinteodor
c50111a57d feat(ui/polls/security/native): style fixes and updates (#12761)
* feat(base/ui/native): button fixes and ui updates
2023-01-12 12:11:27 +02:00
Horatiu Muresan
9422f48536 fix(deeplinking) Consider deprecated config (#12758) 2023-01-12 11:04:45 +02:00
Jaya Allamsetty
122e80dcf1 fix(audio-only) Fix an issue where 'startAudioOnly' in config is not applied to web clients. 2023-01-11 10:31:50 -05:00
Robert Pintilii
2dbb3c10e2 fix(local-rec) Stop recording properly on size exceeded (#12757) 2023-01-11 11:57:34 +02:00
damencho
265d8c4b29 fix: Fixes using s2s for visitors. 2023-01-10 21:50:23 +01:00
bgrozev
e8e05c21ab chore(deps) lib-jitsi-meet@latest (#12754)
https://github.com/jitsi/lib-jitsi-meet/compare/v1564.0.0+e2aa3700...v1569.0.0+5f8d02c9
2023-01-10 13:21:01 -06:00
bgrozev
b0591ed968 feat: Append ?room= to conferenceRequestUrl. (#12753)
* feat: Append ?room= to conferenceRequestUrl.

* Declare conferenceRequestUrl in IConfig.
2023-01-10 13:20:48 -06:00
Narendiran Arthanarieswaran
84fe52491f feat(android) created Monochrome Icon 2023-01-10 15:50:37 +02:00
Calinteodor
450da1a6df feat(base/media): SS mobile align (#12743)
* feat(base/media/native): updated styles and converted VideoTransform.js to tsx
2023-01-10 15:31:57 +02:00
Oana Emilia Ianc
720d4555ab jaas: pass the jitsi installation type at provisioning (#12750) 2023-01-10 12:10:47 +02:00
Calinteodor
c764397994 Update react native paper dependency to latest (#12740)
* Update react-native-paper to latest
2023-01-10 11:18:03 +02:00
Jaya Allamsetty
0ad7b3db55 fix(config) Delete deprecated config.
Client (receiver constraints)  and bridge use the new b/w allocation strategy by default.
2023-01-09 10:35:40 -05:00
Jaya Allamsetty
7e30053d51 fix(config): Remove unused config values.
capScreenshareBitrate and setScreenSharingResolutionConstraints are no longer valid.
2023-01-04 10:41:19 -05:00
Horatiu Muresan
0ad52a06ce feat(prejoin) Disable join buttons during joining
- use new `Button` component for drop down buttons
2023-01-04 14:22:51 +02:00
bgrozev
82fd465819 Re-use existing flags for visitor functioonality. (#12703)
* Fix documentation.

* Re-use existing flags instead for visitor functionality.

* Make the linter happy.

* Declare the disableFocus flag in configType.ts

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

https://github.com/jitsi/lib-jitsi-meet/compare/v1561.0.0+2d4cd935...v1564.0.0+e2aa3700
2023-01-03 16:03:42 -06:00
Jaya Allamsetty
561d0c9a10 ref(participants) Remove sortedRemoteScreenshares used by legacy SS. 2023-01-03 10:08:48 -05:00
Hristo Terezov
3b8ad78a62 fix(audio-only):Don't disable on SS started. (#12733)
Implementing this on mobile in order to match the web implementation.
2023-01-03 11:28:50 +02:00
Christoph Settgast
77e02a0994 chore(ci): update to checkout@v3 to fix node12 warnings (#12722)
Warning is: Node.js 12 actions are deprecated. For more information
see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/.
Please update the following actions to use Node.js 16: actions/checkout@v2
2022-12-22 21:31:24 +01:00
Christoph Settgast
965e7dc41d ci: move jsonlint to npm run script (#12721)
easier local execution than looking through GH actions
2022-12-22 21:31:07 +01:00
Christoph Settgast
ad0ad31df9 fix(lang) update German translation (#12720) 2022-12-22 21:30:43 +01:00
Horatiu Muresan
2bb2a68e01 chore(welcome-page) Welcome page redesign (#12717) 2022-12-22 15:18:06 +02:00
Horatiu Muresan
c441e8abca fix(welcome-page) Fix error before joining a meeting from welcome page (#12718) 2022-12-22 15:15:38 +02:00
Hristo Terezov
27754c8874 fix(filmstrip): scroll
Add SS tiles to the number of participants in scroll calculations. This
fixes an issue where the scroll is not displayed if there is a SS tile
and only part of 1 tile is overflowing.
2022-12-21 21:54:10 -06:00
dependabot[bot]
580f56010a chore(deps): bump loader-utils from 1.4.1 to 1.4.2
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-21 20:23:39 +01:00
Jaya Allamsetty
4bad63e484 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1560.0.0+92a5738b...v1561.0.0+2d4cd935
2022-12-21 13:57:48 -05:00
Hristo Terezov
9cc41469d2 ref(setScreenshareMuted): remove mediaType 2022-12-21 11:02:02 -06:00
Hristo Terezov
5077a33fcb ref(setVideoMuted): remove mediaType param. 2022-12-21 11:02:02 -06:00
Jaya Allamsetty
e7078786e6 fix(config) Remove code related to deprecated configs 'preferH264' and 'disableH264'. 2022-12-21 10:58:38 -05:00
Gabriel Borlea
291370a263 fix(face-landmarks): check for track state only if image capture is not polyfill (#12711) 2022-12-21 15:34:40 +02:00
Horatiu Muresan
32dbdf2e5c feat(deeplinking) Move deeplinking to config.js (#12704) 2022-12-20 19:03:57 +02:00
Hristo Terezov
17b5009e63 feat(audioOnly): do not disable when SS starts 2022-12-20 09:57:45 -06:00
Saúl Ibarra Corretgé
d91f49ec88 fix(rn) temporarily disable P2P
We're getting some no-video problems after the migration to Unified Plan
(before it was only working for same plan clients FWIW).

It was already disabled on Android, so the same in iOS while we figure
this out.
2022-12-20 16:09:19 +01:00
PO-jfiniel
7187530430 fix(android,config) allow to override integer config
This commit allow to override integer configuration like this one:

JitsiMeetConferenceOptions options =
    new JitsiMeetConferenceOptions.Builder()
    .setConfigOverride("resolution", 1080)
    .build();
2022-12-20 13:30:17 +01:00
Saúl Ibarra Corretgé
d3d442e4d2 fix(rn,polyfills) simplify WebRTC polyfills
Use the polyfiller provided by react-native-webrtc.

Drop the permissions API polyfill since we no longer use it in the app
and lib-jitsi-meet already works without it.
2022-12-16 17:55:53 +01:00
Saúl Ibarra Corretgé
294d2c9f6e fix(rn,config) make sure VP9 is never selected 2022-12-16 17:55:53 +01:00
Saúl Ibarra Corretgé
12c002e015 deps(rn) react-native-webrtc@106.0.1
Fixes fps selection during gUM and fliping the active flag in sender
encodings.
2022-12-16 17:55:53 +01:00
Saúl Ibarra Corretgé
9720b4858c chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1557.0.0+8df33524...v1560.0.0+92a5738b
2022-12-16 17:54:33 +01:00
tmoldovan8x8
9fae488070 fix(rn) removes settings dialog webviews and opens urls in browser 2022-12-16 13:30:37 +01:00
Mihaela Dumitru
0e47f72b5f fix(invite-dialog) adjust dial in limit display condition and styling (#12654) 2022-12-16 09:50:48 +02:00
Jaya Allamsetty
298c4bd1e3 fix(conference) Fixes an issue where first unmute with disableInitialGUM=true was resulting in user staying muted.
When device list changes, create a new track with the preferred device only if the user is unmuted. If the user is audio/video muted, remove the existing track from conference. A new track will be created and replaced automatically when the user unmutes. Also since screensharing is a separate source, always check for updated camera devices.
2022-12-15 17:39:25 -05:00
Gabriel Borlea
955367a157 fix(config): cleanup config function (#12690)
* fix(config): avoid cleaning analytics config

* fix cleanup function
2022-12-15 18:00:22 +02:00
Saúl Ibarra Corretgé
c30d1e7479 fix(rn,dynamic-branding) fix handling bogus response from the backend 2022-12-15 12:19:17 +01:00
Avram Tudor
cbbe58a1ec fix(prejoin) fix prejoin app dialogs not being visible (#12689) 2022-12-15 11:29:08 +02:00
Robert Pintilii
aef5328aeb ref(TS) Convert some features to TS (#12651) 2022-12-14 14:23:07 +02:00
Gabriel Borlea
f5ac1b6271 chore(deps) lib-jitsi-meet@latest (#12684)
https://github.com/jitsi/lib-jitsi-meet/compare/v1556.0.0+d9ee8f59...v1557.0.0+8df33524
2022-12-14 12:12:45 +02:00
Titus Moldovan
ca9f0a6788 fix(rn,screenshare) rework the logic for unified-plan with multi-stream 2022-12-14 08:35:33 +01:00
Saúl Ibarra Corretgé
e7c5ae5936 fix(rn,config) don't disable multi-stream sending on RN
We don't plan to send both (camera and screen) streams at once, but we
do plan to align with web and have both streams at the same time, with
the camera being muted when we start screen sharing.
2022-12-14 08:35:33 +01:00
Saúl Ibarra Corretgé
c43a319576 feat(deps,rn) update react-native-webrtc@106
Brings in Unified Plan support!
2022-12-14 08:35:33 +01:00
Saúl Ibarra Corretgé
585c9aa0d2 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1554.0.0+a25023e7...v1556.0.0+d9ee8f59
2022-12-14 08:34:36 +01:00
Horatiu Muresan
768f10d966 feat(route) Redirect to a custom welcome page 2022-12-13 22:04:11 +02:00
Horatiu Muresan
704740969b fix(prejoin) Fix missing lib error 2022-12-13 22:04:11 +02:00
damencho
d444a45f00 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1553.0.0+57646337...v1554.0.0+a25023e7
2022-12-13 10:18:31 -06:00
Дамян Минков
9fbbe05d6c feat: Adds docs, config and scripts around the visitor mode. (#12658)
* feat: Moves handle of vnode from conferenceIQ stanza error to result.

* feat: Handles redirected to visitor node event.

* feat: Adds README and configurations.

* squash: Drop comment.

* copy edits

* image fix

* fix background for dark mode

* fix the background

* feat: Update s2soutinjection.

* Update README commands formatting.

* Update doc/extra-large-conference/README.md

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

* squash: Creates a generateVisitorConfig helper.

* squash: Moves the folder from doc.

* squash: Update example.

* squash: Drop config.

* squash: Rename var to look like template.

* squash: Fix plugins path.

* squash: Fix sort order of import.

* squash: Fix lint errors.

Co-authored-by: scott boone <scott.e.boone@gmail.com>
Co-authored-by: Scott Boone <scott.boone@8x8.com>
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2022-12-13 08:26:22 -06:00
Gabriel Borlea
3445c513ba chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1549.0.0+877c4546...v1553.0.0+57646337
2022-12-13 15:14:01 +01:00
Mihaela Dumitru
6a4276b4c8 fix(salesforce) require selected records + styling (#12669) 2022-12-12 19:15:45 +02:00
damencho
338b02a6b6 feat: Prints the error on problem sharing YouTube video. 2022-12-12 09:39:25 -06:00
damencho
ef2631e95a fix: Error in patching config.js 2022-12-12 09:14:16 -06:00
damencho
226ef9f33d fix: Fixes undefined error in some cases after patching config.js. 2022-12-12 08:46:42 -06:00
tmoldovan8x8
91ec5307ab fix(android) adds default notification icons 2022-12-12 15:12:05 +02:00
Nils Ohlmeier
fe0b7d3acc chore(deps): bumped rtcstats 9.5.0 -> 9.5.1 (#12664) 2022-12-09 21:14:00 -08:00
Saúl Ibarra Corretgé
9533650594 fix(e2ee) avoid running middleware when there is no conference
When hanging up, the conference transitions to undefined, so we should
skip all processing related to setting up listeners for a new
conference.
2022-12-09 14:44:18 +01:00
Avram Tudor
d7bedb2e07 ref(misc) remove unused code for dock / undock (#12661)
* ref(misc) remove unused code for dock / undock

* remove translations
2022-12-09 15:19:57 +02:00
Mihaela Dumitru
33e4da32e2 feat(giphy) disable feature from dynamic branding (#12620) 2022-12-08 16:02:31 +02:00
bgrozev
9a8a8ef7ad Bump js-utils to 2.0.5 (filter room names). (#12625)
* Bump js-utils to 2.0.5 (filter room names).
2022-12-07 10:35:42 -06:00
Calin-Teodor
703ed731c8 feat(base/redux): fixed local storage on native 2022-12-07 18:16:53 +02:00
William Liang
83dfb67f23 fix(video-mute) prevent multiple camera track creation 2022-12-07 10:23:20 -05:00
Robert Pintilii
51bdf67cf2 fix(dialog) Fix Dialog on mobile (#12650)
Use JitsiPortal on mobile
2022-12-07 11:27:55 +02:00
damencho
3adbda791c chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1548.0.0+8acdeb1d...v1549.0.0+877c4546
2022-12-06 19:10:02 -06:00
Jaya Allamsetty
924bb0e7ff chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1545.0.0+f8e587f7...v1548.0.0+8acdeb1d
2022-12-06 16:31:06 -06:00
tmoldovan8x8
4c9bfe3d4d feat(E2EE) add initial SAS verification UI 2022-12-06 18:29:33 +01:00
Jaya Allamsetty
1139311809 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1543.0.0+c57ac97e...v1545.0.0+f8e587f7
2022-12-06 10:53:20 -05:00
Calinteodor
2ad2e6ff0e feat(polls/web): removed sort options from polls (#12641)
* feat(polls/web): removed sort options from polls
2022-12-05 15:18:24 +02:00
damencho
46cc2e37ae feat: Update lib-jitsi-meet.
Fixes version of binary ljm.
2022-12-02 15:31:33 -06:00
Saúl Ibarra Corretgé
0ebac2ac6d fixup! 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
90e33ee799 fixup devcontainer 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
be982ae996 fix(build) use http for GitHub codespaces 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
56114fe863 Create devcontainer.json 2022-12-02 19:05:47 +01:00
Saúl Ibarra Corretgé
a2e8a7f28f fix(toolbox) hide drawer after toggling camera
Fixes: https://github.com/jitsi/jitsi-meet/issues/12628
2022-12-02 15:31:44 +01:00
Pawel Domas
af072c3070 fix: get the current conference
state['features/base/conference'].conference is not the right way to get the current conference.
See getCurrentConference selector - it accounts for joining and other states.
2022-12-01 16:02:35 -05:00
Jaya Allamsetty
f42772ec5b chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1539.0.0+eb4873d2...v1541.0.0+9b34e0f7
2022-11-29 15:28:51 -05:00
Gabriel Borlea
2556a7ab77 fix(face-landmarks): assign empty array to facelandmarks in speakerstats if undefined 2022-11-29 19:12:43 +01:00
Charles Zablit
3cbf160f2b fix: always display transcription (#12325)
* feat: always display transcription

* fix: unused import
2022-11-29 09:50:19 -06:00
Дамян Минков
744960bb1a feat: Several module optimizations to avoid constant parsing of jids. (#12594)
* feat: Several module optimizations to avoid constant parsing of jids.

Caches the parsed values in a rotating table with limited size.
Skips constant creating of a stanza with never changing values - create it once and then just clone it.

* squash: Fixes extract_subdomain multiple values.

* squash: Fix table values when there is a nil element.

* squash: Fix skipping the roomless IQs.

* squash: Fix comments.
2022-11-28 14:18:59 -06:00
Дамян Минков
76471a0ea9 feat: Modules for implementing visitor nodes. (#12593)
* feat: Modules for implementing visitor nodes.

Still WIP, uses visitor nodes prosodies where we create the main participants and forward the visitors to watch. Used for huge conferences.

* squash: Fix comments.
2022-11-28 14:18:33 -06:00
Robert Pintilii
0ba033e07d ref(TS) Improve TS (#12612)
Remove unnecessary @ts-ignores
Remove unnecessary eslint-disable
2022-11-28 12:52:45 +02:00
Robert Pintilii
cb3fb3ada9 ref(TS) Convert some features to TS (#12611) 2022-11-28 12:52:24 +02:00
Calinteodor
48a6472b3b feat(lobby/prejoin/native): style updates (#12615)
feat(lobby/prejoin/native): style updates (#12615)
2022-11-25 13:59:45 +02:00
Roberto Vieira
691e92b7ec fix(ios) make initialPositionInSuperView a variable
Fixes: https://github.com/jitsi/jitsi-meet/issues/12446
2022-11-25 10:44:27 +01:00
Calin-Teodor
6e36340a83 feat(conference): fixed padding 2022-11-24 19:41:56 +02:00
Mihaela Dumitru
ae424c95de chore(whiteboard): bump excalidraw version (#12614) 2022-11-24 17:43:08 +02:00
Mihaela Dumitru
95b2979eb3 feat(whiteboard): use jitsi room name for socket io connection (#12610) 2022-11-24 14:20:40 +02:00
_norbert
a0c130568b fix(lang) update Hungarian translation 2022-11-23 19:33:13 +01:00
504 changed files with 10521 additions and 6453 deletions

View File

@@ -0,0 +1,15 @@
{
"name": "Jitsi Meet Dev Container",
"image": "mcr.microsoft.com/devcontainers/universal:2",
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "16"
}
},
"hostRequirements": {
"cpus": 4,
"memory": "8gb",
"storage": "32gb"
},
"postCreateCommand": "bash -i -c 'nvm use && npm install && cp tsconfig.web.json tsconfig.json'"
}

25
.github/workflows/ci-lua.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Lua CI
on: [pull_request]
jobs:
luacheck:
name: Luacheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install luarocks
run: sudo apt-get --install-recommends -y install luarocks
- name: Install luacheck
run: sudo luarocks install luacheck
- name: Check lua codes
run: |
set -o pipefail && luacheck . | awk -F: '
{
print $0
printf "::warning file=%s,line=%s,col=%s::%s\n", $1, $2, $3, $4
}
'

View File

@@ -7,7 +7,7 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -20,12 +20,11 @@ jobs:
- name: Check if the git repository is clean
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/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
@@ -36,7 +35,7 @@ jobs:
name: Build Frontend (macOS)
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16

8
.luacheckrc Normal file
View File

@@ -0,0 +1,8 @@
global = false
unused = false
redefined = false
ignore = { "581" }
max_line_length = false
color = false
formatter = "plain"
quiet = 1

View File

@@ -141,7 +141,7 @@ react/features/sample/
```
The middleware must be imported in `react/features/app/` specifically
in `middlewares.any`, `middlewares.native.js` or `middlewares.web.js` where appropriate.
in `middlewares.any.ts`, `middlewares.native.ts` or `middlewares.web.ts` where appropriate.
Likewise for the reducer.
An `index.js` file must not be provided for exporting actions, action types and

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

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

View File

@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>

View File

@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>

View File

@@ -76,7 +76,6 @@ dependencies {
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')

View File

@@ -81,6 +81,8 @@ public class JitsiMeetView extends FrameLayout {
result.putBoolean(key, (Boolean)bValue);
} else if (valueType.contentEquals("String")) {
result.putString(key, (String)bValue);
} else if (valueType.contentEquals("Integer")) {
result.putInt(key, (int)bValue);
} else if (valueType.contentEquals("Bundle")) {
result.putBundle(key, mergeProps((Bundle)aValue, (Bundle)bValue));
} else {

View File

@@ -73,7 +73,6 @@ class ReactInstanceManagerHolder {
new SplashScreenModule(reactContext),
new PictureInPictureModule(reactContext),
new ProximityModule(reactContext),
new WiFiStatsModule(reactContext),
new org.jitsi.meet.sdk.net.NAT64AddrInfoModule(reactContext)));
if (AudioModeModule.useConnectionService()) {
@@ -120,11 +119,10 @@ class ReactInstanceManagerHolder {
new com.oblador.performance.PerformancePackage(),
new com.reactnativecommunity.slider.ReactSliderPackage(),
new com.brentvatne.react.ReactVideoPackage(),
new org.reactnative.maskedview.RNCMaskedViewPackage(),
new com.reactnativecommunity.webview.RNCWebViewPackage(),
new com.kevinresol.react_native_default_preference.RNDefaultPreferencePackage(),
new com.learnium.RNDeviceInfo.RNDeviceInfo(),
new com.swmansion.gesturehandler.react.RNGestureHandlerPackage(),
new com.swmansion.gesturehandler.RNGestureHandlerPackage(),
new org.linusu.RNGetRandomValuesPackage(),
new com.rnimmersive.RNImmersivePackage(),
new com.swmansion.rnscreens.RNScreensPackage(),

View File

@@ -1,203 +0,0 @@
/*
* Copyright @ 2017-present Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jitsi.meet.sdk;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.module.annotations.ReactModule;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import org.json.JSONArray;
import org.json.JSONObject;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Module exposing WiFi statistics.
*
* Gathers rssi, signal in percentage, timestamp and the addresses of the wifi
* device.
*/
@ReactModule(name = WiFiStatsModule.NAME)
class WiFiStatsModule
extends ReactContextBaseJavaModule {
public static final String NAME = "WiFiStats";
/**
* The {@code Log} tag {@code WiFiStatsModule} is to log messages with.
*/
static final String TAG = NAME;
/**
* The scale used for the signal value. A level of the signal, given in the
* range of 0 to SIGNAL_LEVEL_SCALE-1 (both inclusive).
*/
public final static int SIGNAL_LEVEL_SCALE = 101;
/**
* {@link ExecutorService} for running all operations on a dedicated thread.
*/
private static final ExecutorService executor
= Executors.newSingleThreadExecutor();
/**
* Initializes a new module instance. There shall be a single instance of
* this module throughout the lifetime of the application.
*
* @param reactContext the {@link ReactApplicationContext} where this module
* is created.
*/
public WiFiStatsModule(ReactApplicationContext reactContext) {
super(reactContext);
}
/**
* Gets the name for this module to be used in the React Native bridge.
*
* @return a string with the module name.
*/
@Override
public String getName() {
return NAME;
}
/**
* Returns the {@link InetAddress} represented by this int.
*
* @param value the int representation of the ip address.
* @return the {@link InetAddress}.
* @throws UnknownHostException - if IP address is of illegal length.
*/
public static InetAddress toInetAddress(int value)
throws UnknownHostException {
return InetAddress.getByAddress(
new byte[] {
(byte) value,
(byte) (value >> 8),
(byte) (value >> 16),
(byte) (value >> 24)
});
}
/**
* Public method to retrieve WiFi stats.
*
* @param promise a {@link Promise} which will be resolved if WiFi stats are
* retrieved successfully, and it will be rejected otherwise.
*/
@ReactMethod
public void getWiFiStats(final Promise promise) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
Context context
= getReactApplicationContext().getApplicationContext();
WifiManager wifiManager
= (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
if (!wifiManager.isWifiEnabled()) {
promise.reject(new Exception("Wifi not enabled"));
return;
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo.getNetworkId() == -1) {
promise.reject(new Exception("Wifi not connected"));
return;
}
int rssi = wifiInfo.getRssi();
int signalLevel
= WifiManager.calculateSignalLevel(
rssi, SIGNAL_LEVEL_SCALE);
JSONObject result = new JSONObject();
result.put("rssi", rssi)
.put("signal", signalLevel)
.put("timestamp", System.currentTimeMillis());
JSONArray addresses = new JSONArray();
InetAddress wifiAddress
= toInetAddress(wifiInfo.getIpAddress());
try {
Enumeration<NetworkInterface> e
= NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
NetworkInterface networkInterface = e.nextElement();
boolean found = false;
// first check whether this is the desired interface
Enumeration<InetAddress> as
= networkInterface.getInetAddresses();
while (as.hasMoreElements()) {
InetAddress a = as.nextElement();
if(a.equals(wifiAddress)) {
found = true;
break;
}
}
if (found) {
// interface found let's put addresses
// to the result object
as = networkInterface.getInetAddresses();
while (as.hasMoreElements()) {
InetAddress a = as.nextElement();
if (a.isLinkLocalAddress())
continue;
addresses.put(a.getHostAddress());
}
}
}
} catch (SocketException e) {
JitsiMeetLogger.e(e, TAG + " Unable to NetworkInterface.getNetworkInterfaces()");
}
result.put("addresses", addresses);
promise.resolve(result.toString());
JitsiMeetLogger.d(TAG + " WiFi stats: " + result.toString());
} catch (Throwable e) {
JitsiMeetLogger.e(e, TAG + " Failed to obtain wifi stats");
promise.reject(
new Exception("Failed to obtain wifi stats"));
}
}
};
executor.execute(r);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -31,8 +31,6 @@ include ':react-native-immersive'
project(':react-native-immersive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immersive/android')
include ':react-native-keep-awake'
project(':react-native-keep-awake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keep-awake/android')
include ':react-native-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'

View File

@@ -47,6 +47,7 @@ import {
dataChannelClosed,
dataChannelOpened,
e2eRttChanged,
generateVisitorConfig,
getConferenceOptions,
kickedOut,
lockStateChanged,
@@ -102,6 +103,7 @@ import {
participantMutedUs,
participantPresenceChanged,
participantRoleChanged,
participantSourcesUpdated,
participantUpdated,
screenshareParticipantDisplayNameChanged,
updateRemoteParticipantFeatures
@@ -277,7 +279,8 @@ class ConferenceConnector {
/**
*
*/
constructor(resolve, reject) {
constructor(resolve, reject, conference) {
this._conference = conference;
this._resolve = resolve;
this._reject = reject;
this.reconnectTimeout = null;
@@ -336,6 +339,26 @@ class ConferenceConnector {
break;
}
case JitsiConferenceErrors.REDIRECTED: {
generateVisitorConfig(APP.store.getState(), params);
connection.disconnect().then(() => {
connect(this._conference.roomName).then(con => {
const localTracks = getLocalTracks(APP.store.getState()['features/base/tracks']);
const jitsiTracks = localTracks.map(t => t.jitsiTrack);
// visitors connect muted
jitsiTracks.forEach(t => t.mute());
// TODO disable option to unmute audio or video
this._conference.startConference(con, jitsiTracks);
});
});
break;
}
case JitsiConferenceErrors.GRACEFUL_SHUTDOWN:
APP.UI.notifyGracefulShutdown();
break;
@@ -459,6 +482,11 @@ export default {
*/
_localTracksInitialized: false,
/**
* Flag used to prevent the creation of another local video track in this.muteVideo if one is already in progress.
*/
isCreatingLocalTrack: false,
isSharingScreen: false,
/**
@@ -727,7 +755,7 @@ export default {
// XXX The API will take care of disconnecting from the XMPP
// server (and, thus, leaving the room) on unload.
return new Promise((resolve, reject) => {
new ConferenceConnector(resolve, reject).connect();
new ConferenceConnector(resolve, reject, this).connect();
});
},
@@ -1028,11 +1056,13 @@ export default {
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
if (!localVideo && !mute) {
if (!localVideo && !mute && !this.isCreatingLocalTrack) {
const maybeShowErrorDialog = error => {
showUI && APP.store.dispatch(notifyCameraError(error));
};
this.isCreatingLocalTrack = true;
// Try to create local video if there wasn't any.
// This handles the case when user joined with no video
// (dismissed screen sharing screen or in audio only mode), but
@@ -1054,6 +1084,9 @@ export default {
logger.debug(`muteVideo: calling useVideoStream for track: ${videoTrack}`);
return this.useVideoStream(videoTrack);
})
.finally(() => {
this.isCreatingLocalTrack = false;
});
} else {
// FIXME show error dialog if it fails (should be handled by react)
@@ -1339,7 +1372,7 @@ export default {
this._createRoom(localTracks);
return new Promise((resolve, reject) => {
new ConferenceConnector(resolve, reject).connect();
new ConferenceConnector(resolve, reject, this).connect();
});
},
@@ -1955,6 +1988,11 @@ export default {
APP.store.dispatch(participantKicked(kicker, kicked));
});
room.on(JitsiConferenceEvents.PARTICIPANT_SOURCE_UPDATED,
jitsiParticipant => {
APP.store.dispatch(participantSourcesUpdated(jitsiParticipant));
});
room.on(JitsiConferenceEvents.SUSPEND_DETECTED, () => {
APP.store.dispatch(suspendDetected());
});
@@ -2310,7 +2348,7 @@ export default {
* @param {MediaDeviceInfo[]} devices
* @returns {Promise}
*/
_onDeviceListChanged(devices) {
async _onDeviceListChanged(devices) {
const oldDevices = APP.store.getState()['features/base/devices'].availableDevices;
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
const localVideo = getLocalJitsiVideoTrack(APP.store.getState());
@@ -2324,13 +2362,10 @@ export default {
const newDevices
= mediaDeviceHelper.getNewMediaDevicesAfterDeviceListChanged(
devices,
this.isSharingScreen,
localVideo,
localAudio,
newLabelsOnly);
const promises = [];
const audioWasMuted = this.isLocalAudioMuted();
const videoWasMuted = this.isLocalVideoMuted();
const requestedInput = {
audio: Boolean(newDevices.audioinput),
video: Boolean(newDevices.videoinput)
@@ -2342,7 +2377,6 @@ export default {
= setAudioOutputDeviceId(newDevices.audiooutput, dispatch)
.catch(); // Just ignore any errors in catch block.
promises.push(setAudioOutputPromise);
}
@@ -2359,8 +2393,7 @@ export default {
}
// Let's handle unknown/non-preferred devices
const newAvailDevices
= APP.store.getState()['features/base/devices'].availableDevices;
const newAvailDevices = APP.store.getState()['features/base/devices'].availableDevices;
let newAudioDevices = [];
let oldAudioDevices = [];
@@ -2376,103 +2409,85 @@ export default {
// check for audio
if (newAudioDevices.length > 0) {
APP.store.dispatch(
checkAndNotifyForNewDevice(newAudioDevices, oldAudioDevices));
APP.store.dispatch(checkAndNotifyForNewDevice(newAudioDevices, oldAudioDevices));
}
// check for video
if (!requestedInput.video) {
APP.store.dispatch(
checkAndNotifyForNewDevice(newAvailDevices.videoInput, oldDevices.videoInput));
APP.store.dispatch(checkAndNotifyForNewDevice(newAvailDevices.videoInput, oldDevices.videoInput));
}
// When the 'default' mic needs to be selected, we need to
// pass the real device id to gUM instead of 'default' in order
// to get the correct MediaStreamTrack from chrome because of the
// following bug.
// When the 'default' mic needs to be selected, we need to pass the real device id to gUM instead of 'default'
// in order to get the correct MediaStreamTrack from chrome because of the following bug.
// https://bugs.chromium.org/p/chromium/issues/detail?id=997689
const hasDefaultMicChanged = newDevices.audioinput === 'default';
// This is the case when the local video is muted and a preferred device is connected.
// When the local video is muted and a preferred device is connected, update the settings and remove the track
// from the conference. A new track will be created and replaced when the user unmutes their camera.
if (requestedInput.video && this.isLocalVideoMuted()) {
// We want to avoid creating a new video track in order to prevent turning on the camera.
requestedInput.video = false;
APP.store.dispatch(updateSettings({ // Update the current selected camera for the device selection dialog.
APP.store.dispatch(updateSettings({
cameraDeviceId: newDevices.videoinput
}));
requestedInput.video = false;
delete newDevices.videoinput;
// Removing the current video track in order to force the unmute to select the preferred device.
logger.debug('_onDeviceListChanged: Removing the current video track.');
this.useVideoStream(null);
// Remove the track from the conference.
if (localVideo) {
await this.useVideoStream(null);
logger.debug('_onDeviceListChanged: Removed the current video track.');
}
}
promises.push(
mediaDeviceHelper.createLocalTracksAfterDeviceListChanged(
// When the local audio is muted and a preferred device is connected, update the settings and remove the track
// from the conference. A new track will be created and replaced when the user unmutes their mic.
if (requestedInput.audio && this.isLocalAudioMuted()) {
APP.store.dispatch(updateSettings({
micDeviceId: newDevices.audioinput
}));
requestedInput.audio = false;
delete newDevices.audioinput;
// Remove the track from the conference.
if (localAudio) {
await this.useAudioStream(null);
logger.debug('_onDeviceListChanged: Removed the current audio track.');
}
}
// Create the tracks and replace them only if the user is unmuted.
if (requestedInput.audio || requestedInput.video) {
let tracks = [];
try {
tracks = await mediaDeviceHelper.createLocalTracksAfterDeviceListChanged(
createLocalTracksF,
newDevices.videoinput,
hasDefaultMicChanged
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
: newDevices.audioinput)
.then(tracks => {
// If audio or video muted before, or we unplugged current
// device and selected new one, then mute new track.
const muteSyncPromises = tracks.map(track => {
if ((track.isVideoTrack() && videoWasMuted)
|| (track.isAudioTrack() && audioWasMuted)) {
return track.mute();
}
: newDevices.audioinput);
} catch (error) {
logger.error(`Track creation failed on device change, ${error}`);
return Promise.resolve();
});
return Promise.reject(error);
}
return Promise.all(muteSyncPromises)
.then(() =>
Promise.all(Object.keys(requestedInput).map(mediaType => {
if (requestedInput[mediaType]) {
const useStream
= mediaType === 'audio'
? this.useAudioStream.bind(this)
: this.useVideoStream.bind(this);
const track = tracks.find(t => t.getType() === mediaType) || null;
// Use the new stream or null if we failed to obtain it.
return useStream(track)
.then(() => {
if (track?.isAudioTrack() && hasDefaultMicChanged) {
// workaround for the default device to be shown as selected in the
// settings even when the real device id was passed to gUM because of
// the above mentioned chrome bug.
track._realDeviceId = track.deviceId = 'default';
}
mediaType === 'audio'
? this._updateAudioDeviceId()
: this._updateVideoDeviceId();
});
}
return Promise.resolve();
})));
})
.then(() => {
// Log and sync known mute state.
if (audioWasMuted) {
sendAnalytics(createTrackMutedEvent(
'audio',
'device list changed'));
logger.log('Audio mute: device list changed');
muteLocalAudio(true);
}
if (!this.isSharingScreen && videoWasMuted) {
sendAnalytics(createTrackMutedEvent(
'video',
'device list changed'));
logger.log('Video mute: device list changed');
muteLocalVideo(true);
}
}));
for (const track of tracks) {
if (track.isAudioTrack()) {
promises.push(
this.useAudioStream(track)
.then(() => {
hasDefaultMicChanged && (track._realDeviceId = track.deviceId = 'default');
this._updateAudioDeviceId();
}));
} else {
promises.push(
this.useVideoStream(track)
.then(() => {
this._updateVideoDeviceId();
}));
}
}
}
return Promise.all(promises)
.then(() => {

136
config.js
View File

@@ -79,11 +79,6 @@ var config = {
// This is useful when the client runs on a host with limited resources.
// noAutoPlayVideo: false,
// 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.
@@ -262,17 +257,6 @@ var config = {
// applied locally. FIXME: having these 2 options is confusing.
// startWithVideoMuted: false,
// If set to true, prefer to use the H.264 video codec (if supported).
// Note that it's not recommended to do this because simulcast is not
// supported when using H.264. For 1-to-1 calls this setting is enabled by
// default and can be toggled in the p2p section.
// This option has been deprecated, use preferredCodec under videoQuality section instead.
// preferH264: true,
// If set to true, disable H.264 video codec by stripping it out of the
// SDP.
// disableH264: false,
// Desktop sharing
// Optional desktop sharing frame rate options. Default value: min:5, max:5.
@@ -434,12 +418,6 @@ var config = {
// 90: 2,
// },
// Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent',
// 'SelectedEndpointsChangedEvent' and 'ReceiverVideoConstraint' into the new 'ReceiverVideoConstraints' message
// that invokes the new bandwidth allocation algorithm in the bridge which is described here
// - https://github.com/jitsi/jitsi-videobridge/blob/master/doc/allocation.md.
// useNewBandwidthAllocationStrategy: false,
// Specify the settings for video quality optimizations on the client.
// videoQuality: {
// // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified
@@ -564,12 +542,15 @@ var config = {
// Disables responsive tiles.
// disableResponsiveTiles: false,
// Hides lobby button
// DEPRECATED. Please use `securityUi?.hideLobbyButton` instead.
// Hides lobby button.
// hideLobbyButton: false,
// DEPRECATED. Please use `lobby?.autoKnock` instead.
// If Lobby is enabled starts knocking automatically.
// autoKnockLobby: false,
// DEPRECATED. Please use `lobby?.enableChat` instead.
// Enable lobby chat.
// enableLobbyChat: true,
@@ -580,9 +561,35 @@ var config = {
// Require users to always specify a display name.
// requireDisplayName: true,
// DEPRECATED! Use 'welcomePage.disabled' instead.
// Whether to use a welcome page or not. In case it's false a random room
// will be joined when no room is specified.
enableWelcomePage: true,
// enableWelcomePage: true,
// Configs for welcome page.
// welcomePage: {
// // Whether to disable welcome page. In case it's disabled a random room
// // will be joined when no room is specified.
// disabled: false,
// // If set,landing page will redirect to this URL.
// customUrl: ''
// },
// Configs for the lobby screen.
// lobby {
// // If Lobby is enabled, it starts knocking automatically. Replaces `autoKnockLobby`.
// autoKnock: false,
// // Enables the lobby chat. Replaces `enableLobbyChat`.
// enableChat: true,
// },
// Configs for the security related UI elements.
// securityUi: {
// // Hides the lobby button. Replaces `hideLobbyButton`.
// hideLobbyButton: false,
// // Hides the possibility to set and enter a lobby password.
// disableLobbyPassword: false,
// },
// Disable app shortcuts that are registered upon joining a conference
// disableShortcuts: false,
@@ -701,7 +708,6 @@ var config = {
// 'chat',
// 'closedcaptions',
// 'desktop',
// 'dock-iframe',
// 'download',
// 'embedmeeting',
// 'etherpad',
@@ -729,7 +735,6 @@ var config = {
// 'stats',
// 'tileview',
// 'toggle-camera',
// 'undock-iframe',
// 'videoquality',
// 'whiteboard',
// ],
@@ -813,6 +818,14 @@ var config = {
// 'microphone', 'camera', 'select-background', 'invite', 'settings'
// hiddenPremeetingButtons: [],
// An array with custom option buttons for the participant context menu
// type: Array<{ icon: string; id: string; text: string; }>
// customParticipantMenuButtons: [],
// An array with custom option buttons for the toolbar
// type: Array<{ icon: string; id: string; text: string; }>
// customToolbarButtons: [],
// Stats
//
@@ -915,18 +928,10 @@ var config = {
// If not set, the effective value is 'all'.
// iceTransportPolicy: 'all',
// If set to true, it will prefer to use H.264 for P2P calls (if H.264
// is supported). This setting is deprecated, use preferredCodec instead.
// preferH264: true,
// Provides a way to set the video codec preference on the p2p connection. Acceptable
// codec values are 'VP8', 'VP9' and 'H264'.
// preferredCodec: 'H264',
// If set to true, disable H.264 video codec by stripping it out of the
// SDP. This setting is deprecated, use disabledCodec instead.
// disableH264: false,
// Provides a way to prevent a video codec from being negotiated on the p2p connection.
// disabledCodec: '',
@@ -1083,10 +1088,64 @@ var config = {
// use only.
// _desktopSharingSourceDevice: 'sample-id-or-label',
// DEPRECATED! Use deeplinking.disabled instead.
// If true, any checks to handoff to another application will be prevented
// and instead the app will continue to display in the current browser.
// disableDeepLinking: false,
// The deeplinking config.
// For information about the properties of
// deeplinking.[ios/android].dynamicLink check:
// https://firebase.google.com/docs/dynamic-links/create-manually
// deeplinking: {
//
// // The desktop deeplinking config.
// desktop: {
// appName: 'Jitsi Meet'
// },
// // If true, any checks to handoff to another application will be prevented
// // and instead the app will continue to display in the current browser.
// disabled: false,
// // whether to hide the logo on the deep linking pages.
// hideLogo: false,
// // The ios deeplinking config.
// ios: {
// appName: 'Jitsi Meet',
// // Specify mobile app scheme for opening the app from the mobile browser.
// appScheme: 'org.jitsi.meet',
// // Custom URL for downloading ios mobile app.
// downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
// dynamicLink: {
// apn: 'org.jitsi.meet',
// appCode: 'w2atb',
// customDomain: undefined,
// ibi: 'com.atlassian.JitsiMeet.ios',
// isi: '1165103905'
// }
// },
// // The android deeplinking config.
// android: {
// appName: 'Jitsi Meet',
// // Specify mobile app scheme for opening the app from the mobile browser.
// appScheme: 'org.jitsi.meet',
// // Custom URL for downloading android mobile app.
// downloadLink: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
// // Android app package name.
// appPackage: 'org.jitsi.meet',
// fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/',
// dynamicLink: {
// apn: 'org.jitsi.meet',
// appCode: 'w2atb',
// customDomain: undefined,
// ibi: 'com.atlassian.JitsiMeet.ios',
// isi: '1165103905'
// }
// }
// },
// A property to disable the right click context menu for localVideo
// the menu has option to flip the locally seen video for local presentations
// disableLocalVideoFlip: false,
@@ -1303,6 +1362,7 @@ var config = {
deploymentInfo
dialOutAuthUrl
dialOutCodesUrl
dialOutRegionUrl
disableRemoteControl
displayJids
externalConnectUrl
@@ -1483,6 +1543,8 @@ var config = {
// tileTime: 5000,
// // Limit results by rating: g, pg, pg-13, r. Default value: g.
// rating: 'pg',
// // The proxy server url for giphy requests in the web app.
// proxyUrl: 'https://giphy-proxy.example.com',
// },
// Logging
@@ -1512,6 +1574,12 @@ var config = {
// },
};
// Temporary backwards compatibility with old mobile clients.
config.flags = config.flags || {};
config.flags.sourceNameSignaling = true;
config.flags.sendMultipleVideoStreams = true;
config.flags.receiveMultipleVideoStreams = true;
// Set the default values for JaaS customers
if (enableJaaS) {
config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids';

View File

@@ -2,13 +2,13 @@
display: inline-block;
&-content {
background: $menuBG;
border-radius: 3px;
font-size: 14px;
line-height: 24px;
position: relative;
right: auto;
margin-bottom: 8px;
max-height: 456px;
overflow: auto;
width: 300px;
&-ul {
margin:0;
padding:0;
@@ -16,90 +16,37 @@
}
}
&-header {
color: #fff;
align-items: center;
display: flex;
margin-top: 8px;
padding: 8px 16px;
&-icon {
display: inline-block;
svg {
fill: #fff;
}
}
&--bordered {
border-bottom: 1px solid #4C4D50;
}
&-text {
margin-left: 12px;
}
&-header:hover {
background-color: initial;
cursor: initial;
}
&-entry {
align-items: center;
color: #fff;
cursor: pointer;
display: flex;
padding: 8px 0;
margin-left: 48px;
&-entry-text {
display: inline-block;
text-overflow: ellipsis;
max-width: 213px;
overflow: hidden;
white-space: nowrap;
&--selected {
background: #131519;
cursor: initial;
margin-left: 0;
padding-left: 18px;
}
&-text {
color: #fff;
display: inline-block;
line-height: 24px;
text-overflow: ellipsis;
max-width: 213px;
overflow: hidden;
white-space: nowrap;
&.left-margin {
margin-left: 36px;
}
}
&-speaker {
position: relative;
&-ul {
margin:0;
padding:0;
list-style-type: none;
}
&:hover, &:focus-within, &:focus {
.audio-preview-entry {
background: #36383C;
margin-left: 0;
padding-left: 48px;
&--selected {
padding-left: 18px;
background: $newToolbarBackgroundColor;
}
}
.audio-preview-test-button {
display: inline-block;
}
.audio-preview-entry-text {
max-width: 178px;
margin-right: 0;
}
}
&:last-child {
padding-bottom: 8px;
}
.audio-preview-entry-text {
max-width: 238px;
}
@@ -108,19 +55,6 @@
&-microphone {
position: relative;
&:hover {
.audio-preview-entry {
background: #36383C;
margin-left: 0;
padding-left: 48px;
&--selected {
background: $newToolbarBackgroundColor;
padding-left: 18px;
}
}
}
&--nometer {
.audio-preview-entry-text {
max-width: 238px;
@@ -140,42 +74,21 @@
display: inline-block;
width: 14px;
& svg {
fill: #1C2025;
}
&--check {
background: #31B76A;
margin-right: 16px;
}
&--exclamation {
margin-left: 6px;
& svg {
fill: #E54B4B;
}
}
}
&-hr {
border-top: 1px solid #4C4D50;
border-bottom: 0;
}
&-test-button {
display: none;
background: #FFF;
border: 1px solid #D1DBE8;
border-radius: 3px;
color: #1C2025;
cursor: pointer;
font-weight: 600;
font-size: 0.8rem;
line-height: 24px;
padding: 2px 8px;
padding: 4px 10px;
position: absolute;
right: 16px;
top: 5px;
top: 6px;
}
&-meter-mic {
@@ -184,9 +97,7 @@
top: 14px;
}
// Override @atlaskit/InlineDialog container which is made with styled components
& > div:nth-child(2) {
outline: none;
padding: 0;
&-checkbox-container {
padding: 10px 16px;
}
}

View File

@@ -126,6 +126,12 @@ form {
background-size: contain;
}
.leftwatermarknomargin {
background-position: center left;
background-repeat: no-repeat;
background-size: contain;
}
.rightwatermark {
right: 32px;
top: 32px;

View File

@@ -32,7 +32,7 @@
#chat-conversation-container {
// extract message input height
height: calc(100% - 68px);
height: calc(100% - 64px);
overflow: hidden;
position: relative;
}
@@ -76,32 +76,6 @@
}
}
#chat-recipient {
align-items: center;
background-color: $chatPrivateMessageBackgroundColor;
display: flex;
flex-direction: row;
font-weight: 100;
padding: 10px;
span {
color: white;
display: flex;
flex: 1;
}
div {
svg {
cursor: pointer;
fill: white;
}
}
&.lobby-chat-recipient {
background-color: $chatLobbyMessageBackgroundColor;
}
}
.chat-header {
height: 70px;
@@ -124,13 +98,12 @@
}
.chat-input-container {
padding: 0 16px 16px;
padding: 0 16px 24px;
}
#chat-input {
display: flex;
align-items: flex-end;
padding: 4px;
position: relative;
}
@@ -263,15 +236,6 @@
-webkit-user-select: text;
user-select: text;
}
.display-name {
font-size: 12px;
font-weight: 600;
margin-bottom: 5px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.sr-only {
@@ -288,24 +252,11 @@
}
.chatmessage {
background-color: $chatRemoteMessageBackgroundColor;
border-radius: 0px 6px 6px 6px;
box-sizing: border-box;
color: white;
margin-top: 3px;
max-width: 100%;
position: relative;
&.localuser {
background-color: $chatLocalMessageBackgroundColor;
border-radius: 6px 0px 6px 6px;
}
.usermessage {
white-space: pre-wrap;
font-size: 14px;
}
&.error {
border-radius: 0px;
@@ -320,22 +271,12 @@
}
}
.privatemessagenotice {
font-size: 11px;
font-weight: 100;
}
.messagecontent {
margin: 8px;
max-width: 100%;
overflow: hidden;
}
}
.timestamp {
color: #757575;
}
#smileys {
font-size: 20pt;
margin: auto;
@@ -409,24 +350,9 @@
}
.chat-message-group {
display: flex;
flex-direction: column;
&.local {
align-items: flex-end;
.chatmessage {
background-color: $chatLocalMessageBackgroundColor;
border-radius: 6px 0px 6px 6px;
&.privatemessage {
background-color: $chatPrivateMessageBackgroundColor;
}
&.lobbymessage {
background-color: $chatLobbyMessageBackgroundColor;
}
}
.display-name {
display: none;
}
@@ -437,58 +363,10 @@
}
&.error {
.chatmessage {
background-color: $defaultWarningColor;
border-radius: 0px;
font-weight: 100;
}
.display-name {
display: none;
}
}
.chatmessage-wrapper {
max-width: 100%;
.replywrapper {
display: flex;
flex-direction: row;
align-items: center;
.messageactions {
align-self: stretch;
border-left: 1px solid $chatActionsSeparatorColor;
display: flex;
flex-direction: column;
justify-content: center;
padding: 5px;
&.lobbychatmessageactions {
border-left-color: $chatLobbyActionsSeparatorColor;
}
.toolbox-icon {
cursor: pointer;
}
}
}
}
.chatmessage {
background-color: $chatRemoteMessageBackgroundColor;
border-radius: 0px 6px 6px 6px;
display: inline-block;
margin-top: 3px;
color: white;
&.privatemessage {
background-color: $chatPrivateMessageBackgroundColor;
}
&.lobbymessage {
background-color: $chatLobbyMessageBackgroundColor;
}
}
}
.chat-dialog {

View File

@@ -3,28 +3,28 @@
display: inline-block;
& > svg {
fill: #4E5E6C;
fill: #525252;
width: 38px;
}
}
&.metr--disabled {
& > svg {
fill: #4E5E6C;
fill: #525252;
}
}
}
.metr-l-0 {
rect:first-child {
fill: #31B76A;
fill: #1EC26A;
}
}
@for $i from 1 through 7 {
.metr-l-#{$i} {
rect:nth-child(-n+#{$i+1}) {
fill: #31B76A;
fill: #1EC26A;
}
}
}

View File

@@ -1,360 +1,3 @@
.poll-dialog {
font-size: 14px;
font-weight: 400;
line-height: 20px;
h1, span, li, strong {
color: #bce;
}
ol {
margin: 0;
}
}
.poll-question-field {
padding: 8px 16px;
padding-bottom: 24px;
border-bottom: 1px solid #525252;
}
.poll-header {
margin-bottom: 8px;
}
.poll-creator {
color: #C2C2C2;
font-weight: 600;
margin: 4px 0 16px 0;
}
.poll-answer-container {
display: flex;
padding: 4px;
background: #3D3D3D;
border-radius: 3px;
margin-bottom: 8px;
@media (max-width: 580px) {
&> span {
padding: 8px 0;
}
svg {
margin-top: 6px;
}
}
}
.poll-answer-field-list, .poll-answer-list, .poll-result-list {
list-style-type: none;
padding: 0;
margin: 0;
}
.poll-answer-field-list {
padding: 0 16px;
}
ol.poll-result-list {
margin-bottom: 1.5em;
}
.poll-result-list > li {
margin-bottom: 16px;
}
.poll-answer-field {
flex-direction: column;
align-items: stretch;
margin-bottom: 16;
}
.poll-answer-field:last-child {
margin-bottom: 0;
}
.poll-create-option-row {
display: flex;
margin-bottom: 4;
}
// Needed to override atlaskit default blue color
.poll-create-container .jsYMHu {
background: #292929;
border-color: #808090;
color: #fff // #808090
}
.poll-add-button {
display: flex;
justify-content: center;
padding: 8px 16px;
}
.poll-remove-option-button {
background: 0 0;
border: none;
color: #E04757;
padding-left: 0;
}
.poll-create-add-option {
border: none;
background-color: #292929;
padding: 3px;
width: 100%;
}
.poll-icon-button, .poll-drag-handle {
.jitsi-icon svg {
fill: #929292;
}
}
.poll-drag-handle {
background-color: transparent;
border: none;
cursor: grab;
padding-left: 8;
padding-top: 8px;
display: flex;
}
.poll-dragged {
opacity: 0.5;
* {
cursor: grabbing !important;
}
}
.poll-question {
font-size: 16px;
font-weight: 600;
line-height: 26px;
}
.poll-answer-voters {
font-weight: lighter;
list-style-type: none;
border: #616161 solid 1px;
border-radius: 3px;
padding: 2px 6px;
margin: 4px 0px 12px;
background-color: #616161;
}
.poll-answer-header {
display: flex;
justify-content: space-between;
}
.poll-answer-vote-name {
flex-shrink: 1;
overflow-wrap: anywhere
}
.poll-answer-vote-count-container{
display: flex;
}
.poll-answer-vote-count {
margin-left: 10px;
white-space: nowrap;
flex: 1;
text-align: right;
}
.poll-answer-short-results{
display: flex;
min-width: 10em;
justify-content: space-between;
align-items: center;
}
.poll-bar-container, .poll-bar {
border-radius: 3px;
height: 6px;
}
.poll-bar-container {
background-color: #616161;
max-width: 160px;
margin-top: 3px;
flex: 1;
}
.poll-bar {
background-color: #246FE5;
}
.poll-message-footer {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
margin-top: 5px;
}
.poll-notice {
font-weight: 100;
margin-right: 10px;
}
.poll-show-details {
background-color: transparent;
border: none;
&:hover {
text-decoration: underline;
}
}
.poll-result-links {
display: flex;
flex-direction: row;
justify-content: space-between;
a.poll-detail-link, a.poll-change-vote-link {
color: #669AEC;
cursor: pointer;
font-weight: 600;
text-decoration: none;
&:hover {
color: #669AEC;
}
&:visited {
color: #669AEC;
}
}
}
.polls-pane-content {
height: 100%;
position: relative;
}
.pane-content{
display: flex;
flex-direction: column;
height: 100%;
justify-content: center;
align-items: center;
width: 100%;
}
.empty-pane-icon {
width: 50%;
padding: 24px;
}
.empty-pane-icon svg {
fill: #3D3D3D;
width: 100%;
height: auto;
}
.empty-pane-message {
color: #fff;
padding: 0 16px;
text-align: center;
}
.poll-results, .poll-answer {
background: #292929;
border-radius: 8px;
border: 1px solid #666666;
margin: 16px;
padding: 16px;
word-break: break-word;
}
.poll-results {
color: #fff;
}
.poll-answer {
h1, strong ,span {
color: #fff;
}
button > span {
color: inherit;
}
}
.poll-create-label {
color: #C2C2C2;
display: flex;
font-weight: 400;
margin-bottom: 4;
}
.expandable-input{
line-height: 18px;
resize: none;
width: 100%;
height: 40px;
box-sizing: border-box;
overflow: hidden;
border: 1px solid #666666;
background-color: #141414;
color: #FFF;
border-radius: 6px;
padding: 10px 16px;
}
#polls-panel {
height: calc(100% - 119px);
}
.poll-container {
font-size: 14px;
font-weight: 600;
height: calc(100% - 88px);
line-height: 20px;
overflow-y: auto;
position: relative;
& > * + *:not(.ignore-child) {
margin-top: 16px;
}
@media (max-width: 580px) {
height: calc(100% - 102px);
}
}
.poll-create-header {
color: #fff;
font-size: 20px;
line-height: 28px;
margin: 20px 16px;
font-weight: 600;
}
.poll-create-container {
padding: 8px 0;
}
.poll-create-footer {
background-color: #141414;
bottom: 0;
position: absolute;
width: calc(100% - 32px);
}
.poll-footer {
display: flex;
justify-content: space-between;
padding: 0 16px 16px 16px;
}
.poll-answer-footer {
padding: 8px 0 0 0;
}

View File

@@ -5,15 +5,15 @@
.popupmenu__contents {
.popupmenu__volume-slider {
&::-webkit-slider-runnable-track {
background-color: $popupSliderColor;
background-color: #246FE5;
}
&::-moz-range-track {
background-color: $popupSliderColor;
background-color: #246FE5;
}
&::-ms-fill-lower {
background-color: $popupSliderColor;
background-color: #246FE5;
}
}
}

View File

@@ -18,6 +18,7 @@
align-items: center;
font-size: 14px;
margin-left: 16px;
max-width: 70%;
}
&.space-top {
@@ -82,7 +83,7 @@
background-color: #FFFFFF;
border-radius: 4px;
height: 40px;
width: 56px;
width: 40px;
}
.jitsi-content-recording-icon-container-without-switch {

View File

@@ -31,10 +31,6 @@
}
}
.welcome-tabs {
display: none;
}
.header-text-title {
text-align: center;
}
@@ -56,13 +52,6 @@
.welcome-footer-row-block {
display: block;
}
.welcome-badge {
margin-right: 16px;
}
.welcome-footer {
display: none;
}
}
}

View File

@@ -30,24 +30,24 @@
right: -4px;
top: -3px;
&:hover {
&:hover {
background: #F2F3F4;
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
&> svg {
fill: #000;
& > svg {
fill: #040404;
}
&.settings-button-small-icon--disabled {
background: #36383C;
&> svg {
fill: #929292;
}
fill: #929292;
}
}
}
&> svg {
& > svg {
fill: #fff;
}

View File

@@ -12,7 +12,6 @@
&#autoHide.with-always-on {
overflow: hidden;
animation: hideSubject forwards .6s ease-out;
margin-left: 4px;
& > .subject-info-container {
justify-content: flex-start;
@@ -43,42 +42,6 @@
height: 28px;
}
.subject-text {
background: rgba(0, 0, 0, 0.6);
border-radius: 3px 0px 0px 3px;
box-sizing: border-box;
font-size: 14px;
line-height: 28px;
padding: 0 16px;
height: 28px;
max-width: 324px;
@media (max-width: 300px) {
display: none;
}
&--content {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.subject-timer {
background: rgba(0, 0, 0, 0.8);
border-radius: 0px 3px 3px 0px;
box-sizing: border-box;
font-size: 12px;
line-height: 28px;
min-width: 34px;
padding: 0 8px;
height: 28px;
@media (max-width: 300px) {
display: none;
}
}
.details-container {
width: 100%;
display: flex;

View File

@@ -120,12 +120,16 @@
margin: 8px 0;
}
.hangup-button {
background-color: $hangupColor;
div.hangup-button {
background-color: #CB2233;
@media (hover: hover) and (pointer: fine) {
&:hover {
background-color: $hangupHoverColor;
background-color: #E04757;
}
&:active {
background-color: #A21B29;
}
}
@@ -134,12 +138,16 @@
}
}
.hangup-menu-button {
background-color: $hangupMenuButtonColor;
div.hangup-menu-button {
background-color: #CB2233;
@media (hover: hover) and (pointer: fine) {
&:hover {
background-color: $hangupMenuButtonHoverColor;
background-color: #E04757;
}
&:active {
background-color: #A21B29;
}
}

View File

@@ -4,10 +4,6 @@
* Style variables
*/
$baseFontFamily: -apple-system, BlinkMacSystemFont, 'open_sanslight', 'Helvetica Neue', Helvetica, Arial, sans-serif;
$hangupColor:#DD3849;
$hangupHoverColor: #F25363;
$hangupMenuButtonColor:#0056E0;;
$hangupMenuButtonHoverColor: #246FE5;
/**
* Size variables.
@@ -79,7 +75,6 @@ $modalTextColor: #333;
$chatActionsSeparatorColor: rgb(173, 105, 112);
$chatBackgroundColor: #131519;
$chatInputSeparatorColor: #A4B8D1;
$chatLobbyMessageBackgroundColor: #6A50D3;
$chatLobbyActionsSeparatorColor: #6A50D3;
$chatLocalMessageBackgroundColor: #484A4F;
$chatPrivateMessageBackgroundColor: rgb(153, 69, 77);
@@ -170,8 +165,9 @@ $welcomePageHeaderPaddingBottom: 0px;
$welcomePageHeaderTitleMaxWidth: initial;
$welcomePageHeaderTextAlign: center;
$welcomePageHeaderContainerMarginTop: 104px;
$welcomePageHeaderContainerDisplay: flex;
$welcomePageHeaderContainerMargin: 104px 32px 0 32px;
$welcomePageHeaderContainerMargin: $welcomePageHeaderContainerMarginTop auto 0;
$welcomePageHeaderTextTitleMarginBottom: 0;
$welcomePageHeaderTextTitleFontSize: 42px;

View File

@@ -29,6 +29,16 @@ body.welcome-page {
flex-direction: column;
margin: $welcomePageHeaderContainerMargin;
z-index: $zindex2;
align-items: center;
position: relative;
max-width: 688px;
}
.header-watermark-container {
position: absolute;
width: 100%;
height: 100%;
margin-top: calc(20px - #{$welcomePageHeaderContainerMarginTop});
}
.header-text-title {
@@ -123,16 +133,11 @@ body.welcome-page {
max-width: calc(100% - 40px);
padding: 16px 0 39px 0;
width: $welcomePageEnterRoomWidth;
text-align: center;
p {
color: $welcomePageDescriptionColor;
float: left;
text-align: $welcomePageHeaderTextAlign;
a {
color: inherit;
font-weight: 600;
}
a {
color: inherit;
font-weight: 600;
}
}
}
@@ -200,8 +205,8 @@ body.welcome-page {
color: $welcomePageDescriptionColor;
padding: 4px;
position: absolute;
top: 32px;
right: 32px;
top: calc(35px - #{$welcomePageHeaderContainerMarginTop});
right: 0;
z-index: $zindex2;
* {
@@ -224,6 +229,11 @@ body.welcome-page {
width: $welcomePageWatermarkWidth;
height: $welcomePageWatermarkHeight;
}
.watermark.leftwatermarknomargin {
width: $welcomePageWatermarkWidth;
height: $welcomePageWatermarkHeight;
}
}
&.without-content {
@@ -242,10 +252,17 @@ body.welcome-page {
padding-top: 40px;
}
.welcome-card-row {
.welcome-card-column {
display: flex;
justify-content: center;
padding: 0 32px;
flex-direction: column;
align-items: center;
max-width: 688px;
margin: auto;
> div {
margin-bottom: 16px;
}
}
.welcome-card-text {
@@ -253,7 +270,7 @@ body.welcome-page {
}
.welcome-card {
width: 49%;
width: 100%;
border-radius: 8px;
&--dark {
@@ -268,10 +285,6 @@ body.welcome-page {
&--grey {
background: #F2F3F4;
}
&--shadow {
box-shadow: 0px 4px 30px rgba(0, 0, 0, 0.15);
}
}
.welcome-footer {

View File

@@ -2,7 +2,8 @@ $sidePanelWidth: 300px;
.prejoin-third-party {
flex-direction: column-reverse;
z-index: auto;
.content {
height: auto;
margin: 0 auto;

View File

@@ -41,20 +41,27 @@
&-dropdown-btns {
padding: 8px 0;
}
&-dropdown-container {
position: relative;
width: 100%;
/**
* Override default InlineDialog behaviour, since it does not play nicely with relative widths
*/
& > div:nth-child(2) {
background: #fff;
background: #E0E0E0;
padding: 0;
position: absolute !important;
width: 100%;
}
}
}
}
.prejoin-input {
margin-bottom: 16px;
& input {
text-align: center;
}
}

View File

@@ -1,14 +1,4 @@
.premeeting-screen {
background: #292929;
bottom: 0;
display: flex;
font-size: 1.3em;
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: $toolbarZ + 2;
.premeeting-screen {
.action-btn {
border-radius: 6px;
box-sizing: border-box;
@@ -75,139 +65,44 @@
}
}
.content {
align-items: center;
box-sizing: border-box;
display: flex;
flex-direction: column;
flex-shrink: 0;
height: 100%;
margin: 0 30px;
padding: 24px 0 16px;
#new-toolbox {
bottom: 0;
position: relative;
width: $prejoinDefaultContentWidth;
z-index: $toolbarZ + 2;
transition: none;
&-controls {
align-items: center;
.toolbox-content {
margin-bottom: 4px;
}
.toolbox-content-items {
@include ltr;
background: transparent;
box-shadow: none;
display: flex;
flex-direction: column;
margin: auto;
justify-content: space-between;
padding: 8px 0;
}
.toolbox-content,
.toolbox-content-wrapper,
.toolbox-content-items {
box-sizing: border-box;
width: 100%;
.title {
color: #fff;
font-size: 28px;
font-weight: 600;
letter-spacing: -0.015;
line-height: 36px;
margin-bottom: 16px;
text-align: center;
}
input.field {
background-color: white;
border: none;
outline: none;
border-radius: 6px;
font-size: 14px;
line-height: 20px;
margin-bottom: 16px;
color: #1C2025;
padding: 10px 16px;
text-align: center;
width: 100%;
&.error {
border: 1px solid #E04757;
}
&.focused {
box-shadow: 0px 0px 1px 1.5px black, 0px 0px 1.3px 4px white;
}
}
#new-toolbox {
bottom: 0;
position: relative;
transition: none;
.toolbox-content {
margin-bottom: 4px;
}
.toolbox-content-items {
@include ltr;
background: transparent;
box-shadow: none;
display: flex;
justify-content: space-evenly;
padding: 8px 0;
}
.toolbox-content,
.toolbox-content-wrapper,
.toolbox-content-items {
box-sizing: border-box;
width: 100%;
}
}
}
}
@media (max-width: 720px) {
flex-direction: column-reverse;
.content {
height: auto;
margin: 0 auto;
}
}
// mobile phone landscape
@media (max-height: 420px) {
div.content {
padding: 16px 16px 0 16px;
}
}
@media (max-width: 400px) {
.content {
padding: 16px;
width: 100%;
&-controls {
input.field {
font-size: 16px;
padding: 14px 16px;
}
}
.title {
display: none;
}
}
.device-status-error {
border-radius: 0;
margin: 0 -16px;
}
input.field {
font-size: 16px;
padding: 14px 16px;
}
.action-btn {
font-size: 16px;
margin-bottom: 8px;
padding: 11px 16px;
}
}
input::placeholder {
color: #040404;
}
}
#preview {

View File

@@ -65,7 +65,6 @@ $errorColor: #c61600;
// Popover colors
$popoverFontColor: #ffffff !important;
$popupSliderColor: #0376da;
// Toolbar
$toolbarBackground: rgba(0, 0, 0, 0.5);

View File

@@ -44,12 +44,7 @@ case "$1" in
fi
JVB_SECRET="$RET"
db_get jicofo/jicofo-authuser
if [ -z "$RET" ] ; then
db_input critical jicofo/jicofo-authuser || true
db_go
fi
JICOFO_AUTH_USER="$RET"
JICOFO_AUTH_USER="focus"
db_get jicofo/jicofo-authpassword
if [ -z "$RET" ] ; then

View File

@@ -13,12 +13,6 @@ Type: password
_Description: Jitsi Videobridge Component secret:
The secret used by Jitsi Videobridge to connect to xmpp server as component.
Template: jicofo/jicofo-authuser
Type: string
Default: focus
_Description: Jicofo username:
The jicofo needs an authenticated admin user to connect to xmpp server.
Template: jicofo/jicofo-authpassword
Type: password
_Description: Jicofo user password:

View File

@@ -176,6 +176,11 @@ case "$1" in
fi
# Fixes multi-stream flags to workaround problem with mobile joining a multi-stream call with multi-stream disabled
FIX_MSG="// Temporary backwards compatibility with old mobile clients."
if ! grep -q "^${FIX_MSG}" $JITSI_MEET_CONFIG; then
echo $FIX_MSG >> $JITSI_MEET_CONFIG
echo "config.flags = config.flags || {};" >> $JITSI_MEET_CONFIG
fi
if ! grep -q "^config.flags.sourceNameSignaling*" $JITSI_MEET_CONFIG; then
echo "config.flags.sourceNameSignaling = true;" >> $JITSI_MEET_CONFIG
fi

View File

@@ -15,6 +15,17 @@ upstream jvb1 {
server 127.0.0.1:9090;
keepalive 2;
}
map $arg_vnode $prosody_node {
default prosody;
v1 v1;
v2 v2;
v3 v3;
v4 v4;
v5 v5;
v6 v6;
v7 v7;
v8 v8;
}
server {
listen 80;
listen [::]:80;
@@ -95,7 +106,7 @@ server {
# BOSH
location = /http-bind {
proxy_pass http://prosody/http-bind?prefix=$prefix&$args;
proxy_pass http://$prosody_node/http-bind?prefix=$prefix&$args;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
@@ -104,7 +115,7 @@ server {
# xmpp websockets
location = /xmpp-websocket {
proxy_pass http://prosody/xmpp-websocket?prefix=$prefix&$args;
proxy_pass http://$prosody_node/xmpp-websocket?prefix=$prefix&$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

2
globals.d.ts vendored
View File

@@ -14,6 +14,7 @@ declare global {
registerShortcut: Function;
unregisterShortcut: Function;
openDialog: Function;
enable: Function;
}
};
const interfaceConfig: any;
@@ -23,6 +24,7 @@ declare global {
JITSI_MEET_LITE_SDK?: boolean;
interfaceConfig?: any;
JitsiMeetJS?: any;
JitsiMeetElectron?: any;
}
const config: IConfig;

View File

@@ -76,11 +76,6 @@ var interfaceConfig = {
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
/**
* Hide the logo on the deep linking pages.
*/
HIDE_DEEP_LINKING_LOGO: false,
/**
* Hide the invite prompt in the header when alone in the meeting.
*/
@@ -108,23 +103,6 @@ var interfaceConfig = {
*/
MOBILE_APP_PROMO: true,
/**
* Specify custom URL for downloading android mobile app.
*/
MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
/**
* Specify custom URL for downloading f droid app.
*/
MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
/**
* Specify URL for downloading ios mobile app.
*/
MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
NATIVE_APP_NAME: 'Jitsi Meet',
// Names of browsers which should show a warning stating the current browser
// has a suboptimal experience. Browsers which are not listed as optimal or
// unsupported are considered suboptimal. Valid values are:
@@ -159,7 +137,6 @@ var interfaceConfig = {
*/
SHOW_CHROME_EXTENSION_BANNER: false,
SHOW_DEEP_LINKING_IMAGE: false,
SHOW_JITSI_WATERMARK: true,
SHOW_POWERED_BY: false,
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
@@ -200,6 +177,31 @@ var interfaceConfig = {
*/
// TILE_VIEW_MAX_COLUMNS: 5,
// List of undocumented settings
/**
INDICATOR_FONT_SIZES
PHONE_NUMBER_REGEX
*/
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
/**
* Specify URL for downloading ios mobile app.
*/
// MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
/**
* Specify custom URL for downloading android mobile app.
*/
// MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
/**
* Specify mobile app scheme for opening the app from the mobile browser.
*/
// APP_SCHEME: 'org.jitsi.meet',
// NATIVE_APP_NAME: 'Jitsi Meet',
/**
* Specify Firebase dynamic link properties for the mobile apps.
*/
@@ -212,22 +214,19 @@ var interfaceConfig = {
// },
/**
* Specify mobile app scheme for opening the app from the mobile browser.
* Hide the logo on the deep linking pages.
*/
// APP_SCHEME: 'org.jitsi.meet',
// HIDE_DEEP_LINKING_LOGO: false,
/**
* Specify the Android app package name.
*/
// ANDROID_APP_PACKAGE: 'org.jitsi.meet',
// List of undocumented settings
/**
INDICATOR_FONT_SIZES
PHONE_NUMBER_REGEX
*/
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
* Specify custom URL for downloading f droid app.
*/
// MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
// Connection indicators (
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,

View File

@@ -373,8 +373,12 @@ PODS:
- React-Core
- react-native-performance (2.1.0):
- React-Core
- react-native-safe-area-context (3.3.2):
- react-native-safe-area-context (4.4.1):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- ReactCommon/turbomodule/core
- react-native-slider (4.1.12):
- React-Core
- react-native-splash-screen (3.3.0):
@@ -385,7 +389,7 @@ PODS:
- react-native-video/Video (6.0.0-alpha.1):
- PromisesSwift
- React-Core
- react-native-webrtc (1.106.1):
- react-native-webrtc (106.0.5):
- JitsiWebRTC (~> 106.0.0)
- React-Core
- react-native-webview (11.15.1):
@@ -461,13 +465,11 @@ PODS:
- React-Core
- RNCClipboard (1.5.1):
- React-Core
- RNCMaskedView (0.2.6):
- React-Core
- RNDefaultPreference (1.4.4):
- React-Core
- RNDeviceInfo (8.4.8):
- React-Core
- RNGestureHandler (2.1.0):
- RNGestureHandler (2.9.0):
- React-Core
- RNGoogleSignin (7.0.4):
- GoogleSignIn (~> 6.0.0)
@@ -543,7 +545,6 @@ DEPENDENCIES:
- RNCalendarEvents (from `../node_modules/react-native-calendar-events`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- "RNCClipboard (from `../node_modules/@react-native-community/clipboard`)"
- "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)"
- RNDefaultPreference (from `../node_modules/react-native-default-preference`)
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
@@ -678,8 +679,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/@react-native-async-storage/async-storage"
RNCClipboard:
:path: "../node_modules/@react-native-community/clipboard"
RNCMaskedView:
:path: "../node_modules/@react-native-masked-view/masked-view"
RNDefaultPreference:
:path: "../node_modules/react-native-default-preference"
RNDeviceInfo:
@@ -751,11 +750,11 @@ SPEC CHECKSUMS:
react-native-orientation-locker: 851f6510d8046ea2f14aa169b1e01fcd309a94ba
react-native-pager-view: 3ee7d4c7697fb3ef788346e834a60cca97ed8540
react-native-performance: f4b6604a9d5a8a7407e34a82fab6c641d9a3ec12
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a
react-native-slider: 6e9b86e76cce4b9e35b3403193a6432ed07e0c81
react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
react-native-video: bb6f12a7198db53b261fefb5d609dc77417acc8b
react-native-webrtc: 4a4c31be61f88d1d3356526eebce72f462a6760e
react-native-webrtc: ef315d8adb68e78298b22100377d12ef168efdb5
react-native-webview: ea4899a1056c782afa96dd082179a66cbebf5504
React-perflogger: 0458a87ea9a7342079e7a31b0d32b3734fb8415f
React-RCTActionSheet: 22538001ea2926dea001111dd2846c13a0730bc9
@@ -772,10 +771,9 @@ SPEC CHECKSUMS:
RNCalendarEvents: 7e65eb4a94f53c1744d1e275f7fafcfaa619f7a3
RNCAsyncStorage: 005c0e2f09575360f142d0d1f1f15e4ec575b1af
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
RNCMaskedView: c298b644a10c0c142055b3ae24d83879ecb13ccd
RNDefaultPreference: 08bdb06cfa9188d5da97d4642dac745218d7fb31
RNDeviceInfo: 0400a6d0c94186d1120c3cbd97b23abc022187a9
RNGestureHandler: e5c7cab5f214503dcefd6b2b0cefb050e1f51c4a
RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39
RNGoogleSignin: c4381751eefd73c552b923ba347a9bfc6f18771c
RNScreens: 40a2cb40a02a609938137a1e0acfbf8fc9eebf19
RNSound: 27e8268bdb0a1f191f219a33267f7e0445e8d62f

View File

@@ -40,19 +40,10 @@ static NSString *const PiPEnabledFeatureFlag = @"pip.enabled";
#pragma mark Initializers
- (instancetype)init {
self = [super init];
if (self) {
[self initWithXXX];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
[self initWithXXX];
[self doInitialize];
}
return self;
@@ -61,7 +52,7 @@ static NSString *const PiPEnabledFeatureFlag = @"pip.enabled";
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initWithXXX];
[self doInitialize];
}
return self;
@@ -71,9 +62,9 @@ static NSString *const PiPEnabledFeatureFlag = @"pip.enabled";
* Internal initialization:
*
* - sets the background color
* - initializes the external API scope
* - registers necessary observers
*/
- (void)initWithXXX {
- (void)doInitialize {
// Set a background color which is in accord with the JavaScript and Android
// parts of the application and causes less perceived visual flicker than
// the default background color.

View File

@@ -46,7 +46,7 @@ public class PiPViewCoordinator {
}
}
public let initialPositionInSuperView: Position = .lowerRightCorner
public var initialPositionInSuperView: Position = .lowerRightCorner
// Unused. Remove on the next major release.
@available(*, deprecated, message: "The PiP window size is now fixed to 150px.")

View File

@@ -1061,7 +1061,6 @@
"chat": "اظهِر/اخفِ نافذة الدردشة",
"clap": "تصفيق",
"collapse": "قلّص",
"dock": "إرساء في النافذة الرئيسية",
"document": "اظهِر/اخفِ الملف المشارك",
"download": "نزِّل التطبيق",
"embedMeeting": "ضمِّن المُلتقى",
@@ -1115,7 +1114,6 @@
"tileView": "اظهِر/اخفِ عرض العنوان",
"toggleCamera": "بدِّل الكاميرا",
"toggleFilmstrip": "بدِّل وضع الشريط السينمائي (filmstrip)",
"undock": "فك في نافذة منفصلة",
"videoblur": "استعمل/اخرج من وضع تغبيش خلفية الفيديو",
"videomute": "بدِّل وضع اخفاء الفيديو"
},
@@ -1133,7 +1131,6 @@
"closeReactionsMenu": "إغلاق قائمة ردود الفعل",
"disableNoiseSuppression": "قم بتعطيل خاصية منع الضوضاء",
"disableReactionSounds": "يمكنك تعطيل أصوات ردود الفعل لهذا المُلتقى",
"dock": "إرساء في النافذة الرئيسية",
"documentClose": "أغلق الملف المشارك",
"documentOpen": "افتح الملف المشارك",
"download": "نزِّل التطبيق",
@@ -1205,7 +1202,6 @@
"talkWhileMutedPopup": "أتحاول التحدث؟ الميكروفون لديك مكتوم.",
"tileViewToggle": "بدِّل عنوان العرض",
"toggleCamera": "بدِّل الكاميرا",
"undock": "فك في نافذة منفصلة",
"videoSettings": "اعدادات الفيديو",
"videomute": "استعمل / أوقف الكاميرا"
},

View File

@@ -1027,7 +1027,6 @@
"chat": "Obre o tanca el xat",
"clap": "Picament de mans",
"collapse": "Col·lapsa",
"dock": "Acobla a la finestra principal",
"document": "Activa o desactiva el document compartit",
"download": "Baixeu les nostres aplicacions",
"embedMeeting": "Insereix la reunió",
@@ -1079,7 +1078,6 @@
"tileView": "Activa o desactiva el mode mosaic",
"toggleCamera": "Activa o desactiva la càmera",
"toggleFilmstrip": "Mostra o amaga la cinta",
"undock": "Desacobla en una finestra separada",
"videoblur": "Activa o desactiva el desenfocament del vídeo",
"videomute": "Activa o desactiva la càmera"
},
@@ -1096,7 +1094,6 @@
"closeChat": "Tanca el xat",
"closeReactionsMenu": "Tanca el menú de reaccions",
"disableReactionSounds": "Podeu desactivar els sons de reacció per a aquesta reunió",
"dock": "Acobla en la finestra principal",
"documentClose": "Tanca el document compartit",
"documentOpen": "Obre el document compartit",
"download": "Baixeu les nostres aplicacions",
@@ -1166,7 +1163,6 @@
"talkWhileMutedPopup": "Intenteu parlar? Esteu silenciat.",
"tileViewToggle": "Activa o desactiva el mode mosaic",
"toggleCamera": "Activa o desactiva la càmera",
"undock": "Desacobla en una finestra principal",
"videoSettings": "Paràmetres de vídeo",
"videomute": "Inicia o atura la càmera"
},

View File

@@ -1060,7 +1060,6 @@
"chat": "Přepnout okno zpráv",
"clap": "Tleskat",
"collapse": "Zabalit",
"dock": "Dokovat v hlavním okně",
"document": "Přepnout sdílený dokument",
"download": "Stáhnout naše aplikace",
"embedMeeting": "Vložit setkání",
@@ -1114,7 +1113,6 @@
"tileView": "Přepnout dlaždicové zobrazení",
"toggleCamera": "Přepnout kameru",
"toggleFilmstrip": "Přepnout video náhledy",
"undock": "Oddokovat do samostatného okna",
"videoblur": "Přepnout rozmazání videa",
"videomute": "Přepnout ztišení videa"
},
@@ -1132,7 +1130,6 @@
"closeReactionsMenu": "Zavrít menu reakcí",
"disableNoiseSuppression": "Vypnout potlačení šumu",
"disableReactionSounds": "Vypnout zvuky reakcí",
"dock": "Dokovat v hlavním okně",
"documentClose": "Zavřít sdílený dokument",
"documentOpen": "Otevřít sdílený dokument",
"download": "Stáhnout naše aplikace",
@@ -1204,7 +1201,6 @@
"talkWhileMutedPopup": "Snažíte se mluvit? Máte ztišený mikrofon.",
"tileViewToggle": "Přepnout dlaždicové zobrazení",
"toggleCamera": "Přepnout kameru",
"undock": "",
"videoSettings": "",
"videomute": "Zapnout / Vypnout kameru"
},

View File

@@ -147,6 +147,7 @@
"bridgeCount": "Serverzahl: ",
"codecs": "Codecs (A/V): ",
"connectedTo": "Verbunden mit:",
"e2eeVerified": "E2EE verifiziert:",
"framerate": "Bildwiederholrate:",
"less": "Weniger anzeigen",
"localaddress": "Lokale Adresse:",
@@ -408,6 +409,10 @@
"user": "Anmeldename",
"userIdentifier": "Benutzername",
"userPassword": "Passwort",
"verifyParticipantConfirm": "Sie stimmen überein",
"verifyParticipantDismiss": "Sie stimmen nicht überein",
"verifyParticipantQuestion": "EXPERIMENTELL: Frage Person {{participantName}} ob sie den selben Inhalt in der selben Reihenfolge sieht.",
"verifyParticipantTitle": "Personsverifikation",
"videoLink": "Video-Link",
"viewUpgradeOptions": "Upgradeoptionen anzeigen",
"viewUpgradeOptionsContent": "Sie müssen Ihren Tarif erweitern, um Premium-Features wie Aufnahme, Transkription, RTMP-Streaming und mehr zu nutzen.",
@@ -437,9 +442,6 @@
"noResults": "Keine Ergebnisse :(",
"search": "GIPHY durchsuchen"
},
"helpView": {
"title": "Hilfecenter"
},
"incomingCall": {
"answer": "Antworten",
"audioCallTitle": "Eingehender Anruf",
@@ -563,7 +565,6 @@
"lobby": {
"admit": "Zulassen",
"admitAll": "Alle zulassen",
"allow": "Annehmen",
"backToKnockModeButton": "Kein Passwort, stattdessen Beitritt anfragen",
"chat": "Chat",
"dialogTitle": "Lobbymodus",
@@ -649,6 +650,8 @@
"connectedOneMember": "{{name}} nimmt am Meeting teil",
"connectedThreePlusMembers": "{{name}} und {{count}} andere Personen nehmen am Meeting teil",
"connectedTwoMembers": "{{first}} und {{second}} nehmen am Meeting teil",
"dataChannelClosed": "Schlechte Videoqualität",
"dataChannelClosedDescription": "Die Steuerungsverbindung (Bridge Channel) wurde unterbrochen, daher ist die Videoqulität auf die schlechteste Stufe limitiert.",
"disconnected": "getrennt",
"displayNotifications": "Benachrichtigungen anzeigen für",
"focus": "Konferenzleitung",
@@ -709,6 +712,8 @@
"reactionSoundsForAll": "Interaktionstöne für alle deaktivieren",
"screenShareNoAudio": "Die Option \"Audio freigeben\" wurde bei der Auswahl des Fensters nicht ausgewählt.",
"screenShareNoAudioTitle": "Share audio was not checked",
"screenSharingAudioOnlyDescription": "Durch die Bildschirmfreigabe wird der Modus \"Beste Leistung\" beeinflusst und daher mehr Datenrate benötigt.",
"screenSharingAudioOnlyTitle": "Modus \"Beste Leistung\"",
"selfViewTitle": "Sie können die eigene Ansicht immer in den Einstellungen reaktivieren",
"somebody": "Jemand",
"startSilentDescription": "Treten Sie dem Meeting noch einmal bei, um Ihr Audio zu aktivieren",
@@ -858,9 +863,6 @@
"rejected": "Abgelehnt",
"ringing": "Es klingelt …"
},
"privacyView": {
"title": "Datenschutz"
},
"profile": {
"avatar": "Benutzerbild",
"setDisplayNameLabel": "Anzeigename festlegen",
@@ -1003,6 +1005,7 @@
"displayName": "Anzeigename",
"displayNamePlaceholderText": "z.B. Erika Musterfrau",
"email": "E-Mail",
"emailPlaceholderText": "email@beispiel.de",
"goTo": "Gehe zu",
"header": "Einstellungen",
"help": "Hilfe",
@@ -1011,6 +1014,7 @@
"profileSection": "Profil",
"serverURL": "Server-URL",
"showAdvanced": "Erweiterte Einstellungen anzeigen",
"startCarModeInLowBandwidthMode": "Automodus mit Datensparmodus starten",
"startWithAudioMuted": "Stumm beitreten",
"startWithVideoMuted": "Ohne Video beitreten",
"terms": "Nutzungsbedingungen",
@@ -1066,7 +1070,6 @@
"chat": "Chatfenster öffnen / schließen",
"clap": "Klatschen",
"collapse": "Einklappen",
"dock": "In Hauptfenster einbinden",
"document": "Geteiltes Dokument schließen",
"download": "Unsere Apps herunterladen",
"embedMeeting": "Konferenz einbetten",
@@ -1120,7 +1123,6 @@
"tileView": "Kachelansicht ein-/ausschalten",
"toggleCamera": "Kamera wechseln",
"toggleFilmstrip": "Miniaturansichten ein-/ausschalten",
"undock": "In eigenem Fenster anzeigen",
"videoblur": "Unscharfer Hintergrund ein-/ausschalten",
"videomute": "„Video stummschalten“ ein-/ausschalten",
"whiteboard": "Whiteboard ein-/ausschalten"
@@ -1139,7 +1141,6 @@
"closeReactionsMenu": "Interaktionsmenü schließen",
"disableNoiseSuppression": "Rauschunterdrückung deaktivieren",
"disableReactionSounds": "Sie können die Interaktionstöne für diese Konferenz deaktivieren",
"dock": "In Hauptfenster einbinden",
"documentClose": "Geteiltes Dokument schließen",
"documentOpen": "Geteiltes Dokument öffnen",
"download": "Unsere Apps herunterladen",
@@ -1213,7 +1214,6 @@
"talkWhileMutedPopup": "Versuchen Sie zu sprechen? Ihr Mikrofon ist stummgeschaltet.",
"tileViewToggle": "Kachelansicht ein-/ausschalten",
"toggleCamera": "Kamera wechseln",
"undock": "In eigenem Fenster anzeigen",
"videoSettings": "Kameraeinstellungen",
"videomute": "Kamera starten / stoppen"
},
@@ -1294,6 +1294,7 @@
"show": "Im Vordergrund anzeigen",
"showSelfView": "Eigene Ansicht anzeigen",
"unpinFromStage": "Lösen",
"verify": "Person verifizieren",
"videoMuted": "Kamera ausgeschaltet",
"videomute": "Person hat die Kamera angehalten"
},
@@ -1361,6 +1362,7 @@
"recentList": "Verlauf",
"recentListDelete": "Eintrag löschen",
"recentListEmpty": "Ihr Konferenzverlauf ist derzeit leer. Reden Sie mit Ihrem Team und Ihre vergangenen Konferenzen landen hier.",
"recentMeetings": "Ihre letzten Konferenzen",
"reducedUIText": "Willkommen bei {{app}}!",
"roomNameAllowedChars": "Der Konferenzname sollte keines der folgenden Zeichen enthalten: ?, &, :, ', \", %, #.",
"roomname": "Konferenzname eingeben",
@@ -1369,6 +1371,7 @@
"settings": "Einstellungen",
"startMeeting": "Meeting starten",
"terms": "AGB",
"title": "Sichere, voll funktionale und komplett kostenlose Videokonferenzen"
"title": "Sichere, voll funktionale und komplett kostenlose Videokonferenzen",
"upcomingMeetings": "Ihre zukünftigen Konferenzen"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1067,7 +1067,6 @@
"chat": "Otvori/Zatvori chat",
"clap": "Plješći",
"collapse": "Sklopi",
"dock": "Prikvači u glavni prozor",
"document": "Uključi/Isključi dijeljeni dokument",
"download": "Preuzmi naše aplikacije",
"embedMeeting": "Ugradi sastanak",
@@ -1121,7 +1120,6 @@
"tileView": "Uključi/Isključi pločasti prikaz",
"toggleCamera": "Uključi/Isključi kameru",
"toggleFilmstrip": "Uključi/Isključi slike videa",
"undock": "Odspoji u zasebni prozor",
"videoblur": "Uključi/Isključi zamućenje videa",
"videomute": "Pokreni/Prekini kameru",
"whiteboard": "Pokaži/Sakrij ploču za prezentacije"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Zatvori izbornik reakcija",
"disableNoiseSuppression": "Isključi suzbijanje šumova",
"disableReactionSounds": "Za ovaj sastanak možeš isključiti zvukove reakcija",
"dock": "Prikvači u glavni prozor",
"documentClose": "Zatvori dijeljeni dokument",
"documentOpen": "Otvori dijeljeni dokument",
"download": "Preuzmi naše aplikacije",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Pokušavaš govoriti? Tvoj zvuk je isključen.",
"tileViewToggle": "Uključi/Isključi pločasti prikaz",
"toggleCamera": "Uključi/Isključi kameru",
"undock": "Odspoji u zasebni prozor",
"videoSettings": "Videopostavke",
"videomute": "Pokreni/Prekini kameru"
},

View File

@@ -1033,7 +1033,6 @@
"chat": "chat-woknješko pokazać/schować",
"clap": "placać",
"collapse": "pomjeńšić",
"dock": "we hłownej wobrazowce fiksěrować",
"document": "dźěleny dokument začinić",
"download": "naše aplikacije downloadować ",
"embedMeeting": "konferencu integrować",
@@ -1085,7 +1084,6 @@
"tileView": "kachlicowy napohlad zapnyć/hasnyć",
"toggleCamera": "kameru měnić",
"toggleFilmstrip": "miniaturowy napohlad zapnyć/hasnyć ",
"undock": "rozwjazać",
"videoblur": "njejasny widejo zapnyć/hasnyć ",
"videomute": "„něme šaltowanje wideja zapnyć/hasnyć "
},
@@ -1102,7 +1100,6 @@
"closeChat": "chat začinić",
"closeReactionsMenu": "meni za interakcije začinić",
"disableReactionSounds": "Móžeće zwuki za interakcije za tutu konferencu deaktiwěrować.",
"dock": "fiksěrować",
"documentClose": "dźěleny dokument začinić",
"documentOpen": "dźěleny dokument wočinić",
"download": "naše aplikacije downloadować",
@@ -1172,7 +1169,6 @@
"talkWhileMutedPopup": "Spytaće Wy rěčeć? Waš mikrofon je němy.",
"tileViewToggle": " kachlicowy napohlad zapnyć/hasnyć ",
"toggleCamera": "kameru měnić",
"undock": "rozwjazać",
"videoSettings": "nastajenja za widejo",
"videomute": "kameru startować/hasnyć"
},

View File

@@ -27,6 +27,25 @@
"audioOnly": {
"audioOnly": "Alacsony sávszélesség"
},
"breakoutRooms": {
"actions": {
"add": "Pihenőszoba hozzáadása",
"autoAssign": "Automatikus hozzárendelés a pihenőszobákhoz",
"close": "Bezárás",
"join": "Csatlakozás",
"leaveBreakoutRoom": "Pihenőszoba elhagyása",
"more": "Bővebben",
"remove": "Eltávolítás",
"sendToBreakoutRoom": "Résztvevő áthelyezése ide:"
},
"defaultName": "Pihenőszoba #{{index}}",
"mainRoom": "Fő szoba",
"notifications": {
"joined": "Csatlakozva a \"{{name}}\" pihenőszobához",
"joinedMainRoom": "Csatlakozva a fő szobához",
"joinedTitle": "Pihenőszobák"
}
},
"calendarSync": {
"addMeetingURL": "Értekezlet hivatkozásának hozzáadása",
"confirmAddLink": "Hozzáadható egy Jitsi hivatkozás az eseményhez?",
@@ -46,6 +65,7 @@
"today": "Ma"
},
"chat": {
"enter": "Belépés a szobába",
"error": "Hiba: az üzenetet nem sikerült elküldeni. Hiba oka: {{error}}",
"fieldPlaceHolder": "Írja ide az üzenetét",
"messageTo": "Privát üzenet a felhasználónak: {{recipient}}",
@@ -58,14 +78,21 @@
"noMessagesMessage": "A találkozón még nincsenek üzenetek. Itt kezdhet beszélgetést!",
"privateNotice": "Privát üzenet a felhasználónak: {{recipient}}",
"sendButton": "Küldés",
"tabs": {
"chat": "Csevegés",
"polls": "Szavazás"
},
"title": "Csevegés",
"titleWithPolls": "Csevegés",
"you": "neked"
"titleWithPolls": "Csevegés és szavazás",
"you": "te"
},
"chromeExtensionBanner": {
"buttonText": "Chrome kiterjesztés telepítése",
"dontShowAgain": "Ne jelenjen meg újra",
"installExtensionText": "Kiterjesztés telepítése a Google Calendar és az Office 365 integrációjához"
"installExtensionText": "Kiterjesztés telepítése a Google Calendar és az Office 365 integrációjához",
"raiseHandAction": "Kéz felemelése",
"reactionSounds": "Hangok kikapcsolása",
"reactionSoundsForAll": "Hangok kikapcsolása mindenkinek"
},
"connectingOverlay": {
"joiningRoom": "Kapcsolódás az értekezlethez…"
@@ -189,12 +216,18 @@
"dismiss": "Elutasítás",
"displayNameRequired": "Helló! Mi a neve?",
"done": "Kész",
"enterDisplayName": "Adja meg itt a nevét",
"e2eeDescription": "A végpontok közötti titkosítás jelenleg KÍSÉRLETES. Ne feledje, hogy a végpontok közötti titkosítás bekapcsolása hatékonyan letiltja a szerveroldali szolgáltatásokat, például: telefonos részvételt. Ne feledje azt is, hogy az értekezlet csak olyan felhasználók számára működik, akik olyan böngészőkből csatlakoznak, amelyek támogatják a beilleszthető adatfolyamokat.",
"e2eeLabel": "Végpontok közötti titkosítás engedélyezése",
"embedMeeting": "Meeting beágyazása",
"enterDisplayName": "Adja meg a nevét",
"error": "Hiba",
"externalInstallationMsg": "Telepíteni kell a munkaasztal megosztására való kiterjesztést.",
"externalInstallationTitle": "Kiterjesztésre van szükség",
"goToStore": "Ugrás az alkalmazásbolthoz",
"gracefulShutdown": "Jelenleg a szolgáltatás karbantartás miatt nem elérhető. Később próbálja meg ismét.",
"grantModeratorDialog": "Biztos, hogy moderátori jogokat kíván adni a következőnek: {{participantName}}?",
"grantModeratorTitle": "Moderátori jogok megadása",
"hideShareAudioHelper": "Ne mutassa ezt az ablakot többé",
"incorrectPassword": "Helytelen felhasználói név és jelszó",
"incorrectRoomLockPassword": "Helytelen jelszó",
"inlineInstallExtension": "Telepítés azonnal",
@@ -217,21 +250,34 @@
"maxUsersLimitReached": "A lehetséges résztvevők maximális száma elérve. A konferencia tele van. Lépjen kapcsolatba az értekezlet tulajdonosával vagy próbálkozzon később!",
"maxUsersLimitReachedTitle": "A lehetséges résztvevők maximális száma elérve",
"micConstraintFailedError": "A mikrofon nem felel meg bizonyos kikötéseknek.",
"micNotFoundError": "Nem található mikrofon.",
"micNotFoundError": "A mikrofon nem található.",
"micNotSendingData": "A számítógép beállításai között kell visszahangosítani a mikrofont vagy beállítani a hangfelvétel szintjét",
"micNotSendingDataTitle": "A mikrofon le van némítva a rendszerbeállításokban",
"micPermissionDeniedError": "Nem adott engedélyt a mikrofon használatához. Csatlakozhat a beszélgetéshez, de a többiek nem fogják Önt hallani. A címsorban lévő kamera ikonnal lehet ezt helyrehozni.",
"micUnknownError": "Ismeretlen ok miatt nem lehet a mikrofont használni.",
"moderationAudioLabel": "Engedélyezze a résztvevőknek saját némításuk feloldását",
"moderationVideoLabel": "Engedélyezze a résztvevőknek saját kamerájuk elindítását",
"muteEveryoneDialog": "Valóban mindenki elnémítható? Nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja majd hangosítani.",
"muteEveryoneElseDialog": "Némítás után már nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja hangosítani.",
"muteEveryoneElseTitle": "Mindenki elnémítása, kivéve: {{whom}}?",
"muteEveryoneElsesVideoDialog": "A kamera letiltása után nem tudja újra bekapcsolni, de ők bármikor újra bekapcsolhatják.",
"muteEveryoneElsesVideoTitle": "Mindenki kamerájának tilátsa, kivéve {{whom}}?",
"muteEveryoneSelf": "önmagamat",
"muteEveryoneStartMuted": "Mindenki elnémítva kezd ezután",
"muteEveryoneTitle": "Mindenki elnémítása?",
"muteEveryonesVideoDialog": "A résztvevők bármikor be tudják kapcsolni a kamerájukat.",
"muteEveryonesVideoDialogModerationOn": "A résztvevők bármikor kérhetik videójuk bekapcsolását.",
"muteEveryonesVideoTitle": "Minden résztvevő kameráját leállítja?",
"muteParticipantBody": "Nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja majd hangosítani.",
"muteParticipantButton": "Némítás",
"muteParticipantDialog": "Valóban elnémítható ez a résztvevő? Nem fogja tudni visszahangosítani, de ő önmagát bármikor vissza tudja majd hangosítani.",
"muteParticipantTitle": "Elnémítható a résztvevő?",
"muteParticipantsVideoBody": "Ön nem tudja újra bekapcsolni a kamerát, de ők bármikor újra bekapcsolhatják.",
"muteParticipantsVideoButton": "Kamera leállítása",
"muteParticipantsVideoDialog": "Biztosan le akarja tiltani ennek a résztvevőnek a kameráját? Ön nem tudja újra bekapcsolni a kamerát, de ők bármikor újra bekapcsolhatják.",
"muteParticipantsVideoDialogModerationOn": "Are you sure you want to turn off this participant's camera? You won't be able to turn the camera back on and neither will they.",
"muteParticipantsVideoTitle": "Letiltja ennek a résztvevőnek a kameráját?",
"password": "Jelszó",
"passwordLabel": "Az értekezletet zárolta egy résztvevő. Csatlakozáshoz adja meg a $t(lockRoomPassword).",
"passwordNotSupported": "Az értekezlet $t(lockRoomPassword) beállítása nem támogatott.",
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) nem támogatott",
@@ -249,6 +295,7 @@
"remoteControlShareScreenWarning": "Vegye figyelembe, hogy ha megnyomja az „Engedélyezés” lehetőséget, akkor megosztja a képernyőt!",
"remoteControlStopMessage": "A távoli munkamenet irányítása befejeződött!",
"remoteControlTitle": "Távoli asztal vezérlése",
"remoteUserControls": "{{username}} vezérlői",
"removePassword": "$t(lockRoomPassword) eltávolítása",
"removeSharedVideoMsg": "Valóban eltávolítható a megosztott videó?",
"removeSharedVideoTitle": "Megosztott videó eltávolítása",
@@ -267,11 +314,14 @@
"sendPrivateMessageTitle": "Privátban legyen elküldve?",
"serviceUnavailable": "Szolgáltatás nem elérhető",
"sessTerminated": "Hívás megszakadt",
"shareAudio": "Tovább",
"shareAudioTitle": "Hang megosztása",
"shareVideoLinkError": "Adjon meg egy helyes linket.",
"shareVideoTitle": "Videó megosztása",
"shareYourScreen": "Képernyő megosztása",
"shareYourScreenDisabled": "Képernyőmegosztás letiltva.",
"shareYourScreenDisabledForGuest": "Vendég nem végezhet képernyőmegosztást.",
"sharedVideoLinkPlaceholder": "YouTube link vagy közvetlen videó link",
"startLiveStreaming": "Élő közvetítés kezdése",
"startRecording": "Felvétel indítása",
"startRemoteControlErrorMessage": "Hiba történt a távoli vezérlés munkamenetének indítása közben!",
@@ -287,6 +337,7 @@
"transcribing": "Átirat készítése",
"unlockRoom": "Értekezlet $t(lockRoomPassword) eltávolítása",
"userPassword": "felhasználói jelszó",
"videoLink": "Videó link",
"yourEntireScreen": "A teljes képernyő"
},
"documentSharing": {
@@ -367,11 +418,16 @@
"showSpeakerStats": "Beszéd statisztikák megjelenítése",
"toggleChat": "Csevegés megnyitása vagy bezárása",
"toggleFilmstrip": "Videó bélyegképek megjelenítése vagy elrejtése",
"toggleParticipantsPane": "A résztvevők panel megjelenítése vagy elrejtése",
"toggleScreensharing": "Váltás kamera és képernyőmegosztás között",
"toggleShortcuts": "Gyorsbillentyűk megjelenítése vagy elrejtése",
"videoMute": "Kamera elindítása vagy leállítása",
"videoQuality": "Hívás minőségének kezelése"
},
"largeVideo": {
"screenIsShared": "Ön megosztja a képernyőjét",
"showMeWhatImSharing": "Látni szeretném mit osztok meg"
},
"liveStreaming": {
"busy": "Dolgozunk a közvetítési erőforrások felszabadításán. Kísérelje meg újra néhány perc múlva.",
"busyTitle": "Jelenleg minden közvetítő foglalt",
@@ -405,6 +461,44 @@
"unavailableTitle": "Élő közvetítés elérhetetlen",
"youtubeTerms": "YouTube szolgáltatási feltételek"
},
"lobby": {
"admit": "Engedélyezés",
"admitAll": "Mindet engedélyez",
"allow": "Engedélyez",
"backToKnockModeButton": "Csatlakozási kérelem küldése",
"chat": "Chat",
"dialogTitle": "Lobby mód",
"disableDialogContent": "A lobby mód jelenleg elérhető. Lehetőséged van csak azokat behívni a megbeszélésre, akik erre jogosultak általad. Szeretnéd kikapcsolni?",
"disableDialogSubmit": "Elutasítás",
"emailField": "Írd be az email címed",
"enableDialogPasswordField": "Jelszó megadása (választható)",
"enableDialogSubmit": "Elfogadás",
"enableDialogText": "A Lobby mód lehetővé teszi a megbeszélés védelmét azáltal, hogy csak a moderátor hivatalos jóváhagyása után engedi be az embereket.",
"enterPasswordButton": "Adja meg az értekezlet jelszavát",
"enterPasswordTitle": "Adja meg a jelszót az értekezlethez való csatlakozáshoz",
"errorMissingPassword": "Kérjük, adja meg az értekezlet jelszavát",
"invalidPassword": "Helytelen jelszó",
"joinRejectedMessage": "Csatlakozási kérelmét egy moderátor elutasította.",
"joinRejectedTitle": "Csatlakozási kérelem elutasítva.",
"joinTitle": "Csatlakozás az értekezlethez",
"joinWithPasswordMessage": "Csatlakozás jelszóval, kérjük várjon...",
"joiningMessage": "Amint valaki elfogadja kérését, csatlakoztatjuk az értekezlethez",
"joiningTitle": "Értekezlethez csatlakozás kérése...",
"joiningWithPasswordTitle": "Csatlakozás jelszóval...",
"knockButton": "Csatlakozási kérelem küldése",
"knockTitle": "Valaki szeretne csatlakozni az értekezlethez",
"nameField": "Adja meg a nevét",
"notificationLobbyAccessDenied": "{{targetParticipantName}} elutasításra került a csatlakozásod {{originParticipantName}} által",
"notificationLobbyAccessGranted": "{{targetParticipantName}} a csatlakozozásod elfogadva lett {{originParticipantName}} által",
"notificationLobbyDisabled": "Lobby tiltva lett {{originParticipantName}} által.",
"notificationLobbyEnabled": "Lobby engedélyezve lett {{originParticipantName}} által.",
"notificationTitle": "Lobby",
"passwordField": "Adja meg az értekezlet jelszavát",
"passwordJoinButton": "Csatlakozás",
"reject": "Elutasít",
"rejectAll": "Mindet elutasít",
"toggleLabel": "Lobby engedélyezése"
},
"localRecording": {
"clientState": {
"off": "Kikapcsolva",
@@ -449,11 +543,18 @@
"focus": "Konferencia fókusza",
"focusFail": "{{component}} nem elérhető újrapróbálkozás {{ms}} másodperc múlva",
"grantedTo": "Moderátori jogok biztosítva {{to}} számára!",
"hostAskedUnmute": "Kérlek hangosítsd vissza a mikrofonod.",
"invitedOneMember": "{{name}} meg lett hívva",
"invitedThreePlusMembers": "{{name}} és {{count}} másik felhasználó meg lett hívva",
"invitedTwoMembers": "{{first}} és {{second}} lett meghívva",
"kickParticipant": "{{kicked}} résztvevőt kirúgta {{kicker}}",
"leftOneMember": "{{name}} elhagyta az értekezletet",
"leftThreePlusMembers": "{{name}} és mások elhagyták az értekezletet",
"leftTwoMembers": "{{first}} és {{second}} elhagyták az értekezletet",
"localRecordingStarted": "{{name}} elkezdte rögzíteni az értekezletet.",
"localRecordingStopped": "{{name}} leállította a rögzítést.",
"me": "Én",
"moderationInEffectTitle": "A moderátor elnémította a mikrofonját",
"moderator": "Moderátori jogok biztosítva!",
"muted": "A beszélgetést elnémítva kezdte meg.",
"mutedRemotelyDescription": "Bármikor visszahangosíthatja magát, ha készen áll a beszédre. Némítsa le magát ismét, ha a felesleges zajoktól meg kívánja védeni az értekezletet.",
@@ -462,6 +563,10 @@
"newDeviceAction": "Alkalmaz",
"newDeviceAudioTitle": "Új hangeszköz észlelve",
"newDeviceCameraTitle": "Új kamera észlelve",
"noiseSuppressionFailedTitle": "Nem sikerült elindítani a zajcsökkentést",
"noiseSuppressionNoTrackDescription": "Kérjük, először kapcsolja ki a mikrofon némítását.",
"noiseSuppressionStereoDescription": "A sztereó zajcsökkentés jelenleg nem támogatott.",
"participantWantsToJoin": "Csatlakozni szeretne az értekezlethez",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) egy másik résztvevő által eltávolítva",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) egy másik résztvevő által beállítva",
"raisedHand": "{{name}} beszélni szeretne.",
@@ -472,9 +577,115 @@
"suboptimalExperienceTitle": "Böngészőhiba",
"unmute": "Visszahangosítás"
},
"participantsPane": {
"actions": {
"allow": "Engedélyezés a résztvevőknek, hogy:",
"allowVideo": "Videó engedélyezése",
"askUnmute": "Kérje a némítás feloldását",
"audioModeration": "A némítást feloldhassák",
"blockEveryoneMicCamera": "Block everyone's mic and camera",
"invite": "Meghívás",
"moreModerationActions": "További moderálási opciók",
"moreModerationControls": "További moderálási vezérlők",
"moreParticipantOptions": "Résztvevő további beállításai",
"mute": "Némítás",
"muteAll": "Mindenkit elnémít",
"muteEveryoneElse": "Mute everyone else",
"stopEveryonesVideo": "Mindenki videójának leállítása",
"stopVideo": "Videó leállítása",
"unblockEveryoneMicCamera": "Unblock everyone's mic and camera",
"videoModeration": "Elindíthassák a videójukat"
},
"close": "Bezár",
"header": "Résztvevők",
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Résztvevők ({{count}})",
"waitingLobby": "Lobby-ban várakozók ({{count}})"
},
"search": "Résztvevők keresése"
},
"passwordDigitsOnly": "Legfeljebb {{number}} szám",
"passwordSetRemotely": "egy másik résztvevő által beállítva",
"polls": {
"answer": {
"skip": "Kihagyás",
"submit": "Küldés"
},
"by": "Létrehozta: {{ name }}",
"create": {
"addOption": "Opció hozzáadása",
"answerPlaceholder": "Opció {{index}}",
"cancel": "Mégsem",
"create": "Szavazás létrehozása",
"pollOption": "Opció {{index}}",
"pollQuestion": "Szavazás kérdése",
"questionPlaceholder": "Írja le a kérdést",
"removeOption": "Opció eltávolítása",
"send": "Küldés"
},
"notification": {
"description": "Szavazás megnyitása",
"title": "Új szavazás létrehozva"
},
"results": {
"changeVote": "Módosítás",
"empty": "Még nincsenek szavazások. Indítson szavazást itt!",
"hideDetailedResults": "Részletek elrejtése",
"showDetailedResults": "Részletek",
"vote": "Szavazás"
}
},
"poweredby": "Működteti a",
"prejoin": {
"audioAndVideoError": "Hang és videó hiba:",
"audioDeviceProblem": "Hiba lépett fel az hangeszközzel",
"audioOnlyError": "Hang hiba:",
"audioTrackError": "Nem lehet a hangot rögzíteni.",
"callMe": "Hívj fel",
"callMeAtNumber": "Hívj fel ezen a számon:",
"calling": "Hívás",
"configuringDevices": "Eszköz beállítás...",
"connectedWithAudioQ": "Csak hanggal szeretne csatlakozni?",
"connection": {
"good": "Az internet kapcsolat jónak tűnik!",
"nonOptimal": "Az internet kapcsolat nem optimális",
"poor": "Az internet kapcsolat nagyon gyenge!"
},
"connectionDetails": {
"goodQuality": "Fantasztikus! A média minősége kiváló lesz."
},
"copyAndShare": "Másolom és megosztom az értekezlet linkjét",
"dialInMeeting": "Behívás az értekezletbe",
"dialInPin": "Behívás az értkezeletbe és megadom a PIN kódot:",
"dialing": "Tárcsázás",
"doNotShow": "Ne mutassa mégegyszer ezt a képernyőt",
"errorDialOut": "Nem sikerült a behívás",
"errorDialOutDisconnected": "Nem sikerült a behívás. Kapcsolat bontása",
"errorDialOutFailed": "Nem sikerült a behívás. Hiba a hívásban",
"errorDialOutStatus": "Hiba a hívás státusz megadásában",
"errorMissingName": "Kérlet add meg a neved, hogy csatlakozhass a megbeszéléshez",
"errorNoPermissions": "Engedélyeznie kell a mikrofonhoz és a kamerához való hozzáférést",
"errorStatusCode": "Hiba a hiváskor, hiba kód: {{status}}",
"errorValidation": "Hívószám validációs hiba",
"iWantToDialIn": "Hívni szeretném",
"initiated": "Hívás felépítés",
"joinAudioByPhone": "Csatlakozás telefon beszélgetéssel",
"joinMeeting": "Csatlakozás",
"joinMeetingInLowBandwidthMode": "Csatlakozás alacsony sávszélességi módban",
"joinWithoutAudio": "Csatlakozás hang nélkül",
"keyboardShortcuts": "Gyorsbillentyűk engedélyezése",
"linkCopied": "A link a vágólapra másolva",
"lookGood": "A mikrofon megfelelően működik",
"or": "vagy",
"premeeting": "Csatlakozás előtt",
"screenSharingError": "Képernyő megosztás hiba:",
"showScreen": "Csatlakozás előtti kamerakép",
"startWithPhone": "Kezdés telefonhanggal",
"videoOnlyError": "Videó hiba:",
"videoTrackError": "Nem sikerült a videó megjelenítés.",
"viewAllNumbers": "Összes szám megjelenítése"
},
"presenceStatus": {
"busy": "Foglalt",
"calling": "Hívás…",
@@ -509,13 +720,19 @@
"failedToStart": "A felvétel indítása meghiúsult",
"fileSharingdescription": "Felvétel megosztása az értekezlet résztvevőivel",
"live": "ÉLŐ",
"localRecordingNoNotificationWarning": "A felvételt nem közöljük más résztvevőkkel. Értesítenie kell velük, hogy a találkozót rögzítették.",
"localRecordingStartWarning": "A megbeszélésből való kilépés előtt feltétlenül állítsa le a felvételt, hogy elmentse azt.",
"localRecordingStartWarningTitle": "Állítsa le a felvételt a mentéshez",
"localRecordingWarning": "Győződjön meg arról, hogy az aktuális lapot választotta a megfelelő videó és hang használatához. A felvétel jelenleg 1 GB-ra van korlátozva, ami körülbelül 100 perc.",
"loggedIn": "Belépve mint {{userName}}",
"off": "Felvétel leállítva",
"offBy": "{{name}} leállította a felvételt",
"on": "Felvétel",
"onBy": "{{name}} elindította a felvételt",
"onlyRecordSelf": "Csak az én hang- és videófolyamomat rögzítse",
"pending": "Értekezlet rögzítésének előkészítése…",
"rec": "REC",
"saveLocalRecording": "Felvétel mentése helyileg (béta)",
"serviceDescription": "A felvételt a rögzítési szolgáltatás veszi fel",
"serviceName": "Felvétel szolgáltatás",
"signIn": "Belépés",
@@ -527,6 +744,12 @@
"sectionList": {
"pullToRefresh": "Húzás a frissítéshez"
},
"security": {
"about": "Hozzáadhat jelszót az értekezlethez. A résztvevőknek meg kell adniuk a jelszót, mielőtt csatlakozhatnak az értekezlethez.",
"aboutReadOnly": "A moderátor résztvevői hozzáadhatnak egy jelszót az értekezlethez. A résztvevőknek meg kell adniuk a jelszót, mielőtt csatlakozhatnak az értekezlethez.",
"header": "Biztonsági beállítások",
"insecureRoomNameWarning": "The room name is unsafe. Unwanted participants may join your conference. Consider securing your meeting using the security button."
},
"settings": {
"calendar": {
"about": "A {{appName}} naptárintegráció a naptár biztonságos elérésére szolgál, így olvasni tudja a soron következő eseményeket.",
@@ -535,8 +758,13 @@
"signedIn": "Jelenleg ehhez az címhez tartozó naptár eseményei érhetőek el: {{email}}. Alább a „szétkapcsolás” gombra kattintva lehet leállítani a naptár eseményeinek elérését.",
"title": "Naptár"
},
"desktopShareFramerate": "Képernyőmegosztás sebessége (FPS)",
"desktopShareHighFpsWarning": "A nagyobb képkockasebesség az asztali megosztásnál hatással lehet a sávszélességre. Az új beállítások érvénybe léptetéséhez újra kell indítania a képernyőmegosztást.",
"desktopShareWarning": "Az új beállítások érvénybe léptetéséhez újra kell indítania a képernyőmegosztást.",
"devices": "Eszközök",
"followMe": "Mindenki engem kövessen",
"framesPerSecond": "képkocka / másodperc",
"incomingMessage": "Bejövő üzenet",
"language": "Nyelv",
"loggedIn": "Belépve mint {{name}}",
"microphones": "Mikrofonok",
@@ -544,12 +772,22 @@
"more": "Továbbiak",
"name": "Név",
"noDevice": "Nincs",
"participantJoined": "Résztvevő csatlakozott",
"participantKnocking": "Résztvevő belépett a lobby-ba",
"participantLeft": "Résztvevő kilépett",
"playSounds": "Hangok lejátszása a következőkhöz:",
"reactions": "Meeting reakciók",
"sameAsSystem": "Rendszerhang ({{label}})",
"selectAudioOutput": "Hangkimenet",
"selectCamera": "Kamera",
"selectMic": "Mikrofon",
"selfView": "Saját kép",
"sounds": "Hangok",
"speakers": "Hangszórók",
"startAudioMuted": "Mindenki elnémítva kezd",
"startReactionsMuted": "Reakció hangok némítása mindenki számára",
"startVideoMuted": "Mindenki videó nélkül kezd",
"talkWhileMuted": "Lenémított beszéd",
"title": "Beállítások"
},
"settingsView": {
@@ -577,14 +815,23 @@
},
"speaker": "Hangszóró",
"speakerStats": {
"angry": "Mérges",
"disgusted": "Felháborodott",
"fearful": "Félelmetes",
"happy": "Boldog",
"hours": "{{count}} h",
"minutes": "{{count}} perc",
"name": "Név",
"neutral": "Semleges",
"sad": "Szomorú",
"search": "Keresés",
"seconds": "{{count}} mp",
"speakerStats": "Beszélő statisztika",
"speakerTime": "Beszélő ideje"
"speakerTime": "Beszélő ideje",
"surprised": "Meglepett"
},
"startupoverlay": {
"genericTitle": "Az értekezlethez engedélyezni kell a mikrofont és kamerát.",
"policyText": " ",
"title": "A {{app}} használni szeretné a mikrofont és a kamerát."
},
@@ -599,36 +846,49 @@
"Settings": "Beállítások átváltása",
"audioOnly": "Csak a hang átváltása",
"audioRoute": "Hangeszköz kijelölése",
"boo": "Szomorú",
"callQuality": "Videóminőség kezelése",
"cc": "Feliratok átváltása",
"chat": "Csevegés ablak átváltása",
"clap": "Taps",
"document": "Megosztott dokumentum átváltása",
"download": "Alkalmazás letöltése",
"embedMeeting": "Meeting beágyazása",
"feedback": "Visszajelzés küldése",
"fullScreen": "Teljes képernyő átváltása",
"grantModerator": "Moderátori jogok megadása",
"hangup": "Beszélgetés elhagyása",
"help": "Súgó",
"invite": "Személyek meghívása",
"kick": "Résztvevő kirúgása",
"laugh": "Nevetés",
"like": "Hüvelykujj fel",
"localRecording": "Helyi felvétel vezérlőelemeinek átváltása",
"lockRoom": "Értekezlet jelszavának átváltása",
"moreActions": "További műveltek menü átváltása",
"moreActionsMenu": "További műveltek menü",
"moreActions": "További műveletek menü átváltása",
"moreActionsMenu": "További műveletek menü",
"moreOptions": "További beállítások megjelenítése",
"mute": "Hang némításának átváltása",
"muteEveryone": "Mindenki elnémítása",
"muteEveryonesVideoStream": "Mindenki videójának leállítása",
"noiseSuppression": "Zajcsökkentés",
"participants": "Résztvevők",
"pip": "Kép és képben mód átváltása",
"privateMessage": "Privát üzenet küldése",
"profile": "Adja meg a profilját",
"raiseHand": "Kéz felemelésének átváltása",
"recording": "Felvétel átváltása",
"remoteMute": "Résztvevők némítása",
"security": "Biztonsági Beállítások",
"shareRoom": "Valaki meghívása",
"shareYourScreen": "Képernyőmegosztás átváltása",
"shareaudio": "Hang megosztása",
"sharedvideo": "Videó megosztásának átváltása",
"shortcuts": "Gyorsbillentyűk átváltása",
"show": "Megjelenítés a színpadon",
"silence": "Néma",
"speakerStats": "Beszélő statisztika átváltása",
"surprised": "Meglepett",
"tileView": "Mozaikos nézet átváltása",
"toggleCamera": "Kamera átváltása",
"toggleFilmstrip": "Filmszalag átváltása",
@@ -639,13 +899,18 @@
"audioOnlyOff": "Alacsony sávszélességű mód letiltása",
"audioOnlyOn": "Alacsony sávszélességű mód engedélyezése",
"audioRoute": "Hangeszköz kijelölése",
"audioSettings": "Hangbeállítások",
"authenticate": "Hitelesítés",
"boo": "Szomorú",
"callQuality": "Videominőség kezelése",
"chat": "Csevegés megnyitása / bezárása",
"clap": "Taps",
"closeChat": "Csevegés bezárása",
"disableReactionSounds": "Kikapcsolhatja a reakcióhangokat a Meeting-en",
"documentClose": "Megosztott dokumentum bezárása",
"documentOpen": "Megosztott dokumentum megnyitása",
"download": "Alkalmazás letöltése",
"embedMeeting": "Meeting beágyazása",
"enterFullScreen": "Teljes képernyős megtekintés",
"enterTileView": "Mozaikos nézet indítása",
"exitFullScreen": "Kilépés a teljes képernyőből",
@@ -654,6 +919,10 @@
"hangup": "Kilépés",
"help": "Súgó",
"invite": "Személyek meghívása",
"joinBreakoutRoom": "Csatlakozás a pihenőszobához",
"laugh": "Nevetés",
"leaveBreakoutRoom": "Pihenőszoba elhagyása",
"like": "Hüvelykujj fel",
"login": "Bejelentkezés",
"logout": "Kijelentkezés",
"lowerYourHand": "Kéz leengedése",
@@ -666,28 +935,42 @@
"noAudioSignalDialInDesc": "Be is tárcsázhat:",
"noAudioSignalDialInLinkDesc": "Betárcsázási számok",
"noAudioSignalTitle": "Nincs bemenet a mikrofonjáról!",
"noiseSuppression": "Zajcsökkentés",
"noisyAudioInputDesc": "Úgy tűnik, hogy ez a mikrofon zajos. Le kellene némítani vagy cserélni az eszközt.",
"noisyAudioInputTitle": "Zajosnak tűnik a mikrofonja!",
"openChat": "Csevegés megnyitása",
"participants": "Résztvevők",
"pip": "Belépés kép a képben módba",
"privateMessage": "Privát üzenet küldése",
"profile": "Adja meg a profilját",
"raiseHand": "Kéz felemelése / leengedése",
"raiseYourHand": "Kéz felemelése",
"reactionBoo": "Boo reakció küldése",
"reactionClap": "Tapsolás reakció küldése",
"reactionLaugh": "Nevetés reakció küldése",
"reactionLike": "Hüvelykujj fel reakció küldése",
"reactionSilence": "Néma arc reakció küldése",
"reactionSurprised": "Meglepett reakció küldése",
"security": "Biztonsági Beállítások",
"selectBackground": "Háttér beállítása",
"shareRoom": "Valaki meghívása",
"shareaudio": "Hang megosztása",
"sharedvideo": "Videó megosztása",
"shortcuts": "Gyorsbillentyűk megtekintése",
"silence": "Néma",
"speakerStats": "Beszélő statisztika",
"startScreenSharing": "Képernyőmegosztás kezdése",
"startSubtitles": "Feliratok kezdése",
"startvideoblur": "Háttér elhomályosítása",
"stopScreenSharing": "Képernyőmegosztás leállítása",
"stopSharedVideo": "Videó leállítása",
"stopSharedVideo": "Kamera leállítása",
"stopSubtitles": "Felirat leállítása",
"stopvideoblur": "Háttér elhomályosításának letiltása",
"surprised": "Meglepett",
"talkWhileMutedPopup": "Úgy tűnik beszélni szeretne, de le van némítva.",
"tileViewToggle": "Mozaikos nézet átváltása",
"toggleCamera": "Kamera átváltása",
"videoSettings": "Videóbeállítások",
"videomute": "Kamera indítása / leállítása"
},
"transcribing": {
@@ -725,12 +1008,15 @@
"pending": "{{displayName}} -t meghívta"
},
"videoStatus": {
"adjustFor": "Igazítsa a legjobb:",
"audioOnly": "CsH",
"audioOnlyExpanded": "Jelenleg az alacsony sávszélességű mód az aktív, vagyis csak hangot lehet fogadni és képernyőmegosztást.",
"bestPerformance": "Teljesítményhez",
"callQuality": "Videominőség",
"hd": "MF",
"hdTooltip": "Magas felbontású videó megtekintése",
"highDefinition": "Magas felbontású",
"highestQuality": "Minőséghez",
"labelTooiltipNoVideo": "Nincs videó",
"labelTooltipAudioOnly": "Alacsony sávszélességű mód aktiválva",
"ld": "AF",
@@ -738,6 +1024,7 @@
"lowDefinition": "Alacsony felbontású",
"onlyAudioAvailable": "„Csak hang” mód elérhető",
"onlyAudioSupported": "Csak a hang támogatott ebben a böngészőben.",
"performanceSettings": "Teljesítménybeállítások",
"sd": "SF",
"sdTooltip": "Szabványos felbontású videó megtekintése",
"standardDefinition": "Szabványos felbontású"
@@ -745,7 +1032,10 @@
"videothumbnail": {
"domute": "Némítás",
"domuteOthers": "Mindenki más elnémítása",
"domuteVideoOfOthers": "Mindenki más kamerájának letiltása",
"flip": "Tükrözés",
"grantModerator": "Moderátori jogok megadása",
"hideSelfView": "Saját kép elrejtése",
"kick": "Kirúgás",
"moderator": "Moderátor",
"mute": "A résztvevő le van némítva",
@@ -754,6 +1044,29 @@
"show": "Megjelenítés a színpadon",
"videomute": "A résztvevő leállította a kameráját"
},
"virtualBackground": {
"addBackground": "Háttér hozzáadása",
"apply": "Alkalmaz",
"backgroundEffectError": "Hiba a háttér effekt hozzáadásnál.",
"blur": "Elmosódott",
"deleteImage": "Delete image",
"desktopShare": "Asztal megosztása",
"desktopShareError": "Nem lehet asztalt megosztani",
"image1": "Tengerpart",
"image2": "Fehér semleges fal",
"image3": "Fehér üres szoba",
"image4": "Fekete állólámpa",
"image5": "Hegy",
"image6": "Erdő",
"image7": "Napfelkelte",
"none": "Nincs",
"pleaseWait": "Kérjük várjon...",
"removeBackground": "Háttér eltávolítása",
"slightBlur": "Enyhén elmosódott",
"title": "Virtuális háttérképek",
"uploadedImage": "Feltöltött kép {{index}}"
},
"volumeSlider": "Hangerő szabályzó",
"welcomepage": {
"accessibilityLabel": {
"join": "Koppintson a csatlakozáshoz",
@@ -771,17 +1084,20 @@
"getHelp": "Segítség kérése",
"go": "Indítás",
"goSmall": "Indítás",
"headerSubtitle": "Biztonságos és magas színvonalú konferenciák",
"info": "Információ",
"jitsiOnMobile": "Jitsi Mobil töltse le az app-ot, és indítson megbeszélést bárhonnan",
"join": "LÉTREHOZ /HOZZÁAD",
"privacy": "Adatvédelem",
"recentList": "Legutóbbi",
"recentListDelete": "Törlés",
"recentListDelete": "Lista törlés",
"recentListEmpty": "A legutóbbi lista jelenleg üres. Csevegjen a csapattal és minden előző értekezlet itt lesz megtalálható.",
"reducedUIText": "Üdvözlet a {{app}} programban!",
"roomNameAllowedChars": "Az értekezlet neve nem tartalmazhatja a következő karaktereket: ?, &, :, ', \", %, #.",
"roomname": "Adja meg a szoba nevét",
"roomnameHint": "Adja meg a kívánt nevet vagy URL-t, amelyhez csatlakozni szeretne. Bármiképp elnevezheti, csak ossza meg az értekezlet résztvevőivel, hogy ők ugyanezt a nevet tudják majd megadni.",
"sendFeedback": "Visszajelzés küldése",
"startMeeting": "Csatlakozás",
"terms": "Feltételek",
"title": "Biztonságos, maradéktalanul felszerelt és teljesen ingyenes videokonferencia"
}

View File

@@ -1067,7 +1067,6 @@
"chat": "Conversazione",
"clap": "Applaudi",
"collapse": "Riduci",
"dock": "Aggancia alla finestra principale",
"document": "Documenti condivisi",
"download": "Scarica le nostre app",
"embedMeeting": "Incorpora riunione altrove",
@@ -1121,7 +1120,6 @@
"tileView": "Vedi tutti i partecipanti, o uno solo",
"toggleCamera": "Cambia videocamera",
"toggleFilmstrip": "Pellicola",
"undock": "Sgancia in una finestra separata",
"videoblur": "Sfoca video",
"videomute": "Videocamera",
"whiteboard": "Usa lavagna"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Chiudi il menù reazioni",
"disableNoiseSuppression": "Interrompi riduzione rumore",
"disableReactionSounds": "Puoi disattivare i suoni delle reaction, in questa riunione",
"dock": "Aggancia nella finestra principale",
"documentClose": "Chiudi documento condiviso",
"documentOpen": "Apri documento condiviso",
"download": "Scarica le nostre app",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Stai provando a parlare? Il microfono è disattivato.",
"tileViewToggle": "Vedi tutti i partecipanti insieme, o uno solo",
"toggleCamera": "Cambia videocamera",
"undock": "Sgancia in una finestra separata",
"videoSettings": "Impostazioni video",
"videomute": "Videocamera"
},

View File

@@ -882,6 +882,7 @@
"document": "Gedeeld document in- of uitschakelen",
"download": "Download onze apps",
"embedMeeting": "Vergadering embedden",
"endConference": "Vergadering voor iedereen beëindigen",
"feedback": "Feedback achterlaten",
"fullScreen": "Volledig scherm in- of uitschakelen",
"grantModerator": "Moderatorrechten verlenen",
@@ -889,6 +890,7 @@
"help": "Hulp",
"invite": "Personen uitnodigen",
"kick": "Deelnemer verwijderen",
"leaveConference": "Vergadering verlaten",
"lobbyButton": "Lobby-modus in- of uitschakelen",
"localRecording": "Besturingselementen voor lokale opname in- of uitschakelen",
"lockRoom": "Wachtwoord voor vergadering in- of uitschakelen",
@@ -938,6 +940,7 @@
"download": "Download onze apps",
"e2ee": "Eind-tot-eind-versleuteling",
"embedMeeting": "Vergadering embedden",
"endConference": "Vergadering voor iedereen beëindigen",
"enterFullScreen": "Volledig scherm weergeven",
"enterTileView": "Tegelweergave openen",
"exitFullScreen": "Volledig scherm sluiten",
@@ -948,6 +951,7 @@
"invite": "Personen uitnodigen",
"joinBreakoutRoom": "Deelnemen aan aparte vergaderruimte",
"leaveBreakoutRoom": "Aparte vergaderruimte verlaten",
"leaveConference": "Vergadering verlaten",
"lobbyButtonDisable": "Schakel lobby-modus uit",
"lobbyButtonEnable": "Schakel lobby-modus in",
"login": "Aanmelden",

View File

@@ -1057,7 +1057,6 @@
"chat": "Przełączanie okna rozmowy",
"clap": "Klaskanie",
"collapse": "Zwiń",
"dock": "Zadokuj w głównym oknie",
"document": "Przełączanie wspólnego dokumentu",
"download": "Pobierz nasze aplikacje",
"embedMeeting": "Osadź spotkanie",
@@ -1109,7 +1108,6 @@
"tileView": "Przełącz widok kafelkowy",
"toggleCamera": "Przełączanie kamery",
"toggleFilmstrip": "Przełącz filmstrip",
"undock": "Oddokuj w osobnym oknie",
"videoblur": "Przełącz rozmazanie obrazu",
"videomute": "Przełączanie wyciszonego filmu wideo"
},
@@ -1127,7 +1125,6 @@
"closeReactionsMenu": "Zamknij reakcje",
"disableNoiseSuppression": "Wyłącz tłumienie szumów",
"disableReactionSounds": "Wyłącz dźwięki reakcji dla tego spotkania",
"dock": "Zadokuj w głównym oknie",
"documentClose": "Zamknij udostępniony dokument",
"documentOpen": "Otwarty udostępniony dokument",
"download": "Pobierz nasze aplikacje",
@@ -1197,7 +1194,6 @@
"talkWhileMutedPopup": "Próbujesz mówić? Jesteś wyciszony.",
"tileViewToggle": "Przełączanie kafelkowego widoku",
"toggleCamera": "Przełączanie kamery",
"undock": "Oddokuj w osobnym oknie",
"videoSettings": "Ustawienia video",
"videomute": "Włącz / Wyłącz kamerę"
},

View File

@@ -89,7 +89,7 @@
"chat": {
"enter": "Entrar na sala",
"error": "Erro: a sua mensagem não foi enviada. Motivo: {{error}}",
"fieldPlaceHolder": "Escreva aqui a sua mensagem",
"fieldPlaceHolder": "Aa",
"lobbyChatMessageTo": "Mensagem de chat na sala de espera para {{recipient}}",
"message": "Mensagem",
"messageAccessibleTitle": "{{user}} disse:",
@@ -147,6 +147,7 @@
"bridgeCount": "Servidores: ",
"codecs": "Codecs (A/V): ",
"connectedTo": "Ligado a:",
"e2eeVerified": "E2EE verificada:",
"framerate": "Taxa de frames:",
"less": "Mostrar menos",
"localaddress": "Endereço local:",
@@ -266,7 +267,7 @@
"e2eeWarning": "AVISO: Nem todos os participantes neste encontro parecem ter apoio para a encriptação de ponta a ponta. Se o permitir, eles não o poderão ver nem ouvir.",
"e2eeWillDisableDueToMaxModeDescription": "AVISO: A encriptação de ponta a ponta será automaticamente desativada se mais participantes aderirem à conferência.",
"embedMeeting": "Embutir reunião",
"enterDisplayName": "Digite o seu nome aqui",
"enterDisplayName": "Digite o seu nome",
"error": "Erro",
"gracefulShutdown": "O nosso serviço está atualmente em manutenção. Por favor, tente novamente mais tarde.",
"grantModeratorDialog": "Tem a certeza que quer conceder direitos de moderador a {{participantName}}?",
@@ -408,6 +409,10 @@
"user": "Utilizador",
"userIdentifier": "Identificador do utilizador",
"userPassword": "Palavra-passe do utilizador",
"verifyParticipantConfirm": "Coincidem",
"verifyParticipantDismiss": "Não coincidem",
"verifyParticipantQuestion": "EXPERIMENTAL: Perguntar ao participante {{participantName}} se vêem o mesmo conteúdo, na mesma ordem.",
"verifyParticipantTitle": "Verificação pelo utilizador",
"videoLink": "Link do vídeo",
"viewUpgradeOptions": "Ver opções de actualização",
"viewUpgradeOptionsContent": "Para obter acesso ilimitado a funcionalidades premium como gravação, transcrições, RTMP Streaming & mais, terá de actualizar o seu plano.",
@@ -437,9 +442,6 @@
"noResults": "Não foram encontrados resultados :(",
"search": "Procurar no GIPHY"
},
"helpView": {
"title": "Centro de ajuda"
},
"incomingCall": {
"answer": "Responder",
"audioCallTitle": "Chamada recebida",
@@ -563,7 +565,6 @@
"lobby": {
"admit": "Aceitar",
"admitAll": "Aceitar todos",
"allow": "Permitir",
"backToKnockModeButton": "Peça para aderir",
"chat": "Chat",
"dialogTitle": "Modo sala de espera",
@@ -649,6 +650,8 @@
"connectedOneMember": "{{name}} entrou na reunião",
"connectedThreePlusMembers": "{{name}} e muitos outros entraram na reunião",
"connectedTwoMembers": "{{first}} e {{second}} entraram na reunião",
"dataChannelClosed": "Deficiência na qualidade do vídeo",
"dataChannelClosedDescription": "O canal de ponte foi desconectado e, portanto, a qualidade do vídeo está limitada à sua configuração mais baixa.",
"disconnected": "desconectado",
"displayNotifications": "Mostrar notificações para",
"focus": "Foco da conferência",
@@ -709,6 +712,8 @@
"reactionSoundsForAll": "Desativar sons para todos",
"screenShareNoAudio": "A caixa de compartilhar áudio não foi marcada no ecrã de seleção da janela.",
"screenShareNoAudioTitle": "Não foi possível partilhar o áudio do sistema!",
"screenSharingAudioOnlyDescription": "Note por favor que ao partilhar o seu ecrã está a afectar o modo \"Melhor desempenho\" e irá utilizar mais largura de banda.",
"screenSharingAudioOnlyTitle": "Modo \"Melhor desempenho\"",
"selfViewTitle": "Pode sempre reexibir a autovisualização a partir das definições",
"somebody": "Alguém",
"startSilentDescription": "Volte à reunião para habilitar o áudio",
@@ -858,9 +863,6 @@
"rejected": "Rejeitado",
"ringing": "Tocando..."
},
"privacyView": {
"title": "Privacidade"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Definir seu nome de exibição",
@@ -914,6 +916,7 @@
"localRecordingVideoWarning": "Para gravar o seu vídeo deve tê-lo ligado quando iniciar a gravação",
"localRecordingWarning": "Certifique-se de selecionar o separador actual a fim de utilizar o vídeo e áudio corretos. A gravação está actualmente limitada a 1 GB, o que é cerca de 100 minutos.",
"loggedIn": "Conectado como {{userName}}",
"noMicPermission": "Não foi possível criar a faixa de microfone. Por favor, conceda permissão para utilizar o microfone.",
"noStreams": "Não foi detetado nenhum sinal áudio ou vídeo.",
"off": "Gravação parada",
"offBy": "{{name}} parou a gravação",
@@ -964,7 +967,7 @@
"incomingMessage": "Receber uma mensagem",
"language": "Idioma",
"loggedIn": "Sessão iniciada como {{name}}",
"maxStageParticipants": "Número máximo de participantes que podem ser afixados",
"maxStageParticipants": "Número máximo de participantes que podem ser afixados (EXPERIMENTAL)",
"microphones": "Microfones",
"moderator": "Moderador",
"more": "Mais",
@@ -983,7 +986,7 @@
"sounds": "Sons",
"speakers": "Participantes",
"startAudioMuted": "Todos começam com microfone desligado",
"startReactionsMuted": "Sons de reação silenciados para todos",
"startReactionsMuted": "Todos começam com os sons de reação desativados",
"startVideoMuted": "Todos começam com câmara desligada",
"talkWhileMuted": "Falar com o microfone desligado",
"title": "Definições"
@@ -1003,6 +1006,7 @@
"displayName": "Nome de exibição",
"displayNamePlaceholderText": "Ex: João Dias",
"email": "Email",
"emailPlaceholderText": "email@example.com",
"goTo": "Ir para",
"header": "Configurações",
"help": "Ajuda",
@@ -1067,7 +1071,6 @@
"chat": "Abrir / Fechar chat",
"clap": "Aplausos",
"collapse": "Colapsar",
"dock": "Ancorar na janela principal",
"document": "Mudar para documento partilhado",
"download": "Descarregar as nossas aplicações",
"embedMeeting": "Reunião incorporada",
@@ -1121,7 +1124,6 @@
"tileView": "Mudar a vista em quadrícula",
"toggleCamera": "Mudar a câmara",
"toggleFilmstrip": "Mudar a película de filme",
"undock": "Desancorar numa janela separada",
"videoblur": "Mudar o desfoque de vídeo",
"videomute": "Iniciar / Parar câmara",
"whiteboard": "Mostrar / Esconder quadro branco"
@@ -1140,7 +1142,6 @@
"closeReactionsMenu": "Fechar menu de reações",
"disableNoiseSuppression": "Desativar a supressão de ruído",
"disableReactionSounds": "Pode desactivar os sons de reacção para esta reunião",
"dock": "Ancorar na janela principal",
"documentClose": "Fechar documento partilhado",
"documentOpen": "Abrir documento partilhado",
"download": "Descarregar as nossas aplicações",
@@ -1214,7 +1215,6 @@
"talkWhileMutedPopup": "Está a tentar falar? Está com o microfone desativado.",
"tileViewToggle": "Mudar para vista em quadrícula",
"toggleCamera": "Mudar a câmara",
"undock": "Desancorar numa janela separada",
"videoSettings": "Definições de vídeo",
"videomute": "Iniciar / Parar câmara"
},
@@ -1295,6 +1295,7 @@
"show": "Mostrar no palco",
"showSelfView": "Mostrar autovisualização",
"unpinFromStage": "Desafixar",
"verify": "Verificar participante",
"videoMuted": "Câmara desativada",
"videomute": "Participante parou a câmara"
},
@@ -1362,6 +1363,7 @@
"recentList": "Recente",
"recentListDelete": "Remover",
"recentListEmpty": "A sua lista recente está atualmente vazia. Converse com a sua equipa e encontrará aqui todas as suas reuniões recentes.",
"recentMeetings": "As suas reuniões recentes",
"reducedUIText": "Bem-vindo ao {{app}}!",
"roomNameAllowedChars": "Nome da reunião não deve conter qualquer um destes caracteres: ?. &, :, ', \", %, #.",
"roomname": "Digite o nome da sala",
@@ -1370,6 +1372,7 @@
"settings": "Definições",
"startMeeting": "Iniciar reunião",
"terms": "Termos",
"title": "Videoconferências mais seguras, flexíveis e totalmente gratuitas"
"title": "Videoconferências mais seguras, flexíveis e totalmente gratuitas",
"upcomingMeetings": "As suas próximas reuniões"
}
}

View File

@@ -1067,7 +1067,6 @@
"chat": "Öppna eller stäng chattfönster",
"clap": "Klappa",
"collapse": "Kollaps",
"dock": "Docka i huvudfönstret",
"document": "Öppna eller stäng delat dokument",
"download": "Ladda ner app",
"embedMeeting": "Bädda in möte",
@@ -1121,7 +1120,6 @@
"tileView": "Öppna eller stäng panelvyn",
"toggleCamera": "Växla kamera",
"toggleFilmstrip": "Växla filmremsa",
"undock": "Lossa till ett separat fönster",
"videoblur": "Växla videooskärpa",
"videomute": "Sätt på eller stäng av mikrofonen",
"whiteboard": "Visa/dölj whiteboardtavlan"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Stäng meny för reaktioner",
"disableNoiseSuppression": "Inaktivera brusreducering",
"disableReactionSounds": "Du kan inaktivera reaktionsljud för det här mötet",
"dock": "Docka i huvudfönstret",
"documentClose": "Stäng delat dokument",
"documentOpen": "Öppna delat dokument",
"download": "Ladda ner vår app",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Försöker du tala? Din mikrofon är tystad.",
"tileViewToggle": "Öppna eller stäng panelvyn",
"toggleCamera": "Byta kamera",
"undock": "Lossa till ett separat fönster",
"videoSettings": "Video inställningar",
"videomute": "Aktivera / avaktivera kameran"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "Mesajlaşma penceresini aç/kapat",
"clap": "Alkış",
"collapse": "Daralt",
"dock": "Ana pencerede sabitleyin",
"document": "Paylaşılan dokümanı aç/kapat",
"download": "Uygulamalarımızı indirin",
"embedMeeting": "Toplantıyı yerleştir",
@@ -1121,7 +1120,6 @@
"tileView": "Döşeme görünümünü aç/kapat",
"toggleCamera": "Kamerayı değiştir",
"toggleFilmstrip": "Film şeridini aç/kapat",
"undock": "Ayrı pencereye çıkarın",
"videoblur": "Video bulanıklaştırma aç/kapat",
"videomute": "Sessiz videoyu aç/kapat",
"whiteboard": "Beyaztahtayı Göster / Gizle"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Reaksiyon menüsünü kapat",
"disableNoiseSuppression": "",
"disableReactionSounds": "Toplantı için reaksiyon seslerini devre dışı bırak",
"dock": "Ana pencerede sabitleyin",
"documentClose": "Paylaşılan dokümanı kapat",
"documentOpen": "Paylaşılan dokümanı aç",
"download": "Uygulamalarımızı indirin",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Bir şey mi dediniz? Mikrofonunuz kapalı.",
"tileViewToggle": "Döşeme görünümünü aç/kapat",
"toggleCamera": "Kamerayı değiştir",
"undock": "Ayrı pencereye çıkarın",
"videoSettings": "Video ayarları",
"videomute": "Kamera başlat / durdur"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "Показати/приховати чат",
"clap": "Овації",
"collapse": "Згорнути",
"dock": "Закріпити в головному вікні",
"document": "Відкрити/закрити спільний документ",
"download": "Звантажити мобільний застосунок",
"embedMeeting": "Вставити зустріч",
@@ -1121,7 +1120,6 @@
"tileView": "Увімкнути/вимкнути плитки",
"toggleCamera": "Увімкнути/вимкнути камеру",
"toggleFilmstrip": "Показати/приховати панель видів",
"undock": "Відкріпити в окремому вікні",
"videoblur": "Увімкнути/вимкнути розмиття фону",
"videomute": "Увімкнути/вимкнути камеру",
"whiteboard": "Показати/приховати дошку"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "Закрити меню реакцій",
"disableNoiseSuppression": "Вимкнути придушення шуму",
"disableReactionSounds": "Ви можете вимкнути звуки реакції для цієї зустрічі",
"dock": "Закріпити в головному вікні",
"documentClose": "Закрити спільний документ",
"documentOpen": "Відкрити спільний документ",
"download": "Звантажити мобільний застосунок",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "Намагаєтесь говорити? Ваш мікрофон вимкнено.",
"tileViewToggle": "Плитки",
"toggleCamera": "Увімкнути/вимкнути камеру",
"undock": "Відкріпити в окремому вікні",
"videoSettings": "Налаштування камери",
"videomute": "Камера"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "打开/关闭聊天窗口",
"clap": "鼓掌",
"collapse": "收起",
"dock": "在主窗口停靠",
"document": "开启/关闭文件共享",
"download": "下载应用",
"embedMeeting": "嵌入会议",
@@ -1121,7 +1120,6 @@
"tileView": "开启/关闭画廊视图",
"toggleCamera": "开启/关闭摄像头",
"toggleFilmstrip": "开启/关闭幻灯片",
"undock": "取消停靠到单独的窗口",
"videoblur": "开启/关闭视频模糊",
"videomute": "启动/停止摄像头",
"whiteboard": "显示/隐藏白板"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "关闭反应菜单",
"disableNoiseSuppression": "关闭噪音抑制",
"disableReactionSounds": "你可以禁用此会议的反应声音",
"dock": "在主窗口停靠",
"documentClose": "关闭文件共享",
"documentOpen": "开启文件共享",
"download": "下载我们的APP",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "你在尝试发言吗? 当前你是静音状态。",
"tileViewToggle": "画面模式",
"toggleCamera": "开启/关闭摄像头",
"undock": "取消停靠到单独的窗口",
"videoSettings": "视频设置",
"videomute": "开启/关闭摄像头"
},

View File

@@ -1067,7 +1067,6 @@
"chat": "打開/關閉聊天視窗",
"clap": "鼓掌",
"collapse": "收回",
"dock": "停靠在主視窗中",
"document": "啟用/停用分享文檔",
"download": "下載我們的應用程式",
"embedMeeting": "嵌入會議",
@@ -1121,7 +1120,6 @@
"tileView": "啟用/停用畫廊檢視",
"toggleCamera": "啟用/停用網路攝影機",
"toggleFilmstrip": "啟用/停用簡報",
"undock": "取消停靠到單獨的视窗",
"videoblur": "啟用/停用畫面模糊",
"videomute": "啟用/停用網路攝影機",
"whiteboard": "啟用/停用白板"
@@ -1140,7 +1138,6 @@
"closeReactionsMenu": "關閉反應選單",
"disableNoiseSuppression": "停用雜訊抑制",
"disableReactionSounds": "您可以停用此會議的反應音效",
"dock": "停靠在主視窗中",
"documentClose": "關閉分享檔案欄",
"documentOpen": "開啟分享檔案欄",
"download": "下載我們的應用程式",
@@ -1214,7 +1211,6 @@
"talkWhileMutedPopup": "您要發言嗎?目前您處於靜音。",
"tileViewToggle": "啟動/停用畫廊檢視",
"toggleCamera": "啟動/停用網路攝影機",
"undock": "取消停靠到單獨的视窗",
"videoSettings": "視訊設定",
"videomute": "啟動/停用網路攝影機"
},

View File

@@ -147,6 +147,7 @@
"bridgeCount": "Server count: ",
"codecs": "Codecs (A/V): ",
"connectedTo": "Connected to:",
"e2eeVerified": "E2EE verified:",
"framerate": "Frame rate:",
"less": "Show less",
"localaddress": "Local address:",
@@ -408,6 +409,10 @@
"user": "User",
"userIdentifier": "User identifier",
"userPassword": "User password",
"verifyParticipantConfirm": "They match",
"verifyParticipantDismiss": "They do not match",
"verifyParticipantQuestion": "EXPERIMENTAL: Ask participant {{participantName}} if they see the same content, in the same order.",
"verifyParticipantTitle": "User verification",
"videoLink": "Video link",
"viewUpgradeOptions": "View upgrade options",
"viewUpgradeOptionsContent": "To get unlimited access to premium features like recording, transcriptions, RTMP Streaming & more, you'll need to upgrade your plan.",
@@ -437,9 +442,6 @@
"noResults": "No results found :(",
"search": "Search GIPHY"
},
"helpView": {
"title": "Help center"
},
"incomingCall": {
"answer": "Answer",
"audioCallTitle": "Incoming call",
@@ -563,7 +565,6 @@
"lobby": {
"admit": "Admit",
"admitAll": "Admit all",
"allow": "Allow",
"backToKnockModeButton": "Ask to join",
"chat": "Chat",
"dialogTitle": "Lobby mode",
@@ -711,6 +712,8 @@
"reactionSoundsForAll": "Disable sounds for all",
"screenShareNoAudio": "Share audio box was not checked in the window selection screen.",
"screenShareNoAudioTitle": "Couldn't share system audio!",
"screenSharingAudioOnlyDescription": "Please note that by sharing your screen you're affecting the \"Best performance\" mode and you will use more bandwidth.",
"screenSharingAudioOnlyTitle": "\"Best performance\" mode",
"selfViewTitle": "You can always un-hide the self-view from settings",
"somebody": "Somebody",
"startSilentDescription": "Rejoin the meeting to enable audio",
@@ -860,9 +863,6 @@
"rejected": "Rejected",
"ringing": "Ringing..."
},
"privacyView": {
"title": "Privacy"
},
"profile": {
"avatar": "avatar",
"setDisplayNameLabel": "Set your display name",
@@ -916,6 +916,7 @@
"localRecordingVideoWarning": "To record your video you must have it on when starting the recording",
"localRecordingWarning": "Make sure you select the current tab in order to use the right video and audio. The recording is currently limited to 1GB, which is around 100 minutes.",
"loggedIn": "Logged in as {{userName}}",
"noMicPermission": "Microphone track could not be created. Please grant permission to use the microphone.",
"noStreams": "No audio or video stream detected.",
"off": "Recording stopped",
"offBy": "{{name}} stopped the recording",
@@ -1070,7 +1071,6 @@
"chat": "Open / Close chat",
"clap": "Clap",
"collapse": "Collapse",
"dock": "Dock in main window",
"document": "Toggle shared document",
"download": "Download our apps",
"embedMeeting": "Embed meeting",
@@ -1124,7 +1124,6 @@
"tileView": "Toggle tile view",
"toggleCamera": "Toggle camera",
"toggleFilmstrip": "Toggle filmstrip",
"undock": "Undock into separate window",
"videoblur": "Toggle video blur",
"videomute": "Start / Stop camera",
"whiteboard": "Show / Hide whiteboard"
@@ -1143,7 +1142,6 @@
"closeReactionsMenu": "Close reactions menu",
"disableNoiseSuppression": "Disable noise suppression",
"disableReactionSounds": "You can disable reaction sounds for this meeting",
"dock": "Dock in main window",
"documentClose": "Close shared document",
"documentOpen": "Open shared document",
"download": "Download our apps",
@@ -1217,7 +1215,6 @@
"talkWhileMutedPopup": "Trying to speak? You are muted.",
"tileViewToggle": "Toggle tile view",
"toggleCamera": "Toggle camera",
"undock": "Undock into separate window",
"videoSettings": "Video settings",
"videomute": "Start / Stop camera"
},
@@ -1298,6 +1295,7 @@
"show": "Show on stage",
"showSelfView": "Show self view",
"unpinFromStage": "Unpin",
"verify": "Verify participant",
"videoMuted": "Camera disabled",
"videomute": "Participant has stopped the camera"
},
@@ -1365,6 +1363,7 @@
"recentList": "Recent",
"recentListDelete": "Delete entry",
"recentListEmpty": "Your recent list is currently empty. Chat with your team and you will find all your recent meetings here.",
"recentMeetings": "Your recent meetings",
"reducedUIText": "Welcome to {{app}}!",
"roomNameAllowedChars": "Meeting name should not contain any of these characters: ?, &, :, ', \", %, #.",
"roomname": "Enter room name",
@@ -1373,6 +1372,7 @@
"settings": "Settings",
"startMeeting": "Start meeting",
"terms": "Terms",
"title": "Secure, fully featured, and completely free video conferencing"
"title": "Secure, fully featured, and completely free video conferencing",
"upcomingMeetings": "Your upcoming meetings"
}
}

View File

@@ -644,15 +644,15 @@ function initCommands() {
}
let recordingConfig;
const { recordingService } = state['features/base/config'];
if (!recordingService.enabled && !dropboxToken) {
logger.error('Failed starting recording: the recording service is not enabled');
return;
}
if (mode === JitsiRecordingConstants.mode.FILE) {
const { recordingService } = state['features/base/config'];
if (!recordingService.enabled && !dropboxToken) {
logger.error('Failed starting recording: the recording service is not enabled');
return;
}
if (dropboxToken) {
recordingConfig = {
mode: JitsiRecordingConstants.mode.FILE,
@@ -1671,22 +1671,6 @@ class API {
});
}
/**
* Notify external application (if API is enabled) that the iframe
* docked state has been changed. The responsibility for implementing
* the dock / undock functionality lies with the external application.
*
* @param {boolean} docked - Whether or not the iframe has been set to
* be docked or undocked.
* @returns {void}
*/
notifyIframeDockStateChanged(docked: boolean) {
this._sendEvent({
name: 'iframe-dock-state-changed',
docked
});
}
/**
* Notify external application of a participant, remote or local, being
* removed from the conference by another participant.
@@ -1957,6 +1941,21 @@ class API {
});
}
/**
* Notify external application ( if API is enabled) that a participant menu button was clicked.
*
* @param {string} key - The key of the participant menu button.
* @param {string} participantId - The ID of the participant for with the participant menu button was clicked.
* @returns {void}
*/
notifyParticipantMenuButtonClicked(key, participantId) {
this._sendEvent({
name: 'participant-menu-button-clicked',
key,
participantId
});
}
/**
* Disposes the allocated resources.
*

View File

@@ -117,7 +117,6 @@ const events = {
'feedback-submitted': 'feedbackSubmitted',
'feedback-prompt-displayed': 'feedbackPromptDisplayed',
'filmstrip-display-changed': 'filmstripDisplayChanged',
'iframe-dock-state-changed': 'iframeDockStateChanged',
'incoming-message': 'incomingMessage',
'knocking-participant': 'knockingParticipant',
'log': 'log',
@@ -141,6 +140,7 @@ const events = {
'raise-hand-updated': 'raiseHandUpdated',
'recording-link-available': 'recordingLinkAvailable',
'recording-status-changed': 'recordingStatusChanged',
'participant-menu-button-clicked': 'participantMenuButtonClick',
'video-ready-to-close': 'readyToClose',
'video-conference-joined': 'videoConferenceJoined',
'video-conference-left': 'videoConferenceLeft',
@@ -389,10 +389,10 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
this._frame = document.createElement('iframe');
this._frame.allow = 'camera; microphone; display-capture; autoplay; clipboard-write';
this._frame.src = this._url;
this._frame.name = frameName;
this._frame.id = frameName;
this._setSize(height, width);
this._frame.sandbox = 'allow-scripts allow-same-origin allow-popups allow-forms allow-downloads';
this._frame.setAttribute('allowFullScreen', 'true');
this._frame.style.border = 0;
@@ -403,6 +403,8 @@ export default class JitsiMeetExternalAPI extends EventEmitter {
}
this._frame = this._parentNode.appendChild(this._frame);
this._frame.src = this._url;
}
/**

View File

@@ -8,39 +8,6 @@ import Filmstrip from '../videolayout/Filmstrip';
import LargeContainer from '../videolayout/LargeContainer';
import VideoLayout from '../videolayout/VideoLayout';
/**
*
*/
function bubbleIframeMouseMove(iframe) {
const existingOnMouseMove = iframe.contentWindow.onmousemove;
iframe.contentWindow.onmousemove = function(e) {
if (existingOnMouseMove) {
existingOnMouseMove(e);
}
const evt = document.createEvent('MouseEvents');
const boundingClientRect = iframe.getBoundingClientRect();
evt.initMouseEvent(
'mousemove',
true, // bubbles
false, // not cancelable
window,
e.detail,
e.screenX,
e.screenY,
e.clientX + boundingClientRect.left,
e.clientY + boundingClientRect.top,
e.ctrlKey,
e.altKey,
e.shiftKey,
e.metaKey,
e.button,
null // no related element
);
iframe.dispatchEvent(evt);
};
}
/**
* Default Etherpad frame width.
@@ -68,7 +35,7 @@ class Etherpad extends LargeContainer {
iframe.id = 'etherpadIFrame';
iframe.src = url;
iframe.frameBorder = 0;
iframe.style.border = 0;
iframe.scrolling = 'no';
iframe.width = DEFAULT_WIDTH;
iframe.height = DEFAULT_HEIGHT;
@@ -76,26 +43,6 @@ class Etherpad extends LargeContainer {
this.container.appendChild(iframe);
iframe.onload = function() {
// eslint-disable-next-line no-self-assign
document.domain = document.domain;
bubbleIframeMouseMove(iframe);
setTimeout(() => {
const doc = iframe.contentDocument;
// the iframes inside of the etherpad are
// not yet loaded when the etherpad iframe is loaded
const outer = doc.getElementsByName('ace_outer')[0];
bubbleIframeMouseMove(outer);
const inner = doc.getElementsByName('ace_inner')[0];
bubbleIframeMouseMove(inner);
}, 2000);
};
this.iframe = iframe;
}

View File

@@ -14,11 +14,13 @@ import { i18next } from '../../../react/features/base/i18n';
import { JitsiTrackEvents } from '../../../react/features/base/lib-jitsi-meet';
import { VIDEO_TYPE } from '../../../react/features/base/media';
import {
getLocalParticipant,
getParticipantById,
getParticipantDisplayName,
isLocalScreenshareParticipant,
isScreenShareParticipant
} from '../../../react/features/base/participants';
import { getHideSelfView } from '../../../react/features/base/settings/functions.any';
import {
getVideoTrackByParticipant,
trackStreamingStatusChanged
@@ -232,6 +234,10 @@ export default class LargeVideoManager {
preUpdate.then(() => {
const { id, stream, videoType, resolve } = this.newStreamData;
const state = APP.store.getState();
const shouldHideSelfView = getHideSelfView(state);
const localId = getLocalParticipant(state)?.id;
// FIXME this does not really make sense, because the videoType
// (camera or desktop) is a completely different thing than
@@ -245,13 +251,16 @@ export default class LargeVideoManager {
// eslint-disable-next-line no-shadow
const container = this.getCurrentContainer();
if (shouldHideSelfView && localId === id) {
return container.hide();
}
container.setStream(id, stream, videoType);
// change the avatar url on large
this.updateAvatar();
const isVideoMuted = !stream || stream.isMuted();
const state = APP.store.getState();
const participant = getParticipantById(state, id);
const videoTrack = getVideoTrackByParticipant(state, participant);

View File

@@ -158,7 +158,6 @@ export default {
* Determines if currently selected media devices should be changed after
* list of available devices has been changed.
* @param {MediaDeviceInfo[]} newDevices
* @param {boolean} isSharingScreen
* @param {JitsiLocalTrack} localVideo
* @param {JitsiLocalTrack} localAudio
* @returns {{
@@ -169,13 +168,12 @@ export default {
*/
getNewMediaDevicesAfterDeviceListChanged( // eslint-disable-line max-params
newDevices,
isSharingScreen,
localVideo,
localAudio,
newLabels) {
return {
audioinput: getNewAudioInputDevice(newDevices, localAudio, newLabels),
videoinput: isSharingScreen ? undefined : getNewVideoInputDevice(newDevices, localVideo, newLabels),
videoinput: getNewVideoInputDevice(newDevices, localVideo, newLabels),
audiooutput: getNewAudioOutputDevice(newDevices)
};
},

737
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -28,15 +28,15 @@
"@atlaskit/tooltip": "17.1.2",
"@emotion/react": "11.10.0",
"@emotion/styled": "11.10.0",
"@giphy/js-fetch-api": "4.1.2",
"@giphy/js-fetch-api": "4.7.1",
"@giphy/react-components": "5.6.0",
"@giphy/react-native-sdk": "1.7.0",
"@hapi/bourne": "2.0.0",
"@jitsi/excalidraw": "https://github.com/jitsi/excalidraw/releases/download/v0.0.11/jitsi-excalidraw-0.0.11.tgz",
"@jitsi/js-utils": "2.0.4",
"@jitsi/excalidraw": "https://github.com/jitsi/excalidraw/releases/download/v0.0.12/jitsi-excalidraw-0.0.12.tgz",
"@jitsi/js-utils": "2.0.5",
"@jitsi/logger": "2.0.0",
"@jitsi/rnnoise-wasm": "0.1.0",
"@jitsi/rtcstats": "9.5.0",
"@jitsi/rtcstats": "9.5.1",
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.3.tgz",
"@microsoft/microsoft-graph-client": "3.0.1",
"@mui/material": "5.10.2",
@@ -46,12 +46,11 @@
"@react-native-community/netinfo": "7.1.7",
"@react-native-community/slider": "4.1.12",
"@react-native-google-signin/google-signin": "7.0.4",
"@react-native-masked-view/masked-view": "0.2.6",
"@react-navigation/bottom-tabs": "6.0.9",
"@react-navigation/elements": "1.2.1",
"@react-navigation/material-top-tabs": "6.0.6",
"@react-navigation/native": "6.0.6",
"@react-navigation/stack": "6.2.2",
"@react-navigation/bottom-tabs": "6.5.3",
"@react-navigation/elements": "1.3.13",
"@react-navigation/material-top-tabs": "6.5.2",
"@react-navigation/native": "6.1.2",
"@react-navigation/stack": "6.3.11",
"@svgr/webpack": "6.3.1",
"@tensorflow/tfjs-backend-wasm": "3.13.0",
"@tensorflow/tfjs-core": "3.13.0",
@@ -79,7 +78,7 @@
"js-md5": "0.6.1",
"js-sha512": "0.8.0",
"jwt-decode": "2.2.0",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1539.0.0+eb4873d2/lib-jitsi-meet.tgz",
"lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1578.0.0+5855ca72/lib-jitsi-meet.tgz",
"lodash": "4.17.21",
"moment": "2.29.4",
"moment-duration-format": "2.2.2",
@@ -97,19 +96,18 @@
"react-native-background-timer": "2.4.1",
"react-native-calendar-events": "2.2.0",
"react-native-callstats": "3.73.7",
"react-native-collapsible": "1.6.0",
"react-native-default-preference": "1.4.4",
"react-native-device-info": "8.4.8",
"react-native-dialog": "https://github.com/jitsi/react-native-dialog/releases/download/v9.2.2-jitsi.1/react-native-dialog-9.2.2.tgz",
"react-native-gesture-handler": "2.1.0",
"react-native-gesture-handler": "2.9.0",
"react-native-get-random-values": "1.7.2",
"react-native-immersive": "2.0.0",
"react-native-keep-awake": "4.0.0",
"react-native-orientation-locker": "1.5.0",
"react-native-pager-view": "5.4.9",
"react-native-paper": "4.11.1",
"react-native-paper": "5.1.2",
"react-native-performance": "2.1.0",
"react-native-safe-area-context": "3.3.2",
"react-native-safe-area-context": "4.4.1",
"react-native-screens": "3.13.1",
"react-native-sound": "0.11.1",
"react-native-splash-screen": "3.3.0",
@@ -119,14 +117,14 @@
"react-native-url-polyfill": "1.3.0",
"react-native-video": "https://git@github.com/react-native-video/react-native-video#7c48ae7c8544b2b537fb60194e9620b9fcceae52",
"react-native-watch-connectivity": "1.0.11",
"react-native-webrtc": "1.106.1",
"react-native-webrtc": "106.0.5",
"react-native-webview": "11.15.1",
"react-native-youtube-iframe": "2.2.1",
"react-redux": "7.1.0",
"react-textarea-autosize": "8.3.0",
"react-transition-group": "2.4.0",
"react-window": "1.8.6",
"react-youtube": "7.13.1",
"react-youtube": "10.1.0",
"redux": "4.0.4",
"redux-thunk": "2.4.1",
"resemblejs": "4.0.0",
@@ -152,6 +150,8 @@
"@types/js-md5": "0.4.3",
"@types/lodash": "4.14.182",
"@types/react": "17.0.14",
"@types/react-dom": "17.0.14",
"@types/react-linkify": "1.0.1",
"@types/react-native": "0.68.9",
"@types/react-redux": "7.1.24",
"@types/react-window": "1.8.5",
@@ -199,7 +199,8 @@
"tsc:web": "tsc --noEmit --project tsconfig.web.json",
"tsc:native": "tsc --noEmit --project tsconfig.native.json",
"tsc:ci": "npm run tsc:web && npm run tsc:native",
"lint:ci": "eslint --ext .js,.ts,.tsx --max-warnings 0 . && npm run tsc:ci",
"lint:ci": "eslint --ext .js,.ts,.tsx --max-warnings 0 . && npm run tsc:ci && npm run lint:lang",
"lint:lang": "for file in lang/*.json; do npx --yes jsonlint -q $file || exit 1; done",
"lang-sort": "./resources/lang-sort.sh",
"lint-fix": "eslint --ext .js,.ts,.tsx --max-warnings 0 --fix .",
"postinstall": "patch-package --error-on-fail && jetify",

View File

@@ -1,13 +0,0 @@
diff --git a/node_modules/react-native-gesture-handler/android/build.gradle b/node_modules/react-native-gesture-handler/android/build.gradle
index 8afc3d5..4b1f721 100644
--- a/node_modules/react-native-gesture-handler/android/build.gradle
+++ b/node_modules/react-native-gesture-handler/android/build.gradle
@@ -26,7 +26,7 @@ def shouldUseCommonInterfaceFromReanimated() {
def json = new JsonSlurper().parseText(inputFile.text)
def reanimatedVersion = json.version as String
def (major, minor, patch) = reanimatedVersion.tokenize('.')
- return Integer.parseInt(minor) >= 3
+ return Integer.parseInt(major) >= 2 && Integer.parseInt(minor) >= 3
} else {
return false
}

View File

@@ -1,5 +1,3 @@
/* eslint-disable lines-around-comment */
import logger from '../logger';
import AbstractHandler, { IEvent } from './AbstractHandler';
@@ -103,8 +101,10 @@ export default class AmplitudeHandler extends AbstractHandler {
return {
sessionId: amplitude.getInstance().getSessionId(),
// @ts-ignore
deviceId: amplitude.getInstance().options.deviceId,
// @ts-ignore
userId: amplitude.getInstance().options.userId
};

View File

@@ -21,6 +21,7 @@ import { isVpaasMeeting } from '../jaas/functions';
import { clearNotifications, showNotification } from '../notifications/actions';
import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants';
import { setFatalError } from '../overlay/actions';
import { isWelcomePageEnabled } from '../welcome/functions';
import {
redirectToStaticPage,
@@ -203,7 +204,7 @@ export function maybeRedirectToWelcomePage(options: { feedbackSubmitted?: boolea
// if Welcome page is enabled redirect to welcome page after 3 sec, if
// there is a thank you message to be shown, 0.5s otherwise.
if (getState()['features/base/config'].enableWelcomePage) {
if (isWelcomePageEnabled(getState())) {
setTimeout(
() => {
dispatch(redirectWithStoredParams('/'));

View File

@@ -8,7 +8,7 @@ import { Conference } from '../conference';
import { getDeepLinkingPage } from '../deep-linking';
import { UnsupportedDesktopBrowser } from '../unsupported-browser';
import { BlankPage, WelcomePage } from '../welcome';
import { isWelcomePageEnabled } from '../welcome/functions';
import { getCustomLandingPageURL, isWelcomePageEnabled } from '../welcome/functions';
/**
* Determines which route is to be rendered in order to depict a specific Redux
@@ -75,7 +75,13 @@ function _getWebWelcomePageRoute(state) {
if (isWelcomePageEnabled(state)) {
if (isSupportedBrowser()) {
route.component = WelcomePage;
const customLandingPage = getCustomLandingPageURL(state);
if (customLandingPage) {
route.href = customLandingPage;
} else {
route.component = WelcomePage;
}
} else {
route.component = UnsupportedDesktopBrowser;
}

View File

@@ -11,6 +11,7 @@ import '../base/media/middleware';
import '../base/net-info/middleware';
import '../base/participants/middleware';
import '../base/responsive-ui/middleware';
import '../base/redux/middleware';
import '../base/settings/middleware';
import '../base/sounds/middleware';
import '../base/testing/middleware';

View File

@@ -2,7 +2,6 @@ import '../authentication/middleware';
import '../base/i18n/middleware';
import '../base/devices/middleware';
import '../base/media/middleware';
import '../base/redux/middleware';
import '../dynamic-branding/middleware';
import '../e2ee/middleware';
import '../external-api/middleware';

View File

@@ -6,6 +6,7 @@ import '../mobile/call-integration/reducer';
import '../mobile/external-api/reducer';
import '../mobile/full-screen/reducer';
import '../mobile/watchos/reducer';
import '../share-room/reducer';
import './reducer.native';

View File

@@ -65,6 +65,7 @@ import { IRecordingState } from '../recording/reducer';
import { IRemoteControlState } from '../remote-control/reducer';
import { IScreenShareState } from '../screen-share/reducer';
import { IScreenshotCaptureState } from '../screenshot-capture/reducer';
import { IShareRoomState } from '../share-room/reducer';
import { ISharedVideoState } from '../shared-video/reducer';
import { ISpeakerStatsState } from '../speaker-stats/reducer';
import { ISubtitlesState } from '../subtitles/reducer';
@@ -89,6 +90,7 @@ export interface IReduxState {
'features/background': IBackgroundState;
'features/base/app': IAppState;
'features/base/audio-only': IAudioOnlyState;
'features/base/color-scheme': any;
'features/base/conference': IConferenceState;
'features/base/config': IConfigState;
'features/base/connection': IConnectionState;
@@ -148,6 +150,7 @@ export interface IReduxState {
'features/screen-share': IScreenShareState;
'features/screenshot-capture': IScreenshotCaptureState;
'features/settings': ISettingsState;
'features/share-room': IShareRoomState;
'features/shared-video': ISharedVideoState;
'features/speaker-stats': ISpeakerStatsState;
'features/subtitles': ISubtitlesState;

View File

@@ -253,6 +253,7 @@ class LoginDialog extends Component<IProps, IState> {
return (
<Dialog
disableAutoHideOnSubmit = { true }
disableBackdropClose = { true }
hideCloseButton = { true }
ok = {{

View File

@@ -24,9 +24,8 @@ import {
openWaitForOwnerDialog,
stopWaitForOwner
} from './actions.web';
// eslint-disable-next-line lines-around-comment
// @ts-ignore
import { LoginDialog, WaitForOwnerDialog } from './components';
import LoginDialog from './components/web/LoginDialog';
import WaitForOwnerDialog from './components/web/WaitForOwnerDialog';
/**
* Middleware that captures connection or conference failed errors and controls

View File

@@ -1,7 +1,5 @@
// @flow
import { toState } from '../redux';
import { StyleType } from '../styles';
import { toState } from '../redux/functions';
import { StyleType } from '../styles/functions.any';
import defaultScheme from './defaultScheme';
@@ -90,7 +88,7 @@ class ColorSchemeRegistry {
stateful: Object | Function,
componentName: string,
style: StyleType): StyleType {
let schemedStyle;
let schemedStyle: any;
if (Array.isArray(style)) {
// The style is an array of styles, we apply the same transformation
@@ -116,7 +114,7 @@ class ColorSchemeRegistry {
// The value is another style object, we apply the same
// transformation recursively.
schemedStyle[styleName]
= this._applyColorScheme(
= this._applyColorScheme( // @ts-ignore
stateful, componentName, styleValue);
} else if (typeof styleValue === 'function') {
// The value is a function, which indicates that it's a
@@ -149,11 +147,14 @@ class ColorSchemeRegistry {
stateful: Object | Function,
componentName: string,
colorDefinition: string): string {
// @ts-ignore
const colorScheme = toState(stateful)['features/base/color-scheme'] || {};
return {
...defaultScheme._defaultTheme,
...colorScheme._defaultTheme,
// @ts-ignore
...defaultScheme[componentName],
...colorScheme[componentName]
}[colorDefinition];

View File

@@ -1,4 +1,5 @@
import { ColorPalette, getRGBAFormat } from '../styles';
import { ColorPalette } from '../styles/components/styles/ColorPalette';
import { getRGBAFormat } from '../styles/functions.any';
/**
* The default color scheme of the application.

View File

@@ -1,5 +1,3 @@
// @flow
/**
* A special function to be used in the {@code createColorSchemedStyle} call,
* that denotes that the color is a dynamic color.

View File

@@ -1,4 +1,3 @@
/* eslint-disable lines-around-comment */
import { createStartMutedConfigurationEvent } from '../../analytics/AnalyticsEvents';
import { sendAnalytics } from '../../analytics/functions';
import { appNavigate } from '../../app/actions';
@@ -16,9 +15,11 @@ import {
participantMutedUs,
participantPresenceChanged,
participantRoleChanged,
participantSourcesUpdated,
participantUpdated
} from '../participants/actions';
import { getNormalizedDisplayName } from '../participants/functions';
import { IJitsiParticipant } from '../participants/types';
import { toState } from '../redux/functions';
import {
destroyLocalTracks,
@@ -111,6 +112,7 @@ function _addConferenceListeners(conference: IJitsiConference, dispatch: IStore[
JitsiConferenceEvents.CONFERENCE_LEFT,
(...args: any[]) => {
dispatch(conferenceTimestampChanged(0));
// @ts-ignore
dispatch(conferenceLeft(conference, ...args));
});
@@ -128,6 +130,10 @@ function _addConferenceListeners(conference: IJitsiConference, dispatch: IStore[
JitsiConferenceEvents.PARTICIPANT_KICKED,
(kicker: any, kicked: any) => dispatch(participantKicked(kicker, kicked)));
conference.on(
JitsiConferenceEvents.PARTICIPANT_SOURCE_UPDATED,
(jitsiParticipant: IJitsiParticipant) => dispatch(participantSourcesUpdated(jitsiParticipant)));
conference.on(
JitsiConferenceEvents.LOCK_STATE_CHANGED, // @ts-ignore
(...args: any[]) => dispatch(lockStateChanged(conference, ...args)));
@@ -501,7 +507,7 @@ export function conferenceWillLeave(conference: IJitsiConference) {
* from Redux.
* @returns {Function}
*/
export function createConference(overrideRoom?: string) {
export function createConference(overrideRoom?: string | String) {
return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
const state = getState();
const { connection, locationURL } = state['features/base/connection'];

View File

@@ -14,8 +14,11 @@ import {
} from '../participants/actions';
import { getLocalParticipant } from '../participants/functions';
import { toState } from '../redux/functions';
import { getJitsiMeetGlobalNS } from '../util/helpers';
import { getBackendSafePath, safeDecodeURIComponent } from '../util/uri';
import {
appendURLParam,
getBackendSafePath,
safeDecodeURIComponent
} from '../util/uri';
import { setObfuscatedRoom } from './actions';
import {
@@ -102,7 +105,8 @@ export function commonUserJoinedHandling(
name: displayName,
presence: user.getStatus(),
role: user.getRole(),
isReplacing
isReplacing,
sources: user.getSources()
}));
}
}
@@ -245,13 +249,46 @@ export function getConferenceOptions(stateful: IStateful) {
delete config.analytics?.googleAnalyticsTrackingId;
delete options.callStatsID;
delete options.callStatsSecret;
} else {
options.getWiFiStatsMethod = getWiFiStatsMethod;
}
return options;
}
/**
* Override the global config (that is, window.config) with XMPP configuration required to join as a visitor.
*
* @param {IStateful} stateful - The redux store state.
* @param {Array<string>} params - The received parameters.
* @returns {void}
*/
export function generateVisitorConfig(stateful: IStateful, params: Array<string>) {
const [ vnode, focusJid ] = params;
const config = toState(stateful)['features/base/config'];
if (!config || !config.hosts) {
logger.warn('Wrong configuration, missing hosts.');
return;
}
const oldDomain = config.hosts.domain;
config.hosts.domain = `${vnode}.meet.jitsi`;
config.hosts.muc = config.hosts.muc.replace(oldDomain, config.hosts.domain);
config.focusUserJid = focusJid;
// This flag disables sending the initial conference request
config.disableFocus = true;
if (config.bosh) {
config.bosh = appendURLParam(config.bosh, 'vnode', vnode);
}
if (config.websocket) {
config.websocket = appendURLParam(config.websocket, 'vnode', vnode);
}
}
/**
* Returns the UTC timestamp when the first participant joined the conference.
*
@@ -343,21 +380,6 @@ export function getAnalyticsRoomName(state: IReduxState, dispatch: IStore['dispa
return getRoomName(state);
}
/**
* Returns the result of getWiFiStats from the global NS or does nothing
* (returns empty result).
* Fixes a concurrency problem where we need to pass a function when creating
* a JitsiConference, but that method is added to the context later.
*
* @returns {Promise}
* @private
*/
function getWiFiStatsMethod() {
const gloabalNS = getJitsiMeetGlobalNS();
return gloabalNS.getWiFiStats ? gloabalNS.getWiFiStats() : Promise.resolve('{}');
}
/**
* Handle an error thrown by the backend (i.e. {@code lib-jitsi-meet}) while
* manipulating a conference participant (e.g. Pin or select participant).

View File

@@ -46,6 +46,7 @@ export interface IJitsiConference {
avModerationApprove: Function;
avModerationReject: Function;
createVideoSIPGWSession: Function;
dial: Function;
disableAVModeration: Function;
enableAVModeration: Function;
end: Function;
@@ -59,6 +60,7 @@ export interface IJitsiConference {
grantOwner: Function;
isAVModerationSupported: Function;
isCallstatsEnabled: Function;
isE2EEEnabled: Function;
isEndConferenceSupported: Function;
isLobbySupported: Function;
isSIPCallingSupported: Function;
@@ -71,7 +73,9 @@ export interface IJitsiConference {
muteParticipant: Function;
myLobbyUserId: Function;
myUserId: Function;
off: Function;
on: Function;
options: any;
removeTrack: Function;
replaceTrack: Function;
room: IJitsiConferenceRoom;
@@ -81,6 +85,7 @@ export interface IJitsiConference {
sendFaceLandmarks: (faceLandmarks: FaceLandmarks) => void;
sendFeedback: Function;
sendLobbyMessage: Function;
sendMessage: Function;
sessionId: string;
setDesktopSharingFrameRate: Function;
setDisplayName: Function;
@@ -88,6 +93,7 @@ export interface IJitsiConference {
setReceiverConstraints: Function;
setSenderVideoConstraint: Function;
setSubject: Function;
startVerification: Function;
}
export interface IConferenceState {

View File

@@ -2,7 +2,6 @@ type ToolbarButtons = 'camera' |
'chat' |
'closedcaptions' |
'desktop' |
'dock-iframe' |
'download' |
'embedmeeting' |
'etherpad' |
@@ -29,7 +28,6 @@ type ToolbarButtons = 'camera' |
'stats' |
'tileview' |
'toggle-camera' |
'undock-iframe' |
'videoquality' |
'__end';
@@ -90,6 +88,35 @@ export type Sounds = 'ASKED_TO_UNMUTE_SOUND' |
'RECORDING_ON_SOUND' |
'TALK_WHILE_MUTED_SOUND';
export interface IMobileDynamicLink {
apn: string;
appCode: string;
customDomain?: string;
ibi: string;
isi: string;
}
export interface IDeeplinkingPlatformConfig {
appName: string;
}
export interface IDeeplinkingMobileConfig extends IDeeplinkingPlatformConfig {
appPackage?: string;
appScheme: string;
downloadLink: string;
dynamicLink?: IMobileDynamicLink;
fDroidUrl?: string;
}
export interface IDeeplinkingConfig {
android?: IDeeplinkingMobileConfig;
desktop?: IDeeplinkingPlatformConfig;
disabled: boolean;
hideLogo: boolean;
ios?: IDeeplinkingMobileConfig;
}
export interface IConfig {
_desktopSharingSourceDevice?: string;
analytics?: {
@@ -129,6 +156,7 @@ export interface IConfig {
preventExecution: boolean;
}>;
callDisplayName?: string;
callFlowsEnabled?: boolean;
callStatsConfigParams?: {
additionalIDs?: {
customerID?: string;
@@ -160,6 +188,7 @@ export interface IConfig {
alwaysVisible?: Array<string>;
autoHide?: Array<string>;
};
conferenceRequestUrl?: string;
connectionIndicators?: {
autoHide?: boolean;
autoHideTimeout?: number;
@@ -177,6 +206,9 @@ export interface IConfig {
};
};
corsAvatarURLs?: Array<string>;
customParticipantMenuButtons?: Array<{ icon: string; id: string; text: string; }>;
customToolbarButtons?: Array<{ icon: string; id: string; text: string; }>;
deeplinking?: IDeeplinkingConfig;
defaultLanguage?: string;
defaultLocalDisplayName?: string;
defaultLogoUrl?: string;
@@ -203,7 +235,7 @@ export interface IConfig {
disableChatSmileys?: boolean;
disableDeepLinking?: boolean;
disableFilmstripAutohiding?: boolean;
disableH264?: boolean;
disableFocus?: boolean;
disableIncomingMessageSound?: boolean;
disableInitialGUM?: boolean;
disableInviteFunctions?: boolean;
@@ -306,16 +338,19 @@ export interface IConfig {
};
firefox_fake_device?: string;
flags?: {
ssrcRewritingEnabled: boolean;
};
focusUserJid?: string;
gatherStats?: boolean;
giphy?: {
displayMode?: 'all' | 'tile' | 'chat';
enabled?: boolean;
proxyUrl?: string;
rating?: 'g' | 'pg' | 'pg-13' | 'r';
sdkKey?: string;
tileTime?: number;
};
googleApiApplicationClientID?: string;
gravatar?: {
baseUrl?: string;
disabled?: boolean;
@@ -340,10 +375,13 @@ export interface IConfig {
domain: string;
focus?: string;
muc: string;
visitorFocus: string;
};
iAmRecorder?: boolean;
iAmSipGateway?: boolean;
inviteAppName?: string | null;
inviteServiceCallFlowsUrl?: string;
inviteServiceUrl?: string;
jaasActuatorUrl?: string;
jaasFeedbackMetadataURL?: string;
jaasTokenUrl?: string;
@@ -358,6 +396,10 @@ export interface IConfig {
validatorRegExpString?: string;
};
liveStreamingEnabled?: boolean;
lobby?: {
autoKnock?: boolean;
enableChat?: boolean;
};
localRecording?: {
disable?: boolean;
disableSelfRecording?: boolean;
@@ -366,6 +408,7 @@ export interface IConfig {
localSubject?: string;
locationURL?: URL;
maxFullResolutionParticipants?: number;
microsoftApiApplicationClientID?: string;
moderatedRoomServiceUrl?: string;
mouseMoveCallbackInterval?: number;
noticeMessage?: string;
@@ -379,12 +422,10 @@ export interface IConfig {
opusMaxAverageBitrate?: number;
p2p?: {
backToP2PDelay?: number;
disableH264?: boolean;
disabledCodec?: string;
enableUnifiedOnChrome?: boolean;
enabled?: boolean;
iceTransportPolicy?: string;
preferH264?: boolean;
preferredCodec?: string;
stunServers?: Array<{ urls: string; }>;
};
@@ -395,7 +436,6 @@ export interface IConfig {
};
pcStatsInterval?: number;
peopleSearchUrl?: string;
preferH264?: boolean;
preferredTranscribeLanguage?: string;
prejoinConfig?: {
enabled?: boolean;
@@ -430,6 +470,10 @@ export interface IConfig {
enabled?: boolean;
mode?: 'always' | 'recording';
};
securityUi?: {
disableLobbyPassword?: boolean;
hideLobbyButton?: boolean;
};
serviceUrl?: string;
sipInviteUrl?: string;
speakerStats?: {
@@ -450,12 +494,10 @@ export interface IConfig {
subject?: string;
testing?: {
callStatsThreshold?: number;
capScreenshareBitrate?: number;
disableE2EE?: boolean;
mobileXmppWsThreshold?: number;
noAutoPlayVideo?: boolean;
p2pTestMode?: boolean;
setScreenSharingResolutionConstraints?: boolean;
testMode?: boolean;
};
tileView?: {
@@ -481,7 +523,6 @@ export interface IConfig {
useAppLanguage?: boolean;
};
useHostPageLocalStorage?: boolean;
useNewBandwidthAllocationStrategy?: boolean;
useTurnUdp?: boolean;
videoQuality?: {
disabledCodec?: string;
@@ -504,6 +545,10 @@ export interface IConfig {
webrtcIceUdpDisable?: boolean;
websocket?: string;
websocketKeepAliveUrl?: string;
welcomePage?: {
customUrl?: string;
disabled?: boolean;
};
whiteboard?: {
collabServerBaseUrl?: string;
enabled?: boolean;

View File

@@ -81,6 +81,7 @@ export default [
'brandingRoomAlias',
'debug',
'debugAudioLevels',
'deeplinking.disabled',
'defaultLocalDisplayName',
'defaultRemoteDisplayName',
'deploymentUrls',
@@ -99,7 +100,6 @@ export default [
'disabledSounds',
'disableFilmstripAutohiding',
'disableInitialGUM',
'disableH264',
'disableHPF',
'disableInviteFunctions',
'disableIncomingMessageSound',
@@ -185,6 +185,7 @@ export default [
'inviteAppName',
'liveStreaming',
'liveStreamingEnabled',
'lobby',
'localRecording',
'localSubject',
'logging',
@@ -197,7 +198,6 @@ export default [
'p2p',
'participantsPane',
'pcStatsInterval',
'preferH264',
'preferredCodec',
'prejoinConfig',
'prejoinPageEnabled',
@@ -210,6 +210,7 @@ export default [
'resolution',
'salesforceUrl',
'screenshotCapture',
'securityUi',
'speakerStats',
'startAudioMuted',
'startAudioOnly',

View File

@@ -60,3 +60,13 @@ export const PREMEETING_BUTTONS = [ 'microphone', 'camera', 'select-background',
* The toolbar buttons to show on 3rdParty prejoin screen.
*/
export const THIRD_PARTY_PREJOIN_BUTTONS = [ 'microphone', 'camera', 'select-background' ];
/**
* The set of feature flags.
*
* @enum {string}
*/
export const FEATURE_FLAGS = {
SSRC_REWRITING: 'ssrcRewritingEnabled'
};

View File

@@ -1,6 +1,6 @@
/* eslint-disable lines-around-comment */
// @ts-ignore
import Bourne from '@hapi/bourne';
// eslint-disable-next-line lines-around-comment
// @ts-ignore
import { jitsiLocalStorage } from '@jitsi/js-utils';
import _ from 'lodash';
@@ -11,7 +11,7 @@ import { parseURLParams } from '../util/parseURLParams';
import { IConfig } from './configType';
import CONFIG_WHITELIST from './configWhitelist';
import { _CONFIG_STORE_PREFIX } from './constants';
import { FEATURE_FLAGS, _CONFIG_STORE_PREFIX } from './constants';
import INTERFACE_CONFIG_WHITELIST from './interfaceConfigWhitelist';
import logger from './logger';
@@ -60,7 +60,17 @@ export function getMeetingRegion(state: IReduxState) {
* @returns {boolean}
*/
export function getMultipleVideoSendingSupportFeatureFlag(state: IReduxState) {
return navigator.product !== 'ReactNative' && isUnifiedPlanEnabled(state);
return isUnifiedPlanEnabled(state);
}
/**
* Selector used to get the SSRC-rewriting feature flag.
*
* @param {Object} state - The global state.
* @returns {boolean}
*/
export function getSsrcRewritingFeatureFlag(state: IReduxState) {
return getFeatureFlag(state, FEATURE_FLAGS.SSRC_REWRITING);
}
/**
@@ -306,3 +316,13 @@ export function getDialOutStatusUrl(state: IReduxState) {
export function getDialOutUrl(state: IReduxState) {
return state['features/base/config'].guestDialOutUrl;
}
/**
* Selector to return the security UI config.
*
* @param {IReduxState} state - State object.
* @returns {Object}
*/
export function getSecurityUiConfig(state: IReduxState) {
return state['features/base/config']?.securityUi || {};
}

View File

@@ -4,7 +4,7 @@ import { IReduxState } from '../../app/types';
import { REPLACE_PARTICIPANT } from '../flags/constants';
import { getFeatureFlag } from '../flags/functions';
import { IConfig } from './configType';
import { IConfig, IDeeplinkingConfig } from './configType';
export * from './functions.any';
@@ -15,11 +15,18 @@ export * from './functions.any';
* @returns {void}
*/
export function _cleanupConfig(config: IConfig) {
config.analytics = {};
config.analytics = config.analytics ?? {};
config.analytics.scriptURLs = [];
if (NativeModules.AppInfo.LIBRE_BUILD) {
delete config.analytics?.amplitudeAPPKey;
delete config.analytics?.googleAnalyticsTrackingId;
delete config.analytics?.rtcstatsEnabled;
delete config.analytics?.rtcstatsEndpoint;
delete config.analytics?.rtcstatsPollInterval;
delete config.analytics?.rtcstatsSendSdp;
delete config.analytics?.rtcstatsUseLegacy;
delete config.analytics?.obfuscateRoomName;
delete config.callStatsID;
delete config.callStatsSecret;
config.giphy = { enabled: false };
@@ -35,3 +42,14 @@ export function _cleanupConfig(config: IConfig) {
export function getReplaceParticipant(state: IReduxState): string {
return getFeatureFlag(state, REPLACE_PARTICIPANT, false);
}
/**
* Sets the defaults for deeplinking.
*
* @param {IDeeplinkingConfig} _deeplinking - The deeplinking config.
* @returns {void}
*/
export function _setDeeplinkingDefaults(_deeplinking: IDeeplinkingConfig) {
return;
}

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