@100mslive/react-native-room-kit 0.0.1 → 0.0.3

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.
Files changed (255) hide show
  1. package/lib/commonjs/HMSRoomSetup.js +1 -1
  2. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  3. package/lib/commonjs/Icons/AnswerPhone/assets/answer-phone.png +0 -0
  4. package/lib/commonjs/Icons/AnswerPhone/assets/answer-phone@2x.png +0 -0
  5. package/lib/commonjs/Icons/AnswerPhone/assets/answer-phone@3x.png +0 -0
  6. package/lib/commonjs/Icons/AnswerPhone/index.js +30 -0
  7. package/lib/commonjs/Icons/AnswerPhone/index.js.map +1 -0
  8. package/lib/commonjs/Icons/Bluetooth/assets/bluetooth-on.png +0 -0
  9. package/lib/commonjs/Icons/Bluetooth/assets/bluetooth-on@2x.png +0 -0
  10. package/lib/commonjs/Icons/Bluetooth/assets/bluetooth-on@3x.png +0 -0
  11. package/lib/commonjs/Icons/Bluetooth/index.js +30 -0
  12. package/lib/commonjs/Icons/Bluetooth/index.js.map +1 -0
  13. package/lib/commonjs/Icons/GenericLogo/assets/generic-logo.png +0 -0
  14. package/lib/commonjs/Icons/GenericLogo/assets/generic-logo@2x.png +0 -0
  15. package/lib/commonjs/Icons/GenericLogo/assets/generic-logo@3x.png +0 -0
  16. package/lib/commonjs/Icons/GenericLogo/index.js +30 -0
  17. package/lib/commonjs/Icons/GenericLogo/index.js.map +1 -0
  18. package/lib/commonjs/Icons/Headphones/assets/headphones.png +0 -0
  19. package/lib/commonjs/Icons/Headphones/assets/headphones@2x.png +0 -0
  20. package/lib/commonjs/Icons/Headphones/assets/headphones@3x.png +0 -0
  21. package/lib/commonjs/Icons/Headphones/index.js +30 -0
  22. package/lib/commonjs/Icons/Headphones/index.js.map +1 -0
  23. package/lib/commonjs/Icons/Person/assets/person.png +0 -0
  24. package/lib/commonjs/Icons/Person/assets/person@2x.png +0 -0
  25. package/lib/commonjs/Icons/Person/assets/person@3x.png +0 -0
  26. package/lib/commonjs/Icons/Person/index.js +30 -0
  27. package/lib/commonjs/Icons/Person/index.js.map +1 -0
  28. package/lib/commonjs/Icons/Speaker/assets/speaker-large.png +0 -0
  29. package/lib/commonjs/Icons/Speaker/assets/speaker-large@2x.png +0 -0
  30. package/lib/commonjs/Icons/Speaker/assets/speaker-large@3x.png +0 -0
  31. package/lib/commonjs/Icons/Speaker/index.js +7 -2
  32. package/lib/commonjs/Icons/Speaker/index.js.map +1 -1
  33. package/lib/commonjs/Icons/Wave/assets/wave.png +0 -0
  34. package/lib/commonjs/Icons/Wave/assets/wave@2x.png +0 -0
  35. package/lib/commonjs/Icons/Wave/assets/wave@3x.png +0 -0
  36. package/lib/commonjs/Icons/Wave/index.js +30 -0
  37. package/lib/commonjs/Icons/Wave/index.js.map +1 -0
  38. package/lib/commonjs/Icons/index.js +66 -0
  39. package/lib/commonjs/Icons/index.js.map +1 -1
  40. package/lib/commonjs/components/BackButton.js +1 -1
  41. package/lib/commonjs/components/BackButton.js.map +1 -1
  42. package/lib/commonjs/components/DisplayTrack.js +1 -1
  43. package/lib/commonjs/components/DisplayTrack.js.map +1 -1
  44. package/lib/commonjs/components/HMSPreviewEditName.js +1 -1
  45. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  46. package/lib/commonjs/components/HMSPreviewJoinButton.js +11 -4
  47. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  48. package/lib/commonjs/components/HMSPreviewPeersList.js +9 -32
  49. package/lib/commonjs/components/HMSPreviewPeersList.js.map +1 -1
  50. package/lib/commonjs/components/HMSPreviewSubtitle.js +1 -1
  51. package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
  52. package/lib/commonjs/components/HMSPreviewTile.js +11 -61
  53. package/lib/commonjs/components/HMSPreviewTile.js.map +1 -1
  54. package/lib/commonjs/components/HMSPreviewTitle.js +0 -1
  55. package/lib/commonjs/components/HMSPreviewTitle.js.map +1 -1
  56. package/lib/commonjs/components/{HMSPreviewDeviceSettings.js → HMSSpeakerSettings.js} +69 -161
  57. package/lib/commonjs/components/HMSSpeakerSettings.js.map +1 -0
  58. package/lib/commonjs/components/Header.js +2 -1
  59. package/lib/commonjs/components/Header.js.map +1 -1
  60. package/lib/commonjs/components/Participants/ParticipantsList.js +1 -1
  61. package/lib/commonjs/components/Participants/ParticipantsList.js.map +1 -1
  62. package/lib/commonjs/components/PeerSettingsModalContent.js +4 -3
  63. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  64. package/lib/commonjs/components/Preview.js +72 -21
  65. package/lib/commonjs/components/Preview.js.map +1 -1
  66. package/lib/commonjs/components/RoomSettingsModalContent.js +5 -5
  67. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  68. package/lib/commonjs/hooks-util.js +111 -93
  69. package/lib/commonjs/hooks-util.js.map +1 -1
  70. package/lib/commonjs/redux/actionTypes.js +2 -0
  71. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  72. package/lib/commonjs/redux/actions/index.js +11 -1
  73. package/lib/commonjs/redux/actions/index.js.map +1 -1
  74. package/lib/commonjs/redux/reducers/hmsStates.js +12 -1
  75. package/lib/commonjs/redux/reducers/hmsStates.js.map +1 -1
  76. package/lib/commonjs/redux/reducers/userState.js +1 -1
  77. package/lib/commonjs/redux/reducers/userState.js.map +1 -1
  78. package/lib/commonjs/utils/theme.js +5 -1
  79. package/lib/commonjs/utils/theme.js.map +1 -1
  80. package/lib/module/HMSRoomSetup.js +1 -1
  81. package/lib/module/HMSRoomSetup.js.map +1 -1
  82. package/lib/module/Icons/AnswerPhone/assets/answer-phone.png +0 -0
  83. package/lib/module/Icons/AnswerPhone/assets/answer-phone@2x.png +0 -0
  84. package/lib/module/Icons/AnswerPhone/assets/answer-phone@3x.png +0 -0
  85. package/lib/module/Icons/AnswerPhone/index.js +22 -0
  86. package/lib/module/Icons/AnswerPhone/index.js.map +1 -0
  87. package/lib/module/Icons/Bluetooth/assets/bluetooth-on.png +0 -0
  88. package/lib/module/Icons/Bluetooth/assets/bluetooth-on@2x.png +0 -0
  89. package/lib/module/Icons/Bluetooth/assets/bluetooth-on@3x.png +0 -0
  90. package/lib/module/Icons/Bluetooth/index.js +22 -0
  91. package/lib/module/Icons/Bluetooth/index.js.map +1 -0
  92. package/lib/module/Icons/GenericLogo/assets/generic-logo.png +0 -0
  93. package/lib/module/Icons/GenericLogo/assets/generic-logo@2x.png +0 -0
  94. package/lib/module/Icons/GenericLogo/assets/generic-logo@3x.png +0 -0
  95. package/lib/module/Icons/GenericLogo/index.js +22 -0
  96. package/lib/module/Icons/GenericLogo/index.js.map +1 -0
  97. package/lib/module/Icons/Headphones/assets/headphones.png +0 -0
  98. package/lib/module/Icons/Headphones/assets/headphones@2x.png +0 -0
  99. package/lib/module/Icons/Headphones/assets/headphones@3x.png +0 -0
  100. package/lib/module/Icons/Headphones/index.js +22 -0
  101. package/lib/module/Icons/Headphones/index.js.map +1 -0
  102. package/lib/module/Icons/Person/assets/person.png +0 -0
  103. package/lib/module/Icons/Person/assets/person@2x.png +0 -0
  104. package/lib/module/Icons/Person/assets/person@3x.png +0 -0
  105. package/lib/module/Icons/Person/index.js +22 -0
  106. package/lib/module/Icons/Person/index.js.map +1 -0
  107. package/lib/module/Icons/Speaker/assets/speaker-large.png +0 -0
  108. package/lib/module/Icons/Speaker/assets/speaker-large@2x.png +0 -0
  109. package/lib/module/Icons/Speaker/assets/speaker-large@3x.png +0 -0
  110. package/lib/module/Icons/Speaker/index.js +7 -2
  111. package/lib/module/Icons/Speaker/index.js.map +1 -1
  112. package/lib/module/Icons/Wave/assets/wave.png +0 -0
  113. package/lib/module/Icons/Wave/assets/wave@2x.png +0 -0
  114. package/lib/module/Icons/Wave/assets/wave@3x.png +0 -0
  115. package/lib/module/Icons/Wave/index.js +22 -0
  116. package/lib/module/Icons/Wave/index.js.map +1 -0
  117. package/lib/module/Icons/index.js +6 -0
  118. package/lib/module/Icons/index.js.map +1 -1
  119. package/lib/module/components/BackButton.js +1 -1
  120. package/lib/module/components/BackButton.js.map +1 -1
  121. package/lib/module/components/DisplayTrack.js +1 -1
  122. package/lib/module/components/DisplayTrack.js.map +1 -1
  123. package/lib/module/components/HMSPreviewEditName.js +1 -1
  124. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  125. package/lib/module/components/HMSPreviewJoinButton.js +11 -4
  126. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  127. package/lib/module/components/HMSPreviewPeersList.js +9 -32
  128. package/lib/module/components/HMSPreviewPeersList.js.map +1 -1
  129. package/lib/module/components/HMSPreviewSubtitle.js +1 -1
  130. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  131. package/lib/module/components/HMSPreviewTile.js +12 -62
  132. package/lib/module/components/HMSPreviewTile.js.map +1 -1
  133. package/lib/module/components/HMSPreviewTitle.js +0 -1
  134. package/lib/module/components/HMSPreviewTitle.js.map +1 -1
  135. package/lib/module/components/HMSSpeakerSettings.js +204 -0
  136. package/lib/module/components/HMSSpeakerSettings.js.map +1 -0
  137. package/lib/module/components/Header.js +2 -1
  138. package/lib/module/components/Header.js.map +1 -1
  139. package/lib/module/components/Participants/ParticipantsList.js +1 -1
  140. package/lib/module/components/Participants/ParticipantsList.js.map +1 -1
  141. package/lib/module/components/PeerSettingsModalContent.js +4 -3
  142. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  143. package/lib/module/components/Preview.js +73 -23
  144. package/lib/module/components/Preview.js.map +1 -1
  145. package/lib/module/components/RoomSettingsModalContent.js +5 -5
  146. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  147. package/lib/module/hooks-util.js +114 -103
  148. package/lib/module/hooks-util.js.map +1 -1
  149. package/lib/module/redux/actionTypes.js +2 -0
  150. package/lib/module/redux/actionTypes.js.map +1 -1
  151. package/lib/module/redux/actions/index.js +8 -0
  152. package/lib/module/redux/actions/index.js.map +1 -1
  153. package/lib/module/redux/reducers/hmsStates.js +12 -1
  154. package/lib/module/redux/reducers/hmsStates.js.map +1 -1
  155. package/lib/module/redux/reducers/userState.js +1 -1
  156. package/lib/module/redux/reducers/userState.js.map +1 -1
  157. package/lib/module/utils/theme.js +5 -1
  158. package/lib/module/utils/theme.js.map +1 -1
  159. package/lib/typescript/Icons/AnswerPhone/index.d.ts +7 -0
  160. package/lib/typescript/Icons/AnswerPhone/index.d.ts.map +1 -0
  161. package/lib/typescript/Icons/Bluetooth/index.d.ts +7 -0
  162. package/lib/typescript/Icons/Bluetooth/index.d.ts.map +1 -0
  163. package/lib/typescript/Icons/GenericLogo/index.d.ts +7 -0
  164. package/lib/typescript/Icons/GenericLogo/index.d.ts.map +1 -0
  165. package/lib/typescript/Icons/Headphones/index.d.ts +7 -0
  166. package/lib/typescript/Icons/Headphones/index.d.ts.map +1 -0
  167. package/lib/typescript/Icons/Person/index.d.ts +7 -0
  168. package/lib/typescript/Icons/Person/index.d.ts.map +1 -0
  169. package/lib/typescript/Icons/Speaker/index.d.ts +1 -0
  170. package/lib/typescript/Icons/Speaker/index.d.ts.map +1 -1
  171. package/lib/typescript/Icons/Wave/index.d.ts +7 -0
  172. package/lib/typescript/Icons/Wave/index.d.ts.map +1 -0
  173. package/lib/typescript/Icons/index.d.ts +6 -0
  174. package/lib/typescript/Icons/index.d.ts.map +1 -1
  175. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  176. package/lib/typescript/components/HMSPreviewPeersList.d.ts.map +1 -1
  177. package/lib/typescript/components/HMSPreviewTile.d.ts.map +1 -1
  178. package/lib/typescript/components/HMSSpeakerSettings.d.ts +3 -0
  179. package/lib/typescript/components/HMSSpeakerSettings.d.ts.map +1 -0
  180. package/lib/typescript/components/Header.d.ts.map +1 -1
  181. package/lib/typescript/components/Participants/ParticipantsList.d.ts.map +1 -1
  182. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  183. package/lib/typescript/components/Preview.d.ts.map +1 -1
  184. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  185. package/lib/typescript/hooks-util.d.ts +1 -1
  186. package/lib/typescript/hooks-util.d.ts.map +1 -1
  187. package/lib/typescript/redux/actionTypes.d.ts +3 -1
  188. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  189. package/lib/typescript/redux/actions/index.d.ts +8 -0
  190. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  191. package/lib/typescript/redux/index.d.ts +1 -0
  192. package/lib/typescript/redux/index.d.ts.map +1 -1
  193. package/lib/typescript/redux/reducers/hmsStates.d.ts +11 -2
  194. package/lib/typescript/redux/reducers/hmsStates.d.ts.map +1 -1
  195. package/lib/typescript/redux/reducers/index.d.ts +1 -0
  196. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  197. package/lib/typescript/utils/theme.d.ts +4 -0
  198. package/lib/typescript/utils/theme.d.ts.map +1 -1
  199. package/package.json +4 -3
  200. package/src/HMSRoomSetup.tsx +1 -1
  201. package/src/Icons/AnswerPhone/assets/answer-phone.png +0 -0
  202. package/src/Icons/AnswerPhone/assets/answer-phone@2x.png +0 -0
  203. package/src/Icons/AnswerPhone/assets/answer-phone@3x.png +0 -0
  204. package/src/Icons/AnswerPhone/index.tsx +27 -0
  205. package/src/Icons/Bluetooth/assets/bluetooth-on.png +0 -0
  206. package/src/Icons/Bluetooth/assets/bluetooth-on@2x.png +0 -0
  207. package/src/Icons/Bluetooth/assets/bluetooth-on@3x.png +0 -0
  208. package/src/Icons/Bluetooth/index.tsx +27 -0
  209. package/src/Icons/GenericLogo/assets/generic-logo.png +0 -0
  210. package/src/Icons/GenericLogo/assets/generic-logo@2x.png +0 -0
  211. package/src/Icons/GenericLogo/assets/generic-logo@3x.png +0 -0
  212. package/src/Icons/GenericLogo/index.tsx +27 -0
  213. package/src/Icons/Headphones/assets/headphones.png +0 -0
  214. package/src/Icons/Headphones/assets/headphones@2x.png +0 -0
  215. package/src/Icons/Headphones/assets/headphones@3x.png +0 -0
  216. package/src/Icons/Headphones/index.tsx +27 -0
  217. package/src/Icons/Person/assets/person.png +0 -0
  218. package/src/Icons/Person/assets/person@2x.png +0 -0
  219. package/src/Icons/Person/assets/person@3x.png +0 -0
  220. package/src/Icons/Person/index.tsx +27 -0
  221. package/src/Icons/Speaker/assets/speaker-large.png +0 -0
  222. package/src/Icons/Speaker/assets/speaker-large@2x.png +0 -0
  223. package/src/Icons/Speaker/assets/speaker-large@3x.png +0 -0
  224. package/src/Icons/Speaker/index.tsx +10 -2
  225. package/src/Icons/Wave/assets/wave.png +0 -0
  226. package/src/Icons/Wave/assets/wave@2x.png +0 -0
  227. package/src/Icons/Wave/assets/wave@3x.png +0 -0
  228. package/src/Icons/Wave/index.tsx +24 -0
  229. package/src/Icons/index.ts +6 -0
  230. package/src/components/BackButton.tsx +1 -1
  231. package/src/components/DisplayTrack.tsx +1 -1
  232. package/src/components/HMSPreviewEditName.tsx +1 -1
  233. package/src/components/HMSPreviewJoinButton.tsx +21 -4
  234. package/src/components/HMSPreviewPeersList.tsx +19 -40
  235. package/src/components/HMSPreviewSubtitle.tsx +1 -1
  236. package/src/components/HMSPreviewTile.tsx +11 -67
  237. package/src/components/HMSPreviewTitle.tsx +0 -1
  238. package/src/components/HMSSpeakerSettings.tsx +259 -0
  239. package/src/components/Header.tsx +4 -1
  240. package/src/components/Participants/ParticipantsList.tsx +0 -1
  241. package/src/components/PeerSettingsModalContent.tsx +7 -5
  242. package/src/components/Preview.tsx +92 -37
  243. package/src/components/RoomSettingsModalContent.tsx +7 -6
  244. package/src/hooks-util.ts +133 -103
  245. package/src/redux/actionTypes.ts +2 -0
  246. package/src/redux/actions/index.ts +10 -0
  247. package/src/redux/reducers/hmsStates.ts +28 -1
  248. package/src/redux/reducers/userState.ts +1 -1
  249. package/src/utils/theme.ts +5 -1
  250. package/lib/commonjs/components/HMSPreviewDeviceSettings.js.map +0 -1
  251. package/lib/module/components/HMSPreviewDeviceSettings.js +0 -296
  252. package/lib/module/components/HMSPreviewDeviceSettings.js.map +0 -1
  253. package/lib/typescript/components/HMSPreviewDeviceSettings.d.ts +0 -3
  254. package/lib/typescript/components/HMSPreviewDeviceSettings.d.ts.map +0 -1
  255. package/src/components/HMSPreviewDeviceSettings.tsx +0 -387
@@ -117,7 +117,6 @@ export const ParticipantsList: React.FC<ParticipantsListProps> = ({ data }) => {
117
117
  <View style={styles.participantDescription}>
118
118
  <Text style={styles.participantName} numberOfLines={1}>
119
119
  {peer.name}
120
- {peer.isLocal && ' (You)'}
121
120
  </Text>
122
121
  <Text style={styles.participantRole} numberOfLines={1}>
123
122
  {peer.role?.name}
@@ -41,6 +41,7 @@ export const PeerSettingsModalContent: React.FC<
41
41
  const spotlightTrackId = useSelector(
42
42
  (state: RootState) => state.user.spotlightTrackId
43
43
  );
44
+ const debugMode = useSelector((state: RootState) => state.user.debugMode);
44
45
  const { handleModalVisibleType: setModalVisible } = useModalType();
45
46
 
46
47
  const removePeer = () => {
@@ -241,9 +242,10 @@ export const PeerSettingsModalContent: React.FC<
241
242
  ) : null}
242
243
 
243
244
  {/* Don't show Capture Screenshot option, if track is screenshare of local peer */}
244
- {peerTrackNode.peer.isLocal &&
245
- peerTrackNode.track &&
246
- peerTrackNode.track.source === HMSTrackSource.SCREEN ? null : (
245
+ {!debugMode ||
246
+ (peerTrackNode.peer.isLocal &&
247
+ peerTrackNode.track &&
248
+ peerTrackNode.track.source === HMSTrackSource.SCREEN) ? null : (
247
249
  <SettingItem
248
250
  text="Capture Screenshot"
249
251
  IconType={MaterialCommunityIcons}
@@ -254,7 +256,7 @@ export const PeerSettingsModalContent: React.FC<
254
256
  )}
255
257
 
256
258
  {/* Local Image Capture is only available for local peer */}
257
- {peerTrackNode.peer.isLocal ? (
259
+ {debugMode && peerTrackNode.peer.isLocal ? (
258
260
  <SettingItem
259
261
  text="Local Image Capture"
260
262
  IconType={MaterialCommunityIcons}
@@ -267,7 +269,7 @@ export const PeerSettingsModalContent: React.FC<
267
269
  ) : null}
268
270
 
269
271
  {/* Don't show Streaming Quality option for local peer */}
270
- {!peer.isLocal ? (
272
+ {debugMode && !peer.isLocal ? (
271
273
  <SettingItem
272
274
  text="Streaming Quality"
273
275
  IconType={Ionicons}
@@ -1,11 +1,9 @@
1
1
  import React, { useEffect } from 'react';
2
- import { ScrollView, StyleSheet, View } from 'react-native';
2
+ import { StyleSheet, View } from 'react-native';
3
3
  import { AvoidSoftInput } from 'react-native-avoid-softinput';
4
-
5
- import {
6
- SafeAreaView,
7
- useSafeAreaInsets,
8
- } from 'react-native-safe-area-context';
4
+ import { useSelector } from 'react-redux';
5
+ import { SafeAreaView } from 'react-native-safe-area-context';
6
+ import LinearGradient from 'react-native-linear-gradient';
9
7
 
10
8
  import { COLORS } from '../utils/theme';
11
9
 
@@ -19,7 +17,9 @@ import { HMSPreviewPeersList } from './HMSPreviewPeersList';
19
17
  import { HMSPreviewSubtitle } from './HMSPreviewSubtitle';
20
18
  import { HMSPreviewTile } from './HMSPreviewTile';
21
19
  import { HMSPreviewTitle } from './HMSPreviewTitle';
22
- import { HMSPreviewDeviceSettings } from './HMSPreviewDeviceSettings';
20
+ import { HMSSpeakerSettings } from './HMSSpeakerSettings';
21
+ import { GenericLogoIcon, NetworkQualityIcon } from '../Icons';
22
+ import type { RootState } from '../redux';
23
23
 
24
24
  export const Preview = ({
25
25
  join,
@@ -28,7 +28,10 @@ export const Preview = ({
28
28
  join(): void;
29
29
  loadingButtonState: boolean;
30
30
  }) => {
31
- const { bottom } = useSafeAreaInsets();
31
+ const localPeerNetworkQuality = useSelector(
32
+ (state: RootState) =>
33
+ state.hmsStates.localPeer?.networkQuality?.downlinkQuality
34
+ );
32
35
 
33
36
  useEffect(() => {
34
37
  AvoidSoftInput.setAdjustNothing();
@@ -38,58 +41,111 @@ export const Preview = ({
38
41
  }, []);
39
42
 
40
43
  return (
41
- <SafeAreaView style={styles.container}>
42
- <ScrollView
43
- contentContainerStyle={styles.scrollContainer}
44
- bounces={false}
44
+ <View style={styles.container}>
45
+ <HMSPreviewTile />
46
+
47
+ <LinearGradient
48
+ colors={[
49
+ '#000000',
50
+ 'rgba(0, 0, 0, 0.9)',
51
+ 'rgba(0, 0, 0, 0.7)',
52
+ 'rgba(0, 0, 0, 0.1)',
53
+ 'rgba(0, 0, 0, 0.05)',
54
+ 'rgba(0, 0, 0, 0)',
55
+ ]}
56
+ locations={[0.45, 0.55, 0.7, 0.9, 0.95, 1]}
57
+ style={{
58
+ position: 'absolute',
59
+ top: 0,
60
+ width: '100%',
61
+ height: 260,
62
+ }}
63
+ />
64
+
65
+ <SafeAreaView
66
+ style={{ position: 'absolute', top: 0, width: '100%', marginTop: 24 }}
67
+ edges={['top', 'left', 'right']}
68
+ mode="margin"
45
69
  >
46
- <BackButton />
70
+ <GenericLogoIcon style={{ alignSelf: 'center', marginBottom: 16 }} />
47
71
 
48
72
  <HMSPreviewTitle />
49
73
 
50
74
  <HMSPreviewSubtitle />
51
75
 
52
76
  <HMSPreviewPeersList />
77
+ </SafeAreaView>
78
+
79
+ <SafeAreaView
80
+ style={{ position: 'absolute', top: 0 }}
81
+ edges={['top']}
82
+ mode="margin"
83
+ >
84
+ <BackButton />
85
+ </SafeAreaView>
86
+
87
+ <View
88
+ style={{
89
+ position: 'absolute',
90
+ bottom: 0,
91
+ width: '100%',
92
+ }}
93
+ >
94
+ <View
95
+ style={{
96
+ marginLeft: 8,
97
+ marginBottom: 8,
98
+ borderRadius: 8,
99
+ paddingVertical: 4,
100
+ paddingHorizontal: 8,
101
+ backgroundColor: COLORS.BACKGROUND.DIM_80,
102
+ alignSelf: 'flex-start',
103
+ }}
104
+ >
105
+ <NetworkQualityIcon quality={localPeerNetworkQuality} />
106
+ </View>
53
107
 
54
- <HMSPreviewTile />
108
+ <View
109
+ style={{
110
+ flex: 1,
111
+ backgroundColor: COLORS.BACKGROUND.DEFAULT,
112
+ borderTopLeftRadius: 16,
113
+ borderTopRightRadius: 16,
114
+ padding: 16,
115
+ }}
116
+ >
117
+ <View style={styles.controlsContainer}>
118
+ <View style={styles.micAndCameraControls}>
119
+ <HMSManageLocalAudio />
55
120
 
56
- <View style={styles.controlsContainer}>
57
- <View style={styles.micAndCameraControls}>
58
- <HMSManageLocalAudio />
121
+ <View style={styles.manageLocalVideoWrapper}>
122
+ <HMSManageLocalVideo />
123
+ </View>
59
124
 
60
- <View style={styles.manageLocalVideoWrapper}>
61
- <HMSManageLocalVideo />
125
+ <HMSManageCameraRotation />
62
126
  </View>
63
127
 
64
- <HMSManageCameraRotation />
128
+ <HMSSpeakerSettings />
65
129
  </View>
66
130
 
67
- <HMSPreviewDeviceSettings />
68
- </View>
131
+ <View style={styles.joinButtonRow}>
132
+ <HMSPreviewEditName />
69
133
 
70
- <View
71
- style={[styles.joinButtonRow, { marginBottom: 34 - bottom + 12 }]}
72
- >
73
- <HMSPreviewEditName />
74
-
75
- <HMSPreviewJoinButton onJoin={join} loading={loadingButtonState} />
134
+ <HMSPreviewJoinButton onJoin={join} loading={loadingButtonState} />
135
+ </View>
76
136
  </View>
77
- </ScrollView>
78
- </SafeAreaView>
137
+ </View>
138
+ </View>
79
139
  );
80
140
  };
81
141
 
82
142
  const styles = StyleSheet.create({
83
143
  container: {
84
144
  flex: 1,
145
+ position: 'relative',
85
146
  backgroundColor: COLORS.BACKGROUND.DIM,
86
147
  },
87
- scrollContainer: {
88
- flexGrow: 1,
89
- },
90
148
  controlsContainer: {
91
- marginHorizontal: 24,
92
- marginTop: 24,
93
149
  flexDirection: 'row',
94
150
  alignItems: 'center',
95
151
  justifyContent: 'space-between',
@@ -101,8 +157,7 @@ const styles = StyleSheet.create({
101
157
  marginHorizontal: 16,
102
158
  },
103
159
  joinButtonRow: {
104
- marginHorizontal: 24,
105
- marginTop: 16,
160
+ marginVertical: 16,
106
161
  flexDirection: 'row',
107
162
  },
108
163
  });
@@ -435,7 +435,7 @@ export const RoomSettingsModalContent: React.FC<
435
435
  />
436
436
  ) : null}
437
437
 
438
- {localPeerRole?.permissions?.hlsStreaming ? (
438
+ {debugMode && localPeerRole?.permissions?.hlsStreaming ? (
439
439
  <SettingItem
440
440
  onPress={handleHLSStreaming}
441
441
  text={`${isHLSStreaming === true ? 'Stop' : 'Start'} HLS Streaming`}
@@ -444,7 +444,7 @@ export const RoomSettingsModalContent: React.FC<
444
444
  />
445
445
  ) : null}
446
446
 
447
- {localPeerRole?.permissions?.rtmpStreaming ? (
447
+ {debugMode && localPeerRole?.permissions?.rtmpStreaming ? (
448
448
  <SettingItem
449
449
  onPress={handleRTMPAndRecording}
450
450
  text={
@@ -457,7 +457,7 @@ export const RoomSettingsModalContent: React.FC<
457
457
  />
458
458
  ) : null}
459
459
 
460
- {localPeerRole?.permissions?.changeRole ? (
460
+ {debugMode && localPeerRole?.permissions?.changeRole ? (
461
461
  <SettingItem
462
462
  onPress={changeBulkRole}
463
463
  text="Bulk Role Change"
@@ -466,7 +466,7 @@ export const RoomSettingsModalContent: React.FC<
466
466
  />
467
467
  ) : null}
468
468
 
469
- {localPeerRole?.permissions?.mute ? (
469
+ {debugMode && localPeerRole?.permissions?.mute ? (
470
470
  <SettingItem
471
471
  onPress={handleRemoteAudiosMute}
472
472
  text="Remote Mute All Audio Tracks"
@@ -475,8 +475,9 @@ export const RoomSettingsModalContent: React.FC<
475
475
  />
476
476
  ) : null}
477
477
 
478
- {localPeerRole?.permissions?.mute ||
479
- localPeerRole?.permissions?.unmute ? (
478
+ {debugMode &&
479
+ (localPeerRole?.permissions?.mute ||
480
+ localPeerRole?.permissions?.unmute) ? (
480
481
  <SettingItem
481
482
  onPress={changeTrackState}
482
483
  text="Change Track State For Role"
package/src/hooks-util.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  HMSMessage,
6
6
  HMSPIPListenerActions,
7
7
  HMSPeer,
8
- // HMSPeerUpdate,
8
+ HMSPeerUpdate,
9
9
  HMSRemotePeer,
10
10
  HMSRoleChangeRequest,
11
11
  HMSRoom,
@@ -33,8 +33,10 @@ import type { RootState } from './redux';
33
33
  import {
34
34
  addMessage,
35
35
  addPinnedMessage,
36
+ addToPreviewPeersList,
36
37
  changePipModeStatus,
37
38
  clearStore,
39
+ removeFromPreviewPeersList,
38
40
  saveUserData,
39
41
  setHMSLocalPeerState,
40
42
  setHMSRoleState,
@@ -45,9 +47,9 @@ import {
45
47
  } from './redux/actions';
46
48
  import {
47
49
  degradeOrRestorePeerTrackNodes,
48
- // peerTrackNodeExistForPeer,
50
+ peerTrackNodeExistForPeer,
49
51
  peerTrackNodeExistForPeerAndTrack,
50
- // removePeerTrackNodes,
52
+ removePeerTrackNodes,
51
53
  removePeerTrackNodesWithTrack,
52
54
  replacePeerTrackNodes,
53
55
  replacePeerTrackNodesWithTrack,
@@ -71,6 +73,7 @@ import {
71
73
  import { selectIsHLSViewer } from './hooks-util-selectors';
72
74
 
73
75
  export const useHMSListeners = (
76
+ meetingState: MeetingState,
74
77
  setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>,
75
78
  setMeetingState: React.Dispatch<React.SetStateAction<MeetingState>>
76
79
  ) => {
@@ -79,7 +82,12 @@ export const useHMSListeners = (
79
82
 
80
83
  useHMSRoomUpdate(hmsInstance, setMeetingState);
81
84
 
82
- // useHMSPeersUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
85
+ useHMSPeersUpdate(
86
+ meetingState,
87
+ hmsInstance,
88
+ updateLocalPeer,
89
+ setPeerTrackNodes
90
+ );
83
91
 
84
92
  useHMSTrackUpdate(hmsInstance, updateLocalPeer, setPeerTrackNodes);
85
93
  };
@@ -198,72 +206,94 @@ const useHMSRoomUpdate = (
198
206
  }, [hmsInstance]);
199
207
  };
200
208
 
201
- // type PeerUpdate = {
202
- // peer: HMSPeer;
203
- // type: HMSPeerUpdate;
204
- // };
205
-
206
- // const useHMSPeersUpdate = (
207
- // hmsInstance: HMSSDK,
208
- // updateLocalPeer: () => void,
209
- // setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
210
- // ) => {
211
- // useHMSPeerUpdates(
212
- // ({ peer, type }: PeerUpdate) => {
213
- // if (type === HMSPeerUpdate.PEER_JOINED) {
214
- // return;
215
- // }
216
- // if (type === HMSPeerUpdate.PEER_LEFT) {
217
- // setPeerTrackNodes((prevPeerTrackNodes) =>
218
- // removePeerTrackNodes(prevPeerTrackNodes, peer)
219
- // );
220
- // return;
221
- // }
222
- // if (peer.isLocal) {
223
- // setPeerTrackNodes((prevPeerTrackNodes) => {
224
- // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
225
- // return replacePeerTrackNodes(prevPeerTrackNodes, peer);
226
- // }
227
- // return prevPeerTrackNodes;
228
- // });
229
-
230
- // // - TODO: update local localPeer state
231
- // // - Pass this updated data to Meeting component -> DisplayView component
232
- // updateLocalPeer();
233
- // return;
234
- // }
235
- // if (type === HMSPeerUpdate.ROLE_CHANGED) {
236
- // if (
237
- // peer.role?.publishSettings?.allowed === undefined ||
238
- // (peer.role?.publishSettings?.allowed &&
239
- // peer.role?.publishSettings?.allowed.length < 1)
240
- // ) {
241
- // setPeerTrackNodes((prevPeerTrackNodes) => {
242
- // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
243
- // return removePeerTrackNodes(prevPeerTrackNodes, peer);
244
- // }
245
- // return prevPeerTrackNodes;
246
- // });
247
- // }
248
- // return;
249
- // }
250
- // if (
251
- // type === HMSPeerUpdate.METADATA_CHANGED ||
252
- // type === HMSPeerUpdate.NAME_CHANGED ||
253
- // type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
254
- // ) {
255
- // setPeerTrackNodes((prevPeerTrackNodes) => {
256
- // if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
257
- // return replacePeerTrackNodes(prevPeerTrackNodes, peer);
258
- // }
259
- // return prevPeerTrackNodes;
260
- // });
261
- // return;
262
- // }
263
- // },
264
- // [hmsInstance]
265
- // );
266
- // };
209
+ type PeerUpdate = {
210
+ peer: HMSPeer;
211
+ type: HMSPeerUpdate;
212
+ };
213
+
214
+ const useHMSPeersUpdate = (
215
+ meetingState: MeetingState,
216
+ hmsInstance: HMSSDK,
217
+ updateLocalPeer: () => void,
218
+ setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
219
+ ) => {
220
+ const dispatch = useDispatch();
221
+ const inMeeting = meetingState === MeetingState.IN_MEETING;
222
+
223
+ useEffect(() => {
224
+ const peerUpdateHandler = ({ peer, type }: PeerUpdate) => {
225
+ // Handle State from Preview screen
226
+ if (!inMeeting) {
227
+ if (type === HMSPeerUpdate.PEER_JOINED) {
228
+ dispatch(addToPreviewPeersList(peer));
229
+ } else if (type === HMSPeerUpdate.PEER_LEFT) {
230
+ dispatch(removeFromPreviewPeersList(peer));
231
+ }
232
+ }
233
+
234
+ // Handle State for Meeting screen
235
+ if (type === HMSPeerUpdate.PEER_JOINED) {
236
+ return;
237
+ }
238
+ if (type === HMSPeerUpdate.PEER_LEFT) {
239
+ setPeerTrackNodes((prevPeerTrackNodes) =>
240
+ removePeerTrackNodes(prevPeerTrackNodes, peer)
241
+ );
242
+ return;
243
+ }
244
+ if (peer.isLocal) {
245
+ setPeerTrackNodes((prevPeerTrackNodes) => {
246
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
247
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
248
+ }
249
+ return prevPeerTrackNodes;
250
+ });
251
+
252
+ // - TODO: update local localPeer state
253
+ // - Pass this updated data to Meeting component -> DisplayView component
254
+ updateLocalPeer();
255
+ return;
256
+ }
257
+ if (type === HMSPeerUpdate.ROLE_CHANGED) {
258
+ if (
259
+ peer.role?.publishSettings?.allowed === undefined ||
260
+ (peer.role?.publishSettings?.allowed &&
261
+ peer.role?.publishSettings?.allowed.length < 1)
262
+ ) {
263
+ setPeerTrackNodes((prevPeerTrackNodes) => {
264
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
265
+ return removePeerTrackNodes(prevPeerTrackNodes, peer);
266
+ }
267
+ return prevPeerTrackNodes;
268
+ });
269
+ }
270
+ return;
271
+ }
272
+ if (
273
+ type === HMSPeerUpdate.METADATA_CHANGED ||
274
+ type === HMSPeerUpdate.NAME_CHANGED ||
275
+ type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
276
+ ) {
277
+ setPeerTrackNodes((prevPeerTrackNodes) => {
278
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
279
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
280
+ }
281
+ return prevPeerTrackNodes;
282
+ });
283
+ return;
284
+ }
285
+ };
286
+
287
+ hmsInstance.addEventListener(
288
+ HMSUpdateListenerActions.ON_PEER_UPDATE,
289
+ peerUpdateHandler
290
+ );
291
+
292
+ return () => {
293
+ hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_PEER_UPDATE);
294
+ };
295
+ }, [inMeeting, hmsInstance]); // TODO: When `inMeeting` becomes true Peer Update is resubscribed, we might lose some events during that time
296
+ };
267
297
 
268
298
  type TrackUpdate = {
269
299
  peer: HMSPeer;
@@ -527,7 +557,7 @@ export const useHMSSessionStoreListeners = () => {
527
557
  useEffect(() => {
528
558
  // Check if instance of HMSSessionStore is available
529
559
  if (hmsSessionStore) {
530
- let toastTimeoutId: NodeJS.Timeout | null = null;
560
+ // let toastTimeoutId: NodeJS.Timeout | null = null;
531
561
 
532
562
  const addSessionStoreListeners = () => {
533
563
  // Handle 'spotlight' key values
@@ -575,8 +605,8 @@ export const useHMSSessionStoreListeners = () => {
575
605
  )
576
606
  );
577
607
 
578
- let lastSpotlightValue: HMSSessionStoreValue = null;
579
- let lastPinnedMessageValue: HMSSessionStoreValue = null;
608
+ // let lastSpotlightValue: HMSSessionStoreValue = null;
609
+ // let lastPinnedMessageValue: HMSSessionStoreValue = null;
580
610
 
581
611
  // Add subscription for `spotlight` & `pinnedMessage` keys updates on Session Store
582
612
  const subscription = hmsSessionStore.addKeyChangeListener<
@@ -598,41 +628,41 @@ export const useHMSSessionStoreListeners = () => {
598
628
  handleSpotlightIdChange(data.value);
599
629
 
600
630
  // Showing Toast message if value has actually changed
601
- if (
602
- data.value !== lastSpotlightValue &&
603
- (data.value || lastSpotlightValue)
604
- ) {
605
- Toast.showWithGravity(
606
- `SessionStore: \`spotlight\` key's value changed to ${data.value}`,
607
- Toast.LONG,
608
- Toast.TOP
609
- );
610
- }
611
-
612
- lastSpotlightValue = data.value;
631
+ // if (
632
+ // data.value !== lastSpotlightValue &&
633
+ // (data.value || lastSpotlightValue)
634
+ // ) {
635
+ // Toast.showWithGravity(
636
+ // `SessionStore: \`spotlight\` key's value changed to ${data.value}`,
637
+ // Toast.LONG,
638
+ // Toast.TOP
639
+ // );
640
+ // }
641
+
642
+ // lastSpotlightValue = data.value;
613
643
  break;
614
644
  }
615
645
  case 'pinnedMessage': {
616
646
  handlePinnedMessageChange(data.value);
617
647
 
618
648
  // Showing Toast message if value has actually changed
619
- if (
620
- data.value !== lastPinnedMessageValue &&
621
- (data.value || lastPinnedMessageValue)
622
- ) {
623
- if (toastTimeoutId !== null) {
624
- clearTimeout(toastTimeoutId);
625
- }
626
- toastTimeoutId = setTimeout(() => {
627
- Toast.showWithGravity(
628
- `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
629
- Toast.LONG,
630
- Toast.TOP
631
- );
632
- }, 1500);
633
- }
634
-
635
- lastPinnedMessageValue = data.value;
649
+ // if (
650
+ // data.value !== lastPinnedMessageValue &&
651
+ // (data.value || lastPinnedMessageValue)
652
+ // ) {
653
+ // if (toastTimeoutId !== null) {
654
+ // clearTimeout(toastTimeoutId);
655
+ // }
656
+ // toastTimeoutId = setTimeout(() => {
657
+ // Toast.showWithGravity(
658
+ // `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
659
+ // Toast.LONG,
660
+ // Toast.TOP
661
+ // );
662
+ // }, 1500);
663
+ // }
664
+
665
+ // lastPinnedMessageValue = data.value;
636
666
  break;
637
667
  }
638
668
  }
@@ -651,7 +681,7 @@ export const useHMSSessionStoreListeners = () => {
651
681
  listener.remove()
652
682
  );
653
683
 
654
- if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
684
+ // if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
655
685
  };
656
686
  }
657
687
  }, [hmsSessionStore]);
@@ -82,4 +82,6 @@ export enum HmsStateActionTypes {
82
82
  SET_IS_LOCAL_SCREEN_SHARED_STATE = 'SET_IS_LOCAL_SCREEN_SHARED_STATE',
83
83
  SET_ROOM_LOCALLY_MUTED = 'SET_ROOM_LOCALLY_MUTED',
84
84
  SET_USER_NAME = 'SET_USER_NAME',
85
+ ADD_TO_PREVIEW_PEERS_LIST = 'ADD_TO_PREVIEW_PEERS_LIST',
86
+ REMOVE_FROM_PREVIEW_PEERS_LIST = 'REMOVE_FROM_PREVIEW_PEERS_LIST',
85
87
  }
@@ -194,3 +194,13 @@ export const setPeerToUpdate = (peerToUpdate: HMSPeer) => ({
194
194
  type: actionTypes.SET_PEER_TO_UPDATE,
195
195
  payload: { peerToUpdate },
196
196
  });
197
+
198
+ export const addToPreviewPeersList = (peer: HMSPeer) => ({
199
+ type: HmsStateActionTypes.ADD_TO_PREVIEW_PEERS_LIST,
200
+ peer,
201
+ });
202
+
203
+ export const removeFromPreviewPeersList = (peer: HMSPeer) => ({
204
+ type: HmsStateActionTypes.REMOVE_FROM_PREVIEW_PEERS_LIST,
205
+ peerId: peer.peerID,
206
+ });