@placetime/corptime-conference 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lang/main-ru.json CHANGED
@@ -361,6 +361,8 @@
361
361
  "muteEveryoneDialogModerationOn": "Участники могут отправить запрос на выступление в любое время.",
362
362
  "muteEveryoneElseDialog": "После отключения микрофонов у участников вы не сможете включить их, но они могут включить себя в любой момент.",
363
363
  "muteEveryoneElseTitle": "Заглушить всех, за исключением {{whom}}?",
364
+ "muteEveryoneElsesDesktopDialog": "После остановки вы не сможете возобновить показ, но участник может сделать это в любой момент.",
365
+ "muteEveryoneElsesDesktopTitle": "Остановить демонстрацию экрана для всех, кроме {{whom}}?",
364
366
  "muteEveryoneElsesVideoDialog": "Как только камера будет отключена, вы не сможете снова включить ее, но они могут включить ее снова в любое время.",
365
367
  "muteEveryoneElsesVideoTitle": "Остановить видео для всех, кроме {{кого}}?",
366
368
  "muteEveryoneSelf": "себя",
@@ -368,10 +370,12 @@
368
370
  "muteEveryoneTitle": "Заглушить всех?",
369
371
  "muteEveryonesVideoDialog": "Участники могут включить свое видео в любое время.",
370
372
  "muteEveryonesVideoDialogModerationOn": "Участники могут отправить запрос на включение своего видео в любое время.",
373
+ "muteEveryonesDesktopTitle": "Остановить демонстрацию экрана у всех",
371
374
  "muteEveryonesVideoDialogOk": "Отключить",
372
375
  "muteEveryonesVideoTitle": "Остановить всеобщее видео?",
373
376
  "muteParticipantBody": "Вы не можете включить им микрофон, но они могут сделать это сами в любое время.",
374
377
  "muteParticipantButton": "Заглушить",
378
+ "muteParticipantsDesktopButton": "Остановить демонстрацию экрана",
375
379
  "muteParticipantsVideoBody": "Вы не сможете снова включить камеру, но они могут включить ее снова в любое время.",
376
380
  "muteParticipantsVideoBodyModerationOn": "Вы не сможете снова включить камеру, и они тоже.",
377
381
  "muteParticipantsVideoButton": "Остановить видео",
@@ -686,7 +690,8 @@
686
690
  "notificationTitle": "Лобби",
687
691
  "passwordJoinButton": "Присоединиться",
688
692
  "title": "Лобби",
689
- "toggleLabel": "Включить лобби"
693
+ "toggleLabel": "Включить лобби",
694
+ "moderator": "Модератор"
690
695
  },
691
696
  "localRecording": {
692
697
  "clientState": {
@@ -785,12 +790,14 @@
785
790
  "newDeviceAction": "Использовать",
786
791
  "newDeviceAudioTitle": "Обнаружено новое аудиоустройство",
787
792
  "newDeviceCameraTitle": "Обнаружена новая камера",
793
+ "nextToSpeak": "Вы следующий в очереди на выступление",
788
794
  "noiseSuppressionDesktopAudioDescription": "Шумоподавление не может быть включено при совместном использовании звука рабочего стола, пожалуйста, отключите его и повторите попытку.",
789
795
  "noiseSuppressionFailedTitle": "Не удалось запустить шумоподавление",
790
796
  "noiseSuppressionStereoDescription": "Шумоподавление стереозвука в настоящее время не поддерживается.",
791
797
  "oldElectronClientDescription1": "Похоже, вы используете старую версию клиента {{app}}, которая имеет известные уязвимости в системе безопасности. Убедитесь, что вы обновили до нашей ",
792
798
  "oldElectronClientDescription2": "последней версии",
793
799
  "oldElectronClientDescription3": " сейчас!",
800
+ "openChat": "Открыть чат",
794
801
  "participantWantsToJoin": "Хочет присоединиться к встрече",
795
802
  "participantsWantToJoin": "Хотят присоединиться к встрече",
796
803
  "passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) удален другим участником.",
@@ -814,11 +821,13 @@
814
821
  "suggestRecordingDescription": "Хотите начать запись?",
815
822
  "suggestRecordingTitle": "Записать эту встречу",
816
823
  "unmute": "Включить микрофон",
824
+ "unmuteScreen": "Начать демонстрацию экрана",
817
825
  "videoMutedRemotelyDescription": "Вы всегда можете включить его снова.",
818
826
  "videoMutedRemotelyTitle": "Ваше видео было отключено {{participantDisplayName}}",
819
827
  "videoUnmuteBlockedDescription": "Включение звука камеры и совместное использование рабочего стола временно заблокированы из-за системных ограничений.",
820
828
  "videoUnmuteBlockedTitle": "Включение камеры и общий доступ к рабочему столу заблокированы!",
821
829
  "viewLobby": "Смотреть лобби",
830
+ "viewParticipants": "Посмотреть участников",
822
831
  "viewVisitors": "Просмотр посетителей",
823
832
  "waitingParticipants": "{{waitingParticipants}} люди",
824
833
  "whiteboardLimitDescription": "Пожалуйста, сохраните свои изменения, так как скоро будет достигнут лимит пользователей, и интерактивная доска будет закрыта.",
@@ -834,6 +843,7 @@
834
843
  "audioModeration": "Разрешить выключить микрофон",
835
844
  "blockEveryoneMicCamera": "Заблокировать у всех микрофон и камеру",
836
845
  "breakoutRooms": "Сессионные залы",
846
+ "desktopModeration": "Начать демонстрацию экрана",
837
847
  "invite": "Пригласить",
838
848
  "moreModerationActions": "Дополнительные параметры модерации",
839
849
  "moreModerationControls": "Дополнительные элементы управления модерацией",
@@ -842,6 +852,7 @@
842
852
  "muteAll": "Выключить звук у всех",
843
853
  "muteEveryoneElse": "Выключить микрофон у остальных",
844
854
  "reject": "Отклонить",
855
+ "stopEveryonesDesktop": "Остановить демонстрацию экрана у всех",
845
856
  "stopEveryonesVideo": "Выключить у всех камеру",
846
857
  "stopVideo": "Остановить видео",
847
858
  "unblockEveryoneMicCamera": "Разблокировать у всех микрофон и камеру",
@@ -1082,6 +1093,7 @@
1082
1093
  "desktopShareWarning": "Вам необходимо перезапустить демонстрацию экрана, чтобы новые настройки вступили в силу.",
1083
1094
  "devices": "Устройства",
1084
1095
  "followMe": "Все следуют за мной",
1096
+ "followMeRecorder": "Устройство записи следует за мной",
1085
1097
  "framesPerSecond": "кадров в секунду",
1086
1098
  "incomingMessage": "Входящее сообщение",
1087
1099
  "language": "Язык",
@@ -1272,7 +1284,10 @@
1272
1284
  "videoblur": "Вкл/Выкл размытие фона",
1273
1285
  "videomute": "Вкл/Выкл видео",
1274
1286
  "videomuteGUMPending": "Подключение вашей камеры",
1275
- "videounmute": "Включить камеру"
1287
+ "videounmute": "Включить камеру",
1288
+ "copy": "Скопировать",
1289
+ "copied": "Сообщение скопировано",
1290
+ "private": "Личное сообщение"
1276
1291
  },
1277
1292
  "addPeople": "Добавить людей к вашему сеансу связи",
1278
1293
  "audioOnlyOff": "Включить видео (стандартный режим)",
@@ -1335,6 +1350,7 @@
1335
1350
  "openReactionsMenu": "Открыть меню реакций",
1336
1351
  "participants": "Участники",
1337
1352
  "pip": "Вкл режим Картинка-в-картинке",
1353
+ "polls": "Опросы",
1338
1354
  "privateMessage": "Отправить личное сообщение",
1339
1355
  "profile": "Редактировать профиль",
1340
1356
  "raiseHand": "Хочу говорить",
@@ -1424,6 +1440,7 @@
1424
1440
  "connectionInfo": "Информация о соединении",
1425
1441
  "demote": "Переместить к посетителям",
1426
1442
  "domute": "Выключить звук",
1443
+ "domuteDesktopOfOthers": "Остановить демонстрацию экрана у всех, кроме",
1427
1444
  "domuteOthers": "Выключить звук остальным",
1428
1445
  "domuteVideo": "Выключить видео",
1429
1446
  "domuteVideoOfOthers": "Выключить видео остальным",
package/lang/main.json CHANGED
@@ -762,7 +762,8 @@
762
762
  "passwordJoinButton": "Join",
763
763
  "title": "Lobby",
764
764
  "toggleLabel": "Enable lobby",
765
- "waitForModerator": "The conference has not yet started because no moderators have yet arrived. If you'd like to become a moderator please log-in. Otherwise, please wait."
765
+ "waitForModerator": "The conference has not yet started because no moderators have yet arrived. If you'd like to become a moderator please log-in. Otherwise, please wait.",
766
+ "moderator": "Moderator"
766
767
  },
767
768
  "localRecording": {
768
769
  "clientState": {
@@ -1393,7 +1394,10 @@
1393
1394
  "videoblur": "Toggle video blur",
1394
1395
  "videomute": "Stop camera",
1395
1396
  "videomuteGUMPending": "Connecting your camera",
1396
- "videounmute": "Start camera"
1397
+ "videounmute": "Start camera",
1398
+ "copy": "Copy",
1399
+ "copied": "Message copied",
1400
+ "private": "Private message"
1397
1401
  },
1398
1402
  "addPeople": "Add people to your call",
1399
1403
  "advancedAudioSettings": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@placetime/corptime-conference",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "React Native SDK from Corptime-Conference",
5
5
  "main": "index.tsx",
6
6
  "license": "Apache-2.0",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@braintree/sanitize-url": "7.0.0",
15
- "@jitsi/js-utils": "2.2.1",
15
+ "@jitsi/js-utils": "2.6.7",
16
16
  "@jitsi/logger": "2.1.1",
17
17
  "@react-navigation/bottom-tabs": "6.6.0",
18
18
  "@react-navigation/elements": "1.3.30",
@@ -27,11 +27,11 @@
27
27
  "grapheme-splitter": "1.0.4",
28
28
  "i18n-iso-countries": "6.8.0",
29
29
  "i18next": "17.0.6",
30
- "i18next-http-backend": "2.2.1",
31
30
  "js-md5": "0.6.1",
31
+ "i18next-http-backend": "2.2.1",
32
32
  "js-sha512": "0.8.0",
33
33
  "jwt-decode": "2.2.0",
34
- "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v2101.0.0+8061f52a/lib-jitsi-meet.tgz",
34
+ "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v2118.0.0+67fd2c84/lib-jitsi-meet.tgz",
35
35
  "lodash-es": "4.17.21",
36
36
  "optional-require": "1.0.3",
37
37
  "promise.withresolvers": "1.0.3",
@@ -63,24 +63,24 @@
63
63
  "@react-native-community/slider": "4.5.6",
64
64
  "@react-native-google-signin/google-signin": "10.1.0",
65
65
  "@sayem314/react-native-keep-awake": "1.3.1",
66
- "react": "*",
67
66
  "react-native": "~0.77.0",
67
+ "react": "*",
68
68
  "react-native-background-timer": "https://github.com/jitsi/react-native-background-timer.git#d180dfaa4486ae3ee17d01242db92cb3195f4718",
69
69
  "react-native-calendar-events": "https://github.com/jitsi/react-native-calendar-events.git#47f068dedfed7c0f72042e093f688eb11624eb7b",
70
70
  "react-native-default-preference": "https://github.com/jitsi/react-native-default-preference.git#c9bf63bdc058e3fa2aa0b87b1ee1af240f44ed02",
71
71
  "react-native-device-info": "12.1.0",
72
- "react-native-gesture-handler": "2.24.0",
73
72
  "react-native-get-random-values": "1.11.0",
74
- "react-native-orientation-locker": "https://github.com/jitsi/react-native-orientation-locker.git#fe095651d819cf134624f786b61fc8667862178a",
73
+ "react-native-gesture-handler": "2.24.0",
75
74
  "react-native-pager-view": "6.8.1",
76
75
  "react-native-performance": "5.1.2",
77
- "react-native-safe-area-context": "5.5.2",
76
+ "react-native-orientation-locker": "https://github.com/jitsi/react-native-orientation-locker.git#fe095651d819cf134624f786b61fc8667862178a",
77
+ "react-native-safe-area-context": "5.6.1",
78
78
  "react-native-screens": "4.11.1",
79
79
  "react-native-sound": "https://github.com/jitsi/react-native-sound.git#ea13c97b5c2a4ff5e0d9bacbd9ff5e4457fe2c3c",
80
80
  "react-native-splash-view": "0.0.18",
81
81
  "react-native-svg": "15.11.2",
82
82
  "react-native-video": "6.13.0",
83
- "react-native-watch-connectivity": "1.1.0",
83
+ "react-native-watch-connectivity": "0.0.0",
84
84
  "react-native-webrtc": "124.0.7",
85
85
  "react-native-webview": "13.13.5",
86
86
  "react-native-worklets-core": "https://github.com/jitsi/react-native-worklets-core.git#8c5dfab2a5907305da8971696a781b60f0f9cb18"
@@ -122,10 +122,6 @@ export function maybeRedirectToWelcomePage(options: { feedbackSubmitted?: boolea
122
122
  enableClosePage
123
123
  } = getState()['features/base/config'];
124
124
 
125
- const { jwt } = getState()['features/base/jwt'];
126
-
127
- jitsiLocalStorage.setItem('jwt', jwt ?? '');
128
-
129
125
  // if close page is enabled redirect to it, without further action
130
126
  if (enableClosePage) {
131
127
  if (isVpaasMeeting(getState())) {
@@ -133,7 +133,9 @@ function _setConfigOrLocationURL({ dispatch, getState }: IStore, next: Function,
133
133
  const { locationURL } = getState()['features/base/connection'];
134
134
 
135
135
  let jwt = locationURL ? parseJWTFromURLParams(locationURL) : undefined;
136
- if (!jwt) {
136
+ if (jwt) {
137
+ jitsiLocalStorage.setItem('jwt', jwt ?? '');
138
+ } else {
137
139
  jwt = jitsiLocalStorage.getItem('jwt');
138
140
  }
139
141
  if (jwt) {
@@ -141,14 +141,14 @@ const MessageMenu = ({ message, participantId, isFromVisitor, isLobbyMessage, en
141
141
  <div
142
142
  className = { classes.menuItem }
143
143
  onClick = { handlePrivateClick }>
144
- {t('Private Message')}
144
+ { t('toolbar.accessibilityLabel.private') }
145
145
  </div>
146
146
  )}
147
147
  {!isFileMessage && (
148
148
  <div
149
149
  className = { classes.menuItem }
150
150
  onClick = { handleCopyClick }>
151
- {t('Copy')}
151
+ { t('toolbar.accessibilityLabel.copy') }
152
152
  </div>
153
153
  )}
154
154
  </div>
@@ -177,7 +177,7 @@ const MessageMenu = ({ message, participantId, isFromVisitor, isLobbyMessage, en
177
177
  className = { cx(classes.copiedMessage, { [classes.showCopiedMessage]: showCopiedMessage }) }
178
178
  style = {{ top: `${popupPosition.top}px`,
179
179
  left: `${popupPosition.left}px` }}>
180
- {t('Message Copied')}
180
+ { t('toolbar.accessibilityLabel.copied') }
181
181
  </div>,
182
182
  document.body
183
183
  )}
@@ -577,13 +577,15 @@ function getLobbyChatDisplayName(state: IReduxState, participantId: string) {
577
577
  const { lobbyMessageRecipient } = state['features/chat'];
578
578
 
579
579
  if (participantId === lobbyMessageRecipient?.id) {
580
- return lobbyMessageRecipient.name;
580
+ const isModerator = lobbyMessageRecipient.name === 'Moderator';
581
+ return isModerator ? i18next.t('lobby.moderator') : lobbyMessageRecipient.name;
581
582
  }
582
583
 
583
584
  const knockingParticipant = knockingParticipants.find(p => p.id === participantId);
584
585
 
585
586
  if (knockingParticipant) {
586
- return knockingParticipant.name;
587
+ const isModerator = knockingParticipant.name === 'Moderator';
588
+ return isModerator ? i18next.t('lobby.moderator') : knockingParticipant.name;
587
589
  }
588
590
 
589
591
  }
@@ -306,7 +306,15 @@ export default class AbstractLobbyScreen<P extends IProps = IProps> extends Pure
306
306
  this.setState({
307
307
  passwordJoinFailed: false
308
308
  });
309
- this.props.dispatch(joinWithPassword(this.state.password));
309
+
310
+ window.crypto.subtle.digest('SHA-256', new TextEncoder().encode(this.state.password))
311
+ .then((hash)=>{
312
+ const hashArray = Array.from(new Uint8Array(hash));
313
+ const hashHex = hashArray
314
+ .map(b => b.toString(16).padStart(2, '0'))
315
+ .join('');
316
+ this.props.dispatch(joinWithPassword(hashHex));
317
+ })
310
318
  }
311
319
 
312
320
  /**
@@ -76,7 +76,7 @@ class LobbyScreen extends AbstractLobbyScreen<IProps> {
76
76
  const { _aspectRatio, _clientHeight, _clientWidth, _roomName } = this.props;
77
77
  const isTablet = Math.min(_clientWidth, _clientHeight) >= 768;
78
78
 
79
- let contentContainerStyles = preJoinStyles.contentContainer;
79
+ let contentContainerStyles = preJoinStyles.lobbyContentContainer;
80
80
  let largeVideoContainerStyles = preJoinStyles.largeVideoContainer;
81
81
 
82
82
  if (isTablet && _aspectRatio === ASPECT_RATIO_WIDE) {
@@ -87,6 +87,7 @@ class LobbyScreen extends AbstractLobbyScreen<IProps> {
87
87
 
88
88
  return (
89
89
  <JitsiScreen
90
+ useBottomSheet = { true }
90
91
  addBottomPadding = { false }
91
92
  safeAreaInsets = { [ 'right' ] }
92
93
  style = { preJoinStyles.contentWrapper }>
@@ -180,6 +181,7 @@ class LobbyScreen extends AbstractLobbyScreen<IProps> {
180
181
 
181
182
  return (
182
183
  <Input
184
+ useBottomSheetInput = { true }
183
185
  autoCapitalize = 'none'
184
186
  customStyles = {{ input: styles.customInput }}
185
187
  error = { _passwordJoinFailed }
@@ -79,7 +79,7 @@ class LobbyScreen extends AbstractLobbyScreen<IProps> {
79
79
  className = 'lobby-screen'
80
80
  showCopyUrlButton = { showCopyUrlButton }
81
81
  showDeviceStatus = { _deviceStatusVisible }
82
- title = { t(this._getScreenTitleKey(), { moderator: this.props._lobbyMessageRecipient }) }>
82
+ title = { t(this._getScreenTitleKey(), { moderator: this.getParticipantDisplayName() }) }>
83
83
  { this._renderContent() }
84
84
  </PreMeetingScreen>
85
85
  );
@@ -125,7 +125,7 @@ class LobbyScreen extends AbstractLobbyScreen<IProps> {
125
125
  <div className = { `lobby-chat-container ${isChatOpen ? 'hidden' : ''}` }>
126
126
  <div className = 'lobby-chat-header'>
127
127
  <h1 className = 'title'>
128
- { t(this._getScreenTitleKey(), { moderator: this.props._lobbyMessageRecipient }) }
128
+ { t(this._getScreenTitleKey(), { moderator: this.getParticipantDisplayName() }) }
129
129
  </h1>
130
130
  <Icon
131
131
  ariaLabel = { t('toolbar.closeChat') }
@@ -316,6 +316,11 @@ class LobbyScreen extends AbstractLobbyScreen<IProps> {
316
316
  _onHangup() {
317
317
  this.props.dispatch(leaveConference());
318
318
  }
319
+
320
+ private getParticipantDisplayName() {
321
+ const isModerator = this.props._lobbyMessageRecipient === 'Moderator';
322
+ return isModerator ? this.props.t('lobby.moderator') : this.props._lobbyMessageRecipient;
323
+ }
319
324
  }
320
325
 
321
326
  export default translate(connect(_mapStateToProps)(LobbyScreen));
@@ -50,6 +50,16 @@ export const preJoinStyles = {
50
50
  zIndex: 1
51
51
  },
52
52
 
53
+ lobbyContentContainer: {
54
+ alignItems: 'center',
55
+ backgroundColor: BaseTheme.palette.uiBackground,
56
+ bottom: BaseTheme.spacing[5],
57
+ display: 'flex',
58
+ justifyContent: 'center',
59
+ width: '100%',
60
+ zIndex: 1
61
+ },
62
+
53
63
  contentContainerWide: {
54
64
  alignItems: 'center',
55
65
  height: '100%',