Compare commits

..

436 Commits

Author SHA1 Message Date
Calin-Teodor
c6dcac47a8 feat(android/sdk): fixed enterpictureinpicture method call 2024-07-01 14:55:57 +03:00
Mihaela Dumitru
f9f5cf87b9 fix(recording) start transcription from notification when configured (#14879) 2024-06-28 16:04:37 +03:00
damencho
b969fba433 feat(visitors): Adds option to disable self-demote button.
Fixes #14539
2024-06-28 15:29:55 +03:00
Дамян Минков
f0fc63f573 feat(visitors): Handles live conference and queue service. (#14869)
* feat(visitors): Handling of live conference and queue service.

* squash: Small refactor mobile code.

* squash: Drop debug log.

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

https://github.com/jitsi/lib-jitsi-meet/compare/v1836.0.0+d05325f3...v1839.0.0+ea523fc6

* squash: Adds a count function.

* squash: Drop debug print.

* squash: Skip if queueService is not enabled.

* squash: Avoids double subscribing for visitorsWaiting.

* squash: Fixes lint error.

* squash: Fixes showing dialog.
2024-06-28 07:29:41 -05:00
ltorje-8x8
d618175074 feat(doc): add waiting queue documentation (#14775)
* feat-13184 - document waiting queue

* feat-13184 - document waiting queue

* fix doc - 15 min --> 15 sec

* fix doc flow

* fix typo

* fix typo

* cleanup token

* move resources to waiting-queue folder

* apply review
2024-06-28 07:29:19 -05:00
Edgars Voroboks
9ebe2c4395 lang: Update Latvian language translation (#14866) 2024-06-28 02:35:04 -05:00
nbeck.indy
e5189a5c1c fix(breakout-rooms): rename on native 2024-06-28 10:33:56 +03:00
Jaya Allamsetty
f96592b4dc chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1837.0.0+6bcc577a...v1838.0.0+1993a030
2024-06-27 15:40:54 -04:00
Jaya Allamsetty
a11a281bf7 fix(config) Add 'screenshareCodec' and 'mobileScreenshareCodec'. 2024-06-27 14:34:18 -04:00
damencho
8ddab7464c feat(visitors): Force promote works for all moderators. 2024-06-27 16:04:32 +03:00
damencho
9076fb3e4a fix(conference-duration): Fixes formatting the creation time.
Fixes #14815.
2024-06-27 15:32:34 +03:00
Saúl Ibarra Corretgé
d8079a4232 feat(external_api) add ability to start transcriptions together with recordings 2024-06-27 12:53:17 +02:00
Jaya Allamsetty
c992a8274c chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1836.0.0+d05325f3...v1837.0.0+6bcc577a
2024-06-25 22:44:42 -04:00
Boris Grozev
b5e059a0a9 feat(prosody): Add handling of a room-metadata-changed event. 2024-06-25 09:31:22 +03:00
Saúl Ibarra Corretgé
0be3e2b103 feat(external_api) include transcription state in recordingStatusChanged 2024-06-24 17:34:19 +02:00
Saúl Ibarra Corretgé
ae138c1a15 feat(recording) add isLiveStreamingRunning helper 2024-06-24 17:34:19 +02:00
Jaya Allamsetty
0f8de50d26 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1834.0.0+d7ffbfaf...v1836.0.0+d05325f3
2024-06-21 11:09:47 -04:00
Calin-Teodor
ff7b6010bd feat(toolbox): enable full screen button for ipad browsers 2024-06-21 18:04:54 +03:00
Saúl Ibarra Corretgé
270cdd017d fix(build) compile the frontend before making a source package
Ref: https://github.com/jitsi/jitsi-meet/issues/14842
2024-06-18 16:01:07 +02:00
Calin-Teodor
f4cae6350b feat(ios): updated cocoalumberjack dependency 2024-06-18 15:05:10 +03:00
Calin-Teodor
f0126a43f3 feat(android): updated timber dependecy 2024-06-18 15:05:10 +03:00
kiraware
b5deb65815 lang: add indonesian translation (#14836)
* add indonesian translation

* add id to languages.json
2024-06-14 08:49:14 -05:00
Hristo Terezov
6d9bbe0376 fix(MainToolbar): replace hidden buttons.
Currently if a button in the main toolbar is not visible, the button is
not replaced by another button from the overflow menu.
2024-06-14 10:18:00 +03:00
Mihaela Dumitru
da634c211e fix(config) add missing apostrophe 2024-06-13 12:26:27 -05:00
Jaya Allamsetty
61d96a5fd5 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1833.0.0+8c5c8029...v1834.0.0+d7ffbfaf
2024-06-13 10:29:51 -04:00
Jaya Allamsetty
07e46b9399 fix(tracks): Update the codec for local tracks in redux.
Also add helper functions for torture tests.
2024-06-13 09:07:37 -04:00
Saúl Ibarra Corretgé
3139111d36 chore(deps) update react-native-webrtc
iOS rendering improvements.
2024-06-13 11:59:42 +03:00
damencho
205f88ec5a fix(system_chat_message): Fixes delivering system messages to visitors. 2024-06-12 07:20:26 -05:00
dependabot[bot]
c8d6cdf6c8 chore(deps): bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-12 13:06:52 +02:00
Calin-Teodor
7022243a95 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1830.0.0+5a14bd43...v1833.0.0+8c5c8029
2024-06-12 13:38:31 +03:00
Calinteodor
b2ae72249d feat(base/native): Fixes around UI (#14820)
feat(base/native): Fixes around 
notifications, polls, local participant video menu, breakout room and participants UI
2024-06-12 13:02:04 +03:00
Horatiu Muresan
8ee6d179d5 fix(remote-control) Fix caps lock key name (#14821)
- this was causing a crash on the controlled meeting instance
2024-06-11 15:33:54 +03:00
Horatiu Muresan
bebcfa3fd7 fix(iOS-responsive-ui) Attempt fix iOS responsive ui issue (#14819)
- on iOS safari and chrome, in case we show eg a spinner until we get the videoConferenceJoined event, all `clientResize` are done with size 0 for width/height
- on iOS we never get a `clientResize` call with correct values, except if we force a call by eg opening/closing the chat window
2024-06-11 13:59:11 +03:00
damencho
d0130f9975 fix(breakout-rooms): Closes menu after clicking on it.
The menu with Rename and Close for the breakout rooms.
2024-06-07 16:23:22 -05:00
damencho
efd2db70ca feat(jwt): Adds more logs when jwt is expired. 2024-06-07 09:05:01 -05:00
Horatiu Muresan
befffa7e85 fix(subject) Fix setting and broadcasting subject (#14807) 2024-06-07 16:19:36 +03:00
Saúl Ibarra Corretgé
0368b4d671 feat(rn,config) use WebSockets for XMPP by default on mobile
This aligns mobile and web. WS has been the default on meet.jit.si and
beta.meet.jit.si for quite a while now.
2024-06-07 14:34:44 +02:00
Saúl Ibarra Corretgé
acccd760d1 feat(rn) remove 360p resolution limitation
Layer suspension now works on mobile, let's give this a try once again.
2024-06-07 14:34:13 +02:00
Calin-Teodor
7696dbc347 feat(notifications/native): minor ui refurbishment 2024-06-07 15:06:05 +03:00
Saúl Ibarra Corretgé
e25ceebeec fix(ios) don't pretty-print build output with Fastlane 2024-06-06 15:31:27 +02:00
Saúl Ibarra Corretgé
c7ee6280d2 fix(android) fix build with Java 17 2024-06-06 15:05:20 +02:00
Calin-Teodor
796a2217aa feat(rnsdk): exclude adding metro dep if already available 2024-06-06 00:08:54 +03:00
Saúl Ibarra Corretgé
e9bf1ada51 chore(deps) npm audit fix 2024-06-04 18:59:31 +02:00
Saúl Ibarra Corretgé
667b9fba67 chore(deps) update react-native-webrtc@124.0.0 2024-06-04 18:49:50 +02:00
Calin-Teodor
bbf55e8476 feat(ios/sdk): fix room taken from wrong param 2024-06-04 14:36:37 +03:00
Calinteodor
11b48a9690 feat(sdk/android): custom overflow menu buttons fix (#14795)
* feat(android/sdk): create setConfigOverride for array list of objects
2024-06-04 14:05:18 +03:00
Hristo Terezov
3b4554f4cf fix(participant-features): Add missing properties in the type. 2024-06-03 17:07:52 -05:00
Hristo Terezov
d5dd5e4560 fix(Toolbox): Stop rerendering on every action
getJwtDisabledButtons which is used as a selector will create a new array every time it is called. This will lead to unneccessary rerenders on every action where there is no difference in the result of getJwtDisabledButtons because the reference of the array will be different.
2024-06-03 14:07:22 -05:00
Hristo Terezov
46ea1f577c ref(Toolbox): replace mapStateToProps with hooks. 2024-06-03 14:07:22 -05:00
Calinteodor
be06547cc4 feat(notifications/native): ui fixes (#14786)
* feat(notifications/native): ui fixes
2024-05-30 11:38:47 +03:00
Mihaela Dumitru
bd631f5968 fix(subtitles) show subtitles even without reactions enabled (#14784) 2024-05-29 14:55:47 +03:00
Calin-Teodor
bc69a35cd6 feat(react-native-sdk): match any version between react native and metro config 2024-05-28 19:39:40 +03:00
Calinteodor
75e7f64311 feat(polls/web/native): fixed identical answers verification (#14782)
* feat(polls/web/native): fixed identical answers verification
2024-05-28 14:06:11 +03:00
Nitin Kushwaha
cdcb4cdbfb fix(polls): add vertical margin to create poll button (android) 2024-05-27 18:31:40 +03:00
Calinteodor
c31ef2ebc7 feat(polls/web/native): refactoring (#14778)
* feat(polls/web/native): refactoring
2024-05-27 12:14:17 +03:00
zobadaniel
d49a419284 feat(lang) add upper sorbian to transcription languages
* fix showing transcripts for country codes longer than 2 characters
2024-05-24 15:18:38 +02:00
Hristo Terezov
0913554af9 feat(MainToolbar): implement custom order.
As part of the PR, it also fixes:
 - Removes button aliases
 - Unifies the keys in the object returned by getAllToolboxButtons and the button keys
 - Makes sure that the number of buttons displayed are always the same as the number of buttons specified in the thresholds and removes the exception for not filling up the main toolbar with buttons from overflow menu when reactions button is disabled.
 - Introduces a priority for buttons that will be used to fill empty spaces in the main toolbar.
2024-05-23 12:34:15 -05:00
Aaron van Meerten
9af0003c63 feat(invite): move JWT to Authorization header for invite and search endpoints (#14777) 2024-05-23 11:07:33 -05:00
Calinteodor
3ecc16dc87 feat(polls): rework (#14645)
* feat(polls/web/native): rework polls to manage editing and saving before sending to other participants
2024-05-22 15:03:24 +03:00
Jaya Allamsetty
ef387c939a chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1823.0.0+ec98b020...v1830.0.0+5a14bd43
2024-05-21 13:27:01 -04:00
HannesOberreiter
76e3608baf feat(web) add config to hide login button on WaitForOwnerDialog 2024-05-21 13:39:35 +02:00
bgrozev
68384121cd fix: Fix room_jid in room_metadata message when a tenant is set. (#14765) 2024-05-20 13:15:44 -07:00
Aaron van Meerten
2ed0418bd9 fix(jwt): Fixes parsing JWT in hash as JSON instead of a string (#14760) 2024-05-17 11:29:11 -05:00
Saúl Ibarra Corretgé
5eb4064390 feat(gh) use new form based issue and feature request templates 2024-05-17 15:24:45 +02:00
Saúl Ibarra Corretgé
3f943feb4a feat(ci) use a more future-proof way of installing Node in CI
Install the version based on .nvmrc rather than speficying it in the
action.
2024-05-17 15:24:02 +02:00
Mihaela Dumitru
861b32367e fix(recordings) extend notification timeout (#14758) 2024-05-17 13:03:31 +03:00
damencho
cfca0aea4a fix: Drop nodejs build dependency.
Out build process does not actually require nodejs. We assume node/npm is installed on the machine. Dropping it so we can use just nvm to control the versions via .npmrc.
2024-05-16 15:03:59 -05:00
Aaron van Meerten
43ae5915a6 feat: move jwt to URL hash from search parameters (#14749)
* feat: move jwt to URL hash from search parameters

* fix lint

* comments for future work

* comment format

* fix to use ts-ignore like previous parseURLParams case
2024-05-16 13:03:12 -05:00
Horatiu Muresan
7c22bcf827 chore(node): Increment node ver to 20 (#13445)
* chore(node) Update to node 20.x

* fix

* remove accidental file
2024-05-16 12:39:02 -05:00
Calinteodor
1bb9b261dc chore(deps, react-native): update to 0.72.14 (#14741)
* chore(deps, react-native): changes regarding react native update to 0.72.14
2024-05-16 17:16:36 +03:00
Дамян Минков
a95adcdf41 fix(visitors): Drop use of APP, breaks mobile. (#14746) 2024-05-15 08:22:15 -05:00
damencho
6758d13335 fix: Fixes swagger syntax. 2024-05-15 07:42:48 -05:00
Shawn
10ab4df287 fix(premeeting/conference/prejoin): hideConferenceSubject hides subject on prejoin 2024-05-14 07:48:21 -05:00
Emmanuel Pelletier
f3e4a7a9c8 fix(lang) update screen reader related french translation
- settings string contained a string saying "show / hide settings", but
we should match the english string saying only "show settings" as the
button is only used to show the settings (its a dialog you can't go out of, so
there is no way to go back to the settings button to close, the "hide" case
doesn't exist)

- use "Activer" instead of "Rétablir" and "Démarrer" for toggle on states,
as this wording is used accross lots of other buttons, it makes more sense
to use the same wording

- change the unmute/mute audio/video strings to tell the user its *their*
device they toggle. There are a few spots in this app where we label stuff
as "mute microphone", sometimes its for you, sometimes its for other people.
The idea here is to say "Mute your microphone" instead of "Mute microphone"
so that screen reader users fully understand what they do.
2024-05-13 17:58:09 -05:00
Calinteodor
854503aec2 feat(react-native-sdk): Update rnsdk script dependencies (#14739)
* feat(rnsdk): moved metro-config dep to devDeps
2024-05-13 21:43:48 +03:00
damencho
353c3cdd34 fix(visitors): Stops processing pre-join on error reply. 2024-05-13 12:31:15 -05:00
garysmith058
8f7ab33508 feat(external-api) Forward CONFERENCE_CREATED_TIMESTAMP to iframe 2024-05-10 16:49:47 +02:00
damencho
383b534753 feat: Introduce utility for checking sip jigasi stanzas. 2024-05-08 15:47:54 -05:00
damencho
6691f56d0e feat: Checking for visitors in available hosts.
Supports different domains for visitors, including one for jigasi and jigasis to be visitors.
2024-05-08 15:47:54 -05:00
Mihaela Dumitru
50d4b6250c chore(deps) bump excalidraw version (#14641) 2024-05-08 14:54:03 +03:00
Hristo Terezov
daa840564c fix(createAndAddInitialAVTracks): async/await logic. 2024-05-07 18:35:05 -05:00
Hristo Terezov
2cdf77272c feat(createInitialAVTracks): Improve handling/displaying errors. 2024-05-07 18:35:05 -05:00
Hristo Terezov
53299a19c2 fix(visitors): Use single GUM for enabling media on promotion.
Before we were using setAudioMuted and setVideoMuted which was effectively using separate GUM calls for audio and video. This was problematic in the case where GUM permissions prompt was displayed because two separate prompts were displayed.
2024-05-07 18:35:05 -05:00
Aaron van Meerten
e90b270b32 feat: allow client JWT in Authorization header (#14724)
* feat: allow client JWT in Authorization header

* cleaner check for initial header

* better comment for the reason for sub(8

* allow query value to override authorization header
2024-05-07 13:59:35 -05:00
Francois Marier
24ce8c5831 fix(ios) use the correct organization name 2024-05-07 11:30:13 +02:00
Edgars Voroboks
57bd074d00 fix(lang): Make existing phrasing in Latvian language more clear (#14721)
* fix(lang): More updates on existing phrasing in Latvian language

* fix(lang): Update Latvian language translation
2024-05-06 13:48:37 -05:00
Edgars Voroboks
843cdf05f5 fix(lang): Update Latvian language translation (#14720)
* fix(lang): Update Latvian language translation

* fix(lang): Use better wording in Latvian translation
2024-05-06 11:50:57 -05:00
Saúl Ibarra Corretgé
ede8f7ece9 chore(deps) react-native-webview@13.8.7
Fixes: https://github.com/jitsi/jitsi-meet-flutter-sdk/issues/60
2024-05-06 14:28:03 +02:00
Saúl Ibarra Corretgé
e5b736243d chore(deps) run npm audit fix 2024-05-06 14:27:31 +02:00
Saúl Ibarra Corretgé
1d8a9c11c8 feat(ci) run CI also on macOS on arm64
The macOS-13 image runners are x64, but macOS-14 are arm64.
2024-05-06 14:27:18 +02:00
Christoph Settgast
72d05bb969 feat(config) allow overriding desktop deeplinking toggle (#14712) 2024-05-06 11:44:51 +02:00
Christoph Settgast
2a5fc8cc4a lang: update German translation (#14711)
Signed-off-by: Christoph Settgast <csett86_git@quicksands.de>
2024-05-05 20:56:02 +02:00
damencho
aa9bd8c814 fix: Fixes visitors component.
In f279e63 there is some commented code that sneaked in by mistake.
2024-05-03 17:38:06 -05:00
Дамян Минков
f279e634e4 * feat(visitors): Shows notification when not-allowed error is detected.
* feat(visitors): Adds extensions to errors to distinguish them.

* feat: Shows notification when not-allowed error is detected.

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

https://github.com/jitsi/lib-jitsi-meet/compare/v1822.0.0+58a91446...v1823.0.0+ec98b020

* squash: Update texts.
2024-05-03 16:30:43 -05:00
Ramis
3f7c8c204b Update main-ru.json fix lang 2024-05-03 13:04:06 -05:00
Nitin Kushwaha
375314cbbd fix(conference): save local recording when conference fails (#14606) 2024-05-02 14:46:09 -05:00
ilaydadastan
62d0d25395 fix(lang): added new tr translations 2024-05-02 06:28:32 -05:00
Jaya Allamsetty
3047af4df6 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1820.0.0+7a5381fb...v1822.0.0+58a91446
2024-04-30 15:23:02 -04:00
Jaya Allamsetty
6682b52a19 fix(notifications): Adds a 60 secs timeout for bridge channel message. (#14690)
* fix(notifications): Adds a 60 secs timeout for bridge channel message.
Also indicates that audio might get disrupted in addition to video when ssrc-rewriting is enabled.

* squash: decrease the timeout to 15 secs if the data channel doesn't establish at all.
2024-04-29 14:05:59 -04:00
Mayuki Arisaka
fee4151f83 fix(android) Keep microphone enabled when app is in background 2024-04-29 17:01:26 +03:00
Dimosthenis Nikoudis
25f2eb012e fix(participants-pane) close overflow menu when selecting option 2024-04-28 11:19:49 +02:00
Yurt Page
6976b45789 feat(fastlane) metadata i18n ru
Signed-off-by: Yurt Page <yurtpage@gmail.com>
2024-04-28 11:07:30 +02:00
Mathieu D'Amours
c69962675b fix(lang) update fr-ca translation 2024-04-28 10:11:00 +02:00
Jaya Allamsetty
2bb1d6dee3 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1819.0.0+2e2189f4...v1820.0.0+7a5381fb
2024-04-26 16:37:45 -04:00
damencho
43c1032b46 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1818.0.0+799236df...v1819.0.0+2e2189f4
2024-04-26 13:01:25 -05:00
damencho
980153e299 fix: Disallow visitor joining directly to main room.
When a vpaas visitor tries to join a room that has not been created and there are no main participants, we deny access.
2024-04-26 12:09:58 -05:00
damencho
d2b4043c7f fix: Skip flip processing for password when there is no room password. 2024-04-26 12:09:51 -05:00
Saúl Ibarra Corretgé
ce727d87a8 fix(ios) Xcode 15.2 updates
- Update project files
- Make sure CI uses Xcode 15.2
- Fix custom Xcode build scripts to depend on the Info.plist file
  generation
- Combine 2 scripts related to Firebase into a single one
2024-04-26 11:51:41 +02:00
Jaya Allamsetty
b540452583 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1816.0.0+f16cadce...v1818.0.0+799236df
2024-04-26 07:25:42 +02:00
Jaya Allamsetty
f995eb2698 fix(tracks): Remove code that handles TRACK_OWNER_CHANGED event. (#14652) 2024-04-25 06:28:45 -04:00
Jaya Allamsetty
393c78aad3 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1813.0.0+09993fc8...v1815.0.0+c4cee681
2024-04-24 17:10:15 -04:00
damencho
6452c998a2 fix: Parse/decode the URL params before constructing the url.
Fixes #14672.

When passing url param config.subject="Example%20Title" we will send config.subject%22%3A%22%2522Example%2520Title%2522%22 which is double quotes.
2024-04-24 15:08:21 -05:00
Jaya Allamsetty
038292305e fix(config): Update the bitrate settings for 1080p and 4K. 2024-04-24 10:52:25 -04:00
Hristo Terezov
aa04692e9b feat(visitors): enableMediaOnPromote option for mobile. 2024-04-23 08:39:05 -05:00
Calinteodor
219e6ce1ca feat(android): list post notifications permission (#14657)
* feat(android): list post notifications permission
2024-04-23 13:16:23 +03:00
Avram Tudor
6b2d586aee fix: allow multiple jids to be specified for sending system messages (#14669) 2024-04-23 12:05:58 +03:00
damencho
28a9850111 fix: Updates jvb user account check.
In certain cases (lib-unbound not found message from lua) we can detect that jvb account is not existing, and we will re-create causing jvb to not able to connect, as password is changed only in prosody.
2024-04-22 17:43:03 -05:00
Edgars Voroboks
d9ef9dc6a0 fix(lang): Update missing Latvian lang translation (#14664) 2024-04-22 09:41:29 +02:00
Hristo Terezov
88b6cdf39b ref(settings): remove changeLocalDisplayName action 2024-04-21 19:42:41 -05:00
Hristo Terezov
e3ab6c9f33 ref(participants): remove unused action. 2024-04-21 19:42:41 -05:00
Hristo Terezov
9bb27b83d9 ref(modules/UI): remove events system.
Many of the events are not used at all or used only on one place. For the rest of them the listeners were added 2 times on promoted visitors and not cleaned at all.
2024-04-21 19:42:41 -05:00
Christoph Settgast
d8b0710a19 ci: move to node 20 based GH actions as current ones are deprecated (#14663) 2024-04-21 22:50:26 +02:00
Roland Meyer
b02b7ac769 lang: update German translation (#14662) 2024-04-21 11:46:08 +02:00
Jaya Allamsetty
b90e187a73 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1812.0.0+2eddb859...v1813.0.0+09993fc8
2024-04-19 11:19:01 -04:00
kerem
582bbf890b fix descriptions
fix descriptions
2024-04-19 15:27:31 +03:00
Ilayda Dastan
ce840cc7b6 fix(chat) improve new message visibility for local participant
Closes: https://github.com/jitsi/jitsi-meet/issues/14561
2024-04-19 09:58:40 +02:00
Saúl Ibarra Corretgé
cc03949b90 chore(deps) react-native-webrtc@118.0.7 2024-04-18 16:56:08 +02:00
Calin-Teodor
158e1a56e5 feat(react-native-sdk): update readme file 2024-04-18 17:55:54 +03:00
Calin-Teodor
16597a2535 feat(android): list media projection permission in manifest 2024-04-18 17:14:25 +03:00
Saúl Ibarra Corretgé
2f3cf9f530 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1811.0.0+86e2fb2b...v1812.0.0+2eddb859
2024-04-18 15:11:59 +02:00
Дамян Минков
347cc32ecc chore(deps) lib-jitsi-meet@latest (#14642) 2024-04-16 19:53:23 -04:00
Calin-Teodor
c0602abbca feat(base/config): whitelist customToolbarButtons 2024-04-16 17:39:20 +03:00
Calin-Teodor
55e9136b91 feat(toolbox/native): fixed icon for CustomOptionButton and styles 2024-04-16 16:21:12 +03:00
damencho
da01ca23db fix(visitors): Fixes promote all. 2024-04-16 06:20:06 -05:00
Hristo Terezov
b470c201b2 fix(conference): use up to date state in useVideoStream. 2024-04-12 16:08:21 -05:00
Mihaela Dumitru
e3ee99754c fix(debug) enable webview debugging (#14623) 2024-04-12 16:32:45 +03:00
Mihaela Dumitru
b3e1865fd8 fix(whiteboard/native) disable Android local storage 2024-04-12 12:28:50 +02:00
Saúl Ibarra Corretgé
a4e3716632 chore(rn,deps) react-native-webrtc@118.0.6
Fixes duplicated audio on iOS.
2024-04-11 23:17:20 +02:00
Hristo Terezov
5ed4b470e7 feat(visitors-config): Enable media on promotion. 2024-04-11 15:48:23 -05:00
damencho
68f030bb7f feat: Adds option to print not-allowed errors we sent back to client. 2024-04-11 10:45:39 -05:00
Hazoom
1c25a370be fix (invite-copy) give user a feedback that copy is done (#14552) 2024-04-11 16:28:34 +03:00
Calinteodor
36671d7c4f feat(toolbox/native): custom overflow menu buttons (#14594)
* feat(toolbox/native): custom buttons for the OverflowMenu
2024-04-10 14:51:10 +03:00
Saúl Ibarra Corretgé
b54cec8d77 chore(deps) lib-jitsi-meet@latest (#14605)
https://github.com/jitsi/lib-jitsi-meet/compare/v1806.0.0+b0356800...v1807.0.0+b59b8cb0
2024-04-08 14:03:09 -04:00
Avram Tudor
097d51ce10 feat: prosody plugin for sending system chat messages (#14603)
* feat: prosody plugin for sending system chat messages

* code review changes

* code review changes

* update module name

* update comment
2024-04-08 18:59:00 +03:00
Saúl Ibarra Corretgé
9b16296581 chore(rn,deps) update react-native-webrtc to 118.0.5 2024-04-08 16:15:01 +02:00
damencho
a76f9d548b feat: Move to use cjson everywhere.
We were using prosody,util.json and cjson at the same time, but the latter is more performant.
Adds some error handling which were missing with the prosody util json one.
2024-04-05 11:26:51 -05:00
damencho
9fc89ba04e feat: Adds module to attach data to be available in jibri metadata.
Attaches the meeting id and the creator of the meeting into the iq sent to jibri. The data will be available in the metadata.json.
2024-04-05 11:26:51 -05:00
Mihaela Dumitru
37024b4f1f fix(whiteboard) compute serverUrl once to limit rerenders (#14600) 2024-04-05 16:35:59 +03:00
Hristo Terezov
b3312b5650 ref(PasswordSection): Functional copmonents. 2024-04-04 16:58:23 -05:00
damencho
721bb4e4ba fix: Clear up knocking state on error.
Fixes a case where participant is not entering lobby when trying the second time after being rejected.
2024-04-04 16:52:04 -05:00
Holofox
263bb7bcd0 fix(lang) updated Russian translation 2024-04-04 22:26:01 +02:00
Saúl Ibarra Corretgé
03b3cd4778 fix(misc) drop unused files from the project 2024-04-04 17:58:08 +02:00
Saúl Ibarra Corretgé
7a1ad18bc5 fix(misc) fix .editorconfig line width 2024-04-04 17:58:08 +02:00
ilaydadastan
38be09fc54 fix(chat): added emoji tooltip and enter key in smiley panel 2024-04-03 11:19:57 -05:00
Hristo Terezov
4e50546773 fix(LargeVideo): use correct track for streaming status.
In the case where we switch from jvb to p2p when we need to switch the p2p and jvb track, they will be with the same source name. In order to add the streaming status listener we need to check if the isP2P flag is different. Without this check we won't have the correct stream status listener for the track. Normally the Thumbnail and ConnectionIndicator components will update the streaming status the same way and this may mask the problem. But if for some reason the update from the Thumbnail and ConnectionIndicator components don't happen this may lead to showing the avatar instead of the video because of the old track inactive streaming status.
2024-04-03 08:26:31 -05:00
Ilayda Dastan
79891419af fix(chat): fixed error message colors (#14574)
* fix(chat): fixed error message colors

* fix(chat): changed error message background color
2024-04-03 08:00:17 -05:00
Mihaela Dumitru
5282274856 fix(whiteboard) backend safe room hash 2024-04-02 11:21:15 -05:00
Saúl Ibarra Corretgé
11c445f993 fix(android) fix server URL parsing
Some devices throw NullPointerException instead of
MalformedURLException.
2024-04-02 16:53:38 +02:00
Calinteodor
3b546ea387 feat(whiteboard/native): ui fixes (#14585)
* feat(mobile/navigation): moved Whiteboard to Conference navigation and fixed screen options
2024-04-02 13:11:36 +03:00
ilaydadastan
82fa1eb870 fix(chat): added translation function 2024-03-29 11:51:27 -05:00
Jaya Allamsetty
d1590db82b fix(config): Enable ssrc-rewriting by default. (#14567) 2024-03-28 23:06:45 -04:00
Calinteodor
5247fbdc0f feat(ios/android/sdk): delegate transcription chunk received event (#14516)
* feat(subtitles): created separate helpers for delegating transcription chunks events 
on web and mobile
2024-03-28 14:10:02 +02:00
damencho
47598222ce fix: Fixes parsing hash params to be passed to tokenAuthUrl.
The URL.hash returns the # sign, and so we always ignore the first parameter.
2024-03-27 12:43:49 -05:00
damencho
79d216d91a feat: Drops unused ext_events.lua. 2024-03-27 12:43:41 -05:00
hkien2310
ec423012b9 fix(lang) update vietnameses translation 2024-03-27 14:21:25 +01:00
dependabot[bot]
ffa704e7df chore(deps-dev): bump express from 4.17.3 to 4.19.2
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.19.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-27 07:55:14 +01:00
Дамян Минков
2c6f4e27fc feat: Reduces into state region and shard changes from the lib. (#14546)
* feat: Reduces into state region and shard changes from the lib.

* squash: Fixes few comments.

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

https://github.com/jitsi/lib-jitsi-meet/compare/v1802.0.0+49ff6eb4...v1803.0.0+5237dbfe
2024-03-26 18:01:53 -05:00
Jaya Allamsetty
56eecaba2a fix(flags): Don't assume ssrc-rewriting enabled by default. (#14545)
* fix(flags): Don't assume ssrc-rewriting enabled by default.

* chore(deps): update latest@lib-jitsi-meet.
https://github.com/jitsi/lib-jitsi-meet/compare/v1796.0.0+d1333434...v1802.0.0+49ff6eb4
2024-03-26 16:28:07 -04:00
Hazoom
bb49c92cc4 fix(polls/web) check for duplicate poll options (#14541) 2024-03-26 16:38:22 +02:00
Calinteodor
9b798b4514 feat(base/conference): get subject and localSubject from config (#14520)
* feat(base/conference): fixed getting localSubject, subject and parsing url params.
2024-03-26 16:07:11 +02:00
Nitin Kushwaha
9727951a77 fix(polls): fix poll button overflow 2024-03-26 15:36:00 +02:00
Дамян Минков
643fc7e2a2 feat(visitors): Updates docs for promotion. (#14538)
* feat(visitors): Updates docs for promotion.

* squash: Update config.js comment
2024-03-26 07:18:34 -05:00
ilaydadastan
33db2bed34 fix(lang): added new tr translations 2024-03-25 20:50:29 -05:00
Horatiu Muresan
fad58ae362 feat(external-api) Expose meeting session (#14522) 2024-03-25 13:11:59 +02:00
ilaydadastan
2f6d9d4b52 fix(participants-pane): multi words search 2024-03-25 10:26:35 +01:00
Anshu Pathak
c7d5de2c77 lang: Translated main-hi.json (#14532)
* solve issue of 817  added toast notification on copy sharing link

* updated main.json

* Update main.json

added space with colon

* Update InviteByEmailSection.tsx

* fixed linter errors

* updated main.json

* Feat: Translated main-hi.json
2024-03-23 18:42:28 -05:00
Jaya Allamsetty
f525fb1999 fix(video-quality): Correctly pin camera tile.
When screensharing source is the first source to be added with ssrc-rewriting enabled, constraints for the camera tile don't get updated when its pinned. Fixes https://github.com/jitsi/jitsi-meet/issues/14501
2024-03-22 15:37:00 -04:00
damencho
ffbaee065d fix: Fixes showing left participants in the pane under certain conditions.
Fixes #14491.
When a screensharing participant leaves and is unmuted or sharing the tab audio, there is a dominant speaker changed event which stores wrong values in filmstrip state. And because we skip reordering when there is no filmstrip scroll and no screensharers to avoid reordering on every dominant speaker event for small meetings, we fail to evaluate that the screensharere is actually gone and we still show it.
This will not happen if the one sharing is not dominant speaker (muted) or if there are more participants in the meeting (there is a scroll).
2024-03-22 14:11:08 -05:00
damencho
c0f9024874 fix: Updates lobby password. 2024-03-22 10:17:09 -05:00
Mohammed Abdul Razak Wahab
f5ab10cfba fix(polls) fix answer editing bug causing unintended removal 2024-03-21 16:42:17 +01:00
chizhangWang
6db0f89707 fix(feedback) avoid sending dialog with enter press in textarea
Co-authored-by: Chizhang, Wang <chizhang.wang@dataport.de>
2024-03-21 15:59:53 +01:00
Jaya Allamsetty
6649c15232 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1793.0.0+315582f6...v1796.0.0+d1333434
2024-03-20 17:40:18 -04:00
Aaron van Meerten
5d84a4cc90 fix: define local vars in public key handler (#14176) 2024-03-20 03:35:23 -05:00
Anshu Pathak
b79907f7a5 feat(notifications) added toast notification on copy sharing link 2024-03-19 21:42:11 +01:00
Calinteodor
ffc6ae333f feat(premeeting/conference/prejoin): fix hiding meeting subject helper (#14500)
* feat(premeeting/conference/prejoin): fix hiding meeting subject helper
2024-03-19 20:04:39 +02:00
Hristo Terezov
371b9a3e95 fix(kick): JS error when participant pane is open.
There are cases when if you are kicked and the participant pane is
open, the getBreakoutRooms() call will return undefined and since
isBreakoutRoomRenameAllowed is used in useSelector and fails, all
execution will stop leaving us in a broken state.
2024-03-18 17:19:43 -05:00
bgrozev
7fb66c906a Support multiple sip jibri prefixes. (#14497) 2024-03-18 14:55:35 -07:00
Christoph Settgast
b43379a0bc fix(chat) dont emojify matrix ids (#14492) 2024-03-18 16:12:06 +01:00
Mihaela Dumitru
07a15f0121 fix(recordings) disable default auto transcribe (#14495) 2024-03-18 16:55:09 +02:00
Mihaela Dumitru
c7e80b6780 fix(whiteboard) adjust whiteboard ready check to work without config (#14486) 2024-03-18 16:22:37 +02:00
Edgars Voroboks
ec5f2ca1c1 fix(lang) update Latvian translation 2024-03-18 12:31:56 +01:00
José Luís Andrade
fdba9969b4 fix(lang) update Portuguese translation 2024-03-18 12:05:38 +01:00
Hristo Terezov
2734da0c66 fix(PasswordSection): Add button not working. 2024-03-15 12:18:10 -05:00
Jaya Allamsetty
cff14048cd chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1792.0.0+006457fa...v1793.0.0+315582f6
2024-03-15 11:15:55 -04:00
Jaya Allamsetty
a775dd178a Revert "fix(conference): Do not remove muted tracks at join time when ssrc-rewriting is enabled."
This reverts commit bb17337440.
2024-03-14 13:44:24 -04:00
Jaya Allamsetty
d0f3104ed8 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1790.0.0+311766e3...v1792.0.0+006457fa
2024-03-12 20:49:28 -04:00
Jaya Allamsetty
bb17337440 fix(conference): Do not remove muted tracks at join time when ssrc-rewriting is enabled. 2024-03-12 18:52:40 -04:00
Hristo Terezov
26e09acb8a fix(buttonsWithNotify): Duplicates in config
Fixes the issue with adding duplicate elements in buttonsWithNotifyClick and participantMenuButtonsWithNotifyClick with custom buttons.
2024-03-12 12:19:54 -05:00
Saúl Ibarra Corretgé
d358dd8ec6 chore(deps) react-native-webrtc@118.0.3
Fixes spurious exceptions on Android 14.
2024-03-12 12:40:00 +01:00
Saúl Ibarra Corretgé
3d158fb2b4 fix(conference) fix incorrect meeting name in CallKit
Reset subject when setting a new room name.
2024-03-12 12:38:02 +01:00
Saúl Ibarra Corretgé
b7785a9f91 feat(recording) add ability to change recording defaults
If recordings.recordAudioAndVideo is set to false don't record
audio-video by default.
2024-03-11 21:39:23 +01:00
Дамян Минков
86d869a107 fix(visitors): Fixes replacing visitor domain. (#14457)
* fix(visitors): Fixes replacing visitor domain.

Constructing the visitor room jid instead of doing a risky replacement.

The problem is having a room like:
[meet-jit-si-shard]someroomname@conference.meet.jit.si and replacing with 'meet.jit.si', the dots match the -.
2024-03-08 13:08:01 -06:00
Jaya Allamsetty
1c81b93c1d chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1789.0.0+a8f8666b...v1790.0.0+311766e3
2024-03-07 14:53:04 -05:00
Calin-Teodor
052070a6c1 chore(deps, i18next-http-backend): removed caret 2024-03-07 17:57:52 +02:00
Calin-Teodor
c531c0e65c react-native-sdk(chore/deps): reset link deps to 0 2024-03-07 16:49:15 +02:00
Calinteodor
e1055ebf9b react-native-sdk(chore/overrides): update prepare_sdk script to take care of overrides (#14449)
* react-native-sdk(chore/overrides): update prepare_sdk script to take care of overrides
2024-03-07 16:20:34 +02:00
Calin-Teodor
467023f77a react-native-sdk(chore/deps): reset deps to 0 so we can update to latest 2024-03-07 15:56:09 +02:00
Calin-Teodor
1249aa2dcb react-native-sdk(android): readded react native package 2024-03-07 14:52:16 +02:00
Calinteodor
0c45d87d1a react-native-sdk(android): screen share updates (#14440)
* react-native-sdk(android): removed related modules, services to screen-share feature and updated peerDeps
2024-03-06 17:33:08 +02:00
damencho
7140a90201 fix(visitors): Fixes demoting correct participant.
Moderators receive all demote messages so they can show notification if we need to.
2024-03-05 08:22:32 -06:00
Jaya Allamsetty
0a846606fc chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1786.0.0+0129be6c...v1789.0.0+a8f8666b
2024-03-05 09:02:32 -05:00
Avram Tudor
68dc111e3c fix: decouple local recording from needing a valid jwt (#14434) 2024-03-05 12:41:44 +02:00
Saúl Ibarra Corretgé
c81184df69 fix(ios) sync SDK and Lite SDK building commands 2024-03-05 12:09:03 +02:00
damencho
9b0747a0d9 feat(visitors): Demote a visitor for mobile. 2024-03-04 13:18:04 -06:00
damencho
c8cd80a8df feat(visitors): Checks for visitors support per room. 2024-03-04 13:18:04 -06:00
damencho
f1d4332668 feat(visitors): Adds an option to demote participants to visitors. 2024-03-04 13:18:04 -06:00
damencho
55b3256dc4 fix: Changes jwt error dialog to be sticky. 2024-03-04 13:18:04 -06:00
damencho
aa8bb55f3e feat(visitors): Drops not-used messages. 2024-03-04 13:18:04 -06:00
damencho
58b73e21de fix(visitors): Fixes missing import. 2024-03-04 13:18:04 -06:00
damencho
b1c955890a feat(visitors): Admit all function. 2024-03-04 13:18:04 -06:00
damencho
6ab945c2cb fix(visitors): Fixes wrong text in notification on multiple promote requests. 2024-03-04 13:18:04 -06:00
damencho
7291e1ef00 feat(lobby): Approve multiple participants. 2024-03-04 08:13:27 -06:00
Дамян Минков
43e075d48e feat: Rate limits update (#14429)
* feat: Introduces new rate limit setting.

No can have two different values per ip that is used to limit session creation and one that is used when that stanza rate limit is exceeded.

* feat: Introduces unthrottle logic.

* fix: Bumps default iq rate limits.

* feat: Prints how many times a session hits the rates.

* Update resources/prosody-plugins/mod_rate_limit.lua

Co-authored-by: Aaron van Meerten <aaron.van.meerten@8x8.com>

---------

Co-authored-by: Aaron van Meerten <aaron.van.meerten@8x8.com>
2024-03-01 13:23:04 -06:00
Jaya Allamsetty
885e1afdaa chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1784.0.0+639ad566...v1786.0.0+0129be6c
2024-02-29 23:34:47 -05:00
Hristo Terezov
e2ec4842a1 fix(toolbarButtons): filter visitor buttons in redux.
Filters the toolbarButtons in redux depending on the visitor state instead of filtering them every time in mapStateToProps. This will prevent unnecessary rerenders of the toolbar.

Additionally:
 - Moves visitor buttons const from features/config in features/toolbox.
 - Removes dublicate functions isButtonEnabled and isToolbarButtonEnabled.
 - Adds more buttons to the visitor allowed buttons which functionality has been any way accessible trough shortcuts or somewhere else.
 - Enables customButtons to be visible for visitors.
2024-02-29 18:51:47 -06:00
Hristo Terezov
ea075d9bae fix(toolbarButtons): Store all buttons in redux.
The previous version of getToolbarButtons function was actually adding the custom buttons on every call to the config toolbarButtons array, effectively creating dublicates of every custom button. The PR fixes this issue.

Also now we will be running the getToolbarButtons calculation only when needed.
2024-02-29 16:36:52 -06:00
qnafin
68f7448624 Update build.gradle / jsRootDir = file("../")
When newArchEnabled=true. Refers to a non-existent category
2024-02-29 19:58:14 +01:00
damencho
954ef6df4f fix: Drops inspect print. 2024-02-29 12:52:19 -06:00
Calinteodor
6a3c12b316 feat(android): fix screen sharing for android 14 (#14419)
* feat(android): media projection is now done through react native webrtc
2024-02-29 16:34:24 +02:00
Calin-Teodor
5be616a224 chore(deps, rn-webrtc): updated to 118.0.2 2024-02-29 15:56:20 +02:00
Mihaela Dumitru
58d8f3be12 chore(deps) update excalidraw version (#14420) 2024-02-29 15:30:44 +02:00
Saúl Ibarra Corretgé
8ae6ba76cc feat(rn,deps) update react-native-webrtc@118.0.1
Adds UVC camera support to Android.
2024-02-29 12:02:51 +01:00
bgrozev
a06c2e056c feat: Send room_metadata updates to jicofo. (#14417)
Include the room jid in the message.
2024-02-28 15:41:55 -08:00
Saúl Ibarra Corretgé
fa0b06b859 fix(live-streaming) fix handling bogus URLs 2024-02-28 13:58:13 +01:00
Saúl Ibarra Corretgé
4c3512b375 fix(etherpad) fix handling certain URL types 2024-02-28 13:58:13 +01:00
Jaya Allamsetty
92e3a1ff99 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1783.0.0+ff4dd993...v1784.0.0+639ad566
2024-02-27 13:32:43 -05:00
Saúl Ibarra Corretgé
701e3d2b43 fix(recording) restore labels when recording locally 2024-02-27 09:17:24 -06:00
Saúl Ibarra Corretgé
2626a894e2 fix(recording) remove duplicated check 2024-02-27 09:17:24 -06:00
Saúl Ibarra Corretgé
a6f6b3a2d2 fix(subtitles) keep subtitles state when recording 2024-02-27 09:17:24 -06:00
Hristo Terezov
05aa48774a feat(recorder-transcription): Handle correctly in the UI.
Until this commit we didn't make difference between transcriptions from the recording dialog and subtitles. Now subtitles are not considered recording anymore and only the transcriptions started from recording dialog are considered recording.
2024-02-27 09:17:24 -06:00
Calinteodor
e82fc480f0 feat(tracks): disable pip in screen-share based on flag value (#14413)
* feat(tracks): disable pip in screen-share based on flag value
2024-02-27 14:59:55 +02:00
Horatiu Muresan
9f8662c0a1 chore(eslint) Update eslint (#14412) 2024-02-27 12:56:05 +02:00
Jaya Allamsetty
5b860c20b1 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1782.0.0+3ff4b0d1...v1783.0.0+ff4dd993
2024-02-26 10:25:05 -05:00
Saúl Ibarra Corretgé
a4c52b02e7 fix(recording) set transcribing metadata when stopping 2024-02-26 13:30:23 +01:00
Joseph Garrone
73952ee1f7 refactor(styles): Migrate withStyles to tss-react, remove @mui/styles dependency (#14310) 2024-02-26 14:10:07 +02:00
Hristo Terezov
0a9f6c2e4d fix(overflow-menu): disabled buttons styles 2024-02-23 17:53:29 -06:00
Jaya Allamsetty
94f9ccfe1c chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1781.0.0+98bcd4e6...v1782.0.0+3ff4b0d1
2024-02-23 17:08:34 -05:00
Hristo Terezov
ff9f767cfd fix(recording/livestreaming): labels
Display only livestreaming label when the livestreaming and the transcribtions are on.
2024-02-23 15:55:23 -06:00
JJ Asghar
5a5ec9e4d9 fix(Typo in comment) (#14077) 2024-02-23 22:16:21 +01:00
Calin-Teodor
aff671b44a feat(config/flag): enable/disable participants pane 2024-02-23 14:54:37 +02:00
Hristo Terezov
495b925fa0 fix(Livestreaming): label 2024-02-22 18:13:21 -06:00
Hristo Terezov
2f6b11a6ac fix(visitors): gum pending on promotion. 2024-02-22 14:57:51 -06:00
Jaya Allamsetty
2b7052995b feat: Enable ssrc-rewriting by default. (#14395)
* feat: Enable ssrc-rewriting by default.

* chore(deps): Update lib-jitsi-meet.
2024-02-22 15:16:50 -05:00
Calin-Teodor
5c69baefbf feat(dynamic-branding): fix label customisation 2024-02-21 14:51:37 +02:00
dependabot[bot]
8b25265f9e chore(deps): bump ip from 1.1.5 to 1.1.9
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9.
- [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-21 09:21:37 +01:00
Hristo Terezov
f43020f650 fix(gumPending): Handle ignored muted tracks. 2024-02-20 16:54:05 -06:00
Hristo Terezov
ba95ea3ac8 feat(conference): Add init debug log 2024-02-20 09:42:07 -06:00
Besnik Bleta
7dcd9c21bc fix(lang) update for sq translation (#14387) 2024-02-20 15:23:14 +01:00
damencho
990d21038e fix: Fixes initializing cached keys. 2024-02-16 11:36:07 -06:00
Mihaela Dumitru
a4d53f271f fix(ui) center conference info (#14379) 2024-02-16 14:37:12 +02:00
bgrozev
2a1f472873 Add a second shared secret to allow rotation if necessary. (#14378) 2024-02-15 15:00:30 -08:00
damencho
8679119677 fix: Change whitelist to support only domains. 2024-02-15 16:36:37 -06:00
damencho
b02c072ba7 fix: Handles few more cases for updating cached tokens. 2024-02-15 12:20:02 -06:00
Saúl Ibarra Corretgé
e8317fccfe fix(local-recordings) fix on Chrome
WebM + VP8 seems to be the one thing that works, requesting H.264 starts
the recorder in Matroska + AV1 format (WAT) but no data is received at
all.
2024-02-15 17:49:45 +01:00
Saúl Ibarra Corretgé
bbc9c64978 fix(recording) only show advanced section for cloud recordings 2024-02-15 17:49:45 +01:00
Saúl Ibarra Corretgé
8d2b8bc772 fix(recording) fix checking if we can skip the recording dialog 2024-02-15 15:15:38 +01:00
damencho
52c2911350 feat: Adds stats around room token validation. 2024-02-15 07:13:12 -06:00
damencho
a1ebcd559b feat: Adds a print for timing out http requests after the retry. 2024-02-15 07:13:12 -06:00
damencho
5bc47ec16a feat: Adds stat when a rayo IQ is filtered. 2024-02-15 07:13:12 -06:00
damencho
e1ac7d1609 feat: Adds stats around token validation. 2024-02-15 07:13:12 -06:00
damencho
8a596f1ba2 fix: Drops unused token validation. 2024-02-15 07:13:12 -06:00
damencho
38e7c65836 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1776.0.0+f5f8a137...v1777.0.0+3898d7aa
2024-02-14 22:52:49 -05:00
Jaya Allamsetty
9602a939d8 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1775.0.0+c7495280...v1776.0.0+f5f8a137
2024-02-14 12:32:39 -05:00
Calinteodor
07b01b1371 feat(conference/recordin): Fix always on labels (#14368)
* feat(conference/recording): condition live stream label visibility and fix labels tooltip translations
2024-02-14 13:11:57 +02:00
damencho
a1549086aa chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1773.0.0+cc9b0e60...v1775.0.0+c7495280
2024-02-13 14:02:28 -06:00
Saúl Ibarra Corretgé
7e0b00ba5f feat(prejoin) default to enabled (#14236)
* feat(prejoin) default to enabled

* squash: Fixes is prejoin config check.

---------

Co-authored-by: damencho <damencho@jitsi.org>
2024-02-13 12:47:59 -06:00
Calin-Teodor
3016853d81 feat(android): replaced NotificationChannels with NotificationUtils 2024-02-13 20:03:36 +02:00
Calinteodor
ead27ace30 feat(android): update media projection notification build (#14365)
* feat(android): update media projection notification build
2024-02-13 19:25:46 +02:00
Дамян Минков
067bb653e6 feat(лоббъ): Admin set function for multiple items.
* squash: Initial copy of the function.

* squash: Invokes the admin set function.

* feat: Admin set function for multiple items.
2024-02-13 10:29:41 -06:00
Calinteodor
ba20fc71a8 feat(android): separate MediaProjection and OngoingConference notifications (#14363)
* feat(android): separate MediaProjection and OngoingConference notifications
2024-02-13 17:54:01 +02:00
Mihaela Dumitru
a7b2726ebe fix(prejoin) adjust recording warning (#14361) 2024-02-13 13:12:10 +02:00
Calinteodor
a98eef7eb3 feat(android): fixed screen sharing for Android 33 (#14359)
* feat(android): fixed screen sharing for Android 33
2024-02-13 12:33:37 +02:00
damencho
895afbab65 fix: Fixes polls parsing. 2024-02-12 13:21:06 -06:00
Saúl Ibarra Corretgé
1d6529af65 feat(transcript) add ability to dump transcript for debugging 2024-02-12 13:07:19 +01:00
Saúl Ibarra Corretgé
4d5fb719d2 fix(whiteboard) handle metadata being null 2024-02-12 13:05:53 +01:00
Jaya Allamsetty
4061a77af8 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1770.0.0+2d430a18...v1773.0.0+cc9b0e60
2024-02-09 11:20:51 -05:00
Mihaela Dumitru
7f889b2028 feat(prejoin) display recording warning (#14347) 2024-02-09 11:00:28 +02:00
bgrozev
6f49041d80 feat: Notify jicofo when room_metadata changes the config form. (#14346) 2024-02-08 14:58:02 -08:00
Avram Tudor
e73c3b6697 feat(recordings) send recordings metadata
* ref: centralise conference metadata updates

* feat(recordings) send recordings metadata
2024-02-08 21:38:06 +02:00
Avram Tudor
5a6b1d0b47 code review 2024-02-08 17:41:55 +02:00
Avram Tudor
da9cded75b fix(recording) ensure recording label is shown when transcription is on 2024-02-08 17:41:55 +02:00
Avram Tudor
9b61ad3616 fix(recording) do not show advanced options for users with local recording rights 2024-02-08 17:41:55 +02:00
Avram Tudor
583725bf31 fix(recording) do not show stop recording option in some wrong cases 2024-02-08 17:41:55 +02:00
Avram Tudor
9e2244210d ref: add selector to check if meeting is transcribed 2024-02-08 17:41:55 +02:00
Avram Tudor
361b82a1ed ref: add selector for checking cloud recording running status 2024-02-08 17:41:55 +02:00
Saúl Ibarra Corretgé
0ed25cda7e fix(ci) use the right CocoaPods version 2024-02-08 15:08:15 +01:00
Calinteodor
73ee1205eb feat(premeeting/prejoin): Control room name visibility (#14339)
feat(premeeting/prejoin): Control room name visibility (#14339)
2024-02-08 15:56:05 +02:00
damencho
21f2c60638 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1769.0.0+ff9f57c5...v1770.0.0+2d430a18
2024-02-07 14:53:46 -06:00
damencho
fd062c40fb fix: Use same format for anonymous jids as token module. 2024-02-07 14:53:36 -06:00
damencho
b87e6abc11 feat: Sends event on not allowed error.
Updates amplitude to include the update about sending events on exiting the page.
2024-02-07 13:08:35 -06:00
Avram Tudor
9f25726706 fix(recording) fix recording suggestion not being shown in some cases (#14333)
Initial implementation did not account for cases where participants become moderators
2024-02-07 15:36:43 +02:00
Calinteodor
d5ee7f3069 feat(mobile/polyfills): strophe.js for react native (#14329)
* chore(deps, abab): polyfill using dependency for strophe in react native
2024-02-06 18:28:35 +02:00
damencho
ba1102100a feat(visitors): Adds conference duration for visitors. 2024-02-06 10:16:30 -06:00
damencho
e1ce83d0c3 feat: Use room data form for conference duration.
Deprecates current component for conference duration. Will wait a bit for mobile to catch up and then we can delete the code.

chore(deps) lib-jitsi-meet@latest
jitsi/lib-jitsi-meet@v1767.0.0+178f9bbf...v1769.0.0+ff9f57c5
2024-02-06 10:16:30 -06:00
damencho
78cf510c0b feat: Moves common process_host_module to util. 2024-02-06 10:16:30 -06:00
Mihaela Dumitru
3f657c3ded feat(whiteboard) add native implementation (#14327) 2024-02-06 16:22:53 +02:00
Saúl Ibarra Corretgé
2035cd7e62 fix(recording) avoid having duplicate notification sounds 2024-02-06 11:14:12 +01:00
Saúl Ibarra Corretgé
6207e95cad fix(recording) fix default value to auto-transcribe-on-record 2024-02-06 11:14:12 +01:00
Calinteodor
40b63a187a feat(conference): remove one2one check for diplaying participants name (#14324)
* feat(conference): remove one2one check for diplaying participants name
2024-02-06 10:54:27 +02:00
Saúl Ibarra Corretgé
6c40250e18 fix(conference) avoid adding extra endpoint message listeners 2024-02-06 07:40:40 +01:00
Saúl Ibarra Corretgé
0268374b88 fix(conference) move endpointMessageReceived action
It's used for a myrias of things, not just subtitles.
2024-02-06 07:40:40 +01:00
Jaya Allamsetty
b1b60ec143 fix(config): Fix the typo in Av1 support flag. 2024-02-05 13:27:29 -05:00
Дамян Минков
82c58178b3 feat(visitors): Adds notification for promotion requests. (#14316)
* feat(visitors): Adds notification for promotion requests.

* squash: fixes lint.
2024-02-02 14:58:24 -06:00
Jaya Allamsetty
46d15a9c5c chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1764.0.0+ba21a236...v1767.0.0+178f9bbf
2024-02-02 14:58:09 -06:00
Hristo Terezov
248908f476 fix(lobby): Hide enable option if there is a visitor 2024-02-02 14:20:16 -06:00
Hristo Terezov
4a5ba0f05d fix(visitors): Disable polls. 2024-02-02 12:50:01 -06:00
damencho
b23f3b9e17 feat(visitors): Whitelist trusted domains when promoting. 2024-02-02 12:01:59 -06:00
Дамян Минков
b6b77f55f1 feat: Drops some debug prints. (#14311)
* feat: Drops some debug prints.

* squash: Fix linter errors.
2024-02-02 11:11:50 -06:00
damencho
b106c20fa2 feat: Adds indication for visitors messages to event. 2024-02-01 21:06:25 -06:00
Hristo Terezov
fab61d8c32 fix(reactions): Show when received even if UI is disabled 2024-02-01 18:08:19 -06:00
Hristo Terezov
9ac614cc4b fix(shortcut): Unregister for altKey shortcuts. 2024-02-01 18:08:19 -06:00
Hristo Terezov
a3bb1a3459 feat(visitors): Hide reactions. 2024-02-01 18:08:19 -06:00
Avram Tudor
34abd279be feat(recording) add notification to suggest recording at meeting startup (#14296)
* feat(recording) add notification to suggest recording at meeting startup

* code review changes

* update strings

* fix mobile

* fix lint
2024-02-01 17:08:41 +02:00
Saúl Ibarra Corretgé
ad6554a789 fix(transcriptions) obey skipInterimTranscriptions for chunk events 2024-02-01 10:43:10 +01:00
Saúl Ibarra Corretgé
2be8377009 fix(transcriptions) avoid generating duplicated events 2024-02-01 10:43:10 +01:00
damencho
0a0b0a760e fix: Fixes promoting the only moderator in a non vpass meeting. 2024-01-31 17:53:16 -06:00
Дамян Минков
fec6de4536 fix(visitors): Lowers visitor's hand on leave. (#14302)
* fix(visitors): Lowers visitor's hand on leave.

* squash: Drop not needed nick.

That is used only when raising hand.
2024-01-31 11:49:16 -06:00
damencho
29b2a519b3 fix(visitors): Handles promotion rejection msg.
If not handled an error is returned that the stanza is not handled (service-unavailable error) and displayed in UI.
2024-01-31 07:37:43 -06:00
Hristo Terezov
831d39d447 fix(visitors): hide highlight button. 2024-01-30 17:57:05 -06:00
damencho
35bc430549 fix(visitors): Fixes clearing promotion requests.
We were modifying DEFAULT_STATE and later the request magically appears after the state is cleared, like joining and leaving breakout rooms.
2024-01-30 17:56:16 -06:00
damencho
77927f3f2e chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1763.0.0+8a88bba7...v1764.0.0+ba21a236
2024-01-30 16:34:08 -05:00
Jaya Allamsetty
7f6d55f5f0 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1762.0.0+841b3eb8...v1763.0.0+8a88bba7
2024-01-30 13:32:31 -05:00
Edgars Voroboks
32f4767edd fix(lang) Update Latvian translation 2024-01-30 09:26:11 +01:00
damencho
ba88fc0279 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1761.0.0+f470b5f4...v1762.0.0+841b3eb8
2024-01-29 15:34:33 -06:00
Saúl Ibarra Corretgé
ba7ed83d48 feat(recording) stop transcription when recording is stopped 2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
5a96050973 feat(recording) always show advanced options in dialog 2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
7e8c1fd99a feat(recording) show recording icon when transcribing 2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
6e6433e2d9 feat(transcribing) emit recording notifications for transcriptions
Both audible and visual.

They are only emitted if there is no video recording on.
2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
4ff2422e3c feat(subtitles) drop disableStartForAll config option
It wasn't related to transcriptions but to subtitles, really.

Since we are not going to show subtitles just because transcriptions are
enabled, this setting no longer makes sense.
2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
cfbcfdc857 feat(recording) update labels with transcription status 2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
3074b1741f feat(conference) drop transcribing label 2024-01-29 15:09:28 +01:00
Saúl Ibarra Corretgé
00503d163a feat(transcribing) drop transcribing notifications 2024-01-29 15:09:28 +01:00
Christoph Settgast
f847a3e2e0 fix(deeplinking): allow translating all strings on deeplinking pages (#14286) 2024-01-28 13:26:53 +01:00
Christoph Settgast
93d0ee710b fix(deeplinking): allow partial config of deeplinking and defaults for the remaining (#14285) 2024-01-28 13:26:16 +01:00
Christoph Settgast
0102efd2d0 fix(deeplinking): skip deeplinking within electron (#14284)
otherwise we are stuck in a loop inside the desktop app

Signed-off-by: Christoph Settgast <csett86_git@quicksands.de>
2024-01-27 16:34:33 +01:00
Christoph Settgast
8afdebca08 feat(deeplinking): offer electron app for download, configurable (#14261)
Offer the default app, but make it configurable for own branded
desktop clients

Signed-off-by: Christoph Settgast <csett86_git@quicksands.de>
2024-01-26 22:04:44 +01:00
Göktuğ Aşcı
d2bfb464ba lang: add translation tr (#14282) 2024-01-26 13:52:56 -06:00
Jaya Allamsetty
5f3233b9a6 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1760.0.0+7895cb25...v1761.0.0+f470b5f4
2024-01-26 10:31:29 -05:00
Hristo Terezov
3c32d9c552 feat(LargeVideo): Add logging. 2024-01-25 09:31:38 -06:00
Hristo Terezov
f51d8d54e4 fix(LargeVideo): Add retries for play. 2024-01-25 09:31:38 -06:00
Saúl Ibarra Corretgé
ac26dce0a5 feat(android) list HDMI connections as speakers 2024-01-25 10:59:21 +01:00
Jaya Allamsetty
7a23625752 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1759.0.0+fc2f2490...v1760.0.0+7895cb25
2024-01-24 16:47:05 -05:00
Corey Maler
4cb4a4db00 fix(participant) prevent gravatar request during loading of config (#14255) 2024-01-24 13:32:59 +01:00
Sveinn í Felli
05e484c4aa fix(lang) Update main-is.json (#14270)
Updated Icelandic translation
2024-01-22 20:39:00 +01:00
Дамян Минков
5871e50a20 * feat: Stores vpaas check in room object.
* feat: Clear queues on destroy for muc rate limit join/leave.

* feat: Stores vpaas check in room object.

* squash: Replace one regexp with starts_with.
2024-01-22 11:48:35 -06:00
Damien Fetis
95ad04b19c fix(lang) update french translation (#14269) 2024-01-22 17:59:46 +01:00
damencho
36fab239cc fix: Updates checking for granted feature. 2024-01-22 09:28:48 -06:00
Saúl Ibarra Corretgé
92492dc482 feat(ci,ios) check if Pod file is in sync when running CI 2024-01-22 13:49:42 +01:00
Saúl Ibarra Corretgé
51c3658205 fix(ios) sync Podfile 2024-01-22 12:56:17 +01:00
Saúl Ibarra Corretgé
418d333caf feat(rn,invite) add ability to disable dial-in options 2024-01-22 12:56:17 +01:00
Christoph Settgast
7f3f2f7034 lang: typo in German translation 2024-01-21 18:06:30 -06:00
Christoph Settgast
bd3012f110 feat(deeplinking): Desktop deeplinking configurable (default off) and using jitsi-meet-electron (#14259)
As we have the jitsi-meet-electron app, lets allow deployments to use it.

Allow deployments to enable desktop deeplinking without the need to re-implement _openDesktopApp()
Disable it by default to keep the current behaviour (deeplinking on mobile on, on desktop off)

This feature is meant as purely opt-in.

Signed-off-by: Christoph Settgast <csett86_git@quicksands.de>
2024-01-21 21:02:16 +01:00
Saúl Ibarra Corretgé
f8cef330f7 feat(android) set target SDK to 34 (#14129)
* feat(android) set target SDK to 34 and fixed mediaProjection service type
2024-01-19 16:52:39 +02:00
Saúl Ibarra Corretgé
e00b6be06c feat(face-landmarks) disable on mobile web browsers 2024-01-18 15:50:47 +01:00
Дамян Минков
9b7da0be2d feat: Drops sending facelandmarks to speakerstats. (#14253)
* feat: Drops sending facelandmarks to speakerstats.

* squash: Fixes lint.
2024-01-18 08:34:14 -06:00
Calin-Teodor
3effbca700 feat(ios): add missing config to .xcodeproj 2024-01-18 15:06:55 +02:00
Calinteodor
cf1f97f486 feat(rn, ios): build fixes and metro-config updates (#14251)
feat(rn, ios): build fixes and metro-config updates
2024-01-18 14:48:59 +02:00
Дамян Минков
9273022e8f Delete nwjs-integration.
This hasn't been used for long time and is probably no longer working.
2024-01-18 06:27:54 -06:00
Jaya Allamsetty
5d35398b6b chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1758.0.0+e6298b6c...v1759.0.0+fc2f2490
2024-01-17 17:33:31 -05:00
Ilya Shevtsov
60d4b626a5 fix(lang) updated Russian translations (#14213) 2024-01-17 13:38:55 +01:00
Jaya Allamsetty
b8da93f64f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1757.0.0+d53d0106...v1758.0.0+e6298b6c
2024-01-16 17:21:39 -05:00
Jaya Allamsetty
c411d3352f chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1755.0.0+6d87c169...v1757.0.0+d53d0106
2024-01-16 15:11:24 -05:00
Дамян Минков
33e38f95b1 fix: Fixes leaving the visitor's meeting on promotion. (#14239)
* fix: Fixes leaving the visitor's meeting on promotion.

This was resulting some colibri websockets reconnects as the state of the previous JitsiConference was not cleaned up.

* squash: Update jsdocs, lint error.
2024-01-16 13:22:14 -06:00
Jaya Allamsetty
9ae5677c00 fix: Make multi-stream mode the default mode.
Since plan-b mode will no longer be supported, check for unified plan support is not needed anymore.
2024-01-16 12:17:10 -05:00
Saúl Ibarra Corretgé
06f434e924 fix(rn,recording) use the same icon as web 2024-01-15 16:52:11 +01:00
Saúl Ibarra Corretgé
caa1ef952b fix(ios) downgrade Firebase
It creates build errors with Xcode 14.2 at least.
2024-01-15 16:39:58 +01:00
Calin-Teodor
4f371dfacc feat(base/conference): check conference status when leaving 2024-01-15 14:14:19 +02:00
Fierthraix
b6447770c7 lang: Updated Esperanto Translations. (#14203)
* lang: Some english spelling/grammar errors.

* lang: Updated Esperanto translations.
2024-01-13 18:03:34 -06:00
Дамян Минков
7aad0fd853 feat: Drop unused module from prosody config. (#14229) 2024-01-12 14:59:10 -06:00
Christoph Settgast
bae2a977d1 lang: update German translation 2024-01-12 21:51:54 +01:00
damencho
ed3f57385a chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1754.0.0+899ea00a...v1755.0.0+6d87c169
2024-01-12 10:15:28 -06:00
Saúl Ibarra Corretgé
c806a432f3 feat(external-api) add transcribingStatusChanged event 2024-01-12 13:59:24 +01:00
Saúl Ibarra Corretgé
5966df96e8 feat(transcribing) add notification when transcribing starts 2024-01-12 13:59:24 +01:00
Saúl Ibarra Corretgé
6cd876078e fix(transcribing) refactor notification handling
The current notification system allows us to replce notifications easily
as long as we use a consistent UID.
2024-01-12 13:59:24 +01:00
Saúl Ibarra Corretgé
b56073ea68 fix(transcribing) show pending notification while transcriber joins 2024-01-12 13:59:24 +01:00
Saúl Ibarra Corretgé
ee98841078 fix(transcribing) simplified code 2024-01-12 13:59:24 +01:00
Saúl Ibarra Corretgé
3816b9d20a fix(transcribing) remove unused state properties 2024-01-12 13:59:24 +01:00
Saúl Ibarra Corretgé
e6096f5a6c fix(config) drop no longer existing option 2024-01-12 09:58:09 +01:00
Hristo Terezov
68de287171 feat(configWhitelist): add disableVirtualBackground 2024-01-12 07:51:34 +01:00
Calin-Teodor
cdc8f69e25 feat(ios): set build config setting for deployment target to 13.4 2024-01-11 14:54:23 +02:00
Calin-Teodor
fc9ccce29c feat(ios): updated firebase pods 2024-01-11 14:54:23 +02:00
Saúl Ibarra Corretgé
4bbbbea183 feat(config,transcriptions) add option to skip interim transcriptions 2024-01-11 11:12:44 +01:00
Jaya Allamsetty
b2232172f6 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1752.0.0+969c6f47...v1754.0.0+899ea00a
2024-01-10 15:36:46 -05:00
Aaron van Meerten
1d66045ec4 fix: census lua init to 0 to avoid openmetrics errors (#14210) 2024-01-09 12:50:24 -06:00
Calinteodor
5c35c23e74 chore(deps, rn): react-native@0.72.9 (#14208)
* chore(deps, rn): react-native@0.72.9
2024-01-09 18:02:20 +02:00
Hristo Terezov
bd04f9b72b fix(remote-sources): update only when neccessary
Updates the remoteVideoSources set only when neccessary when participant is leaving . This fixes an endless recursion when visitor is promoted or left and there is a screen sharing.
2024-01-09 09:34:59 -06:00
kerem
269d1cf5e0 chore(android): Update proguard-rules.pro for RN 0.72.* (#13936)
chore(android): Update proguard-rules.pro for RN 0.69.* + yoga for 0.72

update pro guard rules from RN source;
https://github.com/facebook/react-native/blob/v0.69.12/ReactAndroid/proguard-rules.pro
2024-01-09 16:25:18 +02:00
Calinteodor
90628f56f8 feat(react-native): rn 0.72.7 update (#14130)
feat(react-native): version 0.72.7 update
2024-01-09 15:16:51 +02:00
Saúl Ibarra Corretgé
fcdc2f500d feat(transcriptions) alway send the transcriptionChunkReceived event
Even if the user is not requesting them.
2024-01-09 14:05:34 +01:00
Jaya Allamsetty
14a23f800b fix(config): Add testing flag for Av1 support. 2024-01-08 09:47:08 -05:00
Oguzhan Selim Temiz
3bde570ec5 fix(i18n)fix moment duration format error 2024-01-08 15:30:17 +01:00
Hristo Terezov
26ad7cffec fix(analytics): Update permanent props. 2024-01-08 08:13:10 -06:00
Milton Moura
e697ee717b feat(accessibility): Improve search input fields accessibility (#14186)
feat(accessibility): Improve search input fields accessibility
2024-01-08 10:09:35 +02:00
Jaya Allamsetty
89dd85d61a chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1750.0.0+ca40744f...v1752.0.0+969c6f47
2024-01-03 16:47:24 -05:00
dependabot[bot]
7b57ebca4a chore(deps): bump tj-actions/changed-files in /.github/workflows
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 35 to 41.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v35...v41)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 20:58:13 +01:00
Jaya Allamsetty
bd49036ed8 fix(config): Remove enableLipSync config.
It is not supported by Jicofo anymore.
2024-01-02 13:22:58 -05:00
José Luís Andrade
36963d6dfb lang: Update Portuguese translation (#14175)
* Update Portuguese translation

* Update main-pt.json
2023-12-22 08:28:57 -06:00
Horatiu Muresan
213f1b68e1 fix(reactions-firefox) Fix drawer menu not scrollable on FF (#14181)
- fix reactions menu not visibile on FF when in drawer mode
- fix subscriber for tileview
2023-12-21 17:10:48 +02:00
Calinteodor
bf211fbd4d feat(invite/security): Brave issues fixes (#14180)
* feat(invite/security): fix share icon/lobby mode switch
2023-12-21 16:16:28 +02:00
nurjin jafar
998854a22e accessibility findings in Toolbar (#14161)
feat(accessibility): update translations and toggled labels
2023-12-21 15:46:02 +02:00
damencho
8247f478f4 feat: Adds a nil check for occupants joining as moderators. 2023-12-19 16:07:45 -06:00
Saúl Ibarra Corretgé
f07b762d6a chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1736.0.0+8bee4514...v1750.0.0+ca40744f
2023-12-19 16:00:12 -06:00
Mihaela Dumitru
8504b4b5bb feat(sounds) use audio files based on locale (#14104) 2023-12-19 17:26:29 +02:00
Calin-Teodor
392c8e9aa8 feat(toolbox): fixed undefined for previous layout type 2023-12-19 16:36:23 +02:00
Avram Tudor
7f87d4eada feat(transcript) add recording settings for recording transcriptions (#14158) 2023-12-19 11:25:06 +02:00
Mihaela Dumitru
6d11aa8049 fix(ui) style prejoin drawer (#14165) 2023-12-18 18:30:48 +02:00
Saúl Ibarra Corretgé
0c1ce152fe feat(error-handling) refactor global error and unhandledrejection event handling
Conceptually related: https://github.com/jitsi/lib-jitsi-meet/pull/2411
2023-12-15 23:56:19 +01:00
goblin
82ae6a8456 fix(doc) update README
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
2023-12-15 12:03:56 +01:00
Дамян Минков
9ebab2c7d0 feat: Visitors promotion (#14119)
* fix: Fixes wrong warning message.

* fix: Detect enables/disables visitors for a room.

* fix: We need customusername in all cases of auto-allow setting.

* feat: Sends promotion-request to all moderators.

* feat(visitors): Implements request promotion.

* feat(visitors): Implements single moderator and vpass cases for moderators.

* fix: Fixes clearing request instances from UI.

* feat: Implements visitors approval for mobile.

* squash: Drops unused and wrong report for auto allow promotion.

* squash: Returns early based on count.

* squash: Moves translation to common key.

* squash: Adds dependencies for useCallback.

* squash: comments.

* squash: Refactor 1 to unify with native.

* squash: Rename some styles.

* squash: Fixes error dew to fewer hooks error.

* squash: Renames VISITOR_PROMOTION_REQUEST_DENIED.

* squash: Fix renaming component.

* squash: Suggestions.
2023-12-14 08:31:58 -06:00
Horatiu Muresan
af4488d1e9 fix(toolbox) prevent toolbox shift up on stage view (#14155) 2023-12-14 12:32:19 +02:00
bgrozev
d9599d31f1 fix: Do not log unknown commands. (#14153)
Events such as "mouse-move", "mouse-leave" and "face-landmark-detected"
reach this code and pollute the logs. It's probably worth investigating
why this is the case and fixing it if necessary, but for now just remove
the log message.
2023-12-13 10:04:48 -08:00
Mihaela Dumitru
d094ac0034 fix(external-api) extend captureLargeVideoScreenshot for screenshare (#14149) 2023-12-13 17:31:44 +02:00
Avram Tudor
c6b7ec7c9c fix(transcript) duplicated namespace (#14151) 2023-12-13 16:15:09 +02:00
Calinteodor
6e35e5b310 feat(call-integration): revert changes related to visitors (#14150)
* feat(mobile/call-integration): removed undefined checks
2023-12-13 15:38:44 +02:00
Jaya Allamsetty
429787f9c8 chore(deps) lib-jitsi-meet@latest
https://github.com/jitsi/lib-jitsi-meet/compare/v1734.0.0+34ceebd2...v1736.0.0+8bee4514
2023-12-12 16:04:22 -05:00
Дамян Минков
f7995b395f feat: Adds detection of occupants with no connection. (#14146)
* feat: Adds detection of occupants with no connection.

We saw recently two occasions with rooms with participants but no prosody.full_sessions for those participants and when everyone leaves the meeting it never ends.

* squash: Updates counting.
2023-12-12 11:47:43 -06:00
Avram Tudor
72b4c8123a ref(transcriptions): refactor transcriptions api (#14144)
* ref(transcriptions): refactor transcriptions api

* ref(transcriptions): refactor usage of translation label

Extend IFrame API to allow adding a transcriber in the room without the subtitles needing to be visible.
Allow transcription chunk messages to be passed through the IFrame API if a transcriber is present.
Clean-up transcription messages sent through the IFrame API to not include timeout field and possible conflicting states (stable / unstable /final)

* fix linting

* code review: extend api message to match webhook format
2023-12-12 14:36:54 +02:00
Abbas Al-Mansoori
4c6cadea6d fix: lint 2023-12-12 12:04:38 +02:00
Abbas Al-Mansoori
1bc50ea71c feat(rn-sdk): add getRoomsInfo ref callback 2023-12-12 12:04:38 +02:00
Abbas Al-Mansoori
60b5225ffd feat(rn-sdk): add onParticipantLeft event listener 2023-12-12 12:04:38 +02:00
damencho
5fe3685a05 fix: Drops luacheck for modules sourced from prosody-modules.
Only mod_firewall fails for now.
2023-12-11 10:41:34 -06:00
Aaron van Meerten
fbfc0f6c2f task: vendor mod_firewall from prosody plugins
changeset 6696075e26e2
https://hg.prosody.im/prosody-modules/raw-file/6696075e26e2/mod_firewall/mod_firewall.lua
2023-12-11 10:41:34 -06:00
Aaron van Meerten
bbed4be61b task: vendor mod_measure_stanza_counts.lua
changeset 6696075e26e2
https://hg.prosody.im/prosody-modules/raw-file/6696075e26e2/mod_measure_stanza_counts/mod_measure_stanza_counts.lua
2023-12-11 10:41:34 -06:00
Aaron van Meerten
68f954d068 task: vendor mod_debug_traceback.lua
changeset 6696075e26e2
https://hg.prosody.im/prosody-modules/raw-file/6696075e26e2/mod_debug_traceback/mod_debug_traceback.lua
2023-12-11 10:41:34 -06:00
Aaron van Meerten
30144b8707 feat: vendor mod_log_ringbuffer from prosody hg
changeset 6696075e26e2
https://hg.prosody.im/prosody-modules/raw-file/6696075e26e2/mod_log_ringbuffer/mod_log_ringbuffer.lua
2023-12-11 10:41:34 -06:00
Saúl Ibarra Corretgé
dd232f55a9 fix(rn,room-lock) use numeric input for password dialog if appropriate (#14142) 2023-12-11 14:10:31 +01:00
667 changed files with 25903 additions and 18522 deletions

View File

@@ -1,6 +0,0 @@
[android]
target = Google Inc.:Google APIs:23
[maven_repositories]
central = https://repo1.maven.org/maven2

View File

@@ -3,7 +3,7 @@
"image": "mcr.microsoft.com/devcontainers/universal:2",
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "16"
"version": "20"
}
},
"hostRequirements": {

View File

@@ -6,7 +6,7 @@ charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
max_line_length = 80
max_line_length = 120
trim_trailing_whitespace = true
[*.md]

View File

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

55
.github/ISSUE_TEMPLATE/1-bug.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: Bug report
description: File a bug report and help us improve
body:
- type: markdown
attributes:
value: |
This issue tracker is only for reporting bugs and tracking issues related to the source code.
**Before posting, please make sure to check if the same or similar bugs have already been reported.**
⚠️ General questions regarding usage, installation, etc. should be posted in our [community forum](https://community.jitsi.org).
- type: textarea
attributes:
label: What happened?
description: Please describe the problem. Be as detailed as possible.
validations:
required: true
- type: checkboxes
attributes:
label: Platform
description: On what platforms can you reproduce the problem?
options:
- label: Chrome (or Chromium based)
- label: Firefox
- label: Safari
- label: Other desktop browser
- label: Android browser
- label: iOS browser
- label: Electron app
- label: Android mobile app
- label: iOS mobile app
- label: Custom app using a mobile SDK
validations:
required: true
- type: input
attributes:
label: Browser / app / sdk version
description: Please provice the version of the browser / app / sdk where the problem manifests.
validations:
required: true
- type: textarea
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. The browser console JS logs (if applicable) is a good start. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: checkboxes
attributes:
label: Reproducibility
description: Does the problem reproduce on meet.jit.si using Chrome, Firefox or the official mobile apps?
options:
- label: The problem is reproducible on meet.jit.si
- type: textarea
attributes:
label: More details?
description: Please provide more details in case they apply (such as the Jitsi Meet version you are running, if you are hosting your own server).

View File

@@ -1,25 +0,0 @@
---
name: "Feature request"
about: Suggest an idea for this project
title: ''
labels: 'feature-request'
assignees: ''
---
<!--
Thank you for suggesting an idea to make Jitsi Meet better.
Please fill in as much of the template below as you're able.
Note that the ultimate decision for implementing features lies on the Jitsi team, not all feature requests shall be accepted.
-->
**Is your feature request related to a problem you are facing?**
Please describe the problem you are trying to solve.
**Describe the solution you'd like**
Please describe the desired behavior.
**Describe alternatives you've considered**
Please describe alternative solutions or features you have considered.

22
.github/ISSUE_TEMPLATE/2-feature.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Feature request
description: Suggest an idea for Jitsi Meet
labels: ["feature-request"]
body:
- type: markdown
attributes:
value: |
Thank you for suggesting an idea to make Jitsi Meet better.
**Note**: the ultimate decision for implementing features lies on the Jitsi team, not all feature requests shall be accepted.
- type: textarea
attributes:
label: What problem are you trying to solve?
description: Tell us what problem your feature request would solve.
- type: textarea
attributes:
label: What solution would you like to see?
description: Please describe the desired behavior or feature.
- type: textarea
attributes:
label: Is there an alternative?
description: Please describe alternative solutions or features you have considered.

View File

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

View File

@@ -7,7 +7,7 @@ jobs:
name: Luacheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install luarocks
run: sudo apt-get --install-recommends -y install luarocks
@@ -17,7 +17,8 @@ jobs:
- name: Check lua codes
run: |
set -o pipefail && luacheck . | awk -F: '
set -o pipefail && luacheck . \
--exclude-files=resources/prosody-plugins/mod_firewall/mod_firewall.lua | awk -F: '
{
print $0
printf "::warning file=%s,line=%s,col=%s::%s\n", $1, $2, $3, $4

View File

@@ -7,14 +7,18 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version-file: '.nvmrc'
cache: 'npm'
- name: Check Node / npm versions
run: |
node -v
npm -v
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v35
uses: tj-actions/changed-files@v41
- name: Get changed lang files
id: lang-files
run: echo "all=$(echo "${{ steps.changed-files.outputs.all_changed_files }}" | grep -oE 'lang\/\S+' | tr '\n' ' ')" >> "$GITHUB_OUTPUT"
@@ -34,21 +38,25 @@ jobs:
name: Build Frontend (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version-file: '.nvmrc'
cache: 'npm'
- name: Check Node / npm versions
run: |
node -v
npm -v
- run: npm install
- run: make
macos-ci:
name: Build Frontend (macOS)
runs-on: macOS-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version: 20
cache: 'npm'
- run: npm install
- run: make
@@ -56,33 +64,66 @@ jobs:
name: Build mobile bundle (Android)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version-file: '.nvmrc'
cache: 'npm'
- name: Check Node / npm versions
run: |
node -v
npm -v
- run: npm install
- run: npx react-native bundle --entry-file react/index.native.js --platform android --bundle-output /tmp/android.bundle --reset-cache
ios-build:
name: Build mobile bundle (iOS)
runs-on: macOS-latest
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-14]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version-file: '.nvmrc'
cache: 'npm'
- name: Check Node / npm versions
run: |
node -v
npm -v
- run: npm install
- name: setup Xcode
run: |
uname -a
xcode-select -p
sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer
xcodebuild -version
- name: setup-cocoapods
uses: maxim-lobanov/setup-cocoapods@v1
with:
podfile-path: ios/Podfile.lock
- name: Install Pods
run: |
pod --version
cd ios
pod install --repo-update
- 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: npx react-native bundle --entry-file react/index.native.js --platform ios --bundle-output /tmp/ios.bundle --reset-cache
debian-build:
name: Test Debian packages build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version-file: '.nvmrc'
cache: 'npm'
- name: Check Node / npm versions
run: |
node -v
npm -v
- run: npm install
- run: make
- run: sudo apt-get install -y debhelper

3
.gitignore vendored
View File

@@ -99,10 +99,7 @@ tsconfig.json
#
react-native-sdk/*.tgz
react-native-sdk/android/src
!react-native-sdk/android/src/main/java/org/jitsi/meet/sdk/JitsiMeetOngoingConferenceService.java
!react-native-sdk/android/src/main/java/org/jitsi/meet/sdk/JitsiMeetReactNativePackage.java
!react-native-sdk/android/src/main/java/org/jitsi/meet/sdk/JMOngoingConferenceModule.java
!react-native-sdk/android/src/main/java/org/jitsi/meet/sdk/RNOngoingNotification.java
react-native-sdk/images
react-native-sdk/ios
react-native-sdk/lang

2
.nvmrc
View File

@@ -1 +1 @@
16
20

View File

@@ -1,6 +0,0 @@
osx_image: xcode11.1
language: objective-c
script:
- "./ios/travis-ci/build-ipa.sh"
after_script:
- sleep 10

View File

@@ -48,7 +48,6 @@ deploy-appbundle:
$(BUILD_DIR)/external_api.min.js.map \
$(BUILD_DIR)/alwaysontop.min.js \
$(BUILD_DIR)/alwaysontop.min.js.map \
$(OUTPUT_DIR)/analytics-ga.js \
$(BUILD_DIR)/analytics-ga.min.js \
$(BUILD_DIR)/analytics-ga.min.js.map \
$(BUILD_DIR)/face-landmarks-worker.min.js \
@@ -123,7 +122,7 @@ deploy-local:
dev: deploy-init deploy-css deploy-rnnoise-binary deploy-tflite deploy-meet-models deploy-lib-jitsi-meet deploy-olm deploy-tf-wasm deploy-excalidraw-dev deploy-face-landmarks
$(WEBPACK_DEV_SERVER)
source-package:
source-package: compile deploy
mkdir -p source_package/jitsi-meet/css && \
cp -r *.js *.html resources/*.txt fonts images libs static sounds LICENSE lang source_package/jitsi-meet && \
cp css/all.css source_package/jitsi-meet/css && \

View File

@@ -27,7 +27,7 @@ And many more!
## Using Jitsi Meet
Using Jitsi Meet is straightforward, as it's browser based. Head over to [meet.jit.si](https://meet.jit.si) and give it a try. It's anonymous, scalable and free to use. All browsers are supported!
Using Jitsi Meet is straightforward, as it's browser based. Head over to [meet.jit.si](https://meet.jit.si) and give it a try. It's scalable and free to use. All you need is a Google, Facebook or GitHub account in order to start a meeting. All browsers are supported!
Using mobile? No problem, you can either use your mobile web browser or our fully-featured
mobile apps:

View File

@@ -1,163 +0,0 @@
/* global ga */
(function(ctx) {
/**
*
*/
function Analytics(options) {
/* eslint-disable */
if (!options.googleAnalyticsTrackingId) {
console.log(
'Failed to initialize Google Analytics handler, no tracking ID');
return;
}
/**
* Google Analytics
* TODO: Keep this local, there's no need to add it to window.
*/
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', options.googleAnalyticsTrackingId, 'auto');
ga('send', 'pageview');
/* eslint-enable */
}
/**
* Extracts the integer to use for a Google Analytics event's value field
* from a lib-jitsi-meet analytics event.
* @param {Object} event - The lib-jitsi-meet analytics event.
* @returns {Object} - The integer to use for the 'value' of a Google
* Analytics event.
* @private
*/
Analytics.prototype._extractAction = function(event) {
// Page events have a single 'name' field.
if (event.type === 'page') {
return event.name;
}
// All other events have action, actionSubject, and source fields. All
// three fields are required, and the often jitsi-meet and
// lib-jitsi-meet use the same value when separate values are not
// necessary (i.e. event.action == event.actionSubject).
// Here we concatenate these three fields, but avoid adding the same
// value twice, because it would only make the GA event's action harder
// to read.
let action = event.action;
if (event.actionSubject && event.actionSubject !== event.action) {
// Intentionally use string concatenation as analytics needs to
// work on IE but this file does not go through babel. For some
// reason disabling this globally for the file does not have an
// effect.
// eslint-disable-next-line prefer-template
action = event.actionSubject + '.' + action;
}
if (event.source && event.source !== event.action
&& event.source !== event.action) {
// eslint-disable-next-line prefer-template
action = event.source + '.' + action;
}
return action;
};
/**
* Extracts the integer to use for a Google Analytics event's value field
* from a lib-jitsi-meet analytics event.
* @param {Object} event - The lib-jitsi-meet analytics event.
* @returns {Object} - The integer to use for the 'value' of a Google
* Analytics event, or NaN if the lib-jitsi-meet event doesn't contain a
* suitable value.
* @private
*/
Analytics.prototype._extractValue = function(event) {
let value = event && event.attributes && event.attributes.value;
// Try to extract an integer from the "value" attribute.
value = Math.round(parseFloat(value));
return value;
};
/**
* Extracts the string to use for a Google Analytics event's label field
* from a lib-jitsi-meet analytics event.
* @param {Object} event - The lib-jitsi-meet analytics event.
* @returns {string} - The string to use for the 'label' of a Google
* Analytics event.
* @private
*/
Analytics.prototype._extractLabel = function(event) {
let label = '';
// The label field is limited to 500B. We will concatenate all
// attributes of the event, except the user agent because it may be
// lengthy and is probably included from elsewhere.
for (const property in event.attributes) {
if (property !== 'permanent_user_agent'
&& property !== 'permanent_callstats_name'
&& event.attributes.hasOwnProperty(property)) {
// eslint-disable-next-line prefer-template
label += property + '=' + event.attributes[property] + '&';
}
}
if (label.length > 0) {
label = label.slice(0, -1);
}
return label;
};
/**
* This is the entry point of the API. The function sends an event to
* google analytics. The format of the event is described in
* AnalyticsAdapter in lib-jitsi-meet.
* @param {Object} event - the event in the format specified by
* lib-jitsi-meet.
*/
Analytics.prototype.sendEvent = function(event) {
if (!event || !ga) {
return;
}
const ignoredEvents
= [ 'e2e_rtt', 'rtp.stats', 'rtt.by.region', 'available.device',
'stream.switch.delay', 'ice.state.changed', 'ice.duration' ];
// Temporary removing some of the events that are too noisy.
if (ignoredEvents.indexOf(event.action) !== -1) {
return;
}
const gaEvent = {
'eventCategory': 'jitsi-meet',
'eventAction': this._extractAction(event),
'eventLabel': this._extractLabel(event)
};
const value = this._extractValue(event);
if (!isNaN(value)) {
gaEvent.eventValue = value;
}
ga('send', 'event', gaEvent);
};
if (typeof ctx.JitsiMeetJS === 'undefined') {
ctx.JitsiMeetJS = {};
}
if (typeof ctx.JitsiMeetJS.app === 'undefined') {
ctx.JitsiMeetJS.app = {};
}
if (typeof ctx.JitsiMeetJS.app.analyticsHandlers === 'undefined') {
ctx.JitsiMeetJS.app.analyticsHandlers = [];
}
ctx.JitsiMeetJS.app.analyticsHandlers.push(Analytics);
})(window);
/* eslint-enable prefer-template */

View File

@@ -15,11 +15,13 @@ def vcode = (int) (((new Date().getTime() / 1000) - 1546297200) / 10)
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
packagingOptions {
exclude 'lib/*/libhermes*.so'
jniLibs {
excludes += ['lib/*/libhermes*.so']
}
}
defaultConfig {
applicationId 'org.jitsi.meet'
versionCode vcode
@@ -72,13 +74,13 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
namespace 'org.jitsi.meet'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.5.1'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.13'
if (!rootProject.ext.libreBuild) {
// Sync with react-native-google-signin

View File

@@ -1,3 +1,8 @@
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
@@ -9,20 +14,25 @@
# Add any project specific keep options here:
# Disabling obfuscation is useful if you collect stack traces from production crashes
# (unless you are using a system that supports de-obfuscate the stack traces).
# -dontobfuscate
# React Native
# Keep our interfaces so they can be used by other ProGuard rules.
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.proguard.annotations.DoNotStrip class *
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.proguard.annotations.DoNotStrip *;
@com.facebook.common.internal.DoNotStrip *;
}
-keep @com.facebook.proguard.annotations.DoNotStripAny class * {
*;
}
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
@@ -30,32 +40,32 @@
*** get*();
}
-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
-keep class * implements com.facebook.react.bridge.JavaScriptModule { *; }
-keep class * implements com.facebook.react.bridge.NativeModule { *; }
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
-keepclassmembers class * { @com.facebook.react.uimanager.UIProp <fields>; }
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
-dontwarn com.facebook.react.**
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
-keep,includedescriptorclasses class com.facebook.react.turbomodule.core.** { *; }
# okhttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
# hermes
-keep class com.facebook.jni.** { *; }
# okio
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-keep class okio.** { *; }
-dontwarn okio.**
# yoga
-keep,allowobfuscation @interface com.facebook.yoga.annotations.DoNotStrip
-keep @com.facebook.yoga.annotations.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.yoga.annotations.DoNotStrip *;
}
# WebRTC
-keep class org.webrtc.** { *; }

View File

@@ -1,6 +1,5 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="org.jitsi.meet"
android:installLocation="auto">
<application
android:allowBackup="true"

View File

@@ -35,10 +35,8 @@ import org.jitsi.meet.sdk.JitsiMeetActivity;
import org.jitsi.meet.sdk.JitsiMeetConferenceOptions;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
/**
* The one and only Activity that the Jitsi Meet app needs. The
@@ -75,7 +73,6 @@ public class MainActivity extends JitsiMeetActivity {
*/
private String defaultURL;
// JitsiMeetActivity overrides
//
@@ -147,12 +144,12 @@ public class MainActivity extends JitsiMeetActivity {
}
private void setJitsiMeetConferenceDefaultOptions() {
// Set default options
JitsiMeetConferenceOptions defaultOptions
= new JitsiMeetConferenceOptions.Builder()
.setServerURL(buildURL(defaultURL))
.setFeatureFlag("welcomepage.enabled", true)
.setFeatureFlag("resolution", 360)
.setFeatureFlag("server-url-change.enabled", !configurationByRestrictions)
.build();
JitsiMeet.setDefaultConferenceOptions(defaultOptions);
@@ -227,7 +224,7 @@ public class MainActivity extends JitsiMeetActivity {
private @Nullable URL buildURL(String urlStr) {
try {
return new URL(urlStr);
} catch (MalformedURLException e) {
} catch (Exception e) {
return null;
}
}

View File

@@ -10,7 +10,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.1'
classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'com.google.gms:google-services:4.4.0'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
}
@@ -19,9 +19,9 @@ buildscript {
ext {
kotlinVersion = "1.7.0"
buildToolsVersion = "33.0.2"
compileSdkVersion = 33
compileSdkVersion = 34
minSdkVersion = 24
targetSdkVersion = 33
targetSdkVersion = 34
supportLibVersion = "28.0.0"
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
@@ -42,21 +42,16 @@ ext {
libreBuild = (System.env.LIBRE_BUILD ?: "false").toBoolean()
googleServicesEnabled = project.file('app/google-services.json').exists() && !libreBuild
//React Native Version
rnVersion = "0.72.9"
}
allprojects {
repositories {
// React Native (JS, Obj-C sources, Android binaries) is installed from npm.
maven { url "$rootDir/../node_modules/react-native/android" }
// Android JSC is installed from npm.
maven { url("$rootDir/../node_modules/jsc-android/dist") }
mavenCentral {
// We don't want to fetch react-native from Maven Central as there are
// older versions over there.
content {
excludeGroup "com.facebook.react"
}
}
mavenCentral()
google()
maven { url 'https://www.jitpack.io' }
}
@@ -66,11 +61,13 @@ allprojects {
configurations.all {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'com.facebook.react'
&& details.requested.name == 'react-native') {
def file = new File("$rootDir/../node_modules/react-native/package.json")
def version = new JsonSlurper().parseText(file.text).version
details.useVersion version
if (details.requested.group == 'com.facebook.react') {
if (details.requested.name == 'react-native') {
details.useTarget "com.facebook.react:react-android:$rnVersion"
}
if (details.requested.name == 'react-android') {
details.useVersion rootProject.ext.rnVersion
}
}
}
}

View File

@@ -11,7 +11,7 @@
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit

View File

@@ -9,7 +9,6 @@ THE_MVN_REPO=${MVN_REPO:-${1:-$DEFAULT_MVN_REPO}}
MVN_HTTP=0
DEFAULT_SDK_VERSION=$(grep sdkVersion ${THIS_DIR}/../gradle.properties | cut -d"=" -f2)
SDK_VERSION=${OVERRIDE_SDK_VERSION:-${DEFAULT_SDK_VERSION}}
RN_VERSION=$(jq -r '.version' ${THIS_DIR}/../../node_modules/react-native/package.json)
JSC_VERSION="r"$(jq -r '.dependencies."jsc-android"' ${THIS_DIR}/../../node_modules/react-native/package.json | cut -d . -f 1 | cut -c 2-)
DO_GIT_TAG=${GIT_TAG:-0}
@@ -25,23 +24,7 @@ export MVN_REPO=$THE_MVN_REPO
echo "Releasing Jitsi Meet SDK ${SDK_VERSION}"
echo "Using ${MVN_REPO} as the Maven repo"
if [[ $MVN_HTTP == 1 ]]; then
# Push React Native
echo "Pushing React Native ${RN_VERSION} to the Maven repo"
pushd ${THIS_DIR}/../../node_modules/react-native/android/com/facebook/react/react-native/${RN_VERSION}
cat react-native-${RN_VERSION}.pom \
| sed "s#<packaging>pom</packaging>#<packaging>aar</packaging>#" \
| sed "/<optional>/d" \
> react-native-${RN_VERSION}-fixed.pom
mvn \
deploy:deploy-file \
-Durl=${MVN_REPO} \
-DrepositoryId=${MVN_REPO_ID} \
-Dfile=react-native-${RN_VERSION}-release.aar \
-Dpackaging=aar \
-DgeneratePom=false \
-DpomFile=react-native-${RN_VERSION}-fixed.pom || true
popd
if [[ $MVN_HTTP == 1 ]]; then
# Push JSC
echo "Pushing JSC ${JSC_VERSION} to the Maven repo"
pushd ${THIS_DIR}/../../node_modules/jsc-android/dist/org/webkit/android-jsc/${JSC_VERSION}
@@ -55,24 +38,6 @@ if [[ $MVN_HTTP == 1 ]]; then
-DpomFile=android-jsc-${JSC_VERSION}.pom || true
popd
else
# Push React Native, if necessary
if [[ ! -d ${MVN_REPO}/com/facebook/react/react-native/${RN_VERSION} ]]; then
echo "Pushing React Native ${RN_VERSION} to the Maven repo"
pushd ${THIS_DIR}/../../node_modules/react-native/android/com/facebook/react/react-native/${RN_VERSION}
cat react-native-${RN_VERSION}.pom \
| sed "s#<packaging>pom</packaging>#<packaging>aar</packaging>#" \
| sed "/<optional>/d" \
> react-native-${RN_VERSION}-fixed.pom
mvn \
deploy:deploy-file \
-Durl=${MVN_REPO} \
-Dfile=react-native-${RN_VERSION}-release.aar \
-Dpackaging=aar \
-DgeneratePom=false \
-DpomFile=react-native-${RN_VERSION}-fixed.pom
popd
fi
# Push JSC, if necessary
if [[ ! -d ${MVN_REPO}/org/webkit/android-jsc/${JSC_VERSION} ]]; then
echo "Pushing JSC ${JSC_VERSION} to the Maven repo"
@@ -97,8 +62,8 @@ fi
# Now build and publish the Jitsi Meet SDK and its dependencies
echo "Building and publishing the Jitsi Meet SDK"
pushd ${THIS_DIR}/../
./gradlew clean
./gradlew assembleRelease
./gradlew clean
./gradlew assembleRelease
./gradlew publish
popd

View File

@@ -30,6 +30,7 @@ android {
}
}
}
namespace 'org.jitsi.meet.sdk'
}
dependencies {
@@ -39,17 +40,17 @@ dependencies {
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
//noinspection GradleDynamicVersion
api 'com.facebook.react:react-native:+'
api "com.facebook.react:react-android:$rootProject.ext.rnVersion"
//noinspection GradleDynamicVersion
implementation 'org.webkit:android-jsc:+'
implementation 'com.facebook.fresco:animated-gif:2.5.0'
implementation 'com.dropbox.core:dropbox-core-sdk:4.0.1'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation 'com.jakewharton.timber:timber:5.0.1'
implementation 'com.squareup.duktape:duktape-android:1.3.0'
implementation 'com.google.code.gson:gson:2.8.6'
implementation "androidx.startup:startup-runtime:1.1.0"
implementation 'androidx.startup:startup-runtime:1.1.0'
// Only add these packages if we are NOT doing a LIBRE_BUILD
if (!rootProject.ext.libreBuild) {

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.jitsi.meet.sdk">
xmlns:tools="http://schemas.android.com/tools">
<!-- XXX ACCESS_NETWORK_STATE is required by WebRTC. -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
@@ -13,6 +12,10 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-feature
android:glEsVersion="0x00020000"
@@ -48,7 +51,7 @@
<service
android:name="org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService"
android:foregroundServiceType="mediaProjection" />
android:foregroundServiceType="mediaPlayback|microphone" />
<provider
android:name="com.reactnativecommunity.webview.RNCWebViewFileProvider"
@@ -66,4 +69,4 @@
</application>
</manifest>
</manifest>

View File

@@ -87,6 +87,7 @@ class AudioDeviceHandlerGeneric implements
devices.add(AudioModeModule.DEVICE_EARPIECE);
break;
case AudioDeviceInfo.TYPE_BUILTIN_SPEAKER:
case AudioDeviceInfo.TYPE_HDMI:
devices.add(AudioModeModule.DEVICE_SPEAKER);
break;
case AudioDeviceInfo.TYPE_WIRED_HEADPHONES:

View File

@@ -89,7 +89,9 @@ public class BroadcastEvent {
CHAT_MESSAGE_RECEIVED("org.jitsi.meet.CHAT_MESSAGE_RECEIVED"),
CHAT_TOGGLED("org.jitsi.meet.CHAT_TOGGLED"),
VIDEO_MUTED_CHANGED("org.jitsi.meet.VIDEO_MUTED_CHANGED"),
READY_TO_CLOSE("org.jitsi.meet.READY_TO_CLOSE");
READY_TO_CLOSE("org.jitsi.meet.READY_TO_CLOSE"),
TRANSCRIPTION_CHUNK_RECEIVED("org.jitsi.meet.TRANSCRIPTION_CHUNK_RECEIVED"),
CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED("org.jitsi.meet.CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED");
private static final String CONFERENCE_BLURRED_NAME = "CONFERENCE_BLURRED";
private static final String CONFERENCE_FOCUSED_NAME = "CONFERENCE_FOCUSED";
@@ -106,6 +108,8 @@ public class BroadcastEvent {
private static final String CHAT_TOGGLED_NAME = "CHAT_TOGGLED";
private static final String VIDEO_MUTED_CHANGED_NAME = "VIDEO_MUTED_CHANGED";
private static final String READY_TO_CLOSE_NAME = "READY_TO_CLOSE";
private static final String TRANSCRIPTION_CHUNK_RECEIVED_NAME = "TRANSCRIPTION_CHUNK_RECEIVED";
private static final String CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED_NAME = "CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED";
private final String action;
@@ -158,6 +162,10 @@ public class BroadcastEvent {
return VIDEO_MUTED_CHANGED;
case READY_TO_CLOSE_NAME:
return READY_TO_CLOSE;
case TRANSCRIPTION_CHUNK_RECEIVED_NAME:
return TRANSCRIPTION_CHUNK_RECEIVED;
case CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED_NAME:
return CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED;
}
return null;

View File

@@ -255,6 +255,14 @@ public class JitsiMeetActivity extends AppCompatActivity
finish();
}
// protected void onTranscriptionChunkReceived(HashMap<String, Object> extraData) {
// JitsiMeetLogger.i("Transcription chunk received: " + extraData);
// }
// protected void onCustomOverflowMenuButtonPressed(HashMap<String, Object> extraData) {
// JitsiMeetLogger.i("Custom overflow menu button pressed: " + extraData);
// }
// Activity lifecycle methods
//
@@ -286,8 +294,8 @@ public class JitsiMeetActivity extends AppCompatActivity
@Override
protected void onUserLeaveHint() {
if (this.jitsiView != null) {
this.jitsiView .enterPictureInPicture();
if (this.jitsiView != null) {
this.jitsiView.enterPictureInPicture();
}
}
@@ -338,6 +346,12 @@ public class JitsiMeetActivity extends AppCompatActivity
case READY_TO_CLOSE:
onReadyToClose();
break;
// case TRANSCRIPTION_CHUNK_RECEIVED:
// onTranscriptionChunkReceived(event.getData());
// break;
// case CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED:
// onCustomOverflowMenuButtonPressed(event.getData());
// break;
}
}
}

View File

@@ -21,6 +21,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import java.net.URL;
import java.util.ArrayList;
/**
@@ -229,6 +230,12 @@ public class JitsiMeetConferenceOptions implements Parcelable {
return this;
}
public Builder setConfigOverride(String config, ArrayList<Bundle> arrayList) {
this.config.putParcelableArrayList(config, arrayList);
return this;
}
/**
* Builds the immutable {@link JitsiMeetConferenceOptions} object with the configuration
* that this {@link Builder} instance specified.

View File

@@ -16,6 +16,9 @@
package org.jitsi.meet.sdk;
import static android.Manifest.permission.POST_NOTIFICATIONS;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.Service;
@@ -23,15 +26,20 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.facebook.react.modules.core.PermissionListener;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import java.util.HashMap;
import java.util.Random;
/**
* This class implements an Android {@link Service}, a foreground one specifically, and it's
@@ -49,10 +57,15 @@ public class JitsiMeetOngoingConferenceService extends Service
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver();
private static final int POST_NOTIFICATIONS_PERMISSION_REQUEST_CODE = (int) (Math.random() * Short.MAX_VALUE);
private boolean isAudioMuted;
public static void launch(Context context, HashMap<String, Object> extraData) {
OngoingNotification.createOngoingConferenceNotificationChannel();
static final int NOTIFICATION_ID = new Random().nextInt(99999) + 10000;
private static void doLaunch(Context context, HashMap<String, Object> extraData) {
OngoingNotification.createNotificationChannel((Activity) context);
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
@@ -80,6 +93,31 @@ public class JitsiMeetOngoingConferenceService extends Service
}
}
public static void launch(Context context, HashMap<String, Object> extraData) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
PermissionListener listener = new PermissionListener() {
@Override
public boolean onRequestPermissionsResult(int i, String[] strings, int[] results) {
if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
doLaunch(context, extraData);
}
return true;
}
};
JitsiMeetActivityDelegate.requestPermissions(
(Activity) context,
new String[]{POST_NOTIFICATIONS},
POST_NOTIFICATIONS_PERMISSION_REQUEST_CODE,
listener
);
} else {
doLaunch(context, extraData);
}
}
public static void abort(Context context) {
Intent intent = new Intent(context, JitsiMeetOngoingConferenceService.class);
context.stopService(intent);
@@ -89,13 +127,16 @@ public class JitsiMeetOngoingConferenceService extends Service
public void onCreate() {
super.onCreate();
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted);
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted, this);
if (notification == null) {
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
} else {
startForeground(OngoingNotification.NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " Service started");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
startForeground(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK | ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE);
} else {
startForeground(NOTIFICATION_ID, notification);
}
}
OngoingConferenceTracker.getInstance().addListener(this);
@@ -126,13 +167,13 @@ public class JitsiMeetOngoingConferenceService extends Service
if (isAudioMuted != null) {
this.isAudioMuted = Boolean.parseBoolean(intent.getStringExtra("muted"));
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted);
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted, this);
if (notification == null) {
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't start service, notification is null");
} else {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(OngoingNotification.NOTIFICATION_ID, notification);
notificationManager.notify(NOTIFICATION_ID, notification);
}
}
@@ -212,13 +253,13 @@ public class JitsiMeetOngoingConferenceService extends Service
@Override
public void onReceive(Context context, Intent intent) {
isAudioMuted = Boolean.parseBoolean(intent.getStringExtra("muted"));
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted);
Notification notification = OngoingNotification.buildOngoingConferenceNotification(isAudioMuted, context);
if (notification == null) {
stopSelf();
JitsiMeetLogger.w(TAG + " Couldn't update service, notification is null");
} else {
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(OngoingNotification.NOTIFICATION_ID, notification);
notificationManager.notify(NOTIFICATION_ID, notification);
JitsiMeetLogger.i(TAG + " audio muted changed");
}

View File

@@ -1,10 +0,0 @@
package org.jitsi.meet.sdk;
import java.util.ArrayList;
import java.util.List;
public class NotificationChannels {
static final String ONGOING_CONFERENCE_CHANNEL_ID = "JitsiOngoingConferenceChannel";
public static List<String> allIds = new ArrayList<String>() {{ add(ONGOING_CONFERENCE_CHANNEL_ID); }};
}

View File

@@ -16,22 +16,21 @@
package org.jitsi.meet.sdk;
import static org.jitsi.meet.sdk.NotificationChannels.ONGOING_CONFERENCE_CHANNEL_ID;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import android.app.Notification;
import android.app.Activity;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import androidx.annotation.StringRes;
import androidx.core.app.NotificationCompat;
import org.jitsi.meet.sdk.log.JitsiMeetLogger;
import android.os.Build;
import java.util.Random;
/**
* Helper class for creating the ongoing notification which is used with
@@ -41,15 +40,15 @@ import java.util.Random;
class OngoingNotification {
private static final String TAG = OngoingNotification.class.getSimpleName();
static final int NOTIFICATION_ID = new Random().nextInt(99999) + 10000;
private static long startingTime = 0;
static void createOngoingConferenceNotificationChannel() {
static final String ONGOING_CONFERENCE_CHANNEL_ID = "JitsiOngoingConferenceChannel";
static void createNotificationChannel(Activity context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return;
}
Context context = ReactInstanceManagerHolder.getCurrentActivity();
if (context == null) {
JitsiMeetLogger.w(TAG + " Cannot create notification channel: no current context");
return;
@@ -60,12 +59,13 @@ class OngoingNotification {
NotificationChannel channel
= notificationManager.getNotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID);
if (channel != null) {
// The channel was already created, no need to do it again.
return;
}
channel = new NotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID, context.getString(R.string.ongoing_notification_action_unmute), NotificationManager.IMPORTANCE_DEFAULT);
channel = new NotificationChannel(ONGOING_CONFERENCE_CHANNEL_ID, context.getString(R.string.ongoing_notification_channel_name), NotificationManager.IMPORTANCE_DEFAULT);
channel.enableLights(false);
channel.enableVibration(false);
channel.setShowBadge(false);
@@ -73,8 +73,8 @@ class OngoingNotification {
notificationManager.createNotificationChannel(channel);
}
static Notification buildOngoingConferenceNotification(boolean isMuted) {
Context context = ReactInstanceManagerHolder.getCurrentActivity();
static Notification buildOngoingConferenceNotification(Boolean isMuted, Context context) {
if (context == null) {
JitsiMeetLogger.w(TAG + " Cannot create notification: no current context");
return null;

View File

@@ -37,6 +37,7 @@ import com.oney.WebRTCModule.webrtcutils.H264AndSoftwareVideoEncoderFactory;
import org.devio.rn.splashscreen.SplashScreenModule;
import org.webrtc.EglBase;
import org.webrtc.Logging;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
@@ -240,6 +241,8 @@ class ReactInstanceManagerHolder {
options.videoDecoderFactory = new H264AndSoftwareVideoDecoderFactory(eglContext);
options.videoEncoderFactory = new H264AndSoftwareVideoEncoderFactory(eglContext);
options.enableMediaProjectionService = true;
// options.loggingSeverity = Logging.Severity.LS_INFO;
Log.d(TAG, "initializing RN with Activity");

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="ongoing_notification_title">Текущая встреча</string>
<string name="ongoing_notification_text">Нажмите, чтобы вернуться к встрече.</string>
<string name="ongoing_notification_action_hang_up">Отключиться</string>
<string name="ongoing_notification_action_mute">Отключить звук</string>
<string name="ongoing_notification_action_unmute">Включить звук</string>
<string name="ongoing_notification_channel_name">Ongoing Conference Notifications</string>
</resources>

View File

@@ -1,6 +1,8 @@
<resources>
<string name="app_name">Jitsi Meet SDK</string>
<string name="dropbox_app_key"></string>
<string name="media_projection_notification_title">Media projection</string>
<string name="media_projection_notification_text">You are currently sharing your screen.</string>
<string name="ongoing_notification_title">Ongoing meeting</string>
<string name="ongoing_notification_text">You are currently in a meeting. Tap to return to it.</string>
<string name="ongoing_notification_action_hang_up">Hang up</string>

View File

@@ -1,10 +1,9 @@
rootProject.name = 'jitsi-meet'
include ':app', ':sdk'
includeBuild('../node_modules/react-native-gradle-plugin')
include ':react-native-amplitude'
project(':react-native-amplitude').projectDir = new File(rootProject.projectDir, '../node_modules/@amplitude/react-native//android')
project(':react-native-amplitude').projectDir = new File(rootProject.projectDir, '../node_modules/@amplitude/react-native/android')
include ':react-native-async-storage'
project(':react-native-async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-async-storage/async-storage/android')
include ':react-native-background-timer'

View File

@@ -2,10 +2,8 @@
import { jitsiLocalStorage } from '@jitsi/js-utils';
import Logger from '@jitsi/logger';
import EventEmitter from 'events';
import { ENDPOINT_TEXT_MESSAGE_NAME } from './modules/API/constants';
import { AUDIO_ONLY_SCREEN_SHARE_NO_TRACK } from './modules/UI/UIErrors';
import mediaDeviceHelper from './modules/devices/mediaDeviceHelper';
import Recorder from './modules/recorder/Recorder';
import { createTaskQueue } from './modules/util/helpers';
@@ -18,7 +16,6 @@ import {
import { sendAnalytics } from './react/features/analytics/functions';
import {
maybeRedirectToWelcomePage,
redirectToStaticPage,
reloadWithStoredParams
} from './react/features/app/actions';
import { showModeratedNotification } from './react/features/av-moderation/actions';
@@ -38,6 +35,7 @@ import {
dataChannelClosed,
dataChannelOpened,
e2eRttChanged,
endpointMessageReceived,
kickedOut,
lockStateChanged,
nonParticipantMessageReceived,
@@ -55,7 +53,7 @@ import {
getConferenceOptions,
sendLocalParticipant
} from './react/features/base/conference/functions';
import { getReplaceParticipant } from './react/features/base/config/functions';
import { getReplaceParticipant, getSsrcRewritingFeatureFlag } from './react/features/base/config/functions';
import { connect } from './react/features/base/connection/actions.web';
import {
checkAndNotifyForNewDevice,
@@ -77,7 +75,6 @@ import {
JitsiConferenceEvents,
JitsiE2ePingEvents,
JitsiMediaDevicesEvents,
JitsiTrackErrors,
JitsiTrackEvents,
browser
} from './react/features/base/lib-jitsi-meet';
@@ -90,7 +87,7 @@ import {
setVideoMuted,
setVideoUnmutePermissions
} from './react/features/base/media/actions';
import { MEDIA_TYPE } from './react/features/base/media/constants';
import { MEDIA_TYPE, VIDEO_TYPE } from './react/features/base/media/constants';
import {
getStartWithAudioMuted,
getStartWithVideoMuted,
@@ -118,8 +115,11 @@ import {
import { updateSettings } from './react/features/base/settings/actions';
import {
addLocalTrack,
createInitialAVTracks,
destroyLocalTracks,
displayErrorsForCreateInitialLocalTracks,
replaceLocalTrack,
setGUMPendingStateOnFailedTracks,
toggleScreensharing as toggleScreensharingA,
trackAdded,
trackRemoved
@@ -162,16 +162,10 @@ import { isScreenAudioShared } from './react/features/screen-share/functions';
import { toggleScreenshotCaptureSummary } from './react/features/screenshot-capture/actions';
import { AudioMixerEffect } from './react/features/stream-effects/audio-mixer/AudioMixerEffect';
import { createRnnoiseProcessor } from './react/features/stream-effects/rnnoise';
import { endpointMessageReceived } from './react/features/subtitles/actions.any';
import { handleToggleVideoMuted } from './react/features/toolbox/actions.any';
import { muteLocal } from './react/features/video-menu/actions.any';
import { iAmVisitor } from './react/features/visitors/functions';
import UIEvents from './service/UI/UIEvents';
const logger = Logger.getLogger(__filename);
const eventEmitter = new EventEmitter();
let room;
/*
@@ -281,12 +275,6 @@ class ConferenceConnector {
switch (err) {
case JitsiConferenceErrors.NOT_ALLOWED_ERROR: {
// let's show some auth not allowed page
APP.store.dispatch(redirectToStaticPage('static/authError.html'));
break;
}
case JitsiConferenceErrors.RESERVATION_ERROR: {
const [ code, msg ] = params;
@@ -396,21 +384,6 @@ function disconnect() {
return APP.connection.disconnect().then(onDisconnected, onDisconnected);
}
/**
* Sets the GUM pending state for the tracks that have failed.
*
* NOTE: Some of the track that we will be setting to GUM pending state NONE may not have failed but they may have
* been requested. This won't be a problem because their current GUM pending state will be NONE anyway.
* @param {JitsiLocalTrack} tracks - The tracks that have been created.
* @returns {void}
*/
function setGUMPendingStateOnFailedTracks(tracks) {
const tracksTypes = tracks.map(track => track.getType());
const nonPendingTracks = [ MEDIA_TYPE.AUDIO, MEDIA_TYPE.VIDEO ].filter(type => !tracksTypes.includes(type));
APP.store.dispatch(gumPending(nonPendingTracks, IGUMPendingState.NONE));
}
export default {
/**
* Flag used to delay modification of the muted status of local media tracks
@@ -509,57 +482,12 @@ export default {
return [];
});
} else if (requestedAudio || requestedVideo) {
APP.store.dispatch(gumPending(initialDevices, IGUMPendingState.PENDING_UNMUTE));
tryCreateLocalTracks = createLocalTracksF({
tryCreateLocalTracks = APP.store.dispatch(createInitialAVTracks({
devices: initialDevices,
timeout,
firePermissionPromptIsShownEvent: true
})
.catch(async error => {
if (error.name === JitsiTrackErrors.TIMEOUT && !browser.isElectron()) {
errors.audioAndVideoError = error;
return [];
}
// Retry with separate gUM calls.
const gUMPromises = [];
const tracks = [];
if (requestedAudio) {
gUMPromises.push(createLocalTracksF(audioOptions));
}
if (requestedVideo) {
gUMPromises.push(createLocalTracksF({
devices: [ MEDIA_TYPE.VIDEO ],
timeout,
firePermissionPromptIsShownEvent: true
}));
}
const results = await Promise.allSettled(gUMPromises);
let errorMsg;
results.forEach((result, idx) => {
if (result.status === 'fulfilled') {
tracks.push(result.value[0]);
} else {
errorMsg = result.reason;
const isAudio = idx === 0;
logger.error(`${isAudio ? 'Audio' : 'Video'} track creation failed with error ${errorMsg}`);
if (isAudio) {
errors.audioOnlyError = errorMsg;
} else {
errors.videoOnlyError = errorMsg;
}
}
});
if (errors.audioOnlyError && errors.videoOnlyError) {
errors.audioAndVideoError = errorMsg;
}
})).then(({ tracks, errors: pErrors }) => {
Object.assign(errors, pErrors);
return tracks;
});
@@ -580,42 +508,6 @@ export default {
};
},
/**
* Displays error notifications according to the state carried by {@code errors} object returned
* by {@link createInitialLocalTracks}.
* @param {Object} errors - the errors (if any) returned by {@link createInitialLocalTracks}.
*
* @returns {void}
* @private
*/
_displayErrorsForCreateInitialLocalTracks(errors) {
const {
audioAndVideoError,
audioOnlyError,
screenSharingError,
videoOnlyError
} = errors;
// FIXME If there will be microphone error it will cover any screensharing dialog, but it's still better than in
// the reverse order where the screensharing dialog will sometimes be closing the microphone alert
// ($.prompt.close(); is called). Need to figure out dialogs chaining to fix that.
if (screenSharingError) {
this._handleScreenSharingError(screenSharingError);
}
if (audioAndVideoError || audioOnlyError) {
if (audioOnlyError || videoOnlyError) {
// If both requests for 'audio' + 'video' and 'audio' only failed, we assume that there are some
// problems with user's microphone and show corresponding dialog.
APP.store.dispatch(notifyMicError(audioOnlyError));
APP.store.dispatch(notifyCameraError(videoOnlyError));
} else {
// If request for 'audio' + 'video' failed, but request for 'audio' only was OK, we assume that we had
// problems with camera and show corresponding dialog.
APP.store.dispatch(notifyCameraError(audioAndVideoError));
}
}
},
startConference(tracks) {
tracks.forEach(track => {
if ((track.isAudioTrack() && this.isLocalAudioMuted())
@@ -679,6 +571,8 @@ export default {
startWithVideoMuted: getStartWithVideoMuted(state) || isUserInteractionRequiredForUnmute(state)
};
logger.debug(`Executed conference.init with roomName: ${roomName}`);
this.roomName = roomName;
try {
@@ -697,10 +591,6 @@ export default {
const handleInitialTracks = (options, tracks) => {
let localTracks = tracks;
// No local tracks are added when user joins as a visitor.
if (iAmVisitor(state)) {
return [];
}
if (options.startWithAudioMuted || room?.isStartAudioMuted()) {
// Always add the track on Safari because of a known issue where audio playout doesn't happen
// if the user joins audio and video muted, i.e., if there is no local media capture.
@@ -733,11 +623,11 @@ export default {
logger.debug('Prejoin screen no longer displayed at the time when tracks were created');
this._displayErrorsForCreateInitialLocalTracks(errors);
APP.store.dispatch(displayErrorsForCreateInitialLocalTracks(errors));
const tracks = handleInitialTracks(initialOptions, localTracks);
setGUMPendingStateOnFailedTracks(tracks);
setGUMPendingStateOnFailedTracks(tracks, APP.store.dispatch);
return this._setLocalAudioVideoStreams(tracks);
}
@@ -746,7 +636,7 @@ export default {
return Promise.all([
tryCreateLocalTracks.then(tr => {
this._displayErrorsForCreateInitialLocalTracks(errors);
APP.store.dispatch(displayErrorsForCreateInitialLocalTracks(errors));
return tr;
}).then(tr => {
@@ -754,7 +644,7 @@ export default {
const filteredTracks = handleInitialTracks(initialOptions, tr);
setGUMPendingStateOnFailedTracks(filteredTracks);
setGUMPendingStateOnFailedTracks(filteredTracks, APP.store.dispatch);
return filteredTracks;
}),
@@ -1235,7 +1125,7 @@ export default {
const { tryCreateLocalTracks, errors } = this.createInitialLocalTracks(options);
const localTracks = await tryCreateLocalTracks;
this._displayErrorsForCreateInitialLocalTracks(errors);
APP.store.dispatch(displayErrorsForCreateInitialLocalTracks(errors));
localTracks.forEach(track => {
if ((track.isAudioTrack() && this.isLocalAudioMuted())
|| (track.isVideoTrack() && this.isLocalVideoMuted())) {
@@ -1253,7 +1143,24 @@ export default {
room = APP.connection.initJitsiConference(APP.conference.roomName, this._getConferenceOptions());
// Filter out the tracks that are muted (except on Safari).
const tracks = browser.isWebKitBased() ? localTracks : localTracks.filter(track => !track.isMuted());
let tracks = localTracks;
if (!browser.isWebKitBased()) {
const mutedTrackTypes = [];
tracks = localTracks.filter(track => {
if (!track.isMuted()) {
return true;
}
if (track.getVideoType() !== VIDEO_TYPE.DESKTOP) {
mutedTrackTypes.push(track.getType());
}
return false;
});
APP.store.dispatch(gumPending(mutedTrackTypes, IGUMPendingState.NONE));
}
this._setLocalAudioVideoStreams(tracks);
this._room = room; // FIXME do not use this
@@ -1317,12 +1224,11 @@ export default {
* @returns {Promise}
*/
useVideoStream(newTrack) {
const state = APP.store.getState();
logger.debug(`useVideoStream: ${newTrack}`);
return new Promise((resolve, reject) => {
_replaceLocalVideoTrackQueue.enqueue(onFinish => {
const state = APP.store.getState();
const oldTrack = getLocalJitsiVideoTrack(state);
logger.debug(`useVideoStream: Replacing ${oldTrack} with ${newTrack}`);
@@ -1559,50 +1465,6 @@ export default {
});
},
/**
* Handles {@link JitsiTrackError} returned by the lib-jitsi-meet when
* trying to create screensharing track. It will either do nothing if
* the dialog was canceled on user's request or display an error if
* screensharing couldn't be started.
* @param {JitsiTrackError} error - The error returned by
* {@link _createDesktopTrack} Promise.
* @private
*/
_handleScreenSharingError(error) {
if (error.name === JitsiTrackErrors.SCREENSHARING_USER_CANCELED) {
return;
}
logger.error('failed to share local desktop', error);
// Handling:
// JitsiTrackErrors.CONSTRAINT_FAILED
// JitsiTrackErrors.PERMISSION_DENIED
// JitsiTrackErrors.SCREENSHARING_GENERIC_ERROR
// and any other
let descriptionKey;
let titleKey;
if (error.name === JitsiTrackErrors.PERMISSION_DENIED) {
descriptionKey = 'dialog.screenSharingPermissionDeniedError';
titleKey = 'dialog.screenSharingFailedTitle';
} else if (error.name === JitsiTrackErrors.CONSTRAINT_FAILED) {
descriptionKey = 'dialog.cameraConstraintFailedError';
titleKey = 'deviceError.cameraError';
} else if (error.name === JitsiTrackErrors.SCREENSHARING_GENERIC_ERROR) {
descriptionKey = 'dialog.screenSharingFailed';
titleKey = 'dialog.screenSharingFailedTitle';
} else if (error === AUDIO_ONLY_SCREEN_SHARE_NO_TRACK) {
descriptionKey = 'notify.screenShareNoAudio';
titleKey = 'notify.screenShareNoAudioTitle';
}
APP.store.dispatch(showErrorNotification({
descriptionKey,
titleKey
}, NOTIFICATION_TIMEOUT_TYPE.LONG));
},
/**
* Setup interaction between conference and UI.
*/
@@ -1775,7 +1637,11 @@ export default {
room.on(
JitsiConferenceEvents.CONFERENCE_CREATED_TIMESTAMP,
conferenceTimestamp => APP.store.dispatch(conferenceTimestampChanged(conferenceTimestamp)));
conferenceTimestamp => {
APP.store.dispatch(conferenceTimestampChanged(conferenceTimestamp));
APP.API.notifyConferenceCreatedTimestamp(conferenceTimestamp);
}
);
room.on(
JitsiConferenceEvents.DISPLAY_NAME_CHANGED,
@@ -1824,28 +1690,24 @@ export default {
room.on(
JitsiConferenceEvents.ENDPOINT_MESSAGE_RECEIVED,
(...args) => {
APP.store.dispatch(endpointMessageReceived(...args));
if (args && args.length >= 2) {
const [ sender, eventData ] = args;
if (eventData.name === ENDPOINT_TEXT_MESSAGE_NAME) {
APP.API.notifyEndpointTextMessageReceived({
senderInfo: {
jid: sender._jid,
id: sender._id
},
eventData
});
}
(participant, data) => {
APP.store.dispatch(endpointMessageReceived(participant, data));
if (data?.name === ENDPOINT_TEXT_MESSAGE_NAME) {
APP.API.notifyEndpointTextMessageReceived({
senderInfo: {
jid: participant.getJid(),
id: participant.getId()
},
eventData: data
});
}
});
room.on(
JitsiConferenceEvents.NON_PARTICIPANT_MESSAGE_RECEIVED,
(...args) => {
APP.store.dispatch(nonParticipantMessageReceived(...args));
APP.API.notifyNonParticipantMessageReceived(...args);
(id, data) => {
APP.store.dispatch(nonParticipantMessageReceived(id, data));
APP.API.notifyNonParticipantMessageReceived(id, data);
});
room.on(
@@ -1901,21 +1763,12 @@ export default {
JitsiE2ePingEvents.E2E_RTT_CHANGED,
(...args) => APP.store.dispatch(e2eRttChanged(...args)));
APP.UI.addListener(UIEvents.AUDIO_MUTED, muted => {
this.muteAudio(muted);
});
APP.UI.addListener(UIEvents.VIDEO_MUTED, (muted, showUI = false) => {
this.muteVideo(muted, showUI);
});
room.addCommandListener(this.commands.defaults.ETHERPAD,
({ value }) => {
APP.UI.initEtherpad(value);
}
);
APP.UI.addListener(UIEvents.EMAIL_CHANGED,
this.changeLocalEmail.bind(this));
room.addCommandListener(this.commands.defaults.EMAIL, (data, from) => {
APP.store.dispatch(participantUpdated({
conference: room,
@@ -1935,9 +1788,6 @@ export default {
}));
});
APP.UI.addListener(UIEvents.NICKNAME_CHANGED,
this.changeLocalDisplayName.bind(this));
room.on(
JitsiConferenceEvents.START_MUTED_POLICY_CHANGED,
({ audio, video }) => {
@@ -1984,123 +1834,146 @@ export default {
room.on(
JitsiConferenceEvents.DATA_CHANNEL_CLOSED, ev => {
APP.store.dispatch(dataChannelClosed(ev.code, ev.reason));
APP.store.dispatch(showWarningNotification({
descriptionKey: 'notify.dataChannelClosedDescription',
titleKey: 'notify.dataChannelClosed',
uid: DATA_CHANNEL_CLOSED_NOTIFICATION_ID
}, NOTIFICATION_TIMEOUT_TYPE.STICKY));
const state = APP.store.getState();
const { dataChannelOpen } = state['features/base/conference'];
const timeout = typeof dataChannelOpen === 'undefined' ? 15000 : 60000;
// Show the notification only when the data channel connection doesn't get re-established in 60 secs if
// it was already established at the beginning of the call, show it sooner otherwise. This notification
// can be confusing and alarming to users even when there is no significant impact to user experience
// if the the reconnect happens immediately.
setTimeout(() => {
const { dataChannelOpen: open } = APP.store.getState()['features/base/conference'];
if (!open) {
const descriptionKey = getSsrcRewritingFeatureFlag(state)
? 'notify.dataChannelClosedDescriptionWithAudio' : 'notify.dataChannelClosedDescription';
const titleKey = getSsrcRewritingFeatureFlag(state)
? 'notify.dataChannelClosedWithAudio' : 'notify.dataChannelClosed';
APP.store.dispatch(dataChannelClosed(ev.code, ev.reason));
APP.store.dispatch(showWarningNotification({
descriptionKey,
titleKey,
uid: DATA_CHANNEL_CLOSED_NOTIFICATION_ID
}, NOTIFICATION_TIMEOUT_TYPE.STICKY));
}
}, timeout);
}
);
},
// call hangup
APP.UI.addListener(UIEvents.HANGUP, () => {
this.hangup(true);
/**
* Handles audio device changes.
*
* @param {string} cameraDeviceId - The new device id.
* @returns {Promise}
*/
async onAudioDeviceChanged(micDeviceId) {
const audioWasMuted = this.isLocalAudioMuted();
// Disable noise suppression if it was enabled on the previous track.
await APP.store.dispatch(setNoiseSuppressionEnabled(false));
// 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 isDefaultMicSelected = micDeviceId === 'default';
const selectedDeviceId = isDefaultMicSelected
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
: micDeviceId;
logger.info(`Switching audio input device to ${selectedDeviceId}`);
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
createLocalTracksF({
devices: [ 'audio' ],
micDeviceId: selectedDeviceId
})
.then(([ stream ]) => {
// if audio was muted before changing the device, mute
// with the new device
if (audioWasMuted) {
return stream.mute()
.then(() => stream);
}
return stream;
})
.then(async stream => {
await this._maybeApplyAudioMixerEffect(stream);
return this.useAudioStream(stream);
})
.then(() => {
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
if (localAudio && isDefaultMicSelected) {
// 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.
localAudio._realDeviceId = localAudio.deviceId = 'default';
}
})
.catch(err => {
logger.error(`Failed to switch to selected audio input device ${selectedDeviceId}, error=${err}`);
APP.store.dispatch(notifyMicError(err));
});
},
APP.UI.addListener(
UIEvents.VIDEO_DEVICE_CHANGED,
cameraDeviceId => {
const videoWasMuted = this.isLocalVideoMuted();
const localVideoTrack = getLocalJitsiVideoTrack(APP.store.getState());
/**
* Handles video device changes.
*
* @param {string} cameraDeviceId - The new device id.
* @returns {void}
*/
onVideoDeviceChanged(cameraDeviceId) {
const videoWasMuted = this.isLocalVideoMuted();
const localVideoTrack = getLocalJitsiVideoTrack(APP.store.getState());
if (localVideoTrack?.getDeviceId() === cameraDeviceId) {
return;
}
if (localVideoTrack?.getDeviceId() === cameraDeviceId) {
return;
}
sendAnalytics(createDeviceChangedEvent('video', 'input'));
sendAnalytics(createDeviceChangedEvent('video', 'input'));
createLocalTracksF({
devices: [ 'video' ],
cameraDeviceId
})
.then(([ stream ]) => {
// if we are in audio only mode or video was muted before
// changing device, then mute
if (this.isAudioOnly() || videoWasMuted) {
return stream.mute()
.then(() => stream);
}
return stream;
})
.then(stream => {
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
return this.useVideoStream(stream);
})
.catch(error => {
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
return APP.store.dispatch(notifyCameraError(error));
});
createLocalTracksF({
devices: [ 'video' ],
cameraDeviceId
})
.then(([ stream ]) => {
// if we are in audio only mode or video was muted before
// changing device, then mute
if (this.isAudioOnly() || videoWasMuted) {
return stream.mute()
.then(() => stream);
}
);
APP.UI.addListener(
UIEvents.AUDIO_DEVICE_CHANGED,
async micDeviceId => {
const audioWasMuted = this.isLocalAudioMuted();
return stream;
})
.then(stream => {
logger.info(`Switching the local video device to ${cameraDeviceId}.`);
// Disable noise suppression if it was enabled on the previous track.
await APP.store.dispatch(setNoiseSuppressionEnabled(false));
return this.useVideoStream(stream);
})
.catch(error => {
logger.error(`Failed to switch to selected camera:${cameraDeviceId}, error:${error}`);
// 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 isDefaultMicSelected = micDeviceId === 'default';
const selectedDeviceId = isDefaultMicSelected
? getDefaultDeviceId(APP.store.getState(), 'audioInput')
: micDeviceId;
logger.info(`Switching audio input device to ${selectedDeviceId}`);
sendAnalytics(createDeviceChangedEvent('audio', 'input'));
createLocalTracksF({
devices: [ 'audio' ],
micDeviceId: selectedDeviceId
})
.then(([ stream ]) => {
// if audio was muted before changing the device, mute
// with the new device
if (audioWasMuted) {
return stream.mute()
.then(() => stream);
}
return stream;
})
.then(async stream => {
await this._maybeApplyAudioMixerEffect(stream);
return this.useAudioStream(stream);
})
.then(() => {
const localAudio = getLocalJitsiAudioTrack(APP.store.getState());
if (localAudio && isDefaultMicSelected) {
// 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.
localAudio._realDeviceId = localAudio.deviceId = 'default';
}
})
.catch(err => {
logger.error(`Failed to switch to selected audio input device ${selectedDeviceId}, error=${err}`);
APP.store.dispatch(notifyMicError(err));
});
}
);
APP.UI.addListener(UIEvents.TOGGLE_AUDIO_ONLY, () => {
// Immediately update the UI by having remote videos and the large video update themselves.
const displayedUserId = APP.UI.getLargeVideoID();
if (displayedUserId) {
APP.UI.updateLargeVideo(displayedUserId, true);
}
return APP.store.dispatch(notifyCameraError(error));
});
},
/**
* Handles audio only changes.
*/
onToggleAudioOnly() {
// Immediately update the UI by having remote videos and the large video update themselves.
const displayedUserId = APP.UI.getLargeVideoID();
if (displayedUserId) {
APP.UI.updateLargeVideo(displayedUserId, true);
}
},
/**
* Cleanups local conference on suspend.
*/
@@ -2393,8 +2266,6 @@ export default {
this.deviceChangeListener);
}
APP.UI.removeAllListeners();
let feedbackResultPromise = Promise.resolve({});
if (requestFeedback) {
@@ -2501,37 +2372,6 @@ export default {
room.sendEndpointMessage(to, payload);
},
/**
* Adds new listener.
* @param {String} eventName the name of the event
* @param {Function} listener the listener.
*/
addListener(eventName, listener) {
eventEmitter.addListener(eventName, listener);
},
/**
* Removes listener.
* @param {String} eventName the name of the event that triggers the
* listener
* @param {Function} listener the listener.
*/
removeListener(eventName, listener) {
eventEmitter.removeListener(eventName, listener);
},
/**
* Changes the display name for the local user
* @param nickname {string} the new display name
*/
changeLocalDisplayName(nickname = '') {
const formattedNickname = getNormalizedDisplayName(nickname);
APP.store.dispatch(updateSettings({
displayName: formattedNickname
}));
},
/**
* Callback invoked by the external api create or update a direct connection
* from the local client to an external client.

102
config.js
View File

@@ -59,6 +59,10 @@ var config = {
// https://github.com/jitsi/jitsi-meet/issues/7376
// focusUserJid: 'focus@auth.jitsi-meet.example.com',
// Option to send conference requests to jicofo over http (requires nginx rule for it)
// conferenceRequestUrl:
// 'https://<!--# echo var="http_host" default="jitsi-meet.example.com" -->/' + subdir + 'conference-request/v1',
// Options related to the bridge (colibri) data channel
bridgeChannel: {
// If the backend advertises multiple colibri websockets, this options allows
@@ -84,8 +88,8 @@ var config = {
// issues related to insertable streams.
// disableE2EE: false,
// Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users.
// mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users
// Enables the use of the codec selection API supported by the browsers .
// enableCodecSelectionAPI: false,
// P2P test mode disables automatic switching to P2P when there are 2
// participants in the conference.
@@ -97,6 +101,12 @@ var config = {
// Disables the auto-play behavior of *all* newly created video element.
// This is useful when the client runs on a host with limited resources.
// noAutoPlayVideo: false,
// Experiment: Whether to skip interim transcriptions.
// skipInterimTranscriptions: false,
// Dump transcripts to a <transcript> element for debugging.
// dumpTranscript: false,
},
// Disables moderator indicators.
@@ -111,6 +121,9 @@ var config = {
// Disables polls feature.
// disablePolls: false,
// Disables demote button from self-view
// disableSelfDemote: false,
// Disables self-view tile. (hides it from tile view and from filmstrip)
// disableSelfView: false,
@@ -318,6 +331,18 @@ var config = {
// 'https://jitsi-meet.example.com/subfolder/static/oauth.html',
// },
// configuration for all things recording related. Existing settings will be migrated here in the future.
// recordings: {
// // IF true (default) recording audio and video is selected by default in the recording dialog.
// // recordAudioAndVideo: true,
// // If true, shows a notification at the start of the meeting with a call to action button
// // to start recording (for users who can do so).
// // suggestRecording: true,
// // If true, shows a warning label in the prejoin screen to point out the possibility that
// // the call you're joining might be recorded.
// // showPrejoinWarning: true,
// },
// recordingService: {
// // When integrations like dropbox are enabled only that will be shown,
// // by enabling fileRecordingsServiceEnabled, we show both the integrations
@@ -378,7 +403,7 @@ var config = {
// DEPRECATED. Use transcription.preferredLanguage instead.
// preferredTranscribeLanguage: 'en-US',
// DEPRECATED. Use transcription.autoCaptionOnRecord instead.
// DEPRECATED. Use transcription.autoTranscribeOnRecord instead.
// autoCaptionOnRecord: false,
// Transcription options.
@@ -407,11 +432,8 @@ var config = {
// // ./src/react/features/transcribing/transcriber-langs.json.
// preferredLanguage: 'en-US',
// // Disable start transcription for all participants.
// disableStartForAll: false,
// // Enables automatic turning on captions when recording is started
// autoCaptionOnRecord: false,
// // Enables automatic turning on transcribing when recording is started
// autoTranscribeOnRecord: false,
// },
// Misc
@@ -439,12 +461,18 @@ var config = {
// // Provides a way to set the codec preference on desktop based endpoints.
// codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ],
//
// // Provides a way to set the codec for screenshare.
// screenshareCodec: 'AV1',
// mobileScreenshareCodec: 'VP8',
//
// // Codec specific settings for scalability modes and max bitrates.
// av1: {
// maxBitratesVideo: {
// low: 100000,
// standard: 300000,
// high: 1000000,
// fullHd: 2000000,
// ultraHd: 4000000,
// ssHigh: 2500000
// },
// scalabilityModeEnabled: true,
@@ -456,6 +484,8 @@ var config = {
// low: 200000,
// standard: 500000,
// high: 1500000,
// fullHd: 3000000,
// ultraHd: 6000000,
// ssHigh: 2500000
// },
// scalabilityModeEnabled: true
@@ -465,6 +495,8 @@ var config = {
// low: 200000,
// standard: 500000,
// high: 1500000,
// fullHd: 3000000,
// ultraHd: 6000000,
// ssHigh: 2500000
// },
// scalabilityModeEnabled: false
@@ -474,6 +506,8 @@ var config = {
// low: 100000,
// standard: 300000,
// high: 1200000,
// fullHd: 2500000,
// ultraHd: 5000000,
// ssHigh: 2500000
// },
// scalabilityModeEnabled: true,
@@ -634,7 +668,7 @@ var config = {
// // 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.
// // If set, landing page will redirect to this URL.
// customUrl: ''
// },
@@ -707,7 +741,7 @@ var config = {
// Configs for prejoin page.
// prejoinConfig: {
// // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
// // This replaces `prejoinPageEnabled`.
// // This replaces `prejoinPageEnabled`. Defaults to true.
// enabled: true,
// // Hides the participant name editing field in the prejoin screen.
// // If requireDisplayName is also set as true, a name should still be provided through
@@ -818,6 +852,22 @@ var config = {
// autoHideWhileChatIsOpen: false,
// },
// Overrides the buttons displayed in the main toolbar. Depending on the screen size the number of displayed
// buttons varies from 2 buttons to 8 buttons. Every array in the mainToolbarButtons array will replace the
// corresponding default buttons configuration matched by the number of buttons specified in the array. Arrays with
// more than 8 buttons or less then 2 buttons will be ignored. When there there isn't an override for a cerain
// configuration (for example when 3 buttons are displayed) the default jitsi-meet configuration will be used.
// The order of the buttons in the array is preserved.
// mainToolbarButtons: [
// [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'reactions', 'participants-pane', 'tileview' ],
// [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane', 'tileview' ],
// [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane' ],
// [ 'microphone', 'camera', 'desktop', 'chat', 'participants-pane' ],
// [ 'microphone', 'camera', 'chat', 'participants-pane' ],
// [ 'microphone', 'camera', 'chat' ],
// [ 'microphone', 'camera' ]
// ],
// Toolbar buttons which have their click/tap event exposed through the API on
// `toolbarButtonClicked`. Passing a string for the button key will
// prevent execution of the click/tap routine; passing an object with `key` and
@@ -1004,6 +1054,10 @@ var config = {
// Provides a way to set the codec preference on desktop based endpoints.
// codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ],
// Provides a way to set the codec for screenshare.
// screenshareCodec: 'AV1',
// mobileScreenshareCodec: 'VP8',
// How long we're going to wait, before going back to P2P after the 3rd
// participant has left the conference (to filter out page reload).
// backToP2PDelay: 5,
@@ -1191,9 +1245,17 @@ var config = {
// https://firebase.google.com/docs/dynamic-links/create-manually
// deeplinking: {
//
// // The desktop deeplinking config.
// // The desktop deeplinking config, disabled by default.
// desktop: {
// appName: 'Jitsi Meet'
// appName: 'Jitsi Meet',
// appScheme: 'jitsi-meet,
// download: {
// linux:
// 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet-x86_64.AppImage',
// macos: 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.dmg',
// windows: 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.exe'
// },
// enabled: false
// },
// // If true, any checks to handoff to another application will be prevented
// // and instead the app will continue to display in the current browser.
@@ -1276,6 +1338,8 @@ var config = {
// remoteVideoMenu: {
// // Whether the remote video context menu to be rendered or not.
// disabled: true,
// // If set to true the 'Switch to visitor' button will be disabled.
// disableDemote: true,
// // If set to true the 'Kick out' button will be disabled.
// disableKick: true,
// // If set to true the 'Grant moderator' button will be disabled.
@@ -1296,9 +1360,6 @@ var config = {
// If set to true all muting operations of remote participants will be disabled.
// disableRemoteMute: true,
// Enables support for lip-sync for this client (if the browser supports it).
// enableLipSync: false,
/**
External API url used to receive branding specific information.
If there is no url set or there are missing fields, the defaults are applied.
@@ -1367,6 +1428,8 @@ var config = {
// Options related to the participants pane.
// participantsPane: {
// // Enables feature
// enabled: true,
// // Hides the moderator settings tab.
// hideModeratorSettingsTab: false,
// // Hides the more actions button.
@@ -1392,9 +1455,6 @@ var config = {
// Only the default ones from will be available.
// disableAddingBackgroundImages: false,
// Disables using screensharing as virtual background.
// disableScreensharingVirtualBackground: false,
// Sets the background transparency level. '0' is fully transparent, '1' is opaque.
// backgroundAlpha: 1,
@@ -1421,7 +1481,6 @@ var config = {
// 'conference-timer',
// 'participants-count',
// 'e2ee',
// 'transcribing',
// 'video-quality',
// 'insecure-room',
// 'highlight-moment',
@@ -1719,7 +1778,7 @@ var config = {
// // to control the performance.
// userLimit: 25,
// // The url for more info about the whiteboard and its usage limitations.
// limitUrl: 'https://example.com/blog/whiteboard-limits,
// limitUrl: 'https://example.com/blog/whiteboard-limits',
// },
// The watchRTC initialize config params as described :
@@ -1755,6 +1814,9 @@ var config = {
// collectionInterval?: number;
// logGetStats?: boolean;
// },
// Hide login button on auth dialog, you may want to enable this if you are using JWT tokens to authenticate users
// hideLoginButton: true,
};
// Temporary backwards compatibility with old mobile clients.

View File

@@ -102,7 +102,7 @@
}
.usermessage {
color: red;
color: #ffffff;
padding: 0;
}
}

View File

@@ -104,7 +104,7 @@
}
}
.reactions-animations-container {
.reactions-animations-overflow-container {
position: absolute;
width: 20%;
bottom: 0;
@@ -117,6 +117,13 @@
position: relative;
}
.reactions-animations-container {
left: 50%;
bottom: 0px;
display: inline-block;
position: absolute;
}
$reactionCount: 20;
@function random($min, $max) {

View File

@@ -15,6 +15,10 @@
font-size: 14px;
margin-left: 16px;
max-width: 70%;
&-no-space {
margin-left: 0;
}
}
&.space-top {

View File

@@ -41,7 +41,6 @@
position: absolute;
top: 0;
height: 48px;
max-width: calc(100% - 24px);
}
@keyframes hideSubject {

View File

@@ -36,6 +36,7 @@ $flagsImagePath: "../images/";
@import 'modals/invite/info';
@import 'modals/screen-share/share-audio';
@import 'modals/screen-share/share-screen-warning';
@import 'modals/whiteboard';
@import 'videolayout_default';
@import 'subject';
@import 'popup_menu';

View File

@@ -0,0 +1,7 @@
.whiteboard {
.excalidraw-wrapper {
height: 100vh;
width: 100vw;
}
}

2
debian/control vendored
View File

@@ -3,7 +3,7 @@ Section: net
Priority: extra
Maintainer: Jitsi Team <dev@jitsi.org>
Uploaders: Emil Ivov <emcho@jitsi.org>, Damian Minkov <damencho@jitsi.org>
Build-Depends: debhelper (>= 8.0.0), nodejs
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.6
Homepage: https://jitsi.org/meet

View File

@@ -138,10 +138,8 @@ case "$1" in
PROSODY_CONFIG_PRESENT="false"
fi
USER_EXISTS_CHECK=`prosodyctl adduser jvb@$JICOFO_AUTH_DOMAIN < /dev/null || true`
if [ ! "$USER_EXISTS_CHECK" = "That user already exists" ]; then
prosodyctl register jvb $JICOFO_AUTH_DOMAIN $JVB_SECRET || true
fi
# creates the user if it does not exist
echo -e "$JVB_SECRET\n$JVB_SECRET" | prosodyctl adduser jvb@$JICOFO_AUTH_DOMAIN > /dev/null || true
# Check whether prosody config has the internal muc, if not add it,
# as we are migrating configs

View File

@@ -51,12 +51,10 @@ VirtualHost "jitmeet.example.com"
}
av_moderation_component = "avmoderation.jitmeet.example.com"
speakerstats_component = "speakerstats.jitmeet.example.com"
conference_duration_component = "conferenceduration.jitmeet.example.com"
end_conference_component = "endconference.jitmeet.example.com"
-- we need bosh
modules_enabled = {
"bosh";
"pubsub";
"ping"; -- Enable mod_ping
"speakerstats";
"external_services";
@@ -131,9 +129,6 @@ Component "focus.jitmeet.example.com" "client_proxy"
Component "speakerstats.jitmeet.example.com" "speakerstats_component"
muc_component = "conference.jitmeet.example.com"
Component "conferenceduration.jitmeet.example.com" "conference_duration_component"
muc_component = "conference.jitmeet.example.com"
Component "endconference.jitmeet.example.com" "end_conference"
muc_component = "conference.jitmeet.example.com"

View File

@@ -150,6 +150,15 @@ server {
# alias /usr/share/jitsi-meet/load-test/libs/$1;
#}
location ~ ^/conference-request/v1(\/.*)?$ {
proxy_pass http://127.0.0.1:8888/conference-request/v1$1;
add_header "Cache-Control" "no-cache, no-store";
add_header 'Access-Control-Allow-Origin' '*';
}
location ~ ^/([^/?&:'"]+)/conference-request/v1(\/.*)?$ {
rewrite ^/([^/?&:'"]+)/conference-request/v1(\/.*)?$ /conference-request/v1$2;
}
location ~ ^/([^/?&:'"]+)$ {
set $roomname "$1";
try_files $uri @root_path;

View File

@@ -38,9 +38,9 @@ apt install token-generator
mkdir -p /etc/jitsi/meet/jaas
VPASS_COOKIE=$(echo -n ${JAAS_KEY_ID}| cut -d/ -f1)
VPAAS_COOKIE=$(echo -n ${JAAS_KEY_ID}| cut -d/ -f1)
cp /usr/share/jitsi-meet-web-config/nginx-jaas.conf /etc/jitsi/meet/jaas
sed -i "s/jaas_magic_cookie/${VPASS_COOKIE}/g" /etc/jitsi/meet/jaas/nginx-jaas.conf
sed -i "s/jaas_magic_cookie/${VPAAS_COOKIE}/g" /etc/jitsi/meet/jaas/nginx-jaas.conf
cp /usr/share/jitsi-meet-web-config/8x8.vc-config.js /etc/jitsi/meet/jaas/
echo "set \$config_js_location /etc/jitsi/meet/jaas/8x8.vc-config.js;" >> /etc/jitsi/meet/jaas/jaas-vars

1
globals.d.ts vendored
View File

@@ -21,6 +21,7 @@ declare global {
JitsiMeetElectron?: any;
PressureObserver?: any;
PressureRecord?: any;
ReactNativeWebView?: any;
// selenium tests handler
_sharedVideoPlayer: any;
alwaysOnTop: { api: any };

3
globals.native.d.ts vendored
View File

@@ -19,6 +19,9 @@ interface IWindow {
location: ILocation;
PressureObserver?: any;
PressureRecord?: any;
ReactNativeWebView?: any;
TextDecoder?: any;
TextEncoder?: any;
self: any;
top: any;

2
ios/.xcode.env Normal file
View File

@@ -0,0 +1,2 @@
export NODE_BINARY=$(command -v node)
export ENTRY_FILE="${PROJECT_DIR}/../../index.ios.js"

View File

@@ -1,7 +1,11 @@
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
# Resolve react_native_pods.rb with node to allow for hoisting.
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native/scripts/react_native_pods.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
platform :ios, '12.4'
platform :ios, '13.4'
workspace 'jitsi-meet'
install! 'cocoapods', :deterministic_uuids => false
@@ -41,7 +45,7 @@ target 'JitsiMeetSDK' do
# Native pod dependencies
#
pod 'CocoaLumberjack', '3.7.2'
pod 'CocoaLumberjack', '3.7.4'
pod 'ObjectiveDropboxOfficial', '6.2.3'
end
@@ -66,11 +70,15 @@ target 'JitsiMeetSDKLite' do
# Native pod dependencies
#
pod 'CocoaLumberjack', '3.7.2'
pod 'CocoaLumberjack', '3.7.4'
end
post_install do |installer|
react_native_post_install(installer, :mac_catalyst_enabled => false)
react_native_post_install(
installer,
use_native_modules![:reactNativePath],
:mac_catalyst_enabled => false
)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
installer.pods_project.targets.each do |target|
# https://github.com/CocoaPods/CocoaPods/issues/11402
@@ -81,7 +89,7 @@ post_install do |installer|
end
target.build_configurations.each do |config|
config.build_settings['SUPPORTS_MACCATALYST'] = 'NO'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.4'
config.build_settings['OTHER_SWIFT_FLAGS'] = '$(inherited) -no-verify-emitted-module-interface'
end
end

View File

@@ -10,18 +10,18 @@ PODS:
- AppAuth/ExternalUserAgent (1.6.2):
- AppAuth/Core
- boost (1.76.0)
- CocoaLumberjack (3.7.2):
- CocoaLumberjack/Core (= 3.7.2)
- CocoaLumberjack/Core (3.7.2)
- CocoaLumberjack (3.7.4):
- CocoaLumberjack/Core (= 3.7.4)
- CocoaLumberjack/Core (3.7.4)
- DoubleConversion (1.1.6)
- FBLazyVector (0.70.14)
- FBReactNativeSpec (0.70.14):
- FBLazyVector (0.72.14)
- FBReactNativeSpec (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- RCTRequired (= 0.70.14)
- RCTTypeSafety (= 0.70.14)
- React-Core (= 0.70.14)
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- RCTRequired (= 0.72.14)
- RCTTypeSafety (= 0.72.14)
- React-Core (= 0.72.14)
- React-jsi (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- Firebase/Analytics (8.15.0):
- Firebase/Core
- Firebase/Core (8.15.0):
@@ -134,7 +134,7 @@ PODS:
- AppAuth/Core (~> 1.6)
- GTMSessionFetcher/Core (< 4.0, >= 1.5)
- GTMSessionFetcher/Core (3.2.0)
- JitsiWebRTC (118.0.0)
- JitsiWebRTC (124.0.0)
- libwebp (1.3.2):
- libwebp/demux (= 1.3.2)
- libwebp/mux (= 1.3.2)
@@ -167,203 +167,265 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCTRequired (0.70.14)
- RCTTypeSafety (0.70.14):
- FBLazyVector (= 0.70.14)
- RCTRequired (= 0.70.14)
- React-Core (= 0.70.14)
- React (0.70.14):
- React-Core (= 0.70.14)
- React-Core/DevSupport (= 0.70.14)
- React-Core/RCTWebSocket (= 0.70.14)
- React-RCTActionSheet (= 0.70.14)
- React-RCTAnimation (= 0.70.14)
- React-RCTBlob (= 0.70.14)
- React-RCTImage (= 0.70.14)
- React-RCTLinking (= 0.70.14)
- React-RCTNetwork (= 0.70.14)
- React-RCTSettings (= 0.70.14)
- React-RCTText (= 0.70.14)
- React-RCTVibration (= 0.70.14)
- React-bridging (0.70.14):
- RCT-Folly (= 2021.07.22.00)
- React-jsi (= 0.70.14)
- React-callinvoker (0.70.14)
- React-Codegen (0.70.14):
- FBReactNativeSpec (= 0.70.14)
- RCT-Folly (= 2021.07.22.00)
- RCTRequired (= 0.70.14)
- RCTTypeSafety (= 0.70.14)
- React-Core (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-Core (0.70.14):
- RCTRequired (0.72.14)
- RCTTypeSafety (0.72.14):
- FBLazyVector (= 0.72.14)
- RCTRequired (= 0.72.14)
- React-Core (= 0.72.14)
- React (0.72.14):
- React-Core (= 0.72.14)
- React-Core/DevSupport (= 0.72.14)
- React-Core/RCTWebSocket (= 0.72.14)
- React-RCTActionSheet (= 0.72.14)
- React-RCTAnimation (= 0.72.14)
- React-RCTBlob (= 0.72.14)
- React-RCTImage (= 0.72.14)
- React-RCTLinking (= 0.72.14)
- React-RCTNetwork (= 0.72.14)
- React-RCTSettings (= 0.72.14)
- React-RCTText (= 0.72.14)
- React-RCTVibration (= 0.72.14)
- React-callinvoker (0.72.14)
- React-Codegen (0.72.14):
- DoubleConversion
- FBReactNativeSpec
- glog
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- React-jsc
- React-jsi
- React-jsiexecutor
- React-NativeModulesApple
- React-rncore
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- React-Core (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default (= 0.70.14)
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-Core/Default (= 0.72.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/CoreModulesHeaders (0.70.14):
- React-Core/CoreModulesHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/Default (0.70.14):
- React-Core/Default (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/DevSupport (0.70.14):
- React-Core/DevSupport (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default (= 0.70.14)
- React-Core/RCTWebSocket (= 0.70.14)
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-jsinspector (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-Core/Default (= 0.72.14)
- React-Core/RCTWebSocket (= 0.72.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-jsinspector (= 0.72.14)
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTActionSheetHeaders (0.70.14):
- React-Core/RCTActionSheetHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTAnimationHeaders (0.70.14):
- React-Core/RCTAnimationHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTBlobHeaders (0.70.14):
- React-Core/RCTBlobHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTImageHeaders (0.70.14):
- React-Core/RCTImageHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTLinkingHeaders (0.70.14):
- React-Core/RCTLinkingHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTNetworkHeaders (0.70.14):
- React-Core/RCTNetworkHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTSettingsHeaders (0.70.14):
- React-Core/RCTSettingsHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTTextHeaders (0.70.14):
- React-Core/RCTTextHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTVibrationHeaders (0.70.14):
- React-Core/RCTVibrationHeaders (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-Core/RCTWebSocket (0.70.14):
- React-Core/RCTWebSocket (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-Core/Default (= 0.70.14)
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsiexecutor (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-Core/Default (= 0.72.14)
- React-cxxreact
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- React-CoreModules (0.70.14):
- React-CoreModules (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.70.14)
- React-Codegen (= 0.70.14)
- React-Core/CoreModulesHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- React-RCTImage (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-cxxreact (0.70.14):
- RCTTypeSafety (= 0.72.14)
- React-Codegen (= 0.72.14)
- React-Core/CoreModulesHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- React-RCTBlob
- React-RCTImage (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- SocketRocket (= 0.6.1)
- React-cxxreact (0.72.14):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.07.22.00)
- React-callinvoker (= 0.70.14)
- React-jsi (= 0.70.14)
- React-jsinspector (= 0.70.14)
- React-logger (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-runtimeexecutor (= 0.70.14)
- React-jsi (0.70.14):
- React-callinvoker (= 0.72.14)
- React-debug (= 0.72.14)
- React-jsi (= 0.72.14)
- React-jsinspector (= 0.72.14)
- React-logger (= 0.72.14)
- React-perflogger (= 0.72.14)
- React-runtimeexecutor (= 0.72.14)
- React-debug (0.72.14)
- React-jsc (0.72.14):
- React-jsc/Fabric (= 0.72.14)
- React-jsi (= 0.72.14)
- React-jsc/Fabric (0.72.14):
- React-jsi (= 0.72.14)
- React-jsi (0.72.14):
- boost (= 1.76.0)
- DoubleConversion
- glog
- RCT-Folly (= 2021.07.22.00)
- React-jsi/Default (= 0.70.14)
- React-jsi/Default (0.70.14):
- boost (= 1.76.0)
- React-jsiexecutor (0.72.14):
- DoubleConversion
- glog
- RCT-Folly (= 2021.07.22.00)
- React-jsiexecutor (0.70.14):
- DoubleConversion
- glog
- RCT-Folly (= 2021.07.22.00)
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-jsinspector (0.70.14)
- React-logger (0.70.14):
- React-cxxreact (= 0.72.14)
- React-jsi (= 0.72.14)
- React-perflogger (= 0.72.14)
- React-jsinspector (0.72.14)
- React-logger (0.72.14):
- glog
- react-native-background-timer (2.4.1):
- React-Core
@@ -385,83 +447,123 @@ PODS:
- React-Core
- react-native-splash-screen (3.3.0):
- React-Core
- react-native-video (6.0.0-alpha.7):
- react-native-video (6.0.0-alpha.11):
- React-Core
- react-native-video/Video (= 6.0.0-alpha.7)
- react-native-video/Video (6.0.0-alpha.7):
- react-native-video/Video (= 6.0.0-alpha.11)
- react-native-video/Video (6.0.0-alpha.11):
- PromisesSwift
- React-Core
- react-native-webrtc (118.0.0):
- JitsiWebRTC (~> 118.0.0)
- react-native-webrtc (124.0.1):
- JitsiWebRTC (~> 124.0.0)
- React-Core
- react-native-webview (13.5.1):
- react-native-webview (13.8.7):
- RCT-Folly (= 2021.07.22.00)
- React-Core
- React-perflogger (0.70.14)
- React-RCTActionSheet (0.70.14):
- React-Core/RCTActionSheetHeaders (= 0.70.14)
- React-RCTAnimation (0.70.14):
- React-NativeModulesApple (0.72.14):
- React-callinvoker
- React-Core
- React-cxxreact
- React-jsi
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- React-perflogger (0.72.14)
- React-RCTActionSheet (0.72.14):
- React-Core/RCTActionSheetHeaders (= 0.72.14)
- React-RCTAnimation (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.70.14)
- React-Codegen (= 0.70.14)
- React-Core/RCTAnimationHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-RCTBlob (0.70.14):
- RCTTypeSafety (= 0.72.14)
- React-Codegen (= 0.72.14)
- React-Core/RCTAnimationHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-RCTAppDelegate (0.72.14):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- React-CoreModules
- React-jsc
- React-NativeModulesApple
- React-RCTImage
- React-RCTNetwork
- React-runtimescheduler
- ReactCommon/turbomodule/core
- React-RCTBlob (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- React-Codegen (= 0.70.14)
- React-Core/RCTBlobHeaders (= 0.70.14)
- React-Core/RCTWebSocket (= 0.70.14)
- React-jsi (= 0.70.14)
- React-RCTNetwork (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-RCTImage (0.70.14):
- React-Codegen (= 0.72.14)
- React-Core/RCTBlobHeaders (= 0.72.14)
- React-Core/RCTWebSocket (= 0.72.14)
- React-jsi (= 0.72.14)
- React-RCTNetwork (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-RCTImage (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.70.14)
- React-Codegen (= 0.70.14)
- React-Core/RCTImageHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- React-RCTNetwork (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-RCTLinking (0.70.14):
- React-Codegen (= 0.70.14)
- React-Core/RCTLinkingHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-RCTNetwork (0.70.14):
- RCTTypeSafety (= 0.72.14)
- React-Codegen (= 0.72.14)
- React-Core/RCTImageHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- React-RCTNetwork (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-RCTLinking (0.72.14):
- React-Codegen (= 0.72.14)
- React-Core/RCTLinkingHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-RCTNetwork (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.70.14)
- React-Codegen (= 0.70.14)
- React-Core/RCTNetworkHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-RCTSettings (0.70.14):
- RCTTypeSafety (= 0.72.14)
- React-Codegen (= 0.72.14)
- React-Core/RCTNetworkHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-RCTSettings (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.70.14)
- React-Codegen (= 0.70.14)
- React-Core/RCTSettingsHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-RCTText (0.70.14):
- React-Core/RCTTextHeaders (= 0.70.14)
- React-RCTVibration (0.70.14):
- RCTTypeSafety (= 0.72.14)
- React-Codegen (= 0.72.14)
- React-Core/RCTSettingsHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-RCTText (0.72.14):
- React-Core/RCTTextHeaders (= 0.72.14)
- React-RCTVibration (0.72.14):
- RCT-Folly (= 2021.07.22.00)
- React-Codegen (= 0.70.14)
- React-Core/RCTVibrationHeaders (= 0.70.14)
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (= 0.70.14)
- React-runtimeexecutor (0.70.14):
- React-jsi (= 0.70.14)
- ReactCommon/turbomodule/core (0.70.14):
- React-Codegen (= 0.72.14)
- React-Core/RCTVibrationHeaders (= 0.72.14)
- React-jsi (= 0.72.14)
- ReactCommon/turbomodule/core (= 0.72.14)
- React-rncore (0.72.14)
- React-runtimeexecutor (0.72.14):
- React-jsi (= 0.72.14)
- React-runtimescheduler (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-callinvoker
- React-debug
- React-jsi
- React-runtimeexecutor
- React-utils (0.72.14):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-debug
- ReactCommon/turbomodule/bridging (0.72.14):
- DoubleConversion
- glog
- RCT-Folly (= 2021.07.22.00)
- React-bridging (= 0.70.14)
- React-callinvoker (= 0.70.14)
- React-Core (= 0.70.14)
- React-cxxreact (= 0.70.14)
- React-jsi (= 0.70.14)
- React-logger (= 0.70.14)
- React-perflogger (= 0.70.14)
- React-callinvoker (= 0.72.14)
- React-cxxreact (= 0.72.14)
- React-jsi (= 0.72.14)
- React-logger (= 0.72.14)
- React-perflogger (= 0.72.14)
- ReactCommon/turbomodule/core (0.72.14):
- DoubleConversion
- glog
- RCT-Folly (= 2021.07.22.00)
- React-callinvoker (= 0.72.14)
- React-cxxreact (= 0.72.14)
- React-jsi (= 0.72.14)
- React-logger (= 0.72.14)
- React-perflogger (= 0.72.14)
- RNCalendarEvents (2.2.0):
- React
- RNCAsyncStorage (1.19.4):
@@ -489,12 +591,13 @@ PODS:
- React-Core
- RNWatch (1.1.0):
- React
- SocketRocket (0.6.1)
- Yoga (1.14.0)
DEPENDENCIES:
- "amplitude-react-native (from `../node_modules/@amplitude/react-native`)"
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- CocoaLumberjack (= 3.7.2)
- CocoaLumberjack (= 3.7.4)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
@@ -508,13 +611,14 @@ DEPENDENCIES:
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`)
- React-bridging (from `../node_modules/react-native/ReactCommon`)
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Codegen (from `build/generated/ios`)
- React-Core (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
- React-jsc (from `../node_modules/react-native/ReactCommon/jsc`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
@@ -532,9 +636,11 @@ DEPENDENCIES:
- react-native-video (from `../node_modules/react-native-video`)
- react-native-webrtc (from `../node_modules/react-native-webrtc`)
- react-native-webview (from `../node_modules/react-native-webview`)
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
- React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
@@ -542,7 +648,10 @@ DEPENDENCIES:
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- React-rncore (from `../node_modules/react-native/ReactCommon`)
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
- React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
- React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- RNCalendarEvents (from `../node_modules/react-native-calendar-events`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
@@ -583,6 +692,7 @@ SPEC REPOS:
- ObjectiveDropboxOfficial
- PromisesObjC
- PromisesSwift
- SocketRocket
EXTERNAL SOURCES:
amplitude-react-native:
@@ -607,8 +717,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/Libraries/TypeSafety"
React:
:path: "../node_modules/react-native/"
React-bridging:
:path: "../node_modules/react-native/ReactCommon"
React-callinvoker:
:path: "../node_modules/react-native/ReactCommon/callinvoker"
React-Codegen:
@@ -619,6 +727,10 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/React/CoreModules"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
React-debug:
:path: "../node_modules/react-native/ReactCommon/react/debug"
React-jsc:
:path: "../node_modules/react-native/ReactCommon/jsc"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
@@ -653,12 +765,16 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-webrtc"
react-native-webview:
:path: "../node_modules/react-native-webview"
React-NativeModulesApple:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
React-perflogger:
:path: "../node_modules/react-native/ReactCommon/reactperflogger"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
React-RCTAppDelegate:
:path: "../node_modules/react-native/Libraries/AppDelegate"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
React-RCTImage:
@@ -673,8 +789,14 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
React-rncore:
:path: "../node_modules/react-native/ReactCommon"
React-runtimeexecutor:
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
React-runtimescheduler:
:path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
React-utils:
:path: "../node_modules/react-native/ReactCommon/react/utils"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
RNCalendarEvents:
@@ -706,11 +828,11 @@ SPEC CHECKSUMS:
Amplitude: 834c7332dfb9640a751e21c13efb22a07c0c12d4
amplitude-react-native: 0ed8cab759aafaa94961b82122bf56297da607ad
AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570
boost: a7c83b31436843459a1961bfd74b96033dc77234
CocoaLumberjack: b7e05132ff94f6ae4dfa9d5bce9141893a21d9da
boost: 7dcd2de282d72e344012f7d6564d024930a6a440
CocoaLumberjack: 543c79c114dadc3b1aba95641d8738b06b05b646
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
FBLazyVector: efad4471d02263013cfcb7a2f75de6ac7565692f
FBReactNativeSpec: 9cd9542bfdcc64e07bc649f809dd621876f78619
FBLazyVector: d98eefb42c5a64cb28ef966bd9096c76770d8f24
FBReactNativeSpec: 53d4eb00e8e1b6e987a3dd5906d2afe131cc54c8
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
FirebaseAnalytics: 7761cbadb00a717d8d0939363eb46041526474fa
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
@@ -728,26 +850,27 @@ SPEC CHECKSUMS:
GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34
GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae
GTMSessionFetcher: 41b9ef0b4c08a6db4b7eb51a21ae5183ec99a2c8
JitsiWebRTC: 3a41671ef65a51d7204323814b055a2690b921c7
JitsiWebRTC: 37fb2fb70d42cac58c06948527a5f9e1b3f50812
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
ObjectiveDropboxOfficial: fe206ce8c0bc49976c249d472db7fdbc53ebbd53
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265
RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda
RCTRequired: 6f42727926c2ef4836fc23169586f3d8d7f5a6e4
RCTTypeSafety: de9b538a8f20ae8c780bf38935f37f303b083fc8
React: 6604c02c25295898e9332c5dbe5d6f140be1e246
React-bridging: 55de000607b776d7c9b1333f38d1991ef25bf915
React-callinvoker: aa42aaefd72dbe9218c112fd503eff7ab782bd11
React-Codegen: 9e13e901ac4d4c46349c2db28b8774fa4274ec18
React-Core: b046bbaddd981014eaac20cef83de953a0405c1b
React-CoreModules: 4f0b29e5924b06a868983952265f77fed219f349
React-cxxreact: 818c9b06607f7972e95eeacb326389429c6a2d38
React-jsi: 0bf359879bc4c2c908204b1cd789b0a727a7a568
React-jsiexecutor: 03144eeee729e6a6cb8d7ff2d5653b67315f8f31
React-jsinspector: 6538dfb58970d1fb9d89c9c34e87713ece6c3cf0
React-logger: 4e9c3f888b4b5bb72a3ac7f1be7929e776181016
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
RCTRequired: 264adaca1d8b1a9c078761891898d4142df05313
RCTTypeSafety: 279a89da7058a69899778a127be73fab38b84499
React: 725b4e11f6ffb43d6f9b14e82879073623db4071
React-callinvoker: c2ba5e7e1187d0f37705b9dcaaf9bbf24d3fe9dc
React-Codegen: ca5bc760044f8472bf2a78053937307fd2021820
React-Core: d0796eb91058542db9e67fa9b1b11c66092de1ac
React-CoreModules: 57ea4ca8627be90b1a29916e0640d879e5684305
React-cxxreact: bbd34bad63b639dbb2c162cce518e8dba33cef57
React-debug: d360c17c84e514b9143e78217072183d4fcfb9c0
React-jsc: 6e1aae704b76f5626c00c87439fe405f34a6446e
React-jsi: 5fe75c2ff9eea1e90ed5437fcbafb64032383d52
React-jsiexecutor: a05da2c08edb1314cc51671c795fd4ed8440c335
React-jsinspector: 275d9f80210f15f0af9a4b7fd5683fab9738e28e
React-logger: 8da4802de77a0eb62512396ad6bb1769904c2f0e
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
react-native-get-random-values: dee677497c6a740b71e5612e8dbd83e7539ed5bb
react-native-keep-awake: afad8a51dfef9fe9655a6344771be32c8596d774
@@ -758,21 +881,26 @@ SPEC CHECKSUMS:
react-native-safe-area-context: 9697629f7b2cda43cf52169bb7e0767d330648c2
react-native-slider: 1cdd6ba29675df21f30544253bf7351d3c2d68c4
react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
react-native-video: 967eead48aaa42c25a9e1d65c3b1ab30762a88df
react-native-webrtc: c8d9ad3c152105b2720ca2851d04b49659551992
react-native-webview: 8baa0f5c6d336d6ba488e942bcadea5bf51f050a
React-perflogger: 74b2d33200b8c26440c2c39b87a4177d8404655f
React-RCTActionSheet: 3fdf6b3a85f2ea4b365b267efd9c82aaeb20fe33
React-RCTAnimation: 9659d5ed57ccbd129516486b2cce38e536841337
React-RCTBlob: 49ac98cfd9476af046814a2c9126fca1bf0cbe75
React-RCTImage: b4d2d7d14ad9389bd645bc2daa706ccaead3fc44
React-RCTLinking: ebf051ed2532652e5290e4fb7c017c42e4e1f0d2
React-RCTNetwork: 1636df1f91d4c5ad8815ef93f695931af1c0a842
React-RCTSettings: f6306171fd5d3cd8c5fa0b1803da599784ead5c5
React-RCTText: 53c106b5fb9e263c2f1e5d6b0733049989d6c428
React-RCTVibration: d293c50100c0927379e6a80fab86a219e08792ae
React-runtimeexecutor: 0d01d03375f996484fcc231ccca3fe604a4a5652
ReactCommon: dce64235f8548b6e4758647310145f5356c8d0cb
react-native-video: 472b7c366eaaaa0207e546d9a50410df89790bcf
react-native-webrtc: 8b9b90ab7ad5b77811a22a3c3ac1fe2a64737e29
react-native-webview: 95464c1249cae28186d3b7c6f494c6a124b16160
React-NativeModulesApple: 9b58b8f5c1d8ea68d0a63f569a9e786d01281ea6
React-perflogger: daabc494c6328efc1784a4b49b8b74fca305d11c
React-RCTActionSheet: 0e0e64a7cf6c07f1de73d1f0a92d26a70262b256
React-RCTAnimation: faef65b19e73029c4828167985b0a7c01c62756d
React-RCTAppDelegate: 1c4c94324d5dee57c79f4b68dc709b1c290068c1
React-RCTBlob: df6a165ecd97eb5a92d659aa91866ee9ee50bd5e
React-RCTImage: 15e211cbb629210ab9c1fa37e07e7100362b12ed
React-RCTLinking: 50d5faf19b02541cefb78ee5d505029283c8ef95
React-RCTNetwork: dfa9fb4ad2ae459b9193a14204b1d9da907d15a7
React-RCTSettings: 37611fa97d44a9c5a7ea844cfb953d3513f7ace0
React-RCTText: 39ed334f64484d07b85a8159cf117814ff069ff6
React-RCTVibration: 62462803b5fe0842e0be6d9ef86dd74e0df4a614
React-rncore: 25ad3a3c1e0f4edf77913b9af3af9f497b7f99a5
React-runtimeexecutor: e5c2f0a1493d72c61b97465ccfedc339157b3179
React-runtimescheduler: 5b3b73748021c7349f06fcd24181df17860b8fb6
React-utils: 22a77b05da25ce49c744faa82e73856dcae1734e
ReactCommon: 07937a01c967f2023d6f2d07114315f099b4b436
RNCalendarEvents: 7e65eb4a94f53c1744d1e275f7fafcfaa619f7a3
RNCAsyncStorage: 3a8f7145d17cdd9f88e7b77666c94a09e4f759c8
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
@@ -784,8 +912,9 @@ SPEC CHECKSUMS:
RNSound: 6c156f925295bdc83e8e422e7d8b38d33bc71852
RNSVG: ed492aaf3af9ca01bc945f7a149d76d62e73ec82
RNWatch: fd30ca40a5b5ef58dcbc195638e68219bc455236
Yoga: 56413d530d1808044600320ced5baa883acedc44
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
Yoga: c32e0be1a17f8f1f0e633a3122f7666441f52c82
PODFILE CHECKSUM: c5053669414ca81c03ca4548249b11fe53a13060
PODFILE CHECKSUM: 64167bdb1a26f5768c6bfc81ef60633b31abf8e5
COCOAPODS: 1.14.3
COCOAPODS: 1.15.2

37
ios/PrivacyInfo.xcprivacy Normal file
View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
</dict>
</plist>

View File

@@ -151,6 +151,7 @@
4EB0603A260E09D000F524C5 /* DarwinNotificationCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DarwinNotificationCenter.swift; sourceTree = "<group>"; };
4EB0603B260E09D000F524C5 /* SampleUploader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleUploader.swift; sourceTree = "<group>"; };
4EC49B8625BED71300E76218 /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
756FCE06C08D9B947653C98A /* Pods-JitsiMeet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeet.debug.xcconfig"; path = "Target Support Files/Pods-JitsiMeet/Pods-JitsiMeet.debug.xcconfig"; sourceTree = "<group>"; };
B3B083EB1D4955FF0069CEE7 /* app.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = app.entitlements; sourceTree = "<group>"; };
D6152FF9E9F7B0E86F70A21D /* libPods-JitsiMeet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JitsiMeet.a"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -293,6 +294,7 @@
0BEA5C351F7B8F73000D0AB4 /* WatchKit extension */,
4EB06025260E026600F524C5 /* JitsiMeetBroadcast Extension */,
CDD71F5E1157E9F283DF92A8 /* Pods */,
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */,
);
indentWidth = 2;
sourceTree = "<group>";
@@ -367,13 +369,12 @@
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
0B26BE701EC5BC3C00EEFB41 /* Embed Frameworks */,
0BB7DA181EC9E695007AAE98 /* Adjust ATS */,
DEF4813D224925A2002AD03A /* Copy Google Plist file */,
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */,
DE4F6D6E22005C0400DE699E /* Setup Dropbox */,
4E81688528A408E600F8FA9E /* Update App Entitlements */,
0BEA5C491F7B8F73000D0AB4 /* Embed Watch Content */,
4EC49B9025BED71300E76218 /* Embed App Extensions */,
4E81688528A408E600F8FA9E /* Update App Entitlements */,
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */,
0BB7DA181EC9E695007AAE98 /* Adjust ATS */,
DE4F6D6E22005C0400DE699E /* Setup Dropbox */,
);
buildRules = (
);
@@ -411,7 +412,7 @@
attributes = {
LastSwiftUpdateCheck = 1240;
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = Facebook;
ORGANIZATIONNAME = Jitsi;
TargetAttributes = {
0BEA5C241F7B8F73000D0AB4 = {
CreatedOnToolsVersion = 9.0;
@@ -499,10 +500,12 @@
/* Begin PBXShellScriptBuildPhase section */
0BB7DA181EC9E695007AAE98 /* Adjust ATS */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH",
);
name = "Adjust ATS";
outputPaths = (
@@ -513,6 +516,7 @@
};
0BBA83C41EC9F7600075A103 /* Run React packager */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -527,12 +531,14 @@
};
4E81688528A408E600F8FA9E /* Update App Entitlements */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"$PROJECT_DIR/app.entitlements",
);
name = "Update App Entitlements";
outputFileListPaths = (
@@ -567,12 +573,14 @@
};
DE11877A21EE09640078D059 /* Setup Google reverse URL handler */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH",
);
name = "Setup Google reverse URL handler";
outputFileListPaths = (
@@ -581,16 +589,18 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nGOOGLE_PLIST=\"$PROJECT_DIR/GoogleService-Info.plist\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n REVERSED_CLIENT_ID=$(/usr/libexec/PlistBuddy -c \"Print :REVERSED_CLIENT_ID:\" $GOOGLE_PLIST)\n /usr/libexec/PlistBuddy -c \"Set :CFBundleURLTypes:1:CFBundleURLSchemes:0 $REVERSED_CLIENT_ID\" $INFO_PLIST\nfi\n";
shellScript = "GOOGLE_PLIST_NAME=\"GoogleService-Info.plist\"\nGOOGLE_PLIST=\"$PROJECT_DIR/$GOOGLE_PLIST_NAME\"\nBUILD_APP_DIR=\"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app\"\nINFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n cp $GOOGLE_PLIST \"$BUILD_APP_DIR/$GOOGLE_PLIST_NAME\"\n REVERSED_CLIENT_ID=$(/usr/libexec/PlistBuddy -c \"Print :REVERSED_CLIENT_ID:\" $GOOGLE_PLIST)\n /usr/libexec/PlistBuddy -c \"Set :CFBundleURLTypes:1:CFBundleURLSchemes:0 $REVERSED_CLIENT_ID\" $INFO_PLIST\nfi\n";
};
DE4F6D6E22005C0400DE699E /* Setup Dropbox */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH",
);
name = "Setup Dropbox";
outputFileListPaths = (
@@ -601,24 +611,6 @@
shellPath = /bin/sh;
shellScript = "INFO_PLIST=\"$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH\"\nDROPBOX_KEY_FILE=\"$PROJECT_DIR/dropbox.key\"\n\nif [[ -f $DROPBOX_KEY_FILE ]]; then\n /usr/libexec/PlistBuddy -c \"Delete :LSApplicationQueriesSchemes\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:0 string 'dbapi-2'\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :LSApplicationQueriesSchemes:1 string 'dbapi-8-emm'\" $INFO_PLIST\n\n DROPBOX_KEY=$(head -n 1 $DROPBOX_KEY_FILE)\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLName string dropbox\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes array\" $INFO_PLIST\n /usr/libexec/PlistBuddy -c \"Add :CFBundleURLTypes:2:CFBundleURLSchemes:0 string $DROPBOX_KEY\" $INFO_PLIST\nfi\n";
};
DEF4813D224925A2002AD03A /* Copy Google Plist file */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Copy Google Plist file";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "GOOGLE_PLIST_NAME=\"GoogleService-Info.plist\"\nGOOGLE_PLIST=\"$PROJECT_DIR/$GOOGLE_PLIST_NAME\"\nBUILD_APP_DIR=\"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app\"\n\nif [[ -f $GOOGLE_PLIST ]]; then\n cp $GOOGLE_PLIST \"$BUILD_APP_DIR/$GOOGLE_PLIST_NAME\"\nfi\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -1024,13 +1016,12 @@
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -1086,12 +1077,11 @@
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;

View File

@@ -35,7 +35,6 @@
jitsiMeet.defaultConferenceOptions = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
[builder setFeatureFlag:@"welcomepage.enabled" withBoolean:YES];
[builder setFeatureFlag:@"resolution" withValue:@(360)];
[builder setFeatureFlag:@"ios.screensharing.enabled" withBoolean:YES];
[builder setFeatureFlag:@"ios.recording.enabled" withBoolean:YES];
}];

View File

@@ -88,6 +88,10 @@
[self _onJitsiMeetViewDelegateEvent:@"CONFERENCE_WILL_JOIN" withData:data];
}
// - (void)customOverflowMenuButtonPressed:(NSDictionary *)data {
// [self _onJitsiMeetViewDelegateEvent:@"CUSTOM_OVERFLOW_MENU_BUTTON_PRESSED" withData:data];
// }
#if 0
- (void)enterPictureInPicture:(NSDictionary *)data {
[self _onJitsiMeetViewDelegateEvent:@"ENTER_PICTURE_IN_PICTURE" withData:data];
@@ -98,6 +102,10 @@
[self _onJitsiMeetViewDelegateEvent:@"READY_TO_CLOSE" withData:data];
}
// - (void)transcriptionChunkReceived:(NSDictionary *)data {
// [self _onJitsiMeetViewDelegateEvent:@"TRANSCRIPTION_CHUNK_RECEIVED" withData:data];
// }
- (void)participantJoined:(NSDictionary *)data {
NSLog(@"%@%@", @"Participant joined: ", data[@"participantId"]);
}
@@ -130,6 +138,7 @@
NSLog(@"%@%@", @"Video muted changed: ", data[@"muted"]);
}
#pragma mark - Helpers
- (void)terminate {

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>development</string>
<key>signingStyle</key>
<string>automatic</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>YOUR_TEAM_ID</string>
<key>thinning</key>
<string>&lt;none&gt;</string>
</dict>
</plist>

View File

@@ -1,103 +0,0 @@
#!/bin/bash
set -e
# Mandatory arguments with no default values provided:
# PR_REPO_SLUG - the Github name of the repo to be merged into the origin/master
# PR_BRANCH - the branch to be merged, if set to "master" no merge will happen
# IPA_DEPLOY_LOCATION - the location understandable by the "scp" command
# executed at the end of the script to deploy the output .ipa file
# LIB_JITSI_MEET_PKG (optional) - the npm package for lib-jitsi-meet which will
# be put in place of the current version in the package.json file.
#
# Other than that the script requires the following env variables to be set:
#
# DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy
# the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD.
# ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used
# in the script.
# IOS_TEAM_ID - the team ID inserted into build-ipa-.plist.template file in
# place of "YOUR_TEAM_ID".
function echoAndExit1() {
echo $1
exit 1
}
if [ -z $PR_REPO_SLUG ]; then
echoAndExit1 "No PR_REPO_SLUG defined"
fi
if [ -z $PR_BRANCH ]; then
echoAndExit1 "No PR_BRANCH defined"
fi
if [ -z $IPA_DEPLOY_LOCATION ]; then
echoAndExit1 "No IPA_DEPLOY_LOCATION defined"
fi
echo "PR_REPO_SLUG=${PR_REPO_SLUG} PR_BRANCH=${PR_BRANCH}"
# do the merge and git log
if [ $PR_BRANCH != "master" ]; then
echo "Will merge ${PR_REPO_SLUG}/${PR_BRANCH} into master"
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin master
git checkout master
git pull https://github.com/${PR_REPO_SLUG}.git $PR_BRANCH --no-edit
fi
# Link this lib-jitsi-meet checkout in jitsi-meet through the package.json
if [ ! -z ${LIB_JITSI_MEET_PKG} ];
then
echo "Adjusting lib-jitsi-meet package in package.json to ${LIB_JITSI_MEET_PKG}"
# escape for the sed
LIB_JITSI_MEET_PKG=$(echo $LIB_JITSI_MEET_PKG | sed -e 's/\\/\\\\/g; s/\//\\\//g; s/&/\\\&/g')
sed -i.bak -e "s/\"lib-jitsi-meet.*/\"lib-jitsi-meet\"\: \"${LIB_JITSI_MEET_PKG}\",/g" package.json
echo "Package.json lib-jitsi-meet line:"
grep lib-jitsi-meet package.json
else
echo "LIB_JITSI_MEET_PKG var not set - will not modify the package.json"
fi
git log -20 --graph --pretty=format':%C(yellow)%h%Cblue%d%Creset %s %C(white) %an, %ar%Creset'
# certificates
CERT_DIR="ios/ci/certs"
mkdir -p $CERT_DIR
curl -L -o ${CERT_DIR}/id_rsa.enc ${DEPLOY_SSH_CERT_URL}
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/id_rsa.enc -d -a -out ${CERT_DIR}/id_rsa
chmod 0600 ${CERT_DIR}/id_rsa
ssh-add ${CERT_DIR}/id_rsa
npm install
# Ever since the Apple Watch app has been added the bitcode for WebRTC needs to be downloaded in order to build successfully
./node_modules/react-native-webrtc/tools/downloadBitcode.sh
cd ios
pod install --repo-update --no-ansi
cd ..
mkdir -p /tmp/jitsi-meet/
xcodebuild archive -quiet -workspace ios/jitsi-meet.xcworkspace -scheme jitsi-meet -configuration Release -archivePath /tmp/jitsi-meet/jitsi-meet.xcarchive
sed -e "s/YOUR_TEAM_ID/${IOS_TEAM_ID}/g" ios/ci/build-ipa.plist.template > ios/ci/build-ipa.plist
IPA_EXPORT_DIR=/tmp/jitsi-meet/jitsi-meet-ipa
xcodebuild -quiet -exportArchive -archivePath /tmp/jitsi-meet/jitsi-meet.xcarchive -exportPath $IPA_EXPORT_DIR -exportOptionsPlist ios/ci/build-ipa.plist
echo "Will try deploy the .ipa to: ${IPA_DEPLOY_LOCATION}"
if [ ! -z ${SCP_PROXY_HOST} ];
then
scp -o ProxyCommand="ssh -t -A -l %r ${SCP_PROXY_HOST} -o \"StrictHostKeyChecking no\" -o \"BatchMode yes\" -W %h:%p" -o StrictHostKeyChecking=no -o LogLevel=DEBUG "${IPA_EXPORT_DIR}/jitsi-meet.ipa" "${IPA_DEPLOY_LOCATION}"
else
scp -o StrictHostKeyChecking=no -o LogLevel=DEBUG "${IPA_EXPORT_DIR}/jitsi-meet.ipa" "${IPA_DEPLOY_LOCATION}"
fi
rm -r /tmp/jitsi-meet/
rm -r $CERT_DIR

View File

@@ -1,100 +0,0 @@
# The script is based on tutorial written by Antonis Tsakiridis published at:
# https://medium.com/@atsakiridis/continuous-deployment-for-ios-using-travis-ci-55dcea342d9
#
# APPLE_CERT_URL - the URL pointing to Apple certificate (set to
# http://developer.apple.com/certificationauthority/AppleWWDRCA.cer by default)
# DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy
# the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD.
# ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used
# in the script.
# IOS_DEV_CERT_KEY_URL - URL pointing to provisioning profile certificate key
# file (development-key.p12.enc from the tutorial) encrypted with the
# $ENCRYPTION_PASSWORD.
# IOS_DEV_CERT_URL - URL pointing to provisioning profile certificate file
# (development-cert.cer.enc from the tutorial) encrypted with the
# $ENCRYPTION_PASSWORD.
# IOS_DEV_PROV_PROFILE_URL - URL pointing to provisioning profile file
# (profile-development-olympus.mobileprovision.enc from the tutorial) encrypted
# IOS_DEV_WATCH_PROV_PROFILE_URL - URL pointing to watch app provisioning profile file(encrypted).
# with the $ENCRYPTION_PASSWORD.
# IOS_SIGNING_CERT_PASSWORD - the password to the provisioning profile
# certificate key (used to open development-key.p12 from the tutorial).
function echoAndExit1() {
echo $1
exit 1
}
CERT_DIR=$1
if [ -z $CERT_DIR ]; then
echoAndExit1 "First argument must be certificates directory"
fi
if [ -z $APPLE_CERT_URL ]; then
APPLE_CERT_URL="http://developer.apple.com/certificationauthority/AppleWWDRCA.cer"
fi
if [ -z $DEPLOY_SSH_CERT_URL ]; then
echoAndExit1 "DEPLOY_SSH_CERT_URL env var is not defined"
fi
if [ -z $ENCRYPTION_PASSWORD ]; then
echoAndExit1 "ENCRYPTION_PASSWORD env var is not defined"
fi
if [ -z $IOS_DEV_CERT_KEY_URL ]; then
echoAndExit1 "IOS_DEV_CERT_KEY_URL env var is not defined"
fi
if [ -z $IOS_DEV_CERT_URL ]; then
echoAndExit1 "IOS_DEV_CERT_URL env var is not defined"
fi
if [ -z $IOS_DEV_PROV_PROFILE_URL ]; then
echoAndExit1 "IOS_DEV_PROV_PROFILE_URL env var is not defined"
fi
if [ -z $IOS_DEV_WATCH_PROV_PROFILE_URL ]; then
echoAndExit1 "IOS_DEV_WATCH_PROV_PROFILE_URL env var is not defined"
fi
if [ -z $IOS_SIGNING_CERT_PASSWORD ]; then
echoAndExit1 "IOS_SIGNING_CERT_PASSWORD env var is not defined"
fi
# certificates
curl -L -o ${CERT_DIR}/AppleWWDRCA.cer 'http://developer.apple.com/certificationauthority/AppleWWDRCA.cer'
curl -L -o ${CERT_DIR}/dev-cert.cer.enc ${IOS_DEV_CERT_URL}
curl -L -o ${CERT_DIR}/dev-key.p12.enc ${IOS_DEV_CERT_KEY_URL}
curl -L -o ${CERT_DIR}/dev-profile.mobileprovision.enc ${IOS_DEV_PROV_PROFILE_URL}
curl -L -o ${CERT_DIR}/dev-watch-profile.mobileprovision.enc ${IOS_DEV_WATCH_PROV_PROFILE_URL}
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-cert.cer.enc -d -a -out ${CERT_DIR}/dev-cert.cer
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-key.p12.enc -d -a -out ${CERT_DIR}/dev-key.p12
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-profile.mobileprovision
openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-watch-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-watch-profile.mobileprovision
security create-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain
security default-keychain -s ios-build.keychain
security unlock-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain
security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain
echo "importing Apple cert"
security import ${CERT_DIR}/AppleWWDRCA.cer -k ios-build.keychain -A
echo "importing dev-cert.cer"
security import ${CERT_DIR}/dev-cert.cer -k ios-build.keychain -A
echo "importing dev-key.p12"
security import ${CERT_DIR}/dev-key.p12 -k ios-build.keychain -P $IOS_SIGNING_CERT_PASSWORD -A
echo "will set-key-partition-list"
# Fix for OS X Sierra that hangs in the codesign step
security set-key-partition-list -S apple-tool:,apple: -s -k $ENCRYPTION_PASSWORD ios-build.keychain > /dev/null
echo "done set-key-partition-list"
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp "${CERT_DIR}/dev-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
cp "${CERT_DIR}/dev-watch-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/

View File

@@ -79,7 +79,8 @@ platform :ios do
build_app(
scheme: "JitsiMeet",
include_symbols: true,
export_xcargs: "-allowProvisioningUpdates"
export_xcargs: "-allowProvisioningUpdates",
xcodebuild_formatter: ""
)
# Upload the build to TestFlight

View File

@@ -145,6 +145,7 @@
4ED4FFF12721B9B90074E620 /* JitsiAudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JitsiAudioSession.h; sourceTree = "<group>"; };
4ED4FFF22721B9B90074E620 /* JitsiAudioSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JitsiAudioSession.m; sourceTree = "<group>"; };
4ED4FFF52721BAE10074E620 /* JitsiAudioSession+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JitsiAudioSession+Private.h"; sourceTree = "<group>"; };
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
86389F55993FAAF6AEB3FA3E /* Pods-JitsiMeetSDKLite.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.release.xcconfig"; sourceTree = "<group>"; };
891FE43DAD30BC8976683100 /* Pods-JitsiMeetSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDK.release.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDK/Pods-JitsiMeetSDK.release.xcconfig"; sourceTree = "<group>"; };
8F48C340DE0D91D1012976C5 /* Pods-JitsiMeetSDKLite.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JitsiMeetSDKLite.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-JitsiMeetSDKLite/Pods-JitsiMeetSDKLite.debug.xcconfig"; sourceTree = "<group>"; };
@@ -230,6 +231,7 @@
0BD906E61EC0C00300C8C18E /* Products */,
0BCA49681EC4BBE500B793EE /* Resources */,
0BD906E71EC0C00300C8C18E /* src */,
6132EF172BDFF13200BBE14D /* PrivacyInfo.xcprivacy */,
);
sourceTree = "<group>";
};
@@ -629,7 +631,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\nexport NODE_ARGS=\"--max_old_space_size=4096\"\n../../node_modules/react-native/scripts/react-native-xcode.sh\n";
shellScript = "WITH_ENVIRONMENT=\"../../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
};
DE9A016B289A9A9A00E41CBB /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
@@ -774,13 +776,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -839,12 +840,11 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;

View File

@@ -62,7 +62,7 @@
// Initialize the one and only bridge for interfacing with React Native.
_bridgeWrapper = [[RCTBridgeWrapper alloc] init];
// Initialize the listener for handling start/stop screensharing notifications.
_screenshareEventEmiter = [[ScheenshareEventEmiter alloc] init];
@@ -141,7 +141,7 @@
if (_bridgeWrapper != nil) {
return;
};
_bridgeWrapper = [[RCTBridgeWrapper alloc] init];
}
@@ -231,7 +231,7 @@
}
- (void)setDefaultConferenceOptions:(JitsiMeetConferenceOptions *)defaultConferenceOptions {
if (defaultConferenceOptions != nil && _defaultConferenceOptions.room != nil) {
if (defaultConferenceOptions != nil && defaultConferenceOptions.room != nil) {
@throw [NSException exceptionWithName:@"RuntimeError"
reason:@"'room' must be null in the default conference options"
userInfo:nil];

View File

@@ -26,7 +26,7 @@
@property (nonatomic, nullable, weak) id<JitsiMeetViewDelegate> delegate;
/**
* Joins the conference specified by the given options. The gievn options will
* Joins the conference specified by the given options. The given options will
* be merged with the defaultConferenceOptions (if set) in JitsiMeet. If there
* is an already active conference it will be automatically left prior to
* joining the new one.

View File

@@ -116,4 +116,18 @@
*/
- (void)readyToClose:(NSDictionary *)data;
/**
* Called when the transcription chunk was received.
*
* The `data` dictionary contains a `messageID`, `language`, `participant` key.
*/
- (void)transcriptionChunkReceived:(NSDictionary *)data;
/**
* Called when the custom overflow menu button is pressed.
*
* The `data` dictionary contains a `id`, `text` key.
*/
- (void)customOverflowMenuButtonPressed:(NSDictionary *)data;
@end

View File

@@ -26,6 +26,7 @@
"hsb": "Hornjoserbšćina",
"hu": "Magyar",
"hy": "Հայերեն",
"id": "Bahasa",
"is": "Íslenska",
"it": "Italiano",
"ja": "日本語",

View File

@@ -432,6 +432,11 @@
},
"passwordDigitsOnly": "",
"passwordSetRemotely": "",
"polls": {
"errors": {
"notUniqueOption": "Opsies moet uniek wees"
}
},
"poweredby": "aangedryf deur",
"presenceStatus": {
"busy": "Besig",
@@ -529,6 +534,8 @@
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Naam",
"search": "Soek",
"searchHint": "Soek deelnemers",
"seconds": "{{count}}s",
"speakerStats": "Sprekerstatistiek",
"speakerTime": "Sprekertyd"

View File

@@ -557,8 +557,6 @@
"youtubeTerms": "شروط خدمة يوتيوب"
},
"lobby": {
"admit": "سمح بالدخول",
"admitAll": "سمح للجميع بالدخول",
"allow": "اسمح",
"backToKnockModeButton": "لا يوجد كلمة مرور، اطلب الإذن بالدخول بدلًا من ذلك.",
"chat": "دردشة",
@@ -593,8 +591,6 @@
"notificationTitle": "غرفة الانتظار",
"passwordField": "أدخل كلمة الدخول إلى المُلتقى",
"passwordJoinButton": "انضم",
"reject": "رفض",
"rejectAll": "رفض الكل",
"title": "غرفة الانتظار",
"toggleLabel": "فعِّل غرفة الانتظار"
},
@@ -720,6 +716,8 @@
},
"participantsPane": {
"actions": {
"admit": "سمح بالدخول",
"admitAll": "سمح للجميع بالدخول",
"allow": "السماح للحاضرين بـ:",
"allowVideo": "السماح بالفيديو",
"askUnmute": "اطلب إعادة الصوت",
@@ -732,6 +730,7 @@
"mute": "كتم الصوت",
"muteAll": "كتم الكل",
"muteEveryoneElse": "كتم صوت الآخرين",
"reject": "رفض",
"stopEveryonesVideo": "أوقف فيديو الجميع",
"stopVideo": "أوقف الفيديو",
"unblockEveryoneMicCamera": "قم بإلغاء حظر ميكروفون وكاميرا الجميع",
@@ -766,6 +765,9 @@
"removeOption": "إزالة خيار",
"send": "أرسل"
},
"errors": {
"notUniqueOption": "يجب أن تكون الخيارات فريدة"
},
"notification": {
"description": "افتح علامة تبويب الاقتراع للتصويت",
"title": "تمت إضافة اقتراع جديد إلى هذا المُلتقى"
@@ -1028,6 +1030,7 @@
"neutral": "حيادي",
"sad": "حزين",
"search": "بحث",
"searchHint": "البحث عن المشاركين",
"seconds": "{{count}}ثا",
"speakerStats": "حالة المتحدث",
"speakerTime": "وقت المتحدث",

View File

@@ -478,6 +478,11 @@
},
"passwordDigitsOnly": "Да {{number}} лічбаў",
"passwordSetRemotely": "устаноўлены іншым удзельнікам",
"polls": {
"errors": {
"notUniqueOption": "Варыянты павінны быць унікальнымі"
}
},
"poweredby": "працуе на",
"presenceStatus": {
"busy": "Заняты",
@@ -584,6 +589,8 @@
"hours": "{{count}}г",
"minutes": "{{count}}хв",
"name": "Імя",
"search": "Пошук",
"searchHint": "Пошук удзельнікаў",
"seconds": "{{count}} с",
"speakerStats": "Статыстыка выступаў",
"speakerTime": "Час выступленняў"

View File

@@ -420,8 +420,6 @@
"youtubeTerms": "Условия за ползване на YouTube"
},
"lobby": {
"admit": "Допусни",
"allow": "Разреши",
"backToKnockModeButton": "Заявка за включване без парола",
"dialogTitle": "Режим лоби",
"disableDialogContent": "Режим Лоби е включен. Този решим защитава срещите Ви от случайни посетители. Искате ли да го изключите?",
@@ -450,7 +448,6 @@
"notificationTitle": "Лоби",
"passwordField": "Въведи парола за срещата",
"passwordJoinButton": "Влез",
"reject": "Откажи",
"title": "Лоби",
"toggleLabel": "Включи лоби"
},
@@ -521,8 +518,20 @@
"suboptimalExperienceTitle": "Внимание",
"unmute": "Пускане на микрофона"
},
"participantsPane": {
"actions": {
"admit": "Допусни",
"allow": "Разреши",
"reject": "Откажи"
}
},
"passwordDigitsOnly": "До {{number}} цифри",
"passwordSetRemotely": "зададена от друг участник",
"polls": {
"errors": {
"notUniqueOption": "Опциите трябва да са уникални"
}
},
"poweredby": "с подкрепата на",
"presenceStatus": {
"busy": "Зает",
@@ -636,6 +645,7 @@
"minutes": "{{count}}мин",
"name": "Име",
"search": "Търсене",
"searchHint": "Търсене участници",
"seconds": "{{count}}сек",
"speakerStats": "Статистика на говорителя",
"speakerTime": "Време на говорене"

View File

@@ -561,8 +561,6 @@
"youtubeTerms": "Condicions de servei de YouTube"
},
"lobby": {
"admit": "Admet",
"admitAll": "Admet tothom",
"allow": "Permet",
"backToKnockModeButton": "Demaneu per a unir-vos",
"chat": "Xat",
@@ -597,8 +595,6 @@
"notificationTitle": "Sala d'espera",
"passwordField": "Introduïu la contrasenya de la reunió",
"passwordJoinButton": "Entra",
"reject": "Rebuja",
"rejectAll": "Rebutja-ho tot",
"title": "Sala d'espera",
"toggleLabel": "Activa la sala d'espera"
},
@@ -727,6 +723,8 @@
},
"participantsPane": {
"actions": {
"admit": "Admet",
"admitAll": "Admet tothom",
"allow": "Permet als assistents:",
"allowVideo": "Permet el vídeo",
"askUnmute": "Demanar l'activació el micròfon",
@@ -739,6 +737,7 @@
"mute": "Silenciar",
"muteAll": "Silencia tothom",
"muteEveryoneElse": "Silenciar tothom",
"reject": "Rebuja",
"stopEveryonesVideo": "Atura el vídeo a tothom",
"stopVideo": "Atura el vídeo",
"unblockEveryoneMicCamera": "Desbloquejar el micròfon i la càmera de tothom",
@@ -773,6 +772,9 @@
"removeOption": "Elimina l'opció",
"send": "Envia"
},
"errors": {
"notUniqueOption": "Les opcions han de ser úniques"
},
"notification": {
"description": "Obre la pestanya de les enquestes per a votar",
"title": "S'ha afegit una nova enquesta en aquesta reunió"
@@ -1037,6 +1039,7 @@
"neutral": "Neutral",
"sad": "Tristesa",
"search": "Cerca",
"searchHint": "Cerca participants",
"seconds": "{{count}}s",
"speakerStats": "Estadístiques de l'interlocutor",
"speakerTime": "Temps de l'interlocutor",

View File

@@ -557,8 +557,6 @@
"youtubeTerms": "Podmínky používání YouTube"
},
"lobby": {
"admit": "",
"admitAll": "",
"allow": "Povolit",
"backToKnockModeButton": "Žádné heslo, místo toho požádat o přijetí",
"chat": "",
@@ -593,7 +591,6 @@
"notificationTitle": "Předsálí",
"passwordField": "Zadejte heslo setkání",
"passwordJoinButton": "Vstoupit",
"reject": "Odmítnout",
"title": "Předsálí",
"toggleLabel": "Zapnout předsálí"
},
@@ -719,22 +716,7 @@
},
"participantsPane": {
"actions": {
"allow": "",
"allowVideo": "",
"askUnmute": "",
"audioModeration": "",
"blockEveryoneMicCamera": "",
"invite": "",
"moreModerationActions": "",
"moreModerationControls": "",
"moreParticipantOptions": "",
"mute": "",
"muteAll": "",
"muteEveryoneElse": "",
"stopEveryonesVideo": "",
"stopVideo": "",
"unblockEveryoneMicCamera": "",
"videoModeration": ""
"reject": "Odmítnout"
},
"close": "",
"header": "",
@@ -743,7 +725,7 @@
"participantsList": "",
"waitingLobby": ""
},
"search": ""
"search": "Hledat účastníky"
},
"passwordDigitsOnly": "Až {{number}} číslic",
"passwordSetRemotely": "nastaveno jiným účastníkem",
@@ -765,6 +747,9 @@
"removeOption": "",
"send": ""
},
"errors": {
"notUniqueOption": "Možnosti musí být jedinečné"
},
"notification": {
"description": "",
"title": ""
@@ -1026,7 +1011,8 @@
"name": "Jméno",
"neutral": "",
"sad": "",
"search": "",
"search": "Prohledat",
"searchHint": "Hledat účastníky",
"seconds": "{{count}} s",
"speakerStats": "Statistika řečníků",
"speakerTime": "Mluvil/a již",

View File

@@ -464,6 +464,11 @@
},
"passwordDigitsOnly": "Op til {{number}} tal",
"passwordSetRemotely": "Sat af et andet medlem",
"polls": {
"errors": {
"notUniqueOption": "Valgmulighederne skal være unikke"
}
},
"poweredby": "Powered by",
"presenceStatus": {
"busy": "Optaget",
@@ -568,6 +573,8 @@
"hours": "{{count}}t",
"minutes": "{{count}}m",
"name": "Navn",
"search": "Søg",
"searchHint": "Søg deltagere",
"seconds": "{{count}}s",
"speakerStats": "Deltagerstatistik",
"speakerTime": "Taletid"

View File

@@ -68,6 +68,7 @@
"sendToBreakoutRoom": "Anwesende in Breakout-Raum verschieben:"
},
"breakoutList": "Breakout-Liste",
"buttonLabel": "Breakout-Räume",
"defaultName": "Breakout-Raum #{{index}}",
"hideParticipantList": "Teilnehmerliste ausblenden",
"mainRoom": "Hauptraum",
@@ -76,7 +77,8 @@
"joinedMainRoom": "Hauptraum betreten",
"joinedTitle": "Breakout-Räume"
},
"showParticipantList": "Teilnehmerliste anzeigen"
"showParticipantList": "Teilnehmerliste anzeigen",
"title": "Breakout-Räume"
},
"calendarSync": {
"addMeetingURL": "Konferenzlink hinzufügen",
@@ -126,6 +128,7 @@
"privateNotice": "Private Nachricht an {{recipient}}",
"sendButton": "Senden",
"smileysPanel": "Emoji-Auswahl",
"systemDisplayName": "System",
"tabs": {
"chat": "Chatten",
"polls": "Umfragen"
@@ -207,7 +210,7 @@
"appNotInstalled": "Sie benötigen die „{{app}}“-App, um der Konferenz auf dem Smartphone beizutreten.",
"description": "Nichts passiert? Wir haben versucht, die Konferenz in {{app}} zu öffnen. Versuchen Sie es erneut oder treten Sie der Konferenz in {{app}} im Web bei.",
"descriptionNew": "Nichts passiert? Wir haben versucht, die Konferenz in {{app}} zu öffnen. <br /><br /> Versuchen Sie es erneut oder treten Sie der Konferenz im Web bei.",
"descriptionWithoutWeb": "Ist nichts passiert? Wir haben versucht, Ihre Besprechung in der „{{app}}“-Desktop-App zu starten.",
"descriptionWithoutWeb": "Ist nichts passiert? Wir haben versucht, Ihre Konferenz in der „{{app}}“-Desktop-App zu starten.",
"downloadApp": "App herunterladen",
"downloadMobileApp": "Aus dem App Store herunterladen",
"ifDoNotHaveApp": "Wenn Sie die App noch nicht haben:",
@@ -217,11 +220,13 @@
"joinInBrowser": "Im Browser",
"launchMeetingLabel": "Wie möchten Sie an der Konferenz teilnehmen?",
"launchWebButton": "Im Web öffnen",
"noDesktopApp": "Sie haben die App noch nicht installiert?",
"noMobileApp": "Sie haben die App noch nicht installiert?",
"termsAndConditions": "Indem Sie fortfahren, stimmen Sie underen<a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>Nutzungsbedingungen</a> zu.",
"or": "oder",
"termsAndConditions": "Indem Sie fortfahren, stimmen Sie unseren <a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>Nutzungsbedingungen</a> zu.",
"title": "Die Konferenz wird in {{app}} geöffnet …",
"titleNew": "Konferenz starten ...",
"tryAgainButton": "Erneut mit der nativen Applikation versuchen",
"tryAgainButton": "Erneut versuchen",
"unsupportedBrowser": "Sie verwenden einen Browser, der noch nicht unterstützt wird."
},
"defaultLink": "Bsp.: {{url}}",
@@ -259,6 +264,7 @@
"Share": "Teilen",
"Submit": "OK",
"WaitForHostMsg": "Die Konferenz wurde noch nicht gestartet. Falls Sie die Konferenz leiten, authentifizieren Sie sich bitte. Warten Sie andernfalls, bis die Konferenz gestartet wird.",
"WaitForHostNoAuthMsg": "Die Konferenz wurde noch nicht gestartet. Bitte warten Sie, bis die Konferenz gestartet wird.",
"WaitingForHostButton": "Auf Moderation warten",
"WaitingForHostTitle": "Warten auf den Beginn der Konferenz …",
"Yes": "Ja",
@@ -301,6 +307,8 @@
"contactSupport": "Support kontaktieren",
"copied": "Kopiert",
"copy": "Kopieren",
"demoteParticipantDialog": "Sind Sie sicher, dass Sie diese Person zu den Gästen verschieben möchten?",
"demoteParticipantTitle": "Zu Gästen verschieben",
"dismiss": "OK",
"displayNameRequired": "Hallo! Wie ist Ihr Name?",
"done": "Fertig",
@@ -312,6 +320,7 @@
"embedMeeting": "Besprechung einbetten",
"enterDisplayName": "Bitte geben Sie hier Ihren Namen ein",
"error": "Fehler",
"errorRoomCreationRestriction": "Sie haben versucht, zu schnell beizutreten, bitte versuchen Sie es gleich noch einmal.",
"gracefulShutdown": "Der Dienst steht momentan wegen Wartungsarbeiten nicht zur Verfügung. Bitte versuchen Sie es später noch einmal.",
"grantModeratorDialog": "Möchten Sie wirklich Moderationsrechte an diese Person vergeben?",
"grantModeratorTitle": "Moderationsrechte vergeben",
@@ -481,6 +490,10 @@
"viewUpgradeOptions": "Upgradeoptionen anzeigen",
"viewUpgradeOptionsContent": "Sie müssen Ihren Tarif erweitern, um Premium-Features wie Aufnahme, Transkription, RTMP-Streaming und mehr zu nutzen.",
"viewUpgradeOptionsTitle": "Sie haben ein Premium-Feature entdeckt!",
"whiteboardLimitContent": "Die maximale Zahl an Nutzenden für das Whiteboard ist erreicht.",
"whiteboardLimitReference": "Für weitere Informationen besuchen Sie bitte",
"whiteboardLimitReferenceUrl": "unsere Webseite",
"whiteboardLimitTitle": "Whiteboard-Nutzung beschränkt",
"yourEntireScreen": "Ganzer Bildschirm"
},
"documentSharing": {
@@ -528,7 +541,7 @@
"conferenceURL": "Link:",
"copyNumber": "Nummer kopieren",
"country": "Land",
"dialANumber": "Um am Meeting teilzunehmen, müssen Sie eine dieser Nummern wählen und dann die PIN eingeben.",
"dialANumber": "Um an der Konferenz teilzunehmen, müssen Sie eine dieser Nummern wählen und dann die PIN eingeben.",
"dialInConferenceID": "PIN:",
"dialInNotSupported": "Entschuldigung, leider wird das Einwählen derzeit nicht unterstützt.",
"dialInNumber": "Einwählen:",
@@ -552,6 +565,7 @@
"noNumbers": "Keine Telefonnummern verfügbar.",
"noPassword": "Kein Passwort benötigt",
"noRoom": "Keine Konferenz für die Einwahlinformationen angegeben.",
"noWhiteboard": "Whiteboard konnte nicht geladen werden.",
"numbers": "Einwahlnummern",
"password": "$t(lockRoomPasswordUppercase):",
"reachedLimit": "Sie haben die Grenzen Ihres Tarifs erreicht.",
@@ -559,7 +573,8 @@
"sipAudioOnly": "SIP-Adresse (nur Ton)",
"title": "Teilen",
"tooltip": "Freigabe-Link und Einwahlinformationen für dieses Meeting",
"upgradeOptions": "Bitte prüfen Sie Ihre Upgrade-Optionen auf"
"upgradeOptions": "Bitte prüfen Sie Ihre Upgrade-Optionen auf",
"whiteboardError": "Whiteboard konnte nicht geladen werden. Bitte versuchen Sie es später erneut."
},
"inlineDialogFailure": {
"msg": "Es ist ein Fehler aufgetreten.",
@@ -636,8 +651,6 @@
"youtubeTerms": "YouTube-Nutzungsbedingungen"
},
"lobby": {
"admit": "Zulassen",
"admitAll": "Alle zulassen",
"backToKnockModeButton": "Kein Passwort, stattdessen Beitritt anfragen",
"chat": "Chat",
"dialogTitle": "Lobbymodus",
@@ -671,8 +684,6 @@
"notificationLobbyEnabled": "{{originParticipantName}} hat die Lobby aktiviert",
"notificationTitle": "Lobby",
"passwordJoinButton": "Beitreten",
"reject": "Ablehnen",
"rejectAll": "Alle ablehnen",
"title": "Lobby",
"toggleLabel": "Lobby aktivieren"
},
@@ -727,7 +738,10 @@
"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.",
"dataChannelClosedDescriptionWithAudio": "Die Steuerungsverbindung (Bridge Channel) wurde unterbrochen, daher können Video- und Tonprobleme auftreten.",
"dataChannelClosedWithAudio": "Ton- und Videoqualität können beeinträchtigt sein",
"disabledIframe": "Die Einbettung ist nur für Demo-Zwecke vorgesehen. Diese Konferenz wird in {{timeout}} Minuten beendet.",
"disabledIframeSecondary": "Die Einbettung von {{domain}} ist nur für Demo-Zwecke vorgesehen. Diese Konferenz wird in {{timeout}} Minuten beendet. Bitte nutzen Sie <a href='{{jaasDomain}}' rel='noopener noreferrer' target='_blank'>Jitsi as a Service</a> für produktive Zwecke!",
"disconnected": "getrennt",
"displayNotifications": "Benachrichtigungen anzeigen für",
"dontRemindMe": "Nicht erinnern",
@@ -797,21 +811,30 @@
"startSilentTitle": "Sie sind ohne Audioausgabe beigetreten!",
"suboptimalBrowserWarning": "Tut uns leid, aber die Konferenz wird mit {{appName}} kein großartiges Erlebnis. Wir versuchen immer die Situation zu verbessern, bis dahin empfehlen wir aber die Verwendung einer der <a href=\"{{recommendedBrowserPageLink}}\" target=\"_blank\">vollständig unterstützen Browser</a>.",
"suboptimalExperienceTitle": "Browserwarnung",
"suggestRecordingAction": "Starten",
"suggestRecordingDescription": "Möchten Sie eine Aufzeichnung starten?",
"suggestRecordingTitle": "Konferenz aufzeichnen",
"unmute": "Stummschaltung aufheben",
"videoMutedRemotelyDescription": "Sie können sie jederzeit wieder einschalten.",
"videoMutedRemotelyTitle": "Ihre Kamera wurde von {{participantDisplayName}} ausgeschaltet!",
"videoUnmuteBlockedDescription": "Die Kamera und Bildschirmfreigabe kann aus Überlastungsschutzgründen temporär nicht eingeschaltet werden.",
"videoUnmuteBlockedTitle": "Kamera und Bildschirmfreigabe kann nicht aktiviert werden!",
"viewLobby": "Lobby ansehen",
"waitingParticipants": "{{waitingParticipants}} Personen"
"viewVisitors": "Gäste anzeigen",
"waitingParticipants": "{{waitingParticipants}} Personen",
"whiteboardLimitDescription": "Bitte speichern Sie Ihre Inhalte, da das Nutzungslimit bald erreicht wird und dann Ihr Whiteboard geschlossen wird.",
"whiteboardLimitTitle": "Whiteboard-Nutzung"
},
"participantsPane": {
"actions": {
"admit": "Zulassen",
"admitAll": "Alle zulassen",
"allow": "Anwesenden erlauben:",
"allowVideo": "Kamera einschalten",
"askUnmute": "Anfragen, Stummschaltung aufzuheben",
"audioModeration": "Für sich selbst die Stummschaltung aufzuheben",
"blockEveryoneMicCamera": "Kamera und Mikrofon von allen sperren",
"breakoutRooms": "Breakout-Räume",
"invite": "Person einladen",
"moreModerationActions": "Weitere Moderationsoptionen",
"moreModerationControls": "Weitere Moderationsoptionen",
@@ -819,6 +842,7 @@
"mute": "Stummschalten",
"muteAll": "Alle stummschalten",
"muteEveryoneElse": "Alle anderen stummschalten",
"reject": "Ablehnen",
"stopEveryonesVideo": "Alle Kameras ausschalten",
"stopVideo": "Kamera ausschalten",
"unblockEveryoneMicCamera": "Kamera und Mikrofon von allen entsperren",
@@ -828,6 +852,7 @@
"headings": {
"lobby": "Lobby ({{count}})",
"participantsList": "Anwesende ({{count}})",
"visitorRequests": " (Anfragen {{count}})",
"visitors": "Gäste ({{count}})",
"waitingLobby": "In der Lobby ({{count}})"
},
@@ -855,6 +880,9 @@
"removeOption": "Antwort entfernen",
"send": "Erstellen"
},
"errors": {
"notUniqueOption": "Optionen müssen einzigartig sein"
},
"notification": {
"description": "Öffnen Sie das Umfragen-Tab um abzustimmen",
"title": "Dieser Konferenz wurde eine Umfrage hinzugefügt"
@@ -918,10 +946,11 @@
"joinWithoutAudio": "Ohne Ton beitreten",
"keyboardShortcuts": "Tastaturkurzbefehle aktivieren",
"linkCopied": "Link in die Zwischenablage kopiert",
"lookGood": "Ihr Mikrofon scheint zu funktionieren.",
"lookGood": "Alles scheint zu funktionieren.",
"or": "oder",
"premeeting": "Vorschau",
"proceedAnyway": "Trotzdem fortsetzen",
"recordingWarning": "Diese Konferenz wird möglicherweise von anderen Personen aufgezeichnet",
"screenSharingError": "Fehler bei Bildschirmfreigabe:",
"showScreen": "Konferenzvorschau aktivieren",
"startWithPhone": "Mit Telefonaudio starten",
@@ -988,7 +1017,6 @@
"limitNotificationDescriptionNative": "Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} Min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "Wegen hoher Nachfrage ist Ihre Aufnahme auf {{limit}} Min. begrenzt. Für unlimitierte Aufnahmen nutzen Sie bitte <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
"linkGenerated": "Link zur Aufzeichnung wurde generiert.",
"live": "LIVE",
"localRecordingNoNotificationWarning": "Die Aufzeichnung wird anderen Anwesenden nicht mitgeteilt. Sie müssen diese selbst darauf hinweisen, dass die Konferenz aufgezeichnet wird.",
"localRecordingNoVideo": "Videos werden nicht aufgenommen",
"localRecordingStartWarning": "Bitte beenden Sie die Aufzeichnung vor dem Verlassen der Konferenz, um die Aufzeichnung zu speichern.",
@@ -1005,13 +1033,15 @@
"onBy": "{{name}} startete die Aufnahme",
"onlyRecordSelf": "Nur eigenes Kamerabild und Ton aufzeichnen",
"pending": "Aufzeichnung des Meetings wird vorbereitet…",
"rec": "AUFZ",
"recordAudioAndVideo": "Kamera und Ton aufzeichnen",
"recordTranscription": "Transkription aufzeichnen",
"saveLocalRecording": "Aufzeichnung lokal abspeichern",
"serviceDescription": "Ihre Aufzeichnung wird vom Aufzeichnungsdienst gespeichert",
"serviceDescriptionCloud": "Cloud-Aufzeichnung",
"serviceDescriptionCloudInfo": "Aufzeichnungen werden 24 Stunden nach Aufzeichnungsende automatisch gelöscht.",
"serviceName": "Aufnahmedienst",
"sessionAlreadyActive": "Diese Konferenz wird bereits aufgezeichnet.",
"showAdvancedOptions": "Weitere Optionen",
"signIn": "Anmelden",
"signOut": "Abmelden",
"surfaceError": "Bitte das aktuelle Tab auswählen.",
@@ -1132,6 +1162,7 @@
"neutral": "Neutral",
"sad": "Traurig",
"search": "Suche",
"searchHint": "Suche Anwesende",
"seconds": "{{count}} Sek.",
"speakerStats": "Sprechstatistik",
"speakerTime": "Sprechzeit",
@@ -1154,11 +1185,11 @@
"toolbar": {
"Settings": "Einstellungen",
"accessibilityLabel": {
"Settings": "Einstellungen ein-/ausschalten",
"Settings": "Einstellungen einschalten",
"audioOnly": "„Nur Audio“ ein-/ausschalten",
"audioRoute": "Audiogerät auswählen",
"boo": "Buhen",
"breakoutRoom": "Breakout-Räume betreten/verlassen",
"breakoutRooms": "Breakout-Räume",
"callQuality": "Qualitätseinstellungen",
"carmode": "Automodus",
"cc": "Untertitel ein-/ausschalten",
@@ -1200,7 +1231,7 @@
"moreActions": "Menü „Weitere Einstellungen“ ein-/ausschalten",
"moreActionsMenu": "Menü „Weitere Einstellungen“",
"moreOptions": "Menü „Weitere Optionen“",
"mute": "Mikrofon aktivieren / deaktivieren",
"mute": "Mikrofon deaktivieren",
"muteEveryone": "Alle stummschalten",
"muteEveryoneElse": "Alle anderen stummschalten",
"muteEveryoneElsesVideoStream": "Alle anderen Kameras ausschalten",
@@ -1238,7 +1269,7 @@
"toggleFilmstrip": "Miniaturansichten ein-/ausschalten",
"unmute": "Stummschaltung aufheben",
"videoblur": "Unscharfer Hintergrund ein-/ausschalten",
"videomute": "„Video stummschalten“ ein-/ausschalten",
"videomute": "Kamera stoppen",
"videomuteGUMPending": "Verbinde Ihre Kamera",
"videounmute": "Kamera einschalten"
},
@@ -1287,7 +1318,7 @@
"lowerYourHand": "Hand senken",
"moreActions": "Weitere Einstellungen",
"moreOptions": "Weitere Optionen",
"mute": "Stummschalten",
"mute": "Audio stummschalten",
"muteEveryone": "Alle stummschalten",
"muteEveryonesVideo": "Alle Kameras ausschalten",
"muteGUMPending": "Verbinde Ihre Kamera",
@@ -1341,12 +1372,9 @@
},
"transcribing": {
"ccButtonTooltip": "Untertitel ein-/ausschalten",
"error": "Die Aufzeichnung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
"expandedLabel": "Transkribieren ist derzeit eingeschaltet",
"failedToStart": "Transkribieren konnte nicht gestartet werden",
"labelToolTip": "Das Meeting wird transkribiert",
"off": "Transkribieren gestoppt",
"pending": "Transkribieren des Meetings wird vorbereitet…",
"sourceLanguageDesc": "Aktuell ist die Sprache der Konferenz auf <b>{{sourceLanguage}}</b> eingestellt. <br/> Sie könne dies hier ",
"sourceLanguageHere": "ändern",
"start": "Anzeige der Untertitel starten",
@@ -1402,6 +1430,7 @@
},
"videothumbnail": {
"connectionInfo": "Verbindungsinformationen",
"demote": "Zu Gästen verschieben",
"domute": "Stummschalten",
"domuteOthers": "Alle anderen stummschalten",
"domuteVideo": "Kamera ausschalten",
@@ -1456,7 +1485,12 @@
"chatIndicator": "(Gast)",
"labelTooltip": "Anzahl Gäste: {{count}}",
"notification": {
"demoteDescription": "Hierhin verschoben von {{actor}}, bitte melden Sie sich um teilzunehmen",
"description": "Bitte melden Sie sich um teilzunehmen",
"noMainParticipantsDescription": "Eine Person muss die Konferenz starten. Bitte versuchen Sie es gleich noch einmal.",
"noMainParticipantsTitle": "Diese Konferenz wurde noch nicht gestartet.",
"noVisitorLobby": "Sie können nicht teilnehmen, solange die Lobby für diese Konferenz aktiviert ist.",
"notAllowedPromotion": "Eine Person muss Ihre Anfrage erst erlauben.",
"title": "Sie sind Gast in der Konferenz"
}
},
@@ -1516,6 +1550,7 @@
"whiteboard": {
"accessibilityLabel": {
"heading": "Whiteboard"
}
},
"screenTitle": "Whiteboard"
}
}

View File

@@ -563,8 +563,6 @@
"youtubeTerms": "wužywaŕske wustawki za youtube"
},
"lobby": {
"admit": "pśizwóliś",
"admitAll": "wšyknym pśizwólenje daś",
"backToKnockModeButton": "mimo kodowego słowa, město togo wó pśistup pšosyś",
"chat": "chat",
"dialogTitle": "lobbyjowy modus",
@@ -598,8 +596,6 @@
"notificationTitle": "lobby",
"passwordField": "kodowe słowo za konferencu zapódaś",
"passwordJoinButton": "pśistupiś",
"reject": "wótpokazaś",
"rejectAll": "wšykne wótpokazaś",
"title": "",
"toggleLabel": "lobby aktiwěrowaś / deaktiwěrowaś"
},
@@ -730,6 +726,8 @@
},
"participantsPane": {
"actions": {
"admit": "pśizwóliś",
"admitAll": "wšyknym pśizwólenje daś",
"allow": "wobźělnikam pšawo daś:",
"allowVideo": "kameru aktiwěrowaś",
"askUnmute": "pšosbu wó anulěrowanje wuśišenja stajiś",
@@ -742,6 +740,7 @@
"mute": "wuśišyś",
"muteAll": "wšyknych wuśišyś",
"muteEveryoneElse": "wšykne druge wuśišyś",
"reject": "wótpokazaś",
"stopEveryonesVideo": "wšykne kamery wušaltowaś",
"stopVideo": "kameru wušaltowaś",
"unblockEveryoneMicCamera": "blokěrowane kamery a mikrofon wšyknych zasej aktiwěrowaś",
@@ -776,6 +775,9 @@
"removeOption": "wótegrono wulašowaś",
"send": "wótpósłaś"
},
"errors": {
"notUniqueOption": "Opcije musy byś jedynsće"
},
"notification": {
"description": "Wótcyńśo kórtu wopšašowanjow, aby zgłosowali",
"title": "Za tu konferencu jo nowe wopšašowanje pśigótowane"
@@ -1038,6 +1040,7 @@
"neutral": "neutralny/neutralna",
"sad": "tužny/tužna",
"search": "pytaś",
"searchHint": "wobźělniki pytaś",
"seconds": "{{count}} sek.",
"speakerStats": "statistika powědarja",
"speakerTime": "cas powědanja",

View File

@@ -580,8 +580,6 @@
"youtubeTerms": "Όροι υπηρεσιών YouTube"
},
"lobby": {
"admit": "Αποδοχή",
"admitAll": "Αποδοχή όλων",
"backToKnockModeButton": "Αίτημα εισόδου",
"chat": "Συνομιλία",
"dialogTitle": "Λειτουργία υποδοχής",
@@ -615,8 +613,6 @@
"notificationTitle": "Υποδοχή",
"passwordField": "Εισάγετε τον κωδικό σύσκεψης",
"passwordJoinButton": "Συμμετοχή",
"reject": "Απόρριψη",
"rejectAll": "Απόρριψη όλων",
"title": "Υποδοχή",
"toggleLabel": "Ενεργοποίηση υποδοχής"
},
@@ -745,6 +741,8 @@
},
"participantsPane": {
"actions": {
"admit": "Αποδοχή",
"admitAll": "Αποδοχή όλων",
"allow": "Επιτρέψτε στους συμμετέχοντες να:",
"allowVideo": "Επιτρέψτε το βίντεο",
"askUnmute": "Αίτηση για κατάργηση σίγησης",
@@ -757,6 +755,7 @@
"mute": "Σίγηση",
"muteAll": "Σίγηση όλων",
"muteEveryoneElse": "Σίγηση όλων των άλλων",
"reject": "Απόρριψη",
"stopEveryonesVideo": "Διακοπή όλων των βίντεο",
"stopVideo": "Διακοπή του βίντεο",
"unblockEveryoneMicCamera": "Επιτρέψτε τα μικρόφωνα και τις κάμερες όλων",
@@ -793,6 +792,9 @@
"removeOption": "Αφαιρέστε την επιλογή",
"send": "Αποστολή"
},
"errors": {
"notUniqueOption": "Οι επιλογές πρέπει να είναι μοναδικές"
},
"notification": {
"description": "Ανοίξτε τη σελίδα ψηφοφοριών για να ψηφίσετε",
"title": "Μια νέα ψηφοφορία προστέθηκε στη σύσκεψη"
@@ -1056,6 +1058,7 @@
"neutral": "Ουδέτερο",
"sad": "Λυπημένο",
"search": "Αναζήτηση",
"searchHint": "Αναζήτηση συμμετεχόντων",
"seconds": "{{count}}δ",
"speakerStats": "Στατιστικά Συμμετεχόντων",
"speakerTime": "Χρόνος Ομιλητή",

View File

@@ -1,19 +1,22 @@
{
"addPeople": {
"accessibilityLabel": {
"meetingLink": "Ligilon al kunveno: {{url}}"
},
"add": "Inviti",
"addContacts": "Inviti viajn kontaktojn",
"contacts": "kontaktoj",
"copyInvite": "Kopii la invitligilon",
"copyLink": "Kopii la kunsidligilon",
"copyStream": "Kopii elsendfluan ligilon",
"countryNotSupported": "Ni ankoraŭ ne subtenas ĉi tiun landon.",
"countryNotSupported": "Ni ankoraŭ ne subtenas ĉi-tiun landon.",
"countryReminder": "Ĉu vi vokas ekster Usonon? Certiĝu, ke vi komencas per la landokodo!",
"defaultEmail": "Via defaŭlta retadreso",
"disabled": "Vi ne povas inviti homojn.",
"failedToAdd": "Malsukcesis aldono de membroj",
"googleEmail": "Google-retadreso",
"inviteMoreHeader": "Vi estas la sola en la retkunsido",
"inviteMoreMailSubject": "Aliĝi al {{appName}}-retkunsido",
"inviteMoreHeader": "Vi estas la sola en la retkunveno",
"inviteMoreMailSubject": "Aliĝi al {{appName}}-retkunveno",
"inviteMorePrompt": "Inviti pli da homoj",
"linkCopied": "Ligilo kopiita al tondujo",
"noResults": "Nenio trovita",
@@ -25,7 +28,7 @@
"shareStream": "Konigi elsendfluan ligilon",
"sipAddresses": "SIP-adresoj",
"telephone": "Telefono: {{number}}",
"title": "Inviti homojn al ĉi tiu kunveno",
"title": "Inviti homojn al ĉi-tiu kunveno",
"yahooEmail": "Yahoo-retadreso"
},
"audioDevices": {
@@ -39,28 +42,47 @@
"audioOnly": {
"audioOnly": "Malalta rapideco de retkonekto"
},
"bandwidthSettings": {
"assumedBandwidthBps": "ekz. 10000000 for 10 Mbps",
"assumedBandwidthBpsWarning": "Pli altaj valoroj povas kaŭzi retajn problemojn.",
"customValue": "Elektita valoro",
"customValueEffect": "Elekti la bps valoro (bitoj po sekundo)",
"leaveEmpty": "lasu malplena",
"leaveEmptyEffect": "por ebligi taksojn",
"possibleValues": "Eblaj valoroj",
"setAssumedBandwidthBps": "Supozita kapacity (bps)",
"title": "Agordoj por kapacito",
"zeroEffect": "malebligi videon"
},
"breakoutRooms": {
"actions": {
"add": "Aldoni aneksan ĉambron",
"autoAssign": "Asigni aŭtomate al aneksanaj ĉambroj",
"autoAssign": "Asigni aŭtomate al aneksaj ĉambroj",
"close": "Fermi",
"join": "Aliĝi",
"leaveBreakoutRoom": "Eliri la aneksan ĉambron",
"more": "Pli",
"remove": "Forigi",
"rename": "Ŝanĝi nomon de ĉambro",
"renameBreakoutRoom": "Ŝanĝi nomon de aneksa ĉambro",
"sendToBreakoutRoom": "Sendi la partoprenanton al:"
},
"breakoutList": "Aneksa listo",
"buttonLabel": "Aneksaj ĉambroj",
"defaultName": "Aneksa ĉambro #{{index}}",
"hideParticipantList": "Kaŝi liston de partoprenantoj",
"mainRoom": "Ĉefĉambro",
"notifications": {
"joined": "Alirante al aneksa ĉambro \"{{name}}\"",
"joinedMainRoom": "Alirante al ĉefĉambro",
"joinedTitle": "Aneksaj ĉambroj"
}
},
"showParticipantList": "Montri liston de partoprenantoj",
"title": "Aneksaj Ĉambroj"
},
"calendarSync": {
"addMeetingURL": "Aldoni ligilon al la kunveno",
"confirmAddLink": "Ĉu vi volas aldoni Jitsi-ligilon al ĉi tiu evento?",
"confirmAddLink": "Ĉu vi volas aldoni Jitsi-ligilon al ĉi-tiu evento?",
"error": {
"appConfiguration": "Kalendara integrigo ne estas ĝuste agordita.",
"generic": "Okazis eraro. Bonvolu kontroli viajn kalendarajn agordojn aŭ provu aktualigi la kalendaron.",
@@ -147,6 +169,7 @@
"bridgeCount": "Nombro de serviloj: ",
"codecs": "Kodekoj (sono/video):",
"connectedTo": "Konektita al:",
"e2eeVerified": "E2EE Aprobita:",
"framerate": "Bildrapido:",
"less": "Montri malpli",
"localaddress": "Loka adreso:",
@@ -155,6 +178,7 @@
"localport_plural": "Lokaj pordoj:",
"maxEnabledResolution": "Maksimuma flukvanto",
"more": "Montri pli",
"no": "ne",
"packetloss": "Perdo de pakaĵoj:",
"participant_id": "ID de partoprenanto",
"quality": {
@@ -173,7 +197,8 @@
"status": "Konekto:",
"transport": "Transporto:",
"transport_plural": "Transportoj:",
"video_ssrc": "Video-SSRC"
"video_ssrc": "Video-SSRC",
"yes": "jes"
},
"dateUtils": {
"earlier": "Pli frue",
@@ -181,15 +206,23 @@
"yesterday": "Hieraŭ"
},
"deepLinking": {
"appNotInstalled": "Vi bezonas la aplikaĵon {{app}} por aliĝi al ĉi tiu kunveno per via telefono.",
"appNotInstalled": "Vi bezonas la aplikaĵon {{app}} por aliĝi al ĉi-tiu kunveno per via telefono.",
"description": "Ĉu nenio okazis? Ni provis lanĉi vian kunveno en la komputila aplikaĵo {{app}}. Provu denove aŭ lanĉu ĝin en la reta aplikaĵo {{web}}.",
"descriptionNew": "Ĉu nenio okazis? Ni provis lanĉi vian kunveno en la komputila aplikaĵo {{app}}. <br /><br /> Vi povas provi denove, au uzi la retejon.",
"descriptionWithoutWeb": "Ĉu nenio okazis? Ni provis lanĉi vian kunveno en la komputila aplikaĵo {{app}}.",
"downloadApp": "Elŝuti la aplikaĵon",
"downloadMobileApp": "Elŝuti el aplikaĵvendejo",
"ifDoNotHaveApp": "Se vi ankoraŭ ne havas la aplikaĵon",
"ifHaveApp": "Se vi jam havas la aplikaĵon",
"joinInApp": "Aliĝu al ĉi tiu kunsido per la aplikaĵo",
"joinInApp": "Aliĝu al ĉi-tiu kunveno per la aplikaĵo",
"joinInAppNew": "Aliĝu per la aplikaĵo",
"joinInBrowser": "Aliĝu per la retumilo",
"launchMeetingLabel": "Kiel vi volas aliĝu al ĉi-tiu kunveno?",
"launchWebButton": "Lanĉi enrete",
"title": "Lanĉo de via kunveno en {{app}}…",
"noMobileApp": "Ĉu vi ne jam havas la aplikaĵon?",
"termsAndConditions": "Daŭrigante, vi konsentas kun niaj <a href='{{termsAndConditionsLink}}' rel='noopener noreferrer' target='_blank'>kondiĉoj.</a>",
"title": "Enirante vian kunvenon per {{app}}…",
"titleNew": "Enirante vian kunvenon...",
"tryAgainButton": "Provu denove per la komputila aplikaĵo",
"unsupportedBrowser": "Ŝajnas ke vi uzas nesubtenitan retumilon"
},
@@ -202,6 +235,12 @@
"microphonePermission": "Eraro akirante permeson por mikrofono"
},
"deviceSelection": {
"hid": {
"callControl": "Voko kontrolo",
"connectedDevices": "Ligitaj aparatoj:",
"deleteDevice": "Forgesu aparaton",
"pairDevice": "Kuplu aparaton"
},
"noPermission": "Permeso ne estis donita",
"previewUnavailable": "Antaŭrigardo ne disponeblas",
"selectADevice": "Elektu aparaton",
@@ -222,16 +261,23 @@
"Share": "Kundividi",
"Submit": "Sendi",
"WaitForHostMsg": "La kunveno ankoraŭ ne komencis. Se vi estas la gastiganto, bonvolu aŭtentiĝi. Alikaze atendu, ĝis la gastiganto venos.",
"WaitingForHostButton": "Atendante la gastiganton",
"WaitingForHostTitle": "Atendante la gastiganton…",
"Yes": "Jes",
"accessibilityLabel": {
"liveStreaming": "Tuja elsendfluo"
"Cancel": "Nuligi (forlasi dialogujon)",
"Ok": "Okej (konservi ŝanĝojn kaj forlasi dialogujon)",
"close": "Fermi dialogujon",
"liveStreaming": "Tuja elsendfluo",
"sharingTabs": "Kunhavaj Agordoj"
},
"add": "Aldoni",
"addMeetingNote": "Aldoni komenton pri tiu kunsido",
"addMeetingNote": "Aldoni komenton pri tiu kunveno",
"addOptionalNote": "Aldoni komenton (fakultativa)",
"allow": "Permesi",
"alreadySharedVideoMsg": "Alia partoprenanto jam kundividas videon. Ĉi tiu kunveno permesas nur unu kundividata video samtempe.",
"allowToggleCameraDialog": "Do you allow {{initiatorName}} to toggle your camera facing mode?",
"allowToggleCameraTitle": "Ĉu permesu baskuligi kameraon?",
"alreadySharedVideoMsg": "Alia partoprenanto jam kundividas videon. Ĉi-tiu kunveno permesas nur unu kundividata video samtempe.",
"alreadySharedVideoTitle": "Nur unu video estas permesata samtempe.",
"applicationWindow": "Programa fenestro",
"authenticationRequired": "Bezonas aŭtentokontrolon",
@@ -263,9 +309,9 @@
"e2eeDescription": "<p>Tutvoja ĉifrado estas nuntempe <strong>EKSPERIMENTA</strong>. Bonvolu vidi <a href='https://jitsi.org/blog/e2ee/' target='_blank'>ĉi tiun artikolon</a> por detaloj.</p><br/><p>Konsciu, ke ŝalti tutvojan ĉifradon efektive malebligos servilflankajn servojn kiel ekzemple: registradon, tujan elsendfluon kaj telefonan partoprenon. Konsciu ankaŭ, ke la kunveno funkcios nur por homoj, kiuj uzas retumilon subtenantan enmetatajn fluojn.</p>",
"e2eeDisabledDueToMaxModeDescription": "Ne eblas ŝalti tutvoja ĉifrado pro granda kvanto da partoprenantoj en la prelego",
"e2eeLabel": "Ŝlosilo",
"e2eeWarning": "<br /><p><strong>ATENTIGO:</strong> Ne ĉiuj partoprenantoj en ĉi tiu kunveno ŝajnas havi subtenon de tutvoja ĉifrado. Se vi ŝaltos ĝin, ili ne povos vidi aŭ aŭdi vin.</p>",
"e2eeWarning": "<br /><p><strong>ATENTIGO:</strong> Ne ĉiuj partoprenantoj en ĉi-tiu kunveno ŝajnas havi subtenon de tutvoja ĉifrado. Se vi ŝaltos ĝin, ili ne povos vidi aŭ aŭdi vin.</p>",
"e2eeWillDisableDueToMaxModeDescription": "AVERTO: Tutvoja ĉifrado estos aŭtomate malŝaltita",
"embedMeeting": "Enkorpigi kunsidon",
"embedMeeting": "Enkorpigi kunveno",
"enterDisplayName": "Bonvolu entajpi vian nomon ĉi-tie",
"error": "Eraro",
"gracefulShutdown": "Nia servo nun estas eksterreta pro prizorgado. Bonvolu reprovi poste.",
@@ -279,8 +325,8 @@
"internalErrorTitle": "Interna eraro",
"kickMessage": "Vi povas kontakti {{participantDisplayName}} por pli da detaloj.",
"kickParticipantButton": "Forĵeti",
"kickParticipantDialog": "Ĉu vi certe volas forĵeti ĉi tiun partoprenanton?",
"kickParticipantTitle": "Forĵeti ĉi tiun partoprenanton?",
"kickParticipantDialog": "Ĉu vi certe volas forĵeti ĉi-tiun partoprenanton?",
"kickParticipantTitle": "Forĵeti ĉi-tiun partoprenanton?",
"kickTitle": "Aj! {{participantDisplayName}} forĵetis vin el la kunveno",
"linkMeeting": "Ligi la prelegon",
"linkMeetingTitle": "Ligi la prelegon al Salesforce",
@@ -291,6 +337,7 @@
"lockRoom": "Aldoni $t(lockRoomPasswordUppercase) al la kunveno.",
"lockTitle": "Ŝloso malsukcesis",
"login": "Ensaluti",
"loginQuestion": "Ĉi vi certe volas ensaluti kaj enrigi la kunvenon?",
"logoutQuestion": "Ĉu vi certe volas adiaŭi kaj fini la kunvenon?",
"logoutTitle": "Elsaluti",
"maxUsersLimitReached": "Maksimuma nombro de partoprenantoj atingita. La kunveno estas plena. Bonvolu kontakti la posedanton de la kunveno aŭ reprovi poste!",
@@ -322,20 +369,18 @@
"muteParticipantsVideoBody": "Vi ne povos ŝalti la kameraon denove, sed ili povos ŝalti ĝin mem iam ajn.",
"muteParticipantsVideoBodyModerationOn": "Nek vi nek ili povos ŝalti la kameraon denove.",
"muteParticipantsVideoButton": "Malŝaltu la kameraon",
"muteParticipantsVideoDialog": "Ĉu vi certe volas malŝalti la kameraon de tiu ĉi uzanto? Vi ne povos ŝalti ĝin denove, sed ili povos ŝalti ĝin mem iam ajn.",
"muteParticipantsVideoDialogModerationOn": "Ĉu vi certe volas malŝalti la kameraon de tiu ĉi uzanto? Nek vi nek ili povos ŝalti ĝin denove.",
"muteParticipantsVideoTitle": "Malŝaltu la kameraon de tiu ĉi uzanto?",
"muteParticipantsVideoDialog": "Ĉu vi certe volas malŝalti la kameraon de tiu-ĉi uzanto? Vi ne povos ŝalti ĝin denove, sed ili povos ŝalti ĝin mem iam ajn.",
"muteParticipantsVideoDialogModerationOn": "Ĉu vi certe volas malŝalti la kameraon de tiu-ĉi uzanto? Nek vi nek ili povos ŝalti ĝin denove.",
"muteParticipantsVideoTitle": "Malŝaltu la kameraon de tiu-ĉi uzanto?",
"noDropboxToken": "Nevalidaj Dropbox-ĵetonoj",
"password": "Pasvorto",
"passwordLabel": "La kunvenon ŝlosis partoprenanto. Bonvolu entajpi $t(lockRoomPassword) por aliĝi.",
"passwordNotSupported": "Agordo de kunvena pasvorto ne estas subtenata",
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) ne subtenata",
"passwordRequired": "$t(lockRoomPasswordUppercase) deviga",
"permissionCameraRequiredError": "Permeso uzi kameraon estas bezonata por partopreni prelegojn kun video. Bonvolu doni tiun ĉi permeson en Agordoj.",
"permissionCameraRequiredError": "Permeso uzi kameraon estas bezonata por partopreni prelegojn kun video. Bonvolu doni tiun-ĉi permeson en Agordoj.",
"permissionErrorTitle": "Permeso deviga",
"permissionMicRequiredError": "Permeso uzi microfono estas bezonata por partopreni prelegojn kun aŭdaĵo. Bonvolu doni tiun ĉi permeson en Agordoj.",
"popupError": "Via foliumilo forbaras ŝprucfenestrojn de tiu ĉi retejo. Bonvolu permesi ŝprucfenestrojn en la prisekuraj agordoj de via fenestro kaj reprovi.",
"popupErrorTitle": "Ŝprucfenestro barita",
"permissionMicRequiredError": "Permeso uzi microfono estas bezonata por partopreni prelegojn kun aŭdaĵo. Bonvolu doni tiun-ĉi permeson en Agordoj.",
"readMore": "Pli",
"recentlyUsedObjects": "Viaj lastatempe uzitaj objektoj",
"recording": "Registrado",
@@ -352,6 +397,8 @@
"removePassword": "Forigi $t(lockRoomPassword)",
"removeSharedVideoMsg": "Ĉu vi vere volas forigi vian kunhavatan videon?",
"removeSharedVideoTitle": "Forigi kunhavatan videon",
"renameBreakoutRoomLabel": "Nomo de aneksa ĉambro",
"renameBreakoutRoomTitle": "Ŝanĝi nomon de aneksa ĉambro",
"reservationError": "Rezervosistema eraro",
"reservationErrorMsg": "Kodo de eraro: {{code}}, mesaĝo: {{msg}}",
"retry": "Reprovi",
@@ -371,6 +418,7 @@
"sendPrivateMessageTitle": "Sendi private?",
"serviceUnavailable": "Servo ne disponeblas",
"sessTerminated": "Voko finita",
"sessTerminatedReason": "La kunveno estas finigita",
"sessionRestarted": "Voko restartigis pro problemo kun la konecto.",
"shareAudio": "Daŭrigi",
"shareAudioTitle": "Kiel kunhavigi sonon",
@@ -401,29 +449,58 @@
"streamKey": "Ŝlosilo de tuja elsendfluo",
"thankYou": "Dankon ke vi uzas {{appName}}!",
"token": "ĵetono",
"tokenAuthFailed": "Pardonu, vi ne rajtas aliĝi al ĉi tiu voko.",
"tokenAuthFailed": "Pardonu, vi ne rajtas aliĝi al ĉi-tiu voko.",
"tokenAuthFailedReason": {
"audInvalid": "Nevalida `aud` valoro. Ĝi estu `jitsi`.",
"contextNotFound": "La `context` objekto mankas de la portaĵo.",
"expInvalid": "Nevalida `exp` valoro.",
"featureInvalid": "Nevalida funkcio: {{feature}}, plej verŝajne, ne jam realigita.",
"featureValueInvalid": "Nevalida valoro for funkcio: {{feature}}.",
"featuresNotFound": "La `features` objekto mankas de la portaĵo.",
"headerNotFound": "Mankante la kapon.",
"issInvalid": "Nevalida `iss` valoro. It should be `chat`.",
"kidMismatch": "Ŝlosila ID (kid) ne kongruas.",
"kidNotFound": "Mankanta Ŝlosila ID (kid).",
"nbfFuture": "La `nbf` valoro estas en la estonteco.",
"nbfInvalid": "Nevalida `nbf` valoro.",
"payloadNotFound": "Mankas la portaĵon.",
"tokenExpired": "Ĵetono eksvalidiĝis."
},
"tokenAuthFailedTitle": "Aŭtentigo malsukcesis",
"tokenAuthFailedWithReasons": "Vi ne havas permeson aliĝi al ĉi-tiu kunveno. Eblaj kialoj: {{reason}}",
"tokenAuthUnsupported": "Ĵetona retejeo ne estas subtenata",
"transcribing": "transskribado",
"unlockRoom": "Forigi la $t(lockRoomPassword)n de la ĉambro",
"user": "Uzanto",
"userIdentifier": "Uzantidentigilo",
"userPassword": "Uzantopasvorto",
"verifyParticipantConfirm": "Ili kongruas",
"verifyParticipantDismiss": "Ili ne kongruas",
"verifyParticipantQuestion": "EKSPERIMENTA: Demandu al {{participantName}} se ili vidas la saman enhavon, laŭ la sama ordo.",
"verifyParticipantTitle": "Identkontrolo",
"videoLink": "Video-ligilo",
"viewUpgradeOptions": "Montru opcioj por plibonigaj eldonoj",
"viewUpgradeOptionsContent": "Se vi volas aliron al superaj funkcioj, kiel registrado, transskribo, RTMP vivelsendo & pli, vi plibonigu vian subskribon.",
"viewUpgradeOptionsTitle": "Vi malkovris superan funkcion!",
"whiteboardLimitContent": "Bedaŭre, la limo de samtempaj blanktabulaj uzantoj estas atingita.",
"whiteboardLimitReference": "Por pli da informo, bonvole vizitu",
"whiteboardLimitReferenceUrl": "Nia retejo",
"whiteboardLimitTitle": "Blanktabula patroprenanta limo atingita",
"yourEntireScreen": "Via tuta ekrano"
},
"documentSharing": {
"title": "Kundividita dokumento"
},
"e2ee": {
"labelToolTip": "Ĉiuj partoprenantoj en ĉi tiu kunveno ŝaltis tutvojan ĉifradon"
"labelToolTip": "Ĉiuj partoprenantoj en ĉi-tiu kunveno ŝaltis tutvojan ĉifradon"
},
"embedMeeting": {
"title": "Enigi ĉi tiun renkontiĝon"
"title": "Enigi ĉi-tiun renkontiĝon"
},
"feedback": {
"accessibilityLabel": {
"yourChoice": "Via takso"
},
"average": "Mezbona",
"bad": "Malbona",
"detailsLabel": "Diru al ni pli pri ĝi.",
@@ -433,13 +510,15 @@
"veryBad": "Tre malbona",
"veryGood": "Tre bona"
},
"filmstrip": {
"accessibilityLabel": {
"heading": "Videaj bildetoj"
}
},
"giphy": {
"noResults": "Rezultoj ne trovitaj :(",
"search": "Serĉi en GIPHY"
},
"helpView": {
"title": "Helpejo"
},
"incomingCall": {
"answer": "Respondi",
"audioCallTitle": "Alvenanta voko",
@@ -461,14 +540,14 @@
"dialInSummaryError": "Eraro dum venigo de telefonadaj informoj. Bonvolu reprovi poste.",
"dialInTollFree": "Senkosta numero",
"genericError": "Oj, io fuŝiĝis.",
"inviteLiveStream": "Por vidi la tujan elsendfluon, alklaku ĉi tiun ligilon: {{url}}",
"inviteLiveStream": "Por vidi la tujan elsendfluon, alklaku ĉi-tiun ligilon: {{url}}",
"invitePhone": "Por aliĝi per telefono anstataŭe, tuŝu tion: {{number}},,{{conferenceID}}#\n",
"invitePhoneAlternatives": "Ĉu vi serĉas alian telefonnumeron?\nVidi la telefonnumerojn de la kunveno: {{url}}\n\n\nSe vi vokas ankaŭ per ĉambra telefono, vi povas aliĝi sen sono: {{silentUrl}}",
"inviteSipEndpoint": "Por aliĝi per la SIP adreso, entajpu tio: {{sipUri}}.",
"inviteTextiOSInviteUrl": "Alklaku tiu ĉi ligilon pour aliĝi: {{inviteUrl}}.",
"inviteTextiOSJoinSilent": "Se vi aliĝas per ĉambra telefono, uzu ĉi tiun ligon por aliĝi sen konektiĝi al audio:{{silentUrl}}.",
"inviteTextiOSInviteUrl": "Alklaku tiu-ĉi ligilon pour aliĝi: {{inviteUrl}}.",
"inviteTextiOSJoinSilent": "Se vi aliĝas per ĉambra telefono, uzu ĉi-tiun ligon por aliĝi sen konektiĝi al audio:{{silentUrl}}.",
"inviteTextiOSPersonal": "{{name}} invitas vin al kunveno.",
"inviteTextiOSPhone": "Por aliĝi telefone, uzu ĉi tiun numeron: {{number}},,{{conferenceID}}#. Se vi serĉas alian numeron, jen la plena listo: {{didUrl}}.",
"inviteTextiOSPhone": "Por aliĝi telefone, uzu ĉi-tiun numeron: {{number}},,{{conferenceID}}#. Se vi serĉas alian numeron, jen la plena listo: {{didUrl}}.",
"inviteURLFirstPartGeneral": "Vi estas invitita al kunveno.",
"inviteURLFirstPartPersonal": "{{name}} invitas vin al kunveno.\n",
"inviteURLSecondPart": "\nAliĝi al la kunveno:\n{{url}}\n",
@@ -482,8 +561,9 @@
"password": "$t(lockRoomPasswordUppercase):",
"reachedLimit": "Vi atingis la limon de via subskribo.",
"sip": "SIP-adreso",
"sipAudioOnly": "SIP nur-aŭdia adreso",
"title": "Kundividi",
"tooltip": "Kundividi ligilon kaj telefonnumeron por ĉi tiu kunveno",
"tooltip": "Kundividi ligilon kaj telefonnumeron por ĉi-tiu kunveno",
"upgradeOptions": "Bonvolu kontroli la ĝisdatigajn opciojn."
},
"inlineDialogFailure": {
@@ -549,7 +629,7 @@
"onBy": "{{name}} komencis la tujan elsendfluon",
"pending": "Startigo de tuja elsendfluo…",
"serviceName": "Servoj de tuja elsendado",
"sessionAlreadyActive": "Oni jam registras aŭ vivelsendas ĉi tiun seancon.",
"sessionAlreadyActive": "Oni jam registras aŭ vivelsendas ĉi-tiun seancon.",
"signIn": "Ensaluti kun Google",
"signInCTA": "Ensalutu aŭ entajpu vian ŝlosilon tuja elsendado el YouTube.",
"signOut": "Elsaluti",
@@ -561,9 +641,6 @@
"youtubeTerms": "Uzkondiĉoj de YouTube"
},
"lobby": {
"admit": "Akcepti",
"admitAll": "Akcepti ĉion",
"allow": "Permesi",
"backToKnockModeButton": "Petu por aliĝi",
"chat": "Babilejo",
"dialogTitle": "Atendeja reĝimo",
@@ -589,16 +666,14 @@
"knockingParticipantList": "Listo de uzantoj, kiuj volas aliĝi",
"lobbyChatStartedNotification": "{{moderator}} startis atendejan babilejon kun {{attendee}}.",
"lobbyChatStartedTitle": "{{moderator}} startis atendejan babilejon kun vi.",
"lobbyClosed": "La atendeja babilejo estas fermita.",
"nameField": "Entajpu vian nomon",
"notificationLobbyAccessDenied": "{{targetParticipantName}} estis malakceptita aliĝi de {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} estis akceptita aliĝi de {{originParticipantName}}",
"notificationLobbyDisabled": "{{originParticipantName}} malŝaltis atendejon",
"notificationLobbyEnabled": "{{originParticipantName}} ŝaltis atendejon",
"notificationTitle": "Atendejo",
"passwordField": "Entajpu pasvorton de la renkontiĝo",
"passwordJoinButton": "Aliĝi",
"reject": "Malakceptu",
"rejectAll": "Malakceptu ĉion",
"title": "Atendejo",
"toggleLabel": "Ŝaltu atendejon"
},
@@ -626,10 +701,12 @@
"no": "Ne",
"participant": "Partoprenantoj",
"participantStats": "Statistikoj pri la partoprenantoj",
"selectTabTitle": "🎥 Bonvolu elekti ĉi tiun langeton por registrado",
"selectTabTitle": "🎥 Bonvolu elekti ĉi-tiun langeton por registrado",
"sessionToken": "Sesia ĵetono",
"start": "Komenci registradon",
"stop": "Fini registradon",
"stopping": "Finiganta registradon",
"wait": "Bonvole atendu dum la registro estas konservata",
"yes": "Jes"
},
"lockRoomPassword": "Pasvorto",
@@ -649,8 +726,13 @@
"connectedOneMember": "{{name}} aliĝis al la kunveno",
"connectedThreePlusMembers": "{{name}} kaj {{count}} aliaj aliĝis al la kunveno",
"connectedTwoMembers": "{{first}} kaj {{second}} aliĝis al la kunveno",
"dataChannelClosed": "Videa kvalito estas malboniĝita.",
"dataChannelClosedDescription": "La ponta kanalo estas malkonektita, do videa kvalito restas ĉe la plej malalta grado.",
"disabledIframe": "Enkorpigado estas nur por demonstri, do ĉi-tiu kunveno malkonektos post {{timeout}} minutoj.",
"disabledIframeSecondary": "Enkorpigado de {{domain}} estas nur por demonstri, do ĉi-tiu kunveno malkonektos post {{timeout}} minutoj.",
"disconnected": "malkonektita",
"displayNotifications": "Montru sciigojn por",
"dontRemindMe": "Ne sciigu min",
"focus": "Kunvena atento",
"focusFail": "{{component}} ne estas disponebla reprovu post {{ms}} sekundoj",
"gifsMenu": "GIPHY",
@@ -659,6 +741,7 @@
"invitedOneMember": "{{name}} estis invitita",
"invitedThreePlusMembers": "{{name}} kaj {{count}} aliaj estis invititaj",
"invitedTwoMembers": "{{first}} kaj {{second}} estis invititaj",
"joinMeeting": "Aliĝi",
"kickParticipant": "{{kicked}} estis forĵetita de {{kicker}}",
"leftOneMember": "{{name}} foriris el la kunveno",
"leftThreePlusMembers": "{{name}} kaj multaj aliaj foriris el la kunveno",
@@ -666,7 +749,7 @@
"linkToSalesforce": "Ligilo al Salesforce",
"linkToSalesforceDescription": "Vi povas ligi la kunvenan resumon al Salesforce objekto.",
"linkToSalesforceError": "Malsukcesis ligi la kunvenon al Salesforces",
"linkToSalesforceKey": "Ligi ĉi tiun kunvenon",
"linkToSalesforceKey": "Ligi ĉi-tiun kunvenon",
"linkToSalesforceProgress": "Ligante la kunvenon al Salesforce…",
"linkToSalesforceSuccess": "La kunveno estas ligita al Salesforce.",
"localRecordingStarted": "{{name}} startigis lokan registradon.",
@@ -693,7 +776,6 @@
"newDeviceCameraTitle": "Nova kamerao detektita",
"noiseSuppressionDesktopAudioDescription": "Neeblas aktivi la nuligon de bruo dum dividado de labortabla audio. Bonvolu malŝalti ĝin kaj provi denove. ",
"noiseSuppressionFailedTitle": "Malsukcesis startigi la nuligon de bruo",
"noiseSuppressionNoTrackDescription": "Bonvolu unue malsilentigi vian mikrofonon.",
"noiseSuppressionStereoDescription": "Forigo de bruo por stereosono ankoraŭ ne estas subtenata.",
"oldElectronClientDescription1": "Ŝajnas, ke vi uzas malnovan version de la kliento de Jitsi Meet, kiu havas konatajn sekurec-vundeblojn. Bonvolu ĝisdatigi al nia ",
"oldElectronClientDescription2": "plej nova versio",
@@ -709,6 +791,8 @@
"reactionSoundsForAll": "Malebligi sonojn por ĉiuj",
"screenShareNoAudio": "La elektobutono “Kundividi sonon” ne estis elektita en la fenestro de elekto de ektrano.",
"screenShareNoAudioTitle": "Ne eblis kunhavigi sisteman audio!",
"screenSharingAudioOnlyDescription": "Notu bonvole, ke kunhavi la ekranon uzas plie la kapaciton.",
"screenSharingAudioOnlyTitle": "\"Plej Alta Rendimento\"-reĝimo",
"selfViewTitle": "Vi ĉiam povas malkaŝi la memvidon en agordoj",
"somebody": "Iu",
"startSilentDescription": "Aliĝu denove al la kunveno por ŝalti sonon",
@@ -721,15 +805,20 @@
"videoUnmuteBlockedDescription": "Malsilentigo de la kamerao kaj funkciado de kunhava labortablo estis provizore blokitaj pro sistemaj limoj.",
"videoUnmuteBlockedTitle": "Malsilentigo de la kamerao kaj kunhavigo de la ekrano estas blokitaj!",
"viewLobby": "Vidu atendejon",
"waitingParticipants": "{{waitingParticipants}} homo(j)"
"waitingParticipants": "{{waitingParticipants}} homo(j)",
"whiteboardLimitDescription": "Bonvole konservu vian progreson, ĉar la uzantlimo baldaŭ estos atingita, kaj la blanktabulo fermiĝos.",
"whiteboardLimitTitle": "Blanktabula uzado"
},
"participantsPane": {
"actions": {
"admit": "Akcepti",
"admitAll": "Akcepti ĉion",
"allow": "Al la partoprenantoj permesi:",
"allowVideo": "Permesi kameraon",
"askUnmute": "Peti malsilentigi",
"audioModeration": "Malsilentigi sin mem",
"blockEveryoneMicCamera": "Bloki la kameraon kaj la mikrofonon de ĉiuj",
"breakoutRooms": "Aneksaj ĉambroj",
"invite": "Inviti iun",
"moreModerationActions": "Pli da moderigaj opcioj",
"moreModerationControls": "Pli da moderigaj regiloj",
@@ -737,6 +826,7 @@
"mute": "Silentigi",
"muteAll": "Silentigi ĉiujn",
"muteEveryoneElse": "Silentigi ĉiujn aliajn",
"reject": "Malakceptu",
"stopEveryonesVideo": "Ĉesigu ĉies videaĵon",
"stopVideo": "Ĉesigu la videaĵon",
"unblockEveryoneMicCamera": "Malbloku ĉies mikrofonon kaj kameraon",
@@ -746,6 +836,8 @@
"headings": {
"lobby": "Atendejo ({{count}})",
"participantsList": "Partoprenantoj en la kunveno ({{count}})",
"visitorRequests": " (petoj {{count}})",
"visitors": "Vizitantaj {{count}}",
"waitingLobby": "En la atendejo ({{count}})"
},
"search": "Serĉu partoprenantojn",
@@ -753,6 +845,7 @@
},
"passwordDigitsOnly": "Ĝis {{number}} ciferoj",
"passwordSetRemotely": "agordita de alia partoprenanto",
"pinParticipant": "{{participantName}} - Pingli",
"pinnedParticipant": "La partoprenanto estas fiksita",
"polls": {
"answer": {
@@ -771,6 +864,9 @@
"removeOption": "Forigi opcion",
"send": "Sendu"
},
"errors": {
"notUniqueOption": "Ebloj devas esti unikaj"
},
"notification": {
"description": "Malfermu la enketan langeton por voĉdoni",
"title": "Oni aldonis novan enketon en la kunveno"
@@ -790,7 +886,7 @@
"audioOnlyError": "Eraro kun la aŭdaĵo:",
"audioTrackError": "Ne eblis krei sontrakon.",
"callMe": "Voku min.",
"callMeAtNumber": "Voku min al ĉi tiu numero:",
"callMeAtNumber": "Voku min al ĉi-tiu numero:",
"calling": "Voko…",
"configuringDevices": "Agordo de la aparatoj…",
"connectedWithAudioQ": "Ĉu vi estas konektita kun aŭdaĵo?",
@@ -804,7 +900,7 @@
"audioHighQuality": "Verŝajne via sono estos bonega.",
"audioLowNoVideo": "Verŝajne via sono estos malbona kaj ne estos videaĵo.",
"goodQuality": "Bonege! Via media kvalito estos tre bona.",
"noMediaConnectivity": "Ni ne sukcesis starigi aŭdvidan konekton por ĉi tiu testo. Tion kutime kaŭzas fajroŝirmilo aŭ NAT.",
"noMediaConnectivity": "Ni ne sukcesis starigi aŭdvidan konekton por ĉi-tiu testo. Tion kutime kaŭzas fajroŝirmilo aŭ NAT.",
"noVideo": "Veŝajne via videaĵo estos malbonega.",
"undetectable": "Se vi ankoraŭ ne povas voki per retumilo, ni rekomendas, ke vi certiĝu, ke viaj laŭtparoliloj, mikrofono kaj kamerao estas ĝuste agorditaj; ke vi donis rajtojn al via retumilo uzi viajn mikrofonon kaj kameraon; ke via retumilo estas ĝisdata. Se vi ankoraŭ ne povas voki, vi devus kontakti la programiston de la retejo.",
"veryPoorConnection": "Verŝajne la kvalito de via voko estos malbonega.",
@@ -837,9 +933,11 @@
"lookGood": "Via mikrofono funkcias ĝuste",
"or": "Aŭ",
"premeeting": "Antaŭkunveno",
"proceedAnyway": "Daŭrigi",
"screenSharingError": "Eraro kun la ekrandividado:",
"showScreen": "Ebligu antaŭkunvenon ekranon",
"startWithPhone": "Komencu kun la telefona sono",
"unsafeRoomConsent": "Akceptu la riskojn, kaj daŭrigi",
"videoOnlyError": "Eraro kun la videaĵo:",
"videoTrackError": "Ne eblis krei videotrakon.",
"viewAllNumbers": "Vidu ĉiujn numerojn"
@@ -858,9 +956,6 @@
"rejected": "Malakceptita",
"ringing": "Sonorado…"
},
"privacyView": {
"title": "Privateco"
},
"profile": {
"avatar": "Profilbildo",
"setDisplayNameLabel": "Agordi vian videblan nomon",
@@ -872,7 +967,7 @@
"raisedHandsLabel": "Nombro da levitaj manoj",
"record": {
"already": {
"linked": "La kunveno jam estas ligita al tiu ĉi Salesforce-objekto."
"linked": "La kunveno jam estas ligita al tiu-ĉi Salesforce-objekto."
},
"type": {
"account": "Konto",
@@ -914,6 +1009,7 @@
"localRecordingVideoWarning": "Por registri vian videon, ŝaltu la kameraon antaŭ vi komencas la registradon.",
"localRecordingWarning": "Certigu, ke vi elektas la nunan langeton por uzi la ĝustajn filmetojn kaj sonojn. La registrado estas nuntempe limigita al 1GB, kio estas proksimume 100 minutoj.",
"loggedIn": "Ensalutinta kiel {{userName}}",
"noMicPermission": "Mikrofono ne povis esti uzata. Bonvole donu permeson uzi la mikrofonon.",
"noStreams": "Neniu aŭdio aŭ videofluo detektita.",
"off": "Registrado finita",
"offBy": "{{name}} ĉesigis la registradon",
@@ -922,12 +1018,15 @@
"onlyRecordSelf": "Registri nur miajn aŭd- kaj videofluojn",
"pending": "Prepariĝo por registrado de la kunveno…",
"rec": "REG",
"recordAudioAndVideo": "Konservu kaj aŭdion kaj videon",
"recordTranscription": "Konservu transskribon",
"saveLocalRecording": "Konservu registraddosieron loke (Beta)",
"serviceDescription": "Via registraĵo estos konservita de la registra servo",
"serviceDescriptionCloud": "Nubo registrado",
"serviceDescriptionCloudInfo": "Registritaj renkontiĝoj estas aŭtomate forigitaj 24h post sia tempo de registrado.",
"serviceName": "Registra servo",
"sessionAlreadyActive": "Ĉi tiu sesio jam estas registrita aŭ vivelsendita.",
"showAdvancedOptions": "Detalaj agordoj",
"signIn": "Ensaluti",
"signOut": "Elsaluti",
"surfaceError": "Bonvolu elekti la nunan langeton.",
@@ -943,10 +1042,17 @@
"security": {
"about": "Vi povas aldoni $t(lockRoomPassword) al via renkontiĝo. Partoprenantoj devos doni la $t(lockRoomPassword) antaŭ ol ili rajtas aliĝi al la renkontiĝo.",
"aboutReadOnly": "Moderaciuloj povas aldoni $t(lockRoomPassword) al la renkontiĝo. Partoprenantoj devos doni la $t(lockRoomPassword) antaŭ ol ili rajtas aliĝi al la renkontiĝo.",
"insecureRoomNameWarning": "La ĉambronomo estas nesekura. Nedezirataj partoprenantoj povas aliĝi al via prelego. Konsideru sekurigi vian renkontiĝon per la sekureca butono.",
"title": "Sekurecaj Opcioj"
"insecureRoomNameWarningNative": "Ĉi-tiu ĉambro ne estas sekura. Nevolataj partoprenantoj povas aliĝi vian kunvenvon.",
"insecureRoomNameWarningWeb": "Ĉi-tiu ĉambro ne estas sekura. Nevolataj partoprenantoj povas aliĝi vian kunvenvon. {{recommendAction}} Lerni pli pri sekuri vian kunvenon <a href=\"{{securityUrl}}\" rel=\"security\" target=\"_blank\">ĉi-tie</a>.",
"title": "Sekurecaj Opcioj",
"unsafeRoomActions": {
"meeting": "Konsideru sekurigi vian kunvenon per la sekureca butono.",
"prejoin": "Konsideru uzi pli unikan kunvenan nomon.",
"welcome": "Konsideru uzi pli unikan kunvenan nomon, aŭ elekti unu el la sugestataj."
}
},
"settings": {
"audio": "Aŭdio",
"buttonLabel": "Agordoj",
"calendar": {
"about": "La integrigo de kalendaro {{appName}} estas uzata por sekure aliri vian kalendaron, por ke ĝi povu legi planitajn eventojn.",
@@ -967,9 +1073,11 @@
"maxStageParticipants": "Maksimuma nombro da partoprenantoj, kiuj povas esti alpinglitaj al la ĉefa scenejo (EXPERIMENTA)",
"microphones": "Mikrofonoj",
"moderator": "Kunvenestro",
"moderatorOptions": "Kunvenestaj agordoj",
"more": "Pli",
"name": "Nomo",
"noDevice": "Neniu",
"notifications": "Sciigoj",
"participantJoined": "Partoprenanto aliĝis",
"participantKnocking": "Partoprenanto eniris atendejon",
"participantLeft": "Partoprenanto foriris",
@@ -980,13 +1088,14 @@
"selectCamera": "Kamerao",
"selectMic": "Mikrofono",
"selfView": "Memrigardo",
"sounds": "Sonoj",
"shortcuts": "Ŝparvojoj",
"speakers": "Laŭparoliloj",
"startAudioMuted": "Ĉiuj komenciĝas silentaj",
"startReactionsMuted": "Silentigu la reagajn sonojn por ĉiujn",
"startVideoMuted": "Ĉiuj komenciĝas kaŝitaj",
"talkWhileMuted": "Parolu dum silentigita",
"title": "Agordoj"
"title": "Agordoj",
"video": "Video"
},
"settingsView": {
"advanced": "Altnivela",
@@ -994,6 +1103,7 @@
"alertOk": "Bone",
"alertTitle": "Atentigo",
"alertURLText": "La entajpita URL de servilo estas nevalida",
"apply": "Apliki",
"buildInfoSection": "Informoj pri la versio",
"conferenceSection": "Konferenco",
"disableCallIntegration": "Malŝalti denaskan integrigon de vokoj",
@@ -1004,12 +1114,14 @@
"displayNamePlaceholderText": "Eg: Petro Ekzemplulo",
"email": "Retadreso",
"emailPlaceholderText": "retadreso@ekzemplo.com",
"gavatarMessage": "La profilbildo de via Gravatar-konto estos uzata se via retadreso ligas al Gravatar-konto",
"goTo": "Iru al",
"header": "Agordoj",
"help": "Helpo",
"links": "Ligiloj",
"privacy": "Privateco",
"profileSection": "Profilo",
"sdkVersion": "SDK versio",
"serverURL": "URL de servilo",
"showAdvanced": "Montri altnivelajn agordojn",
"startCarModeInLowBandwidthMode": "Komencu aŭtoreĝimon en malaltkapacita reĝimo",
@@ -1019,8 +1131,8 @@
"version": "Versio"
},
"share": {
"dialInfoText": "\n\n=====\n\nĈu vi volas simple voki per via telefono?\n\n{{defaultDialInNumber}}Alklaku ĉi tiun ligilon por vidi la telefonnumerojn por ĉi tiu kunveno\n{{dialInfoPageUrl}}",
"mainText": "Alklaku ĉi tiun ligilon por aliĝi al la kunveno:\n{{roomUrl}}"
"dialInfoText": "\n\n=====\n\nĈu vi volas simple voki per via telefono?\n\n{{defaultDialInNumber}}Alklaku ĉi-tiun ligilon por vidi la telefonnumerojn por ĉi-tiu kunveno\n{{dialInfoPageUrl}}",
"mainText": "Alklaku ĉi-tiun ligilon por aliĝi al la kunveno:\n{{roomUrl}}"
},
"speaker": "Laŭtparolilo",
"speakerStats": {
@@ -1035,6 +1147,7 @@
"neutral": "Neŭtrala",
"sad": "Malĝoja",
"search": "Serĉu",
"searchHint": "Serĉu partoprenantojn",
"seconds": "{{count}}s",
"speakerStats": "Statistikoj pri la parolanto",
"speakerTime": "Tempo de parolado",
@@ -1061,25 +1174,35 @@
"audioOnly": "Baskuligi nur-sonan reĝimon",
"audioRoute": "Elekti la sonaparaton",
"boo": "Hui",
"breakoutRoom": "Eniru/Eliru ĉambreton",
"breakoutRooms": "Aneksaj ĉambroj",
"callQuality": "Agordi vidkvaliton",
"carmode": "Aŭta reĝimo",
"cc": "Baskuligi subtekstojn",
"chat": "Baskuligi tujmesaĝilan fenestron",
"clap": "Aplaŭdi",
"closeChat": "Eliri babilejon",
"closeMoreActions": "Fermi agan dialogujon",
"closeParticipantsPane": "Fermi fenestro de partoprenantoj",
"collapse": "Maletendi",
"dock": "Doku en ĉefa fenestro",
"document": "Baskuligi kundividitan dokumenton",
"documentClose": "Fermi kunhavatan dokumenton",
"documentOpen": "Malfermi kunhavatan dokumenton",
"download": "Elŝuti niajn aplikaĵojn",
"embedMeeting": "Enkorpigita renkontiĝo",
"endConference": "Finu kunvenon por ĉiuj",
"enterFullScreen": "Vidi per plena ekrano",
"enterTileView": "Vidi per kahela reĝimo",
"exitFullScreen": "Eliri de plena ekrano",
"exitTileView": "Eliri de kahela reĝimo",
"expand": "Etendi",
"feedback": "Lasi recenzon",
"fullScreen": "Baskuligi tutekranan reĝimon",
"giphy": "Baskuligi GIPHY menuon",
"grantModerator": "Donu Rajtojn de Moderatoro",
"hangup": "Forlasi la vokon",
"heading": "Ilobreto",
"help": "Helpo",
"hideWhiteboard": "Kaŝi blanktabulon",
"invite": "Inviti homojn",
"kick": "Forĵeti partoprenanton",
"laugh": "Ridi",
@@ -1089,6 +1212,7 @@
"lobbyButton": "Ŝaltu/Malŝaltu atendejan reĝimon",
"localRecording": "Baskuligi lokajn registrilojn",
"lockRoom": "Baskuligi pasvorton por la kunveno",
"lowerHand": "Mallevi la manon",
"moreActions": "Baskuligi la menuon kun pli da agoj",
"moreActionsMenu": "Menuo kun pli da agoj",
"moreOptions": "Montri pli da ebloj",
@@ -1097,12 +1221,15 @@
"muteEveryoneElse": "Silentigu ĉiujn aliajn",
"muteEveryoneElsesVideoStream": "Ĉesigu la videon de ĉiuj aliaj",
"muteEveryonesVideoStream": "Ĉesigu ĉies videon",
"muteGUMPending": "Konektanta vian mikrofonon",
"noiseSuppression": "Bruo nuligo",
"openChat": "Malfermi babilejon",
"participants": "Partoprenantoj",
"pip": "Baskuligi la reĝimon “bildo en bildo”",
"privateMessage": "Sendi privatan mesaĝon",
"profile": "Redakti vian profilon",
"raiseHand": "Baskuligi manlevon",
"reactions": "Reagoj",
"reactionsMenu": "Malfermu / Fermu reagojn menuon",
"recording": "Baskuligi registradon",
"remoteMute": "Silentigi partoprenanton",
@@ -1116,16 +1243,20 @@
"sharedvideo": "Baskuligi kundividadon de videoj",
"shortcuts": "Baskuligi fulmklavojn",
"show": "Montri sur scenejo",
"showWhiteboard": "Montri blanktabulon",
"silence": "Silento",
"speakerStats": "Baskuligi statistikojn pri parolanto",
"stopScreenSharing": "Halti kunhavi vian ekranon",
"stopSharedVideo": "Halti kunhavi vian videon",
"surprised": "Surprizita",
"tileView": "Baskuligi kahelan vidon",
"toggleCamera": "Baskuligi kameraon",
"toggleFilmstrip": "Baskuligi filmbendon",
"undock": "Maldokiĝu en apartan fenestron",
"unmute": "Malsilentigi",
"videoblur": "Baskuligi malnetigon de video",
"videomute": "Silentigi/malsilentigi videon",
"whiteboard": "Montru / Kaŝu blanktabulon"
"videomuteGUMPending": "Konektanta vian kameraon",
"videounmute": "Ŝalti kameraon"
},
"addPeople": "Aldoni homojn al via voko",
"audioOnlyOff": "Malŝalti malalt-trafikan reĝimon",
@@ -1138,15 +1269,16 @@
"chat": "Malfermi / Fermi babilejon",
"clap": "Aplaŭdi",
"closeChat": "Malfermi babilejon",
"closeParticipantsPane": "Malfermu partoprenantan dialogujon",
"closeReactionsMenu": "Fermu la menuon de reagoj",
"disableNoiseSuppression": "Malŝaltu bruonuligon",
"disableReactionSounds": "Vi povas malŝalti reagsonojn por ĉi tiu renkontiĝo",
"dock": "Doku en ĉefa fenestro",
"documentClose": "Malfermi/Fermi komunan dokumenton",
"documentOpen": "Malfermi/Fermi komunan dokumenton",
"disableReactionSounds": "Vi povas malŝalti reagsonojn por ĉi-tiu renkontiĝo",
"documentClose": "Fermi komunan dokumenton",
"documentOpen": "Malfermi komunan dokumenton",
"download": "Elŝuti niajn aplikaĵojn",
"e2ee": "Tutvoja ĉifrado",
"embedMeeting": "Enkorpigita renkontiĝo",
"enableNoiseSuppression": "Ebligi bruan redukton",
"endConference": "Finu la renkontiĝon por ĉiuj",
"enterFullScreen": "Vidi tutekrane",
"enterTileView": "Vidi kahele",
@@ -1173,7 +1305,8 @@
"moreOptions": "Pli da ebloj",
"mute": "Silentigi/Malsilentigi",
"muteEveryone": "Silentigi ĉiujn",
"muteEveryonesVideo": "Malŝalto ĉies kameraon",
"muteEveryonesVideo": "Malŝalti ĉies kameraon",
"muteGUMPending": "Liganta vian mikrofonon",
"noAudioSignalDesc": "Se vi ne intence silentigis ĝin per viaj sistemaj agordoj aŭ fizike, konsideru transŝalti al alia aparato.",
"noAudioSignalDescSuggestion": "Se vi ne intence silentigis ĝin per viaj sistemaj agordoj aŭ fizike, konsideru transŝalti al la proponata aparato.",
"noAudioSignalDialInDesc": "Vi povas ankaŭ telefoni per:",
@@ -1196,6 +1329,7 @@
"reactionLike": "Sendi reagon “ŝati”",
"reactionSilence": "Sendi reagon “silento”",
"reactionSurprised": "Sendi reagon “surprizita”",
"reactions": "Reagoj",
"security": "Sekurecaj opcioj",
"selectBackground": "Elekti fonon",
"shareRoom": "Inviti iun",
@@ -1215,9 +1349,11 @@
"talkWhileMutedPopup": "Ĉu vi provas paroli? Vi estas silentigita.",
"tileViewToggle": "Baskuligi titolan vidon",
"toggleCamera": "Baskuligi kameraon",
"undock": "Maldokiĝu en apartan fenestron",
"unmute": "Malsilentigi mikrofonon",
"videoSettings": "Video-agordoj",
"videomute": "Ŝalti / Malŝalti kameraon"
"videomute": "Ŝalti / Malŝalti kameraon",
"videomuteGUMPending": "Konektanta via kamerao",
"videounmute": "Ŝalti kameraon"
},
"transcribing": {
"ccButtonTooltip": "Komenci / Ĉesigi subtekstojn",
@@ -1235,6 +1371,7 @@
"subtitlesOff": "Malŝaltitaj",
"tr": "TR"
},
"unpinParticipant": "{{participantName}} - Malpingli",
"userMedia": {
"androidGrantPermissions": "Elektu <b><i>Permesi</i></b> kiam via foliumilo petos permesojn.",
"chromeGrantPermissions": "Elektu <b><i>Permesi</i></b> kiam via foliumilo petos permesojn.",
@@ -1260,7 +1397,7 @@
"videoStatus": {
"adjustFor": "Ĝustigi por:",
"audioOnly": "SON",
"audioOnlyExpanded": "Vi estas en malalt-trafika reĝimo. En ĉi tiu reĝimo vi ricevos nur sonon kaj kundividatajn ekranojn.",
"audioOnlyExpanded": "Vi estas en malalt-trafika reĝimo. En ĉi-tiu reĝimo vi ricevos nur sonon kaj kundividatajn ekranojn.",
"bestPerformance": " Plej bona rendimento",
"callQuality": "Videa kvalito",
"hd": "AD",
@@ -1273,9 +1410,11 @@
"ldTooltip": "La video estas en malaltkvalita distingivo",
"lowDefinition": "Malaltkvalita distingivo",
"performanceSettings": "Agordoj de rendimento",
"recording": "Registranta",
"sd": "ND",
"sdTooltip": "La video estas en normalkvalita distingivo",
"standardDefinition": "Normalkvalita distingivo"
"standardDefinition": "Normalkvalita distingivo",
"streaming": "Elsendfluanta"
},
"videothumbnail": {
"connectionInfo": "Informoj pri Konekto",
@@ -1287,6 +1426,7 @@
"grantModerator": "Donu Rajtojn de Moderatoro",
"hideSelfView": "Kaŝi memvidon",
"kick": "Forĵeti",
"mirrorVideo": "Speguli mian videon",
"moderator": "Kunvenestro",
"mute": "Partoprenanto silentigita",
"muted": "Silentigita",
@@ -1296,10 +1436,15 @@
"show": "Montri sur scenejo",
"showSelfView": "Montri memvidon",
"unpinFromStage": "Malalpingli",
"verify": "Aprobi partoprenanton",
"videoMuted": "Kamera malŝaltita",
"videomute": "La partoprenanto malŝaltis la kameraon"
},
"virtualBackground": {
"accessibilityLabel": {
"currentBackground": "Nuna fono: {{background}}",
"selectBackground": "Elekti fonon"
},
"addBackground": "Aldoni fonon",
"apply": "Apliki",
"backgroundEffectError": "Malsukcesis apliki fonan efikon.",
@@ -1321,9 +1466,17 @@
"title": "Virtualaj fonoj",
"uploadedImage": "Alŝutita bildo {{index}}",
"webAssemblyWarning": "WebAssembly ne subtenata",
"webAssemblyWarningDescription": "WebAssembly malŝaltita aŭ ne subtenata de ĉi tiu retumilo"
"webAssemblyWarningDescription": "WebAssembly malŝaltita aŭ ne subtenata de ĉi-tiu retumilo"
},
"volumeSlider": "",
"visitors": {
"chatIndicator": "(vizitanto)",
"labelTooltip": "Nombro da vizitantoj: {{count}}",
"notification": {
"description": "Levu la manon por partopreni",
"title": "Vi estas vizitanto en la kunveno"
}
},
"volumeSlider": "Laŭteca ŝovilo",
"welcomepage": {
"accessibilityLabel": {
"join": "Tuŝu por aliĝi",
@@ -1355,6 +1508,7 @@
"microsoftLogo": "Logotipo de Microsoft",
"policyLogo": "Logotipo de regularo"
},
"meetingsAccessibilityLabel": "Kunveno",
"mobileDownLoadLinkAndroid": "Elŝutu apon por Android",
"mobileDownLoadLinkFDroid": "Elŝutu apon por F-Droid",
"mobileDownLoadLinkIos": "Elŝutu apon por iOS",
@@ -1363,6 +1517,7 @@
"recentList": "Lastaj",
"recentListDelete": "Forigi",
"recentListEmpty": "Via listo de lastaj kunvenoj estas malplena. Babilu kun via teamo kaj vi trovos ĉi tie ĉiujn viajn lastajn kunvenojn.",
"recentMeetings": "Viaj lastatempaj kunvenoj",
"reducedUIText": "Bonvenon all {{app}}!",
"roomNameAllowedChars": "La nomo de la kunveno ne povas enhavi la jenajn signojn: ?, &, :, ', \", %, #.",
"roomname": "Entajpu nomon de ĉambro",
@@ -1371,6 +1526,12 @@
"settings": "Agordoj",
"startMeeting": "Komenci renkontiĝon",
"terms": "Uzkondiĉoj",
"title": "Sekuraj, multfunkciaj kaj plene senpagaj video-konferencoj"
"title": "Sekuraj, multfunkciaj kaj plene senpagaj video-konferencoj",
"upcomingMeetings": "Via estontecaj kunveno"
},
"whiteboard": {
"accessibilityLabel": {
"heading": "Blanktabulo"
}
}
}

View File

@@ -598,8 +598,6 @@
"youtubeTerms": "Términos de servicios de YouTube"
},
"lobby": {
"admit": "Admitir",
"admitAll": "Admitir todo",
"backToKnockModeButton": "No hay contraseña, pide permiso para entrar.",
"chat": "Chat",
"dialogTitle": "Sala de espera",
@@ -633,8 +631,6 @@
"notificationTitle": "Sala de espera",
"passwordField": "Introduce la contraseña de la reunión",
"passwordJoinButton": "Entrar",
"reject": "Rechazar",
"rejectAll": "Rechazar todo",
"title": "Sala de espera",
"toggleLabel": "Activar sala de espera"
},
@@ -768,6 +764,8 @@
},
"participantsPane": {
"actions": {
"admit": "Admitir",
"admitAll": "Admitir todo",
"allow": "Permitir a los asistentes:",
"allowVideo": "Permitir vídeo",
"askUnmute": "Pida que le quiten el silencio",
@@ -780,6 +778,7 @@
"mute": "Silenciar",
"muteAll": "Silenciar a todos",
"muteEveryoneElse": "Silenciar al resto",
"reject": "Rechazar",
"stopEveryonesVideo": "Detener el vídeo de todos",
"stopVideo": "Detener el vídeo",
"unblockEveryoneMicCamera": "Desbloquear el micrófono y la cámara de todos",
@@ -816,6 +815,9 @@
"removeOption": "Eliminar la opción",
"send": "Enviar"
},
"errors": {
"notUniqueOption": "Las opciones deben ser únicas"
},
"notification": {
"description": "Abre la pestaña de encuestas para votar",
"title": "Se ha añadido una nueva encuesta a esta reunión"
@@ -1090,6 +1092,7 @@
"neutral": "Neutral",
"sad": "Triste",
"search": "Buscar",
"searchHint": "Buscar participantes",
"seconds": "{{count}} s",
"speakerStats": "Estadísticas de participantes",
"speakerTime": "Tiempo hablado",

View File

@@ -521,8 +521,6 @@
"youtubeTerms": "Términos de servicios de YouTube"
},
"lobby": {
"admit": "Admitir",
"admitAll": "Admitir todo",
"allow": "permitir",
"backToKnockModeButton": "No hay contraseña, pide permiso para entrar.",
"dialogTitle": "Sala de espera",
@@ -553,8 +551,6 @@
"notificationTitle": "Sala de espera",
"passwordField": "Introduce la contraseña de la reunión",
"passwordJoinButton": "Entrar",
"reject": "Rechazar",
"rejectAll": "Rechazar todo",
"title": "Sala de espera",
"toggleLabel": "Activar sala de espera"
},
@@ -652,6 +648,8 @@
},
"participantsPane": {
"actions": {
"admit": "Admitir",
"admitAll": "Admitir todo",
"allow": "Permitir a los asistentes:",
"allowVideo": "Permitir vídeo",
"askUnmute": "Pida que le quiten el silencio",
@@ -661,6 +659,7 @@
"mute": "Silenciar",
"muteAll": "Silenciar a todos los demás",
"muteEveryoneElse": "Silenciar al resto",
"reject": "Rechazar",
"stopEveryonesVideo": "Detener el vídeo de todos",
"stopVideo": "Detener el vídeo",
"unblockEveryoneMicCamera": "Desbloquear el micrófono y la cámara de todos",
@@ -692,6 +691,9 @@
"removeOption": "Eliminar la opción",
"send": "Enviar"
},
"errors": {
"notUniqueOption": "Las opciones deben ser únicas"
},
"notification": {
"description": "Abre la pestaña de encuestas para votar",
"title": "Se ha añadido una nueva encuesta a esta reunión"
@@ -898,6 +900,7 @@
"minutes": "{{count}} min",
"name": "Nombre",
"search": "Buscar",
"searchHint": "Buscar participantes",
"seconds": "{{count}} s",
"speakerStats": "Estadísticas de participantes",
"speakerTime": "Tiempo hablado"

View File

@@ -467,6 +467,11 @@
},
"passwordDigitsOnly": "Kuni {{number}} tähemärki",
"passwordSetRemotely": "määratud teise kasutaja poolt",
"polls": {
"errors": {
"notUniqueOption": "Valikud peavad olema ainulaadsed"
}
},
"poweredby": "teieni toodud",
"presenceStatus": {
"busy": "Hõivatud",
@@ -571,6 +576,8 @@
"hours": "{{count}}t",
"minutes": "{{count}}m",
"name": "Nimi",
"search": "Otsi",
"searchHint": "Otsige osalejaid",
"seconds": "{{count}}s",
"speakerStats": "Kõneleja andmed",
"speakerTime": "Kõnelemise aeg"

View File

@@ -463,8 +463,6 @@
"youtubeTerms": "YouTuberen erabilpen baldintzak"
},
"lobby": {
"admit": "Onartu",
"admitAll": "Onartu guztiak",
"allow": "Baimendu",
"backToKnockModeButton": "Ez du pasahitza erabili, baina sartzea eskatu du",
"dialogTitle": "Itxaron-gela modua",
@@ -494,7 +492,6 @@
"notificationTitle": "Itxaron-gela",
"passwordField": "Idatzi bileraren pasahitza",
"passwordJoinButton": "Sartu",
"reject": "Baztertu",
"title": "Itxaron-gela",
"toggleLabel": "Itxaron-gela aktibatu"
},
@@ -576,8 +573,11 @@
},
"participantsPane": {
"actions": {
"admit": "Onartu",
"admitAll": "Onartu guztiak",
"invite": "Gonbidatu norbait",
"muteAll": "Ixilarazi guztiak",
"reject": "Baztertu",
"stopVideo": "Gelditu bideoa"
},
"close": "Itxi",
@@ -588,6 +588,11 @@
},
"passwordDigitsOnly": "{{number}} digitu arte",
"passwordSetRemotely": "beste parte-hartzaile batek ezarrita",
"polls": {
"errors": {
"notUniqueOption": "Aukerak bakarrak izan behar dira"
}
},
"poweredby": "garatzailea:",
"prejoin": {
"audioAndVideoError": "Errorea audio eta bideoan:",
@@ -766,6 +771,8 @@
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Izena",
"search": "Bilatu",
"searchHint": "Bilatu parte-hartzaileak",
"seconds": "{{count}}s",
"speakerStats": "Hizlariaren estatistikak",
"speakerTime": "Hizlariaren denbora"

View File

@@ -606,8 +606,6 @@
"youtubeTerms": "شرایط خدمات یوتیوب"
},
"lobby": {
"admit": "پذیرفتن",
"admitAll": "پذیرفتن همه",
"backToKnockModeButton": "درخواست برای پیوستن",
"chat": "گپ",
"dialogTitle": "حالت اتاق انتظار",
@@ -641,8 +639,6 @@
"notificationTitle": "اتاق انتظار",
"passwordField": "گذرواژهٔ جلسه را وارد کنید",
"passwordJoinButton": "پیوستن",
"reject": "ردکردن",
"rejectAll": "ردکردن همه",
"title": "اتاق انتظار",
"toggleLabel": "فعال‌کردن اتاق انتظار"
},
@@ -776,6 +772,8 @@
},
"participantsPane": {
"actions": {
"admit": "پذیرفتن",
"admitAll": "پذیرفتن همه",
"allow": "به حاضران اجازه دهید:",
"allowVideo": "اجازهٔ ویدیو",
"askUnmute": "درخواست وصل‌کردن صدا",
@@ -788,6 +786,7 @@
"mute": "بی‌صداکردن",
"muteAll": "بی‌صداکردن همه",
"muteEveryoneElse": "بی‌صداکردن بقیه افراد",
"reject": "ردکردن",
"stopEveryonesVideo": "توقف ویدیوی همه",
"stopVideo": "توقف ویدیو",
"unblockEveryoneMicCamera": "رفع مسدودی میکروفون و دوربین همه",
@@ -824,6 +823,9 @@
"removeOption": "حذف گزینه",
"send": "ارسال"
},
"errors": {
"notUniqueOption": "گزینه ها باید منحصر به فرد باشند"
},
"notification": {
"description": "برای رأی‌دادن، زبانهٔ نظرسنجی‌ها را باز کنید",
"title": "نظرسنجی جدیدی به این جلسه اضافه شد"
@@ -1098,6 +1100,7 @@
"neutral": "خنثی",
"sad": "غمگین",
"search": "جستجو",
"searchHint": "جستجوی شرکت‌کنندگان",
"seconds": "{{count}} ثانیه",
"speakerStats": "آمار شرکت‌کنندگان",
"speakerTime": "مدت زمان گوینده",

View File

@@ -438,6 +438,11 @@
},
"passwordDigitsOnly": "",
"passwordSetRemotely": "",
"polls": {
"errors": {
"notUniqueOption": "Vaihtoehtojen on oltava ainutlaatuisia"
}
},
"poweredby": "tukija:",
"presenceStatus": {
"busy": "Varattu",
@@ -535,6 +540,8 @@
"hours": "{{count}} t",
"minutes": "{{count}} min",
"name": "Nimi",
"search": "Etsi",
"searchHint": "Etsi osallistujia",
"seconds": "{{count}} s",
"speakerStats": "Puhujatilastot",
"speakerTime": "Puhujan aika"

View File

@@ -1,5 +1,8 @@
{
"addPeople": {
"accessibilityLabel": {
"meetingLink": "Lien de la réunion: {{url}}"
},
"add": "Inviter",
"addContacts": "Inviter vos contacts",
"contacts": "contacts",
@@ -39,6 +42,18 @@
"audioOnly": {
"audioOnly": "Bande passante faible"
},
"bandwidthSettings": {
"assumedBandwidthBps": "p. ex. 10000000 pour 10 Mbps ",
"assumedBandwidthBpsWarning": "Des valeurs élevées peuvent provoquer des problèmes réseaux.",
"customValue": "valeur personnalisée",
"customValueEffect": "Positionner la valeur actuelle en bps",
"leaveEmpty": "Laisser vide",
"leaveEmptyEffect": "Autoriser l'utilisation de l'estimation",
"possibleValues": "Valeurs possibles",
"setAssumedBandwidthBps": "Bande passante estimée",
"title": "Réglage de bande passante",
"zeroEffect": "Désactiver la vidéo"
},
"breakoutRooms": {
"actions": {
"add": "Ajouter salle annexe",
@@ -48,19 +63,26 @@
"leaveBreakoutRoom": "Quitter la salle annexe",
"more": "Plus",
"remove": "Supprimer",
"rename": "Renommer",
"renameBreakoutRoom": "Renommer la salle annexe",
"sendToBreakoutRoom": "Envoyer le participant dans:"
},
"breakoutList": "Liste des salles annexes",
"buttonLabel": "Salles annexes",
"defaultName": "Salle annexe #{{index}}",
"hideParticipantList": "Masquer la liste des participants",
"mainRoom": "Salle principale",
"notifications": {
"joined": "Entrée en salle annexe \"{{name}}\"",
"joinedMainRoom": "Retour à la salle principalem",
"joinedMainRoom": "Retour à la salle principale",
"joinedTitle": "Salles annexes"
}
},
"showParticipantList": "Afficher la liste des participants",
"title": "Salles annexes"
},
"calendarSync": {
"addMeetingURL": "Ajouter un lien de conférence",
"confirmAddLink": "Voulez-vous ajouter un lien Jitsi à cet événement ?",
"confirmAddLink": "Voulez-vous ajouter un lien Jitsi à cet événement?",
"error": {
"appConfiguration": "L'intégration du calendrier n'est pas correctement configurée.",
"generic": "Une erreur s'est produite. Veuillez vérifier les paramètres de votre calendrier ou tenter de l'actualiser.",
@@ -116,9 +138,9 @@
},
"chromeExtensionBanner": {
"buttonText": "Installer l'extension Chrome",
"buttonTextEdge": "Installer lextension Edge",
"buttonTextEdge": "Installer l'extension Edge",
"close": "Fermer",
"dontShowAgain": "Ne plus me montrer ceci",
"dontShowAgain": "Ne plus m'afficher ceci",
"installExtensionText": "Installer l'extension pour l'intégration de Google Calendar et Office 365"
},
"connectingOverlay": {
@@ -149,13 +171,14 @@
"connectedTo": "Connecté à :",
"e2eeVerified": "E2EE vérifié",
"framerate": "Images par seconde :",
"less": "Cacher les détails",
"less": "Masquer les détails",
"localaddress": "Adresse locale :",
"localaddress_plural": "Adresses locales :",
"localport": "Port local :",
"localport_plural": "Ports locaux :",
"maxEnabledResolution": "débit max",
"more": "Montrer les détails",
"more": "Afficher les détails",
"no": "non",
"packetloss": "Perte de paquets :",
"participant_id": "ID du participant:",
"quality": {
@@ -174,7 +197,8 @@
"status": "Connexion :",
"transport": "Transport :",
"transport_plural": "Transports :",
"video_ssrc": "Video SSRC :"
"video_ssrc": "Video SSRC :",
"yes": "oui"
},
"dateUtils": {
"earlier": "Plus tôt",
@@ -237,9 +261,12 @@
"Share": "Partager",
"Submit": "Soumettre",
"WaitForHostMsg": "La conférence n'a pas encore commencé. Si vous en êtes l'hôte, veuillez vous authentifier. Sinon, veuillez attendre son arrivée.",
"WaitingForHostButton": "Attendre l'hôte",
"WaitingForHostTitle": "En attente de l'hôte ...",
"Yes": "Oui",
"accessibilityLabel": {
"Cancel": "Annuler (quiter la popup)",
"Ok": "Ok (Sauvegarder et quiter la popup)",
"close": "Fermer la popup",
"liveStreaming": "Diffusion en direct",
"sharingTabs": "Options de partage"
@@ -248,6 +275,8 @@
"addMeetingNote": "Ajouter une note à cette conférence",
"addOptionalNote": "Ajouter une note (optionnel):",
"allow": "Autoriser",
"allowToggleCameraDialog": "Autorisez-vous {{initiatorName}} à changer votre mode de caméra ?",
"allowToggleCameraTitle": "Autoriser-vous le changement de mode de caméra ?",
"alreadySharedVideoMsg": "Un autre participant est en train de partager sa vidéo. Cette conférence ne permet de partager qu'une seule vidéo à la fois.",
"alreadySharedVideoTitle": "Une seule vidéo partagée est autorisée à la fois",
"applicationWindow": "Fenêtre d'application",
@@ -288,8 +317,8 @@
"gracefulShutdown": "Notre service est actuellement en maintenance. Veuillez réessayer plus tard.",
"grantModeratorDialog": "Êtes-vous sûr de vouloir rendre ce participant modérateur ?",
"grantModeratorTitle": "Nommer modérateur",
"hide": "Cacher",
"hideShareAudioHelper": "Ne pas montrer ce dialogue à nouveau",
"hide": "Masquer",
"hideShareAudioHelper": "Ne pas afficher ce dialogue à nouveau",
"incorrectPassword": "Nom d'utilisateur ou mot de passe incorrect",
"incorrectRoomLockPassword": "Mot de passe incorrect",
"internalError": "Oups ! Quelque chose s'est mal passée. L'erreur suivante s'est produite : {{error}}",
@@ -308,6 +337,7 @@
"lockRoom": "Ajouter un $t(lockRoomPassword) à la réunion ",
"lockTitle": "Échec du verrouillage",
"login": "Connexion",
"loginQuestion": "Voulez-vous vraiment vous connecter et quitter la conférence ?",
"logoutQuestion": "Voulez-vous vraiment vous déconnecter et arrêter la conférence ?",
"logoutTitle": "Déconnexion",
"maxUsersLimitReached": "Le nombre maximal de participants est atteint. Le conférence est complète. Merci de contacter l'organisateur de la réunion ou réessayer plus tard !",
@@ -351,8 +381,6 @@
"permissionCameraRequiredError": "L'autorisation caméra est nécessaire pour participer aux réunions avec vidéo. Merci de l'accorder dans les paramètres",
"permissionErrorTitle": "Permission nécessaire",
"permissionMicRequiredError": "L'autorisation microphone est nécessaire pour participer aux réunions avec son. Merci de l'accorder dans les paramètres",
"popupError": "Votre navigateur bloque les fenêtres pop-up. Veuillez autoriser les fenêtres pop-up dans les paramètres de votre navigateur.",
"popupErrorTitle": "Pop-up bloquée",
"readMore": "plus",
"recentlyUsedObjects": "Vos objets récemment utilisés",
"recording": "Enregistrement",
@@ -369,6 +397,8 @@
"removePassword": "Supprimer le $t(lockRoomPassword)",
"removeSharedVideoMsg": "Voulez-vous vraiment supprimer votre vidéo partagée ?",
"removeSharedVideoTitle": "Supprimer la vidéo partagée",
"renameBreakoutRoomLabel": "Nom de la salle annexe",
"renameBreakoutRoomTitle": "Renommer la salle annexe",
"reservationError": "Erreur du système de réservation",
"reservationErrorMsg": "Code d'erreur: {{code}}, message: {{msg}}",
"retry": "Réessayer",
@@ -388,11 +418,13 @@
"sendPrivateMessageTitle": "Envoyer en privé ?",
"serviceUnavailable": "Service indisponible",
"sessTerminated": "Appel terminé",
"sessTerminatedReason": "L'appel a été terminé",
"sessionRestarted": "L'appel est relancé par la passerelle",
"shareAudio": "Continuer",
"shareAudioAltText": "Pour partager le contenu voulu, naviguer vers \"Onglet du Navigateur\", sélectionner le contenu, activer le bouton \"partager laudio\" et enfin cliquer sur le bouton \"partager\"",
"shareAudioTitle": "Comment partager le son",
"shareAudioWarningD1": "vous devez cesser le partage d'écran avant de partager votre son.",
"shareAudioWarningD2": "viys devez partager votre écran à nouveau et cocher l'ootion \"Partager l'audio\".",
"shareAudioWarningD2": "vous devez partager votre écran à nouveau et cocher l'option \"Partager l'audio\".",
"shareAudioWarningH1": "Si vous voulez partager uniquement de l'audio:",
"shareAudioWarningTitle": "Vous devez cesser de partager l'écran avant de partager l'audio",
"shareMediaWarningGenericH2": "Si vous voulez partager votre écran et l'audio",
@@ -419,12 +451,30 @@
"thankYou": "Merci d'avoir utilisé {{appName}} !",
"token": "jeton",
"tokenAuthFailed": "Désolé, vous n'êtes pas autorisé à rejoindre cette conversation.",
"tokenAuthFailedReason": {
"audInvalid": "Valeur `aud` invalide. Cela doit être `jitsi`.",
"contextNotFound": "L'objet `context` est absent du payload.",
"expInvalid": "Valeur `exp` invalide.",
"featureInvalid": "Fonctionnalité invalide: {{feature}}, probablement pas encore implémentée.",
"featureValueInvalid": "Valeur invalide pour la fonctionnalité: {{feature}}.",
"featuresNotFound": "L'objet `feature` est absent du payload.",
"headerNotFound": "Header non trouvé.",
"issInvalid": "Valeur `iss` invalide. Cela doit être `chat`.",
"kidMismatch": "Key ID (kid) ne correspond pas au sub.",
"kidNotFound": "Key ID (kid) manquant.",
"nbfFuture": "La valeur `nbf` est dans le futur.",
"nbfInvalid": "Valeur `nbf` invalide.",
"payloadNotFound": "Payload non trouvé",
"tokenExpired": "Jeton expiré"
},
"tokenAuthFailedTitle": "Échec de l'authentification",
"tokenAuthFailedWithReasons": "Désolé, vous nêtes pas autorisé à rejoindre lappel. La raison possible : {{reason}}.",
"tokenAuthUnsupported": "Token URL n'est pas supporté.",
"transcribing": "Transcription",
"unlockRoom": "Supprimer le $t(lockRoomPassword) de la réunion",
"user": "Utilisateur",
"userIdentifier": "Identifiant utilisateur",
"userPassword": "mot de passe utilisateur",
"userPassword": "Mot de passe utilisateur",
"verifyParticipantConfirm": "Ils correspondent",
"verifyParticipantDismiss": "Ils ne correspondent pas",
"verifyParticipantQuestion": "EXPÉRIMENTAL: Demander au participant {{participantName}} s'il voit le même contenu dans le même ordre. ",
@@ -433,6 +483,10 @@
"viewUpgradeOptions": "Voir les options de mise à jour",
"viewUpgradeOptionsContent": "Pour obtenir un accès illimité à des capacités premium comme l'enregistrement, les transcriptions, diffusion RTMP et plus, vous devez mettre à jour votre plan.",
"viewUpgradeOptionsTitle": "Vous avez découvert une capacité premium !",
"whiteboardLimitContent": "Désolé, la limite dutilisateur du tableau blanc a été atteinte.",
"whiteboardLimitReference": "Pour plus dinformations merci de visiter",
"whiteboardLimitReferenceUrl": "notre site web",
"whiteboardLimitTitle": "Utilisation du tableau blanc limitée",
"yourEntireScreen": "Votre écran entier"
},
"documentSharing": {
@@ -445,6 +499,9 @@
"title": "Intégrer cette réunion"
},
"feedback": {
"accessibilityLabel": {
"yourChoice": "Votre choix: {{rating}}"
},
"average": "Moyen",
"bad": "Mauvais",
"detailsLabel": "Dites nous en plus à ce sujet.",
@@ -505,6 +562,7 @@
"password": "$t(lockRoomPasswordUppercase) :",
"reachedLimit": "Vous avez atteint la limite de votre abonnement.",
"sip": "adresse SIP",
"sipAudioOnly": "Adresse SIP en audio uniquement",
"title": "Partager",
"tooltip": "Partager le lien et les informations de connexion pour cette conférence",
"upgradeOptions": "Veuillez vérifier les options de mise à niveau"
@@ -544,7 +602,7 @@
},
"largeVideo": {
"screenIsShared": "Vous êtes en train de partager votre écran",
"showMeWhatImSharing": "Me montrer ce que je partage"
"showMeWhatImSharing": "M'afficher ce que je partage"
},
"liveStreaming": {
"busy": "Nous tentons de libérer des ressources de diffusion. Veuillez réessayez dans quelques minutes.",
@@ -584,8 +642,6 @@
"youtubeTerms": "Conditions d'utilisation de YouTube"
},
"lobby": {
"admit": "Accepter",
"admitAll": "Tout accepter",
"backToKnockModeButton": "Aucun mot de passe, demander à rejoindre plutôt",
"chat": "Chat",
"dialogTitle": "Mode salle d'attente",
@@ -611,16 +667,14 @@
"knockingParticipantList": "Liste des participants en attente",
"lobbyChatStartedNotification": "Un modérateur dialogue en salle d'attente avec {{attendee}}",
"lobbyChatStartedTitle": "Un modérateur dialogue en salle d'attente avec vous.",
"lobbyClosed": "La salle d'attente a été fermée.",
"nameField": "Saisissez votre nom",
"notificationLobbyAccessDenied": "{{targetParticipantName}} a été refusé par {{originParticipantName}}",
"notificationLobbyAccessGranted": "{{targetParticipantName}} a été accepté par {{originParticipantName}}",
"notificationLobbyDisabled": "Le mode salle d'attente a été désactivé par {{originParticipantName}}",
"notificationLobbyEnabled": "Le mode salle d'attente a été activé par {{originParticipantName}}",
"notificationTitle": "Salle d'attente",
"passwordField": "Veuillez saisir le mot de passe de la réunion",
"passwordJoinButton": "Rejoindre",
"reject": "Refuser",
"rejectAll": "Refuser tout",
"title": "Salle d'attente",
"toggleLabel": "Activer la salle d'attente"
},
@@ -652,6 +706,8 @@
"sessionToken": "Token de la session",
"start": "Démarrer l'enregistrement",
"stop": "Arrêter l'enregistrement",
"stopping": "Arrêt de l'enregistrement",
"wait": "Patienter pendant la sauvegarde de votre enregistrement.",
"yes": "Oui"
},
"lockRoomPassword": "mot de passe",
@@ -673,8 +729,11 @@
"connectedTwoMembers": "{{first}} et {{second}} ont rejoint la réunion",
"dataChannelClosed": "Qualité vidéo dégradée",
"dataChannelClosedDescription": "Le canal de communication avec le Bridge a été interrompu, la qualité vidéo se trouve limitée à sa valeur la plus faible.",
"disabledIframe": "L'intégration Iframe est uniquement destinée à des démos, cet appel se terminera dans {{timeout}} minutes.",
"disabledIframeSecondary": "L'intégration Iframe de {{domaine}} est uniquement destinée à des démos, cet appel se terminera dans {{timeout}} minutes.",
"disconnected": "déconnecté",
"displayNotifications": "Afficher les notifications pour",
"dontRemindMe": "Ne pas me le rappeler",
"focus": "Focus de conférence",
"focusFail": "{{component}} n'est pas disponible - réessayez dans {{ms}} sec",
"gifsMenu": "GIPHY",
@@ -683,6 +742,7 @@
"invitedOneMember": "{{name}} a été invité(e)",
"invitedThreePlusMembers": "{{name}} et {{count}} autres ont été invités",
"invitedTwoMembers": "{{first}} et {{second}} ont été invités",
"joinMeeting": "Rejoindre",
"kickParticipant": "{{kicked}} a été expulsé par {{kicker}}",
"leftOneMember": "{{name}} a quitté la réunion",
"leftThreePlusMembers": "{{name}} et beaucoup d'autres ont quitté la réunion",
@@ -717,7 +777,6 @@
"newDeviceCameraTitle": "Nouvelle caméra détectée",
"noiseSuppressionDesktopAudioDescription": "La suppression de bruit ne peut pas être activée en même temps que la partage audio du système, veuillez le désactiver et réessayer.",
"noiseSuppressionFailedTitle": "Échec du démarrage de la suppression de bruit",
"noiseSuppressionNoTrackDescription": "Veuillez activer votre microphone d'abord.",
"noiseSuppressionStereoDescription": "La suppression de bruit dune source stéréo nest pas encore supportée.",
"oldElectronClientDescription1": "Vous semblez utiliser une ancienne version du client Jitsi Meet qui présente des failles de sécurité connues. Veuillez vous assurer de mettre à jour vers notre ",
"oldElectronClientDescription2": "dernière build",
@@ -747,15 +806,20 @@
"videoUnmuteBlockedDescription": "Le rétablissement de la vidéo a été bloqué temporairement en raison de limites système.",
"videoUnmuteBlockedTitle": "Rétablissement de la caméra bloqué !",
"viewLobby": "Voir la salle d'attente",
"waitingParticipants": "{{waitingParticipants}} personnes"
"waitingParticipants": "{{waitingParticipants}} personnes",
"whiteboardLimitDescription": "Veuillez sauvegarder votre progression, car la limite dutilisation du tableau blanc sera bientôt atteinte et celui-ci sera fermé.",
"whiteboardLimitTitle": "Utiilisation du tableau blanc"
},
"participantsPane": {
"actions": {
"admit": "Accepter",
"admitAll": "Tout accepter",
"allow": "Autoriser les participants à:",
"allowVideo": "permettre la vidéo",
"askUnmute": "Demander de réactiver le micro",
"audioModeration": "Rouvrir leur micro",
"blockEveryoneMicCamera": "Bloquer tous les micros et caméras",
"breakoutRooms": "Salles annexes",
"invite": "Inviter quelqu'un",
"moreModerationActions": "Options de modération supplémentaires",
"moreModerationControls": "Options de modération supplémentaires",
@@ -763,6 +827,7 @@
"mute": "Couper le micro",
"muteAll": "Couper le micro de tout le monde",
"muteEveryoneElse": "Couper le micro de tous les autres",
"reject": "Refuser",
"stopEveryonesVideo": "Couper toutes les caméras",
"stopVideo": "Couper la vidéo",
"unblockEveryoneMicCamera": "Débloquer tous les micros et caméras",
@@ -772,6 +837,7 @@
"headings": {
"lobby": "Salle d'attente ({{count}})",
"participantsList": "Participants de la réunion ({{count}})",
"visitorRequests": "(Demande {{count}} )",
"visitors": "Visiteurs {{count}}",
"waitingLobby": "Dans la salle d'attente ({{count}})"
},
@@ -799,6 +865,9 @@
"removeOption": "Supprimer l'option",
"send": "Envoyer"
},
"errors": {
"notUniqueOption": "Les options doivent être uniques"
},
"notification": {
"description": "Ouvrez l'onglet des sondages pour voter",
"title": "Un nouveau sondage a été ajouté à la réunion"
@@ -806,8 +875,8 @@
"results": {
"changeVote": "Changer le vote",
"empty": "Il n'y a pas encore de sondages dans cette réunion. Démarrez un sondage ici !",
"hideDetailedResults": "Cacher les détails",
"showDetailedResults": "Montrer les détails",
"hideDetailedResults": "Masquer les détails",
"showDetailedResults": "Afficher les détails",
"vote": "Voter"
}
},
@@ -865,9 +934,11 @@
"lookGood": "Il semble que votre microphone fonctionne correctement",
"or": "ou",
"premeeting": "Pré-séance",
"proceedAnyway": "Continuer quand même",
"screenSharingError": "Erreur de partage d'écran:",
"showScreen": "Activer l'écran de pré-séance",
"startWithPhone": "Commencez avec l'audio du téléphone",
"unsafeRoomConsent": "Je comprends les risques et je veux quand même rejoindre cette réunion",
"videoOnlyError": "Erreur vidéo:",
"videoTrackError": "Impossible de créer une piste vidéo.",
"viewAllNumbers": "voir tous les numéros"
@@ -930,7 +1001,6 @@
"limitNotificationDescriptionNative": "En raison d'une forte demande, votre enregistrement sera limité à {{limit}} min. Pour des enregistrements illimités, essayez <3> {{app}} </3>.",
"limitNotificationDescriptionWeb": "En raison d'une forte demande, votre enregistrement sera limité à {{limit}} min. Pour des enregistrements illimités, essayez <a href={{url}} rel='noopener noreferrer' target='_blank'> {{app}} </a>.",
"linkGenerated": "Nous avons généré un lien à votre enregistrement.",
"live": "DIRECT",
"localRecordingNoNotificationWarning": "Le démarrage de lenregistrement ne sera pas annoncé aux autres participants. Vous devrez les informer par vous-même que la réunion sera enregistrée.",
"localRecordingNoVideo": "La vidéo n'est pas en cours denregistrement",
"localRecordingStartWarning": "Assurez-vous darrêter lenregistrement vidéo avant de quitter la réunion afin de pouvoir le sauvegarder.",
@@ -947,13 +1017,15 @@
"onBy": "{{name}} a démarré l'enregistrement",
"onlyRecordSelf": "Enregistrer seulement mon audio et ma vidéo.",
"pending": "Préparation de l'enregistrement de la réunion ...",
"rec": "REC",
"recordAudioAndVideo": "Enregistrer l'audio et la vidéo",
"recordTranscription": "Enregistrer la transcription",
"saveLocalRecording": "Sauvegarder lenregistrement local (Beta)",
"serviceDescription": "Votre enregistrement sera enregistré par le service dédié",
"serviceDescriptionCloud": "Enregistrement Cloud",
"serviceDescriptionCloudInfo": "Les conférences enregistrées sont automatiquement supprimées 24h après leur heure d'enregistrement.",
"serviceName": "Service d'enregistrement",
"sessionAlreadyActive": "Cette session est déjà en cours d'enregistrement ou de diffusion.",
"showAdvancedOptions": "Afficher les options avancées",
"signIn": "Se connecter",
"signOut": "Se déconnecter",
"surfaceError": "Veuillez sélectionner longlet courant.",
@@ -969,8 +1041,14 @@
"security": {
"about": "Vous pouvez ajouter un mot de passe à votre réunion. Les participants devront fournir le mot de passe avant de pouvoir rejoindre la réunion.",
"aboutReadOnly": "Les modérateurs peuvent ajouter un mot de passe à la réunion. Les participants devront fournir le mot de passe avant de pouvoir rejoindre la réunion.",
"insecureRoomNameWarning": "Le nom de la salle est peu sûr. Des participants non désirés peuvent rejoindre votre réunion. Pensez à sécuriser votre réunion en cliquant sur le bouton de sécurité.",
"title": "Options de sécurité"
"insecureRoomNameWarningNative": "Le nom de la réunion nest pas sûr. Des participants non voulus pourraient rejoindre cette réunion. {{recommendAction}} En apprendre plus sur la sécurisation des réunions.",
"insecureRoomNameWarningWeb": "Le nom de la réunion nest pas sûr. Des participants non voulus pourraient rejoindre cette réunion. {{recommendAction}} En apprendre plus sur la sécurisation des réunions <a href=\"{{securityUrl}}\" rel=\"security\" target=\"_blank\">here</a>.",
"title": "Options de sécurité",
"unsafeRoomActions": {
"meeting": "Envisagez de sécuriser votre réunion en utilisant le bouton options de sécurité.",
"prejoin": "Envisagez d'utiliser un nom plus unique",
"welcome": "Envisagez d'utiliser un nom plus unique ou choisissez en un parmi ceux suggérés"
}
},
"settings": {
"audio": "Audio",
@@ -1003,7 +1081,7 @@
"participantKnocking": "un participant en salle dattente",
"participantLeft": "un participant quitte",
"playSounds": "Jouer un son quand",
"reactions": "il y a une réaction à la réunion",
"reactions": "Il y a une réaction à la réunion",
"sameAsSystem": "Identique au système ({{label}})",
"selectAudioOutput": "Sortie audio",
"selectCamera": "Caméra",
@@ -1024,6 +1102,7 @@
"alertOk": "D'accord",
"alertTitle": "Avertissement",
"alertURLText": "L'URL du serveur est invalide",
"apply": "Appliquer",
"buildInfoSection": "Informations de build",
"conferenceSection": "Conférence",
"disableCallIntegration": "Désactiver l'intégration d'appels native",
@@ -1034,12 +1113,14 @@
"displayNamePlaceholderText": "Ex : Jean Dupond",
"email": "Email",
"emailPlaceholderText": "email@example..com",
"gavatarMessage": "Si votre email est associé à un compte Gravatar, nous allons lutiliser pour afficher votre image de profil.",
"goTo": "Aller à",
"header": "Paramètres",
"help": "Aide",
"links": "Liens",
"privacy": "Confidentialité",
"profileSection": "Profil",
"sdkVersion": "Version du SDK",
"serverURL": "URL du serveur",
"showAdvanced": "Afficher les paramètres avancés",
"startCarModeInLowBandwidthMode": "Commencer le mode voiture en mode bande passante réduite",
@@ -1065,6 +1146,7 @@
"neutral": "Indifférent",
"sad": "Triste",
"search": "Recherche",
"searchHint": "Recherche des participants",
"seconds": "{{count}}s",
"speakerStats": "Statistiques de l'interlocuteur",
"speakerTime": "Temps de l'interlocuteur",
@@ -1087,21 +1169,30 @@
"toolbar": {
"Settings": "Paramètres",
"accessibilityLabel": {
"Settings": "Afficher / Masquer le menu des paramètres",
"Settings": "Ouvrir le menu des paramètres",
"audioOnly": "Activer / Désactiver le mode voix uniquement",
"audioRoute": "Sélectionner la source audio",
"boo": "Hou",
"breakoutRoom": "Rejoindre/quitter une salle annexe",
"breakoutRooms": "Rejoindre / quitter une salle annexe",
"callQuality": "Ajuster la qualité vidéo",
"carmode": "Mode voiture",
"cc": "Activer / Désactiver les sous-titres",
"chat": "Afficher / Masquer la discussion instantanée",
"clap": "Applaudir",
"closeChat": "Fermer la discussion instantanée",
"closeMoreActions": "Fermer le menu plus d'actions",
"closeParticipantsPane": "Fermer le panneau des participants",
"collapse": "Plier",
"document": "Activer / Désactiver le document partagé",
"documentClose": "Fermer le document partagé",
"documentOpen": "Ouvrir le document partagé",
"download": "Télécharger nos applications",
"embedMeeting": "Intégrer la réunion",
"endConference": "Terminer la réunion pour tout le monde",
"enterFullScreen": "Passer en mode plein écran",
"enterTileView": "Passer en vue mosaïque",
"exitFullScreen": "Quitter le mode plein écran",
"exitTileView": "Quitter la vue mosaïque",
"expand": "Développer",
"feedback": "Laisser des commentaires",
"fullScreen": "Activer / Désactiver le plein écran",
@@ -1110,6 +1201,7 @@
"hangup": "Quitter la conversation",
"heading": "Barre d'outils",
"help": "Aide",
"hideWhiteboard": "Masquer le tableau blanc",
"invite": "Inviter des participants",
"kick": "Expulser le participant",
"laugh": "Rire",
@@ -1119,20 +1211,24 @@
"lobbyButton": "Activer / Désactiver le mode salle d'attente",
"localRecording": "Activer / Désactiver les contrôles d'enregistrement local",
"lockRoom": "Activer / Désactiver le mot de passe de la réunion",
"lowerHand": "Baisser la main",
"moreActions": "Activer / Désactiver le menu d'actions supplémentaires",
"moreActionsMenu": "Menu d'actions supplémentaires",
"moreOptions": "Voir plus d'options",
"mute": "Activer / Désactiver l'audio",
"mute": "Couper votre micro",
"muteEveryone": "Couper le micro de tout le monde",
"muteEveryoneElse": "Couper le micro de tous les autres",
"muteEveryoneElsesVideoStream": "Couper la caméra de tous les autres",
"muteEveryonesVideoStream": "Couper la caméra de tout le monde",
"muteGUMPending": "Connection de votre microphone",
"noiseSuppression": "Suppression du bruit",
"openChat": "Ouvrir le chat",
"participants": "Participants",
"pip": "Activer / Désactiver le mode Picture in Picture",
"privateMessage": "Envoyer un message privé",
"profile": "Éditer votre profil",
"raiseHand": "Lever la main",
"reactions": "Réactions",
"reactionsMenu": "Ouvrir / fermer le menu réactions",
"recording": "Activer / Désactiver l'enregistrement",
"remoteMute": "Couper le micro du participant",
@@ -1146,15 +1242,20 @@
"sharedvideo": "Démarrer / Arrêter le partage de vidéo",
"shortcuts": "Afficher / Masquer les raccourcis",
"show": "Afficher en premier plan",
"showWhiteboard": "Afficher le tableux blanc",
"silence": "Silence",
"speakerStats": "Afficher / Cacher les statistiques de parole",
"speakerStats": "Afficher / Masquer les statistiques de parole",
"stopScreenSharing": "Arrêter le partage d'écran",
"stopSharedVideo": "Arrêter la vidéo partagée",
"surprised": "Surpris",
"tileView": "Activer / Désactiver la vue mosaïque",
"toggleCamera": "Changer de caméra",
"toggleFilmstrip": "Afficher ou masquer les vignettes vidéo",
"unmute": "Activer votre micro",
"videoblur": "Activer / désactiver le floutage",
"videomute": "Activer / Couper la vidéo",
"whiteboard": "Afficher / Cacher le tableau blanc"
"videomute": "Couper votre vidéo",
"videomuteGUMPending": "Connexion de votre caméra",
"videounmute": "Activer votre vidéo"
},
"addPeople": "Ajouter des personnes à votre appel",
"audioOnlyOff": "Désactiver le mode bande passante réduite",
@@ -1167,6 +1268,7 @@
"chat": "Ouvrir / Fermer le chat",
"clap": "Applaudir",
"closeChat": "Fermer le chat",
"closeParticipantsPane": "Fermer le panneau des participants",
"closeReactionsMenu": "Fermer le menu réactions",
"disableNoiseSuppression": "Arrêter la suppression du bruit",
"disableReactionSounds": "Vous pouvez interdire les réactions sonores à cette réunion",
@@ -1185,7 +1287,7 @@
"giphy": "Activer/désactiver le menu GIPHY",
"hangup": "Quitter",
"help": "Aide",
"hideWhiteboard": "Cacher le tableau blanc",
"hideWhiteboard": "Masquer le tableau blanc",
"invite": "Inviter des participants",
"joinBreakoutRoom": "Rejoindre salle annexe",
"laugh": "Rire",
@@ -1203,6 +1305,7 @@
"mute": "Muet / Actif",
"muteEveryone": "Couper le micro à tout le monde",
"muteEveryonesVideo": "Couper la caméra de tout le monde",
"muteGUMPending": "Connection de votre microphone",
"noAudioSignalDesc": "Si vous n'avez pas délibérément coupé le son des paramètres du système ou du matériel, envisagez de changer de périphérique utilisé.",
"noAudioSignalDescSuggestion": "Si vous n'avez pas délibérément coupé le son des paramètres du système ou du matériel, pensez à utiliser le périphérique suivant :",
"noAudioSignalDialInDesc": "Vous pouvez également appeler en utilisant :",
@@ -1225,6 +1328,7 @@
"reactionLike": "Envoyer réaction approuver",
"reactionSilence": "Envoyer réaction silence",
"reactionSurprised": "Envoyer réaction surprise",
"reactions": "Reactions",
"security": "Options de sécurité",
"selectBackground": "Sélectionner un arrière-plan",
"shareRoom": "Inviter quelqu'un",
@@ -1244,8 +1348,11 @@
"talkWhileMutedPopup": "Vous voulez parler ? Votre micro est coupé.",
"tileViewToggle": "Activer / Désactiver la vue mosaïque",
"toggleCamera": "Changer de caméra",
"unmute": "Rétablir le son",
"videoSettings": "Paramètres vidéo",
"videomute": "Démarrer / Arrêter la caméra"
"videomute": "Arrêter la caméra",
"videomuteGUMPending": "Connexion de votre caméra",
"videounmute": "Démarrer la caméra"
},
"transcribing": {
"ccButtonTooltip": "Activer / Désactiver les sous-titres",
@@ -1253,7 +1360,8 @@
"expandedLabel": "La transcription est actuellement activée",
"failedToStart": "Échec de démarrage de la transcription",
"labelToolTip": "La transcription de la réunion est en cours",
"off": "La transcription désactivée",
"off": "La transcription est désactivée",
"on": "La transcription est activée",
"pending": "Préparation de la transcription de la réunion ...",
"sourceLanguageDesc": "Actuellement, la langue de la réunion est sélectionnée à <b>{{sourceLanguage}}</b>. <br/> Vous pouvez la changer à partir de ",
"sourceLanguageHere": "ici",
@@ -1316,7 +1424,7 @@
"domuteVideoOfOthers": "Couper la caméra des autres",
"flip": "Miroir",
"grantModerator": "Donner des droits de modérateur",
"hideSelfView": "Cacher l'affichage de votre propre vidéo",
"hideSelfView": "Masquer l'affichage de votre propre vidéo",
"kick": "Exclure",
"mirrorVideo": "Inverser ma vidéo",
"moderator": "Modérateur",
@@ -1326,13 +1434,17 @@
"remoteControl": "Démarrer / Arrêter le contrôle à distance",
"screenSharing": "Cette personne partage son écran",
"show": "Afficher en premier plan",
"showSelfView": "Montrer votre propre vidéo",
"showSelfView": "Afficher votre propre vidéo",
"unpinFromStage": "Ne plus garder affiché",
"verify": "Vérifier le participant",
"videoMuted": "Caméra coupée",
"videomute": "Le participant a arrêté la caméra"
},
"virtualBackground": {
"accessibilityLabel": {
"currentBackground": "Arrière-plan actuel: {{background}}",
"selectBackground": "Sélectionner un arrière-plan"
},
"addBackground": "Ajouter un arrière-plan",
"apply": "Appliquer",
"backgroundEffectError": "Erreur dans l'application de l'effet d'arrière-plan.",
@@ -1356,7 +1468,14 @@
"webAssemblyWarning": "WebAssembly non supporté",
"webAssemblyWarningDescription": "WebAssembly invalidé ou non supporté par ce navigateur"
},
"visitorsLabel": "Nombre de visiteurs: {{count}}",
"visitors": {
"chatIndicator": "(visiteur)",
"labelTooltip": "Nombre de Visiteurs",
"notification": {
"description": "Pour participer lever la main.",
"title": "Vous êtes visiteur dans cette réunion"
}
},
"volumeSlider": "Curseur de volume",
"welcomepage": {
"accessibilityLabel": {

File diff suppressed because it is too large Load Diff

View File

@@ -454,6 +454,11 @@
},
"passwordDigitsOnly": "Ata {{number}} díxitos",
"passwordSetRemotely": "estabelecida por outro participante",
"polls": {
"errors": {
"notUniqueOption": "As opcións deben ser únicas"
}
},
"poweredby": "fornecido por",
"presenceStatus": {
"busy": "Ocupado",
@@ -558,6 +563,8 @@
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Nome",
"search": "Procurar",
"searchHint": "Procurar participantes",
"seconds": "{{count}}s",
"speakerStats": "Estatísticas do falante",
"speakerTime": "Tempo do falante"

View File

@@ -477,6 +477,11 @@
},
"passwordDigitsOnly": "עד {{number}} ספרות",
"passwordSetRemotely": "נקבע על ידי חבר אחר",
"polls": {
"errors": {
"notUniqueOption": "האפשרויות חייבות להיות ייחודיות"
}
},
"poweredby": "מופעל על ידי",
"presenceStatus": {
"busy": "עסוק",
@@ -583,6 +588,8 @@
"hours": "{{count}} שעות",
"minutes": "{{count}} דקות",
"name": "שם",
"search": "לחפש",
"searchHint": "חפש משתתפים",
"seconds": "{{count}} שניות",
"speakerStats": "סטטיסטיקות דיבורים",
"speakerTime": "זמן דיבור"

View File

@@ -298,7 +298,7 @@
"screenSharingFailed": "उफ़! कुछ गड़बड़ हो गई, हम स्क्रीन शेयरिंग शुरू करने में सक्षम नहीं थे!",
"screenSharingFailedTitle": "Screen sharing failed!",
"screenSharingPermissionDeniedError": "उफ़! आपकी स्क्रीन शेयरिंग अनुमतियों में कुछ गड़बड़ हो गई है। कृपया पुनः लोड करें और पुनः प्रयास करें।",
"sendPrivateMessage": "You recently received a private message. Did you intend to reply to that privately, or you want to send your message to the group?",
"sendPrivateMessage": "आपने हाल ही में एक निजी संदेश प्राप्त किया है। क्या आप उसका निजी रूप से जवाब देने का इरादा रखते हैं? या आप अपना संदेश समूह को भेजना चाहते हैं?",
"sendPrivateMessageCancel": "समूह को भेजें",
"sendPrivateMessageOk": "निजी तौर पर भेजें",
"sendPrivateMessageTitle": "निजी तौर पर भेजें?",
@@ -482,7 +482,6 @@
"notificationTitle": "लॉबी",
"passwordField": "मीटिंग पासवर्ड दर्ज करें",
"passwordJoinButton": "Join",
"reject": "अस्वीकार",
"title": "लॉबी",
"toggleLabel": "लॉबी सक्षम करें"
},
@@ -553,14 +552,24 @@
"somebody": "Somebody",
"startSilentDescription": "ऑडियो सक्षम करने के लिए मीटिंग को फिर से करें",
"startSilentTitle": "आप बिना ऑडियो आउटपुट के साथ शामिल हुए!",
"suboptimalBrowserWarning": "We are afraid your meeting experience isn't going to be that great here. We are looking for ways to improve this, but until then please try using one of the <a href='{{recommendedBrowserPageLink}}' target='_blank'>fully supported browsers</a>.",
"suboptimalBrowserWarning": "हमें डर है कि आपकी मीटिंग अनुभव यहाँ बहुत अच्छा नहीं होने वाला है। हम इसे सुधारने के तरीके ढूंढ़ रहे हैं, लेकिन उस समय तक कृपया <a href='{{recommendedBrowserPageLink}}' target='_blank'>पूरी तरह से समर्थित ब्राउज़र</a> में से एक का प्रयास करें",
"suboptimalExperienceTitle": "ब्राउज़र चेतावनी",
"unmute": "अनम्यूट",
"videoMutedRemotelyDescription": "You can always turn it on again.",
"videoMutedRemotelyDescription": "आप इसे हमेशा फिर से चालू कर सकते हैं।",
"videoMutedRemotelyTitle": "आपका कैमरा {{participantDisplayName}}द्वारा अक्षम कर दिया गया है!"
},
"participantsPane": {
"actions": {
"reject": "अस्वीकार"
}
},
"passwordDigitsOnly": "Up to {{number}} digits",
"passwordSetRemotely": "दूसरे प्रतिभागी द्वारा निर्धारित",
"polls": {
"errors": {
"notUniqueOption": "विकल्प अद्वितीय होना चाहिए"
}
},
"poweredby": "powered by",
"prejoin": {
"audioAndVideoError": "ऑडियो और वीडियो त्रुटि:",
@@ -645,12 +654,12 @@
"availableSpace": "Available space: {{spaceLeft}} MB (approximately {{duration}} minutes of recording)",
"beta": "BETA",
"busy": "We're working on freeing recording resources. Please try again in a few minutes.",
"busyTitle": "All recorders are currently busy",
"error": "Recording failed. Please try again.",
"expandedOff": "Recording has stopped",
"busyTitle": "सभी रिकॉर्डर अभी व्यस्त हैं",
"error": "रिकॉर्डिंग विफल हुई। कृपया पुन: प्रयास करें।",
"expandedOff": "रिकॉर्डिंग बंद हो गई है",
"expandedOn": "The meeting is currently being recorded.",
"expandedPending": "Recording is being started...",
"failedToStart": "Recording failed to start",
"expandedPending": "रिकॉर्डिंग शुरू की जा रही है...",
"failedToStart": "रिकॉर्डिंग शुरू करने में विफलता हुई।",
"fileSharingdescription": "Share recording with meeting participants",
"limitNotificationDescriptionNative": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <3>{{app}}</3>.",
"limitNotificationDescriptionWeb": "Due to high demand your recording will be limited to {{limit}} min. For unlimited recordings try <a href={{url}} rel='noopener noreferrer' target='_blank'>{{app}}</a>.",
@@ -668,16 +677,16 @@
"signIn": "Sign in",
"signOut": "Sign out",
"title": "रिकॉर्डिंग",
"unavailable": "Oops! The {{serviceName}} is currently unavailable. We're working on resolving the issue. Please try again later.",
"unavailableTitle": "Recording unavailable"
"unavailable": "ओह! {{serviceName}} वर्तमान में अनुपलब्ध है। हम समस्या को हल करने पर काम कर रहे हैं। कृपया बाद में पुनः प्रयास करें।",
"unavailableTitle": "रिकॉर्डिंग उपलब्ध नहीं है"
},
"sectionList": {
"pullToRefresh": "Pull to refresh"
},
"security": {
"about": "You can add a $t(lockRoomPassword) to your meeting. Participants will need to provide the $t(lockRoomPassword) before they are allowed to join the meeting.",
"about": "आप अपनी मीटिंग में $t(lockRoomPassword) जोड़ सकते हैं। सहभागियों को मीटिंग में शामिल होने से पहले $t(lockRoomPassword) प्रदान करना होगा।",
"aboutReadOnly": "Moderator participants can add a $t(lockRoomPassword) to the meeting. Participants will need to provide the $t(lockRoomPassword) before they are allowed to join the meeting.",
"insecureRoomNameWarning": "The room name is unsafe. Unwanted participants may join your conference. Consider securing your meeting using the security button.",
"insecureRoomNameWarning": "कमरे का नाम असुरक्षित है। अनचाहे सहभागियों की कॉन्फ्रेंस में शामिल हो सकते हैं। सुरक्षा बटन का उपयोग करके अपनी मीटिंग को सुरक्षित बनाने का विचार करें। ",
"securityOptions": "Security options"
},
"settings": {
@@ -736,6 +745,8 @@
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "नाम",
"search": "खोजें",
"searchHint": "प्रतिभागियों को खोजें",
"seconds": "{{count}}s",
"speakerStats": "Speaker Stats",
"speakerTime": "Speaker Time"
@@ -875,26 +886,26 @@
"tr": "TR"
},
"userMedia": {
"androidGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"chromeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"edgeGrantPermissions": "Select <b><i>Yes</i></b> when your browser asks for permissions.",
"electronGrantPermissions": "Trying to access your camera and microphone",
"firefoxGrantPermissions": "Select <b><i>Share Selected Device</i></b> when your browser asks for permissions.",
"iexplorerGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions.",
"nwjsGrantPermissions": "Please grant permissions to use your camera and microphone",
"operaGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"react-nativeGrantPermissions": "Select <b><i>Allow</i></b> when your browser asks for permissions.",
"safariGrantPermissions": "Select <b><i>OK</i></b> when your browser asks for permissions."
"androidGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
"chromeGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
"edgeGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>हां</i></b> चुनें।",
"electronGrantPermissions": "आपका कैमरा और माइक्रोफोन तक पहुंच करने की कोशिश की जा रही है",
"firefoxGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>चयनित उपकरण साझा करें</i></b> चुनें।",
"iexplorerGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>ठीक है</i></b> चुनें।",
"nwjsGrantPermissions": "कृपया अपने कैमरा और माइक्रोफोन का उपयोग करने के लिए अनुमतियाँ प्रदान करें",
"operaGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
"react-nativeGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>अनुमति दें</i></b> चुनें।",
"safariGrantPermissions": "जब आपका ब्राउज़र स्वीकृति मांगता है, तो <b><i>ठीक है</i></b> चुनें।"
},
"videoSIPGW": {
"busy": "We're working on freeing resources. Please try again in a few minutes.",
"busyTitle": "The Room service is currently busy",
"errorAlreadyInvited": "{{displayName}} already invited",
"errorInvite": "Conference not established yet. Please try again later.",
"errorInviteFailed": "We're working on resolving the issue. Please try again later.",
"errorInviteFailedTitle": "Inviting {{displayName}} failed",
"errorInviteTitle": "Error inviting room",
"pending": "{{displayName}} has been invited"
"busy": "हम संसाधनों को मुक्त करने पर काम कर रहे हैं। कृपया कुछ मिनटों बाद पुन: प्रयास करें।",
"busyTitle": "रूम सेवा वर्तमान में व्यस्त है",
"errorAlreadyInvited": "{{displayName}} पहले से ही आमंत्रित हैं",
"errorInvite": "कॉन्फ़्रेंस अब तक स्थापित नहीं हुई है। कृपया बाद में पुनः प्रयास करें।",
"errorInviteFailed": "हम समस्या को हल करने पर काम कर रहे हैं। कृपया बाद में पुनः प्रयास करें।",
"errorInviteFailedTitle": "{{displayName}} को आमंत्रित करने में विफलता",
"errorInviteTitle": "रूम आमंत्रण में त्रुटि",
"pending": "{{displayName}} को आमंत्रित किया गया है"
},
"videoStatus": {
"audioOnly": "AUD",
@@ -917,10 +928,10 @@
"domute": "म्यूट",
"domuteOthers": "सभी को म्यूट करें",
"domuteVideo": "कैमरा अक्षम करें",
"domuteVideoOfOthers": "Disable camera of everyone else",
"domuteVideoOfOthers": "अन्य सभी के लिए कैमरा बंद करें",
"flip": "Flip",
"grantModerator": "Grant Moderator",
"kick": "Kick out",
"kick": "निकालें",
"moderator": "Moderator",
"mute": "प्रतिभागी मौन है",
"muted": "म्यूटेड",
@@ -939,8 +950,8 @@
},
"welcomepage": {
"accessibilityLabel": {
"join": "Tap to join",
"roomname": "Enter room name"
"join": "शामिल होने के लिए टैप करें",
"roomname": "कमरे का नाम लिखे"
},
"appDescription": "आगे बढ़ो, पूरी टीम के साथ वीडियो चैट करें। वास्तव में, हर किसी को जिसे आप जानते हैं, आमंत्रित करें। { {{app}} एक पूरी तरह से एन्क्रिप्टेड, 100% ओपन सोर्स वीडियो कॉन्फ्रेंसिंग समाधान है जिसका आप मुफ्त में - बिना किसी खाते की आवश्यकता के पूरे दिन, हर दिन, उपयोग कर सकते हैं।",
"audioVideoSwitch": {

View File

@@ -561,8 +561,6 @@
"youtubeTerms": "Uvjeti YouTube usluge"
},
"lobby": {
"admit": "Prihvati",
"admitAll": "Prihvati sve",
"allow": "Dopusti",
"backToKnockModeButton": "Zatraži pridruživanje",
"chat": "Chat",
@@ -597,8 +595,6 @@
"notificationTitle": "Predvorje",
"passwordField": "Upiši lozinku sastanka",
"passwordJoinButton": "Pridruži se",
"reject": "Odbij",
"rejectAll": "Odbij sve",
"title": "Predvorje",
"toggleLabel": "Uključi predvorje"
},
@@ -725,6 +721,8 @@
},
"participantsPane": {
"actions": {
"admit": "Prihvati",
"admitAll": "Prihvati sve",
"allow": "Dozvoli sudionicima da:",
"allowVideo": "Dozvole video",
"askUnmute": "Zatraže isključivanje zvuka",
@@ -737,6 +735,7 @@
"mute": "Isključe zvuk",
"muteAll": "Isključe zvuk svih sudionika",
"muteEveryoneElse": "Isključe zvuk svih drugih",
"reject": "Odbij",
"stopEveryonesVideo": "Prekinu videa svih",
"stopVideo": "Prekinu video",
"unblockEveryoneMicCamera": "Deblokiraju mikrofone i kamere svih sudionika",
@@ -771,6 +770,9 @@
"removeOption": "Ukloni opciju",
"send": "Pošalji"
},
"errors": {
"notUniqueOption": "Opcije moraju biti jedinstvene"
},
"notification": {
"description": "Za glasanje otvori karticu ankete",
"title": "Ovom sastanku je dodana nova anketa"
@@ -1034,6 +1036,7 @@
"neutral": "Neutralan",
"sad": "Žalostan",
"search": "Traži",
"searchHint": "Traži sudionike",
"seconds": "{{count}} s",
"speakerStats": "Statistika govornika",
"speakerTime": "Vrijeme govornika",

View File

@@ -551,8 +551,6 @@
"youtubeTerms": "wuměnjenja wužiwanja na YouTube"
},
"lobby": {
"admit": "přizwolić",
"admitAll": "wšitko přizwolić",
"allow": "přiwzać",
"backToKnockModeButton": "žane hesło, město toho wo přistup prosyć",
"chat": "chat",
@@ -587,8 +585,6 @@
"notificationTitle": "lobby",
"passwordField": "konferencne hesło zapodać",
"passwordJoinButton": "přistupić",
"reject": "wotpokazać",
"rejectAll": "wšitko wotpokazać",
"title": "lobby",
"toggleLabel": "lobby aktiwěrować"
},
@@ -710,6 +706,8 @@
},
"participantsPane": {
"actions": {
"admit": "přizwolić",
"admitAll": "wšitko přizwolić",
"allow": "přitomnym dowolić",
"allowVideo": "kameru zaswěčić",
"askUnmute": "wo wotstajenje šaltowanja na němosć prosyć",
@@ -722,6 +720,7 @@
"mute": "něme šaltować",
"muteAll": "wšěch němych šaltować",
"muteEveryoneElse": "wšěch druhich němych šaltować",
"reject": "wotpokazać",
"stopEveryonesVideo": "wšitke kamery hasnyć",
"stopVideo": "kameru hasnyć",
"unblockEveryoneMicCamera": "kameru a mikrofon wšěch wočinić",
@@ -756,6 +755,9 @@
"removeOption": "wotmołwu wotstronić",
"send": "zestajić"
},
"errors": {
"notUniqueOption": "opcije dyrbja jasne być"
},
"notification": {
"description": "Za wobdźělenje wočińće tab za naprašowanje.",
"title": "Tutej konferency bu naprašowanje přidate."
@@ -1001,6 +1003,7 @@
"neutral": "neutralny",
"sad": "zrudny",
"search": "pytać",
"searchHint": "přitomnych pytać",
"seconds": "{{count}}s",
"speakerStats": "statistika rěčnikow",
"speakerTime": "čas rěčnikow",

View File

@@ -184,6 +184,7 @@
"Share": "Megosztás",
"Submit": "Elküldés",
"WaitForHostMsg": "A konferencia még nem kezdődött meg. Ha Ön a házigazda, akkor hitelesítse magát. Ellenkező esetben, kérjük várjon a házigazda érkezésére.",
"WaitForHostNoAuthMsg": "A konferencia még nem kezdődött el, mert nincs elérhető moderátor. Kérlek várj.",
"WaitingForHost": "Várakozás a házigazdára…",
"Yes": "Igen",
"accessibilityLabel": {
@@ -462,8 +463,6 @@
"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",
@@ -495,8 +494,6 @@
"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": {
@@ -579,6 +576,8 @@
},
"participantsPane": {
"actions": {
"admit": "Engedélyezés",
"admitAll": "Mindet engedélyez",
"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",
@@ -591,6 +590,7 @@
"mute": "Némítás",
"muteAll": "Mindenkit elnémít",
"muteEveryoneElse": "Mute everyone else",
"reject": "Elutasít",
"stopEveryonesVideo": "Mindenki videójának leállítása",
"stopVideo": "Videó leállítása",
"unblockEveryoneMicCamera": "Unblock everyone's mic and camera",
@@ -624,6 +624,9 @@
"removeOption": "Opció eltávolítása",
"send": "Küldés"
},
"errors": {
"notUniqueOption": "Az opcióknak egyedinek kell lenniük"
},
"notification": {
"description": "Szavazás megnyitása",
"title": "Új szavazás létrehozva"
@@ -825,6 +828,7 @@
"neutral": "Semleges",
"sad": "Szomorú",
"search": "Keresés",
"searchHint": "Résztvevők keresése",
"seconds": "{{count}} mp",
"speakerStats": "Beszélő statisztika",
"speakerTime": "Beszélő ideje",

View File

@@ -427,6 +427,11 @@
},
"passwordDigitsOnly": "",
"passwordSetRemotely": "Սահմանվել է մեկ այլ մասնակցի կողմից",
"polls": {
"errors": {
"notUniqueOption": "Ընտրանքները պետք է լինեն եզակի"
}
},
"poweredby": "Հիմնված է",
"presenceStatus": {
"busy": "",
@@ -524,6 +529,8 @@
"hours": "",
"minutes": "",
"name": "Անուն",
"search": "Որոնում",
"searchHint": "Որոնել մասնակիցներին",
"seconds": "",
"speakerStats": "Հռետորի վիճակագրությունը",
"speakerTime": ""

1559
lang/main-id.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -561,8 +561,6 @@
"youtubeTerms": "Condizioni di utilizzo di YouTube"
},
"lobby": {
"admit": "Ammetti",
"admitAll": "Ammetti tutti",
"allow": "Autorizza",
"backToKnockModeButton": "Nessuna password, richiedi l'accesso",
"chat": "Conversazione",
@@ -597,8 +595,6 @@
"notificationTitle": "Sala d'attesa",
"passwordField": "Inserisci la password della riunione",
"passwordJoinButton": "Entra",
"reject": "Respingi",
"rejectAll": "Respingi tutti",
"title": "Sala d'attesa",
"toggleLabel": "Attiva sala d'attesa"
},
@@ -725,6 +721,8 @@
},
"participantsPane": {
"actions": {
"admit": "Ammetti",
"admitAll": "Ammetti tutti",
"allow": "Permetti ai partecipanti di:",
"allowVideo": "Autorizza video",
"askUnmute": "Chiedi di accendere microfono",
@@ -737,6 +735,7 @@
"mute": "Silenzia",
"muteAll": "Silenzia tutti",
"muteEveryoneElse": "Silenzia tutti gli altri",
"reject": "Respingi",
"stopEveryonesVideo": "Ferma il video di tutti",
"stopVideo": "Ferma il video",
"unblockEveryoneMicCamera": "Sblocca audio e video a tutti",
@@ -771,6 +770,9 @@
"removeOption": "Elimina risposta",
"send": "Invia"
},
"errors": {
"notUniqueOption": "Le opzioni devono essere uniche"
},
"notification": {
"description": "Apri la scheda sondaggi per votare",
"title": "Un nuovo sondaggio è stato aggiunto alla riunione"
@@ -1034,6 +1036,7 @@
"neutral": "Neutro",
"sad": "Triste",
"search": "Cerca",
"searchHint": "Cerca partecipanti",
"seconds": "{{count}}s",
"speakerStats": "Statistiche",
"speakerTime": "Tempo",

View File

@@ -525,8 +525,6 @@
"youtubeTerms": "YouTube サービス利用規約"
},
"lobby": {
"admit": "許可",
"admitAll": "全員許可",
"allow": "許可",
"backToKnockModeButton": "参加を依頼",
"dialogTitle": "ロビーモード",
@@ -557,8 +555,6 @@
"notificationTitle": "ロビー",
"passwordField": "ミーティングパスワードを入力してください",
"passwordJoinButton": "参加",
"reject": "却下",
"rejectAll": "全員却下",
"title": "ロビー",
"toggleLabel": "ロビーを有効"
},
@@ -671,6 +667,8 @@
},
"participantsPane": {
"actions": {
"admit": "許可",
"admitAll": "全員許可",
"allow": "参加者に次のことを許可:",
"allowVideo": "ビデオを許可",
"askUnmute": "ミュート解除を依頼",
@@ -683,6 +681,7 @@
"mute": "ミュート",
"muteAll": "全員をミュート",
"muteEveryoneElse": "他のすべての人をミュート",
"reject": "却下",
"stopEveryonesVideo": "全員のビデオを停止",
"stopVideo": "ビデオを停止",
"unblockEveryoneMicCamera": "全員のマイクとビデオのブロックを解除",
@@ -716,6 +715,9 @@
"removeOption": "選択肢の削除",
"send": "送信"
},
"errors": {
"notUniqueOption": "オプションは一意でなければなりません"
},
"notification": {
"description": "投票するには投票タブを開いてください",
"title": "新しい投票がこのミーティングに追加されました"
@@ -953,6 +955,7 @@
"neutral": "平静",
"sad": "悲しい",
"search": "検索",
"searchHint": "参加者を検索",
"seconds": "{{count}} 秒",
"speakerStats": "話者の統計",
"speakerTime": "話した時間",

View File

@@ -498,8 +498,6 @@
"youtubeTerms": "Tiwtilin n yimeẓla n Youtube"
},
"lobby": {
"admit": "Steεref",
"admitAll": "Steεref s kullec",
"allow": "Sireg",
"backToKnockModeButton": "Ulac awal uffir, suter attekki deg ubdil-is",
"dialogTitle": "Askar Lobby",
@@ -530,8 +528,6 @@
"notificationTitle": "Taxxamt n uraǧu",
"passwordField": "Sekcem awal uffir n temlilit",
"passwordJoinButton": "Semlil",
"reject": "Agi",
"rejectAll": "Agi akk",
"title": "Taxxamt n uraǧu",
"toggleLabel": "Rmed Lobby"
},
@@ -628,6 +624,8 @@
},
"participantsPane": {
"actions": {
"admit": "Steεref",
"admitAll": "Steεref s kullec",
"allow": "Sireg i yimttekkiyen ad:",
"allowVideo": "Sireg tavidyut",
"askUnmute": "Suter tririt n ṣṣut",
@@ -637,6 +635,7 @@
"mute": "Asusam",
"muteAll": "Sgugem meṛṛa",
"muteEveryoneElse": "Sgugem-iten i meṛṛa",
"reject": "Agi",
"stopEveryonesVideo": "Seḥbes tavidyut n yal yiwen",
"stopVideo": "Seḥbes tavidyut n Youtube",
"unblockEveryoneMicCamera": "Serreḥ i usawaḍ d tkamiṛat n yal yiwen",
@@ -668,6 +667,9 @@
"removeOption": "Kkes aɣewwaṛ",
"send": "Azen"
},
"errors": {
"notUniqueOption": "tifranin ilaq ad ilin d imaynuten"
},
"notification": {
"description": "Ldi iccer n yisenqad i ufran",
"title": "Asenqed amaynut yettwarna ɣer temlilt-a"
@@ -874,7 +876,8 @@
"hours": "{{count}} isragen",
"minutes": "{{count}} n tesdidin",
"name": "Isem",
"search": "Rechercher",
"search": "Nadi",
"searchHint": "Nadi imttekkiyen",
"seconds": "{{count}} n tsinin",
"speakerStats": "Addad n yimsiwel",
"speakerTime": "Akud n yimsiwel"

View File

@@ -497,6 +497,11 @@
},
"passwordDigitsOnly": "최대 {{number}} 자리",
"passwordSetRemotely": "다른 참가자가 설정",
"polls": {
"errors": {
"notUniqueOption": "옵션은 고유해야합니다"
}
},
"poweredby": "powered by",
"presenceStatus": {
"busy": "바쁨",
@@ -602,6 +607,8 @@
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "이름",
"search": "검색",
"searchHint": "참가자 검색",
"seconds": "{{count}}s",
"speakerStats": "접속자 통계",
"speakerTime": "접속자 오디오 사용 시간"

View File

@@ -467,6 +467,11 @@
},
"passwordDigitsOnly": "Daugiausia {{number}} skaičių",
"passwordSetRemotely": "nustatytas kito naudotojo",
"polls": {
"errors": {
"notUniqueOption": "Parinktys turi būti unikalios"
}
},
"poweredby": "pateikiamas",
"presenceStatus": {
"busy": "Užimtas",
@@ -571,6 +576,8 @@
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Vardas",
"search": "Ieškoti",
"searchHint": "Ieškokite dalyvių",
"seconds": "{{count}}s",
"speakerStats": "Garsiakalbio nuostatos",
"speakerTime": "Garsiakalbio laikas"

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