@100mslive/react-native-room-kit 1.0.6 → 1.0.7

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 (277) hide show
  1. package/lib/commonjs/Icons/Recording/assets/recording-pause.png +0 -0
  2. package/lib/commonjs/Icons/Recording/assets/recording-pause@2x.png +0 -0
  3. package/lib/commonjs/Icons/Recording/assets/recording-pause@3x.png +0 -0
  4. package/lib/commonjs/Icons/Recording/index.js +1 -1
  5. package/lib/commonjs/Icons/Recording/index.js.map +1 -1
  6. package/lib/commonjs/components/AnimatedFooter.js +5 -3
  7. package/lib/commonjs/components/AnimatedFooter.js.map +1 -1
  8. package/lib/commonjs/components/AnimatedHLSFooter.js +4 -9
  9. package/lib/commonjs/components/AnimatedHLSFooter.js.map +1 -1
  10. package/lib/commonjs/components/AnimatedHeader.js +17 -5
  11. package/lib/commonjs/components/AnimatedHeader.js.map +1 -1
  12. package/lib/commonjs/components/BottomSheet.js +11 -5
  13. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  14. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js +2 -1
  15. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js.map +1 -1
  16. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +11 -10
  17. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  18. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +5 -3
  19. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  20. package/lib/commonjs/components/DisplayView.js +4 -11
  21. package/lib/commonjs/components/DisplayView.js.map +1 -1
  22. package/lib/commonjs/components/EndRoomModal.js +1 -2
  23. package/lib/commonjs/components/EndRoomModal.js.map +1 -1
  24. package/lib/commonjs/components/EndRoomModalContent.js +2 -1
  25. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  26. package/lib/commonjs/components/Footer.js +12 -18
  27. package/lib/commonjs/components/Footer.js.map +1 -1
  28. package/lib/commonjs/components/GridView.js +31 -1
  29. package/lib/commonjs/components/GridView.js.map +1 -1
  30. package/lib/commonjs/components/HLSFooter.js +3 -1
  31. package/lib/commonjs/components/HLSFooter.js.map +1 -1
  32. package/lib/commonjs/components/HLSView.js +1 -1
  33. package/lib/commonjs/components/HLSView.js.map +1 -1
  34. package/lib/commonjs/components/HMSKeyboardAvoidingView.android.js +2 -0
  35. package/lib/commonjs/components/HMSKeyboardAvoidingView.android.js.map +1 -1
  36. package/lib/commonjs/components/HMSKeyboardAvoidingView.js +3 -1
  37. package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -1
  38. package/lib/commonjs/components/HMSLiveIndicator.js +6 -57
  39. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -1
  40. package/lib/commonjs/components/HMSLiveViewerCount.js +78 -0
  41. package/lib/commonjs/components/HMSLiveViewerCount.js.map +1 -0
  42. package/lib/commonjs/components/HMSOverlayChatView.js +11 -2
  43. package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -1
  44. package/lib/commonjs/components/HMSPreviewEditName.js +6 -1
  45. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  46. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +2 -1
  47. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  48. package/lib/commonjs/components/HMSRecordingIndicator.js +14 -4
  49. package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
  50. package/lib/commonjs/components/HMSRoomOptions.js +3 -6
  51. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  52. package/lib/commonjs/components/Header.js +11 -3
  53. package/lib/commonjs/components/Header.js.map +1 -1
  54. package/lib/commonjs/components/LeaveRoomBottomSheet.js +4 -7
  55. package/lib/commonjs/components/LeaveRoomBottomSheet.js.map +1 -1
  56. package/lib/commonjs/components/Meeting.js +2 -13
  57. package/lib/commonjs/components/Meeting.js.map +1 -1
  58. package/lib/commonjs/components/MeetingScreenContent.js +46 -48
  59. package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
  60. package/lib/commonjs/components/MiniView.js.map +1 -1
  61. package/lib/commonjs/components/OverlayedViews.js +6 -2
  62. package/lib/commonjs/components/OverlayedViews.js.map +1 -1
  63. package/lib/commonjs/components/PeerSettingsModalContent.js +2 -1
  64. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  65. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +2 -1
  66. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  67. package/lib/commonjs/components/PressableIcon.js +6 -2
  68. package/lib/commonjs/components/PressableIcon.js.map +1 -1
  69. package/lib/commonjs/components/RoomSettingsModalContent.js +25 -9
  70. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  71. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +1 -1
  72. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  73. package/lib/commonjs/components/WebrtcView.js +37 -2
  74. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  75. package/lib/commonjs/hooks-util-selectors.js +2 -1
  76. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  77. package/lib/commonjs/hooks-util.js +59 -29
  78. package/lib/commonjs/hooks-util.js.map +1 -1
  79. package/lib/commonjs/redux/actionTypes.js +3 -1
  80. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  81. package/lib/commonjs/redux/actions/index.js +8 -1
  82. package/lib/commonjs/redux/actions/index.js.map +1 -1
  83. package/lib/commonjs/redux/reducers/appState.js +9 -1
  84. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  85. package/lib/commonjs/utils/types.js +3 -3
  86. package/lib/commonjs/utils/types.js.map +1 -1
  87. package/lib/module/Icons/Recording/assets/recording-pause.png +0 -0
  88. package/lib/module/Icons/Recording/assets/recording-pause@2x.png +0 -0
  89. package/lib/module/Icons/Recording/assets/recording-pause@3x.png +0 -0
  90. package/lib/module/Icons/Recording/index.js +1 -1
  91. package/lib/module/Icons/Recording/index.js.map +1 -1
  92. package/lib/module/components/AnimatedFooter.js +5 -3
  93. package/lib/module/components/AnimatedFooter.js.map +1 -1
  94. package/lib/module/components/AnimatedHLSFooter.js +5 -10
  95. package/lib/module/components/AnimatedHLSFooter.js.map +1 -1
  96. package/lib/module/components/AnimatedHeader.js +18 -6
  97. package/lib/module/components/AnimatedHeader.js.map +1 -1
  98. package/lib/module/components/BottomSheet.js +12 -6
  99. package/lib/module/components/BottomSheet.js.map +1 -1
  100. package/lib/module/components/Chat/ChatFilterBottomSheetView.js +2 -1
  101. package/lib/module/components/Chat/ChatFilterBottomSheetView.js.map +1 -1
  102. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +13 -12
  103. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  104. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +6 -4
  105. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  106. package/lib/module/components/DisplayView.js +5 -12
  107. package/lib/module/components/DisplayView.js.map +1 -1
  108. package/lib/module/components/EndRoomModal.js +1 -2
  109. package/lib/module/components/EndRoomModal.js.map +1 -1
  110. package/lib/module/components/EndRoomModalContent.js +2 -1
  111. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  112. package/lib/module/components/Footer.js +12 -18
  113. package/lib/module/components/Footer.js.map +1 -1
  114. package/lib/module/components/GridView.js +32 -2
  115. package/lib/module/components/GridView.js.map +1 -1
  116. package/lib/module/components/HLSFooter.js +3 -1
  117. package/lib/module/components/HLSFooter.js.map +1 -1
  118. package/lib/module/components/HLSView.js +2 -2
  119. package/lib/module/components/HLSView.js.map +1 -1
  120. package/lib/module/components/HMSKeyboardAvoidingView.android.js +2 -3
  121. package/lib/module/components/HMSKeyboardAvoidingView.android.js.map +1 -1
  122. package/lib/module/components/HMSKeyboardAvoidingView.js +3 -1
  123. package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -1
  124. package/lib/module/components/HMSLiveIndicator.js +9 -60
  125. package/lib/module/components/HMSLiveIndicator.js.map +1 -1
  126. package/lib/module/components/HMSLiveViewerCount.js +70 -0
  127. package/lib/module/components/HMSLiveViewerCount.js.map +1 -0
  128. package/lib/module/components/HMSOverlayChatView.js +11 -2
  129. package/lib/module/components/HMSOverlayChatView.js.map +1 -1
  130. package/lib/module/components/HMSPreviewEditName.js +6 -1
  131. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  132. package/lib/module/components/HMSPreviewHLSLiveIndicator.js +2 -1
  133. package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  134. package/lib/module/components/HMSRecordingIndicator.js +14 -4
  135. package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
  136. package/lib/module/components/HMSRoomOptions.js +3 -6
  137. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  138. package/lib/module/components/Header.js +10 -3
  139. package/lib/module/components/Header.js.map +1 -1
  140. package/lib/module/components/LeaveRoomBottomSheet.js +4 -7
  141. package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
  142. package/lib/module/components/Meeting.js +3 -14
  143. package/lib/module/components/Meeting.js.map +1 -1
  144. package/lib/module/components/MeetingScreenContent.js +51 -53
  145. package/lib/module/components/MeetingScreenContent.js.map +1 -1
  146. package/lib/module/components/MiniView.js.map +1 -1
  147. package/lib/module/components/OverlayedViews.js +6 -2
  148. package/lib/module/components/OverlayedViews.js.map +1 -1
  149. package/lib/module/components/PeerSettingsModalContent.js +2 -1
  150. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  151. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +2 -1
  152. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  153. package/lib/module/components/PressableIcon.js +6 -2
  154. package/lib/module/components/PressableIcon.js.map +1 -1
  155. package/lib/module/components/RoomSettingsModalContent.js +26 -10
  156. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  157. package/lib/module/components/RoomSettingsModalDebugModeContent.js +2 -2
  158. package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  159. package/lib/module/components/WebrtcView.js +37 -2
  160. package/lib/module/components/WebrtcView.js.map +1 -1
  161. package/lib/module/hooks-util-selectors.js +2 -1
  162. package/lib/module/hooks-util-selectors.js.map +1 -1
  163. package/lib/module/hooks-util.js +58 -29
  164. package/lib/module/hooks-util.js.map +1 -1
  165. package/lib/module/redux/actionTypes.js +3 -1
  166. package/lib/module/redux/actionTypes.js.map +1 -1
  167. package/lib/module/redux/actions/index.js +6 -0
  168. package/lib/module/redux/actions/index.js.map +1 -1
  169. package/lib/module/redux/reducers/appState.js +9 -1
  170. package/lib/module/redux/reducers/appState.js.map +1 -1
  171. package/lib/module/utils/types.js +2 -2
  172. package/lib/module/utils/types.js.map +1 -1
  173. package/lib/typescript/Icons/Recording/index.d.ts +1 -1
  174. package/lib/typescript/Icons/Recording/index.d.ts.map +1 -1
  175. package/lib/typescript/components/AnimatedFooter.d.ts.map +1 -1
  176. package/lib/typescript/components/AnimatedHLSFooter.d.ts.map +1 -1
  177. package/lib/typescript/components/AnimatedHeader.d.ts.map +1 -1
  178. package/lib/typescript/components/BottomSheet.d.ts +1 -0
  179. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  180. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts.map +1 -1
  181. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -1
  182. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -1
  183. package/lib/typescript/components/DisplayView.d.ts.map +1 -1
  184. package/lib/typescript/components/EndRoomModal.d.ts.map +1 -1
  185. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  186. package/lib/typescript/components/Footer.d.ts +1 -1
  187. package/lib/typescript/components/Footer.d.ts.map +1 -1
  188. package/lib/typescript/components/GridView.d.ts.map +1 -1
  189. package/lib/typescript/components/HLSView.d.ts.map +1 -1
  190. package/lib/typescript/components/HMSKeyboardAvoidingView.android.d.ts.map +1 -1
  191. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts +2 -1
  192. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -1
  193. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
  194. package/lib/typescript/components/HMSLiveViewerCount.d.ts +3 -0
  195. package/lib/typescript/components/HMSLiveViewerCount.d.ts.map +1 -0
  196. package/lib/typescript/components/HMSOverlayChatView.d.ts +5 -1
  197. package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -1
  198. package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
  199. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -1
  200. package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
  201. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  202. package/lib/typescript/components/Header.d.ts +1 -0
  203. package/lib/typescript/components/Header.d.ts.map +1 -1
  204. package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
  205. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  206. package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
  207. package/lib/typescript/components/OverlayedViews.d.ts +4 -1
  208. package/lib/typescript/components/OverlayedViews.d.ts.map +1 -1
  209. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  210. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  211. package/lib/typescript/components/PressableIcon.d.ts.map +1 -1
  212. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  213. package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
  214. package/lib/typescript/components/WebrtcView.d.ts +2 -0
  215. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  216. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  217. package/lib/typescript/hooks-util.d.ts +4 -0
  218. package/lib/typescript/hooks-util.d.ts.map +1 -1
  219. package/lib/typescript/redux/actionTypes.d.ts +1 -0
  220. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  221. package/lib/typescript/redux/actions/index.d.ts +6 -0
  222. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  223. package/lib/typescript/redux/index.d.ts +1 -0
  224. package/lib/typescript/redux/index.d.ts.map +1 -1
  225. package/lib/typescript/redux/reducers/appState.d.ts +1 -0
  226. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  227. package/lib/typescript/redux/reducers/index.d.ts +1 -0
  228. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  229. package/lib/typescript/utils/types.d.ts +1 -0
  230. package/lib/typescript/utils/types.d.ts.map +1 -1
  231. package/package.json +179 -179
  232. package/src/HMSRoomSetup.tsx +1 -1
  233. package/src/Icons/Recording/assets/recording-pause.png +0 -0
  234. package/src/Icons/Recording/assets/recording-pause@2x.png +0 -0
  235. package/src/Icons/Recording/assets/recording-pause@3x.png +0 -0
  236. package/src/Icons/Recording/index.tsx +3 -1
  237. package/src/components/AnimatedFooter.tsx +9 -3
  238. package/src/components/AnimatedHLSFooter.tsx +8 -17
  239. package/src/components/AnimatedHeader.tsx +16 -5
  240. package/src/components/BottomSheet.tsx +11 -5
  241. package/src/components/Chat/ChatFilterBottomSheetView.tsx +1 -0
  242. package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +12 -7
  243. package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +5 -4
  244. package/src/components/DisplayView.tsx +4 -13
  245. package/src/components/EndRoomModal.tsx +0 -1
  246. package/src/components/EndRoomModalContent.tsx +2 -1
  247. package/src/components/Footer.tsx +18 -23
  248. package/src/components/GridView.tsx +31 -4
  249. package/src/components/HLSFooter.tsx +1 -1
  250. package/src/components/HLSView.tsx +2 -1
  251. package/src/components/HMSKeyboardAvoidingView.android.tsx +1 -5
  252. package/src/components/HMSKeyboardAvoidingView.tsx +6 -3
  253. package/src/components/HMSLiveIndicator.tsx +8 -73
  254. package/src/components/HMSLiveViewerCount.tsx +90 -0
  255. package/src/components/HMSOverlayChatView.tsx +18 -2
  256. package/src/components/HMSPreviewEditName.tsx +10 -1
  257. package/src/components/HMSPreviewHLSLiveIndicator.tsx +2 -1
  258. package/src/components/HMSRecordingIndicator.tsx +20 -3
  259. package/src/components/HMSRoomOptions.tsx +0 -3
  260. package/src/components/Header.tsx +14 -3
  261. package/src/components/LeaveRoomBottomSheet.tsx +3 -6
  262. package/src/components/Meeting.tsx +2 -19
  263. package/src/components/MeetingScreenContent.tsx +67 -64
  264. package/src/components/MiniView.tsx +4 -4
  265. package/src/components/OverlayedViews.tsx +6 -3
  266. package/src/components/PeerSettingsModalContent.tsx +2 -1
  267. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +2 -1
  268. package/src/components/PressableIcon.tsx +22 -17
  269. package/src/components/RoomSettingsModalContent.tsx +22 -6
  270. package/src/components/RoomSettingsModalDebugModeContent.tsx +2 -1
  271. package/src/components/WebrtcView.tsx +59 -22
  272. package/src/hooks-util-selectors.tsx +2 -1
  273. package/src/hooks-util.ts +61 -44
  274. package/src/redux/actionTypes.ts +3 -0
  275. package/src/redux/actions/index.ts +5 -0
  276. package/src/redux/reducers/appState.ts +8 -0
  277. package/src/utils/types.ts +12 -3
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { StyleSheet, TouchableOpacity } from 'react-native';
3
3
  import type { TouchableOpacityProps } from 'react-native';
4
+ import { GestureDetector, Gesture } from 'react-native-gesture-handler';
4
5
 
5
6
  import { useHMSRoomStyleSheet, useIsHLSViewer } from '../hooks-util';
6
7
  import { hexToRgbA } from '../utils/theme';
@@ -41,24 +42,28 @@ export const PressableIcon: React.FC<PressableIconProps> = ({
41
42
  [isHLSViewer]
42
43
  );
43
44
 
45
+ const tapGesture = React.useMemo(() => Gesture.Tap(), []);
46
+
44
47
  return (
45
- <TouchableOpacity
46
- style={[
47
- styles.pressable,
48
- hmsRoomStyles.pressable,
49
- {
50
- borderRadius: rounded ? 20 : 8,
51
- ...(border && !isHLSViewer
52
- ? { ...styles.withBorder, ...hmsRoomStyles.border }
53
- : undefined),
54
- ...(active ? hmsRoomStyles.active : undefined),
55
- },
56
- style,
57
- ]}
58
- {...restProps}
59
- >
60
- {children}
61
- </TouchableOpacity>
48
+ <GestureDetector gesture={tapGesture}>
49
+ <TouchableOpacity
50
+ style={[
51
+ styles.pressable,
52
+ hmsRoomStyles.pressable,
53
+ {
54
+ borderRadius: rounded ? 20 : 8,
55
+ ...(border && !isHLSViewer
56
+ ? { ...styles.withBorder, ...hmsRoomStyles.border }
57
+ : undefined),
58
+ ...(active ? hmsRoomStyles.active : undefined),
59
+ },
60
+ style,
61
+ ]}
62
+ {...restProps}
63
+ >
64
+ {children}
65
+ </TouchableOpacity>
66
+ </GestureDetector>
62
67
  );
63
68
  };
64
69
 
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { View, StyleSheet, Text, TouchableOpacity } from 'react-native';
3
3
  import type { TouchableOpacityProps } from 'react-native';
4
4
  import type { HMSAudioMixingMode } from '@100mslive/react-native-hms';
5
+ import { HMSRecordingState } from '@100mslive/react-native-hms';
5
6
  import { useSelector } from 'react-redux';
6
7
 
7
8
  import type { RootState } from '../redux';
@@ -19,6 +20,7 @@ import { BottomSheet, useBottomSheetActions } from './BottomSheet';
19
20
  import {
20
21
  isPublishingAllowed,
21
22
  useHMSLayoutConfig,
23
+ useHMSRoomColorPalette,
22
24
  useHMSRoomStyleSheet,
23
25
  useShowChatAndParticipants,
24
26
  useStartRecording,
@@ -50,10 +52,13 @@ export const RoomSettingsModalContent: React.FC<
50
52
 
51
53
  const hmsActions = useHMSActions();
52
54
 
55
+ const { alert_error_default: alertErrorDefaultColor } = useHMSRoomColorPalette()
56
+
53
57
  const isPublisher = useSelector((state: RootState) => {
54
58
  const localPeer = state.hmsStates.localPeer;
55
59
  return localPeer ? isPublishingAllowed(localPeer) : false;
56
60
  });
61
+ const editUsernameDisabled = useSelector((state: RootState) => state.app.editUsernameDisabled);
57
62
 
58
63
  const { registerOnModalHideAction } = useBottomSheetActions();
59
64
 
@@ -130,7 +135,13 @@ export const RoomSettingsModalContent: React.FC<
130
135
  );
131
136
 
132
137
  const isRecordingOn = useSelector(
133
- (state: RootState) => !!state.hmsStates.room?.browserRecordingState?.running
138
+ (state: RootState) =>
139
+ state.hmsStates.room?.browserRecordingState?.state === HMSRecordingState.RESUMED ||
140
+ state.hmsStates.room?.browserRecordingState?.state === HMSRecordingState.STARTED
141
+ );
142
+ const isRecordingPaused = useSelector(
143
+ (state: RootState) =>
144
+ state.hmsStates.room?.browserRecordingState?.state === HMSRecordingState.PAUSED
134
145
  );
135
146
 
136
147
  const { startRecording } = useStartRecording();
@@ -229,12 +240,13 @@ export const RoomSettingsModalContent: React.FC<
229
240
  hide: !showHandRaiseIcon, // Hide if can't publish screen
230
241
  },
231
242
  {
232
- id: 'start-recording',
243
+ id: 'recording',
233
244
  testID: isRecordingOn ? TestIds.room_modal_stop_recording_btn : TestIds.room_modal_start_recording_btn,
234
- icon: <RecordingIcon style={{ width: 20, height: 20 }} />,
235
- label: isRecordingOn ? 'Stop Recording' : 'Start Recording',
245
+ icon: <RecordingIcon type={isRecordingPaused ? 'pause' : 'on'} style={[{ width: 20, height: 20 }, isRecordingOn ? { tintColor: alertErrorDefaultColor } : null]} />,
246
+ label: isRecordingOn ? 'Recording' : isRecordingPaused ? 'Recording Paused' : 'Record',
236
247
  pressHandler: handleRecordingTogglePress,
237
- isActive: isRecordingOn,
248
+ isActive: false,
249
+ disabled: isRecordingPaused,
238
250
  hide: !canStartRecording, // Hide if can't publish screen
239
251
  },
240
252
  {
@@ -244,7 +256,7 @@ export const RoomSettingsModalContent: React.FC<
244
256
  label: 'Change Name',
245
257
  pressHandler: changeName,
246
258
  isActive: false,
247
- hide: isPublisher,
259
+ hide: isPublisher || editUsernameDisabled,
248
260
  },
249
261
  ].filter((itm) => !itm.hide),
250
262
  true
@@ -272,6 +284,7 @@ export const RoomSettingsModalContent: React.FC<
272
284
  onPress={item.pressHandler}
273
285
  text={item.label}
274
286
  isActive={item.isActive}
287
+ disabled={item.disabled}
275
288
  />
276
289
 
277
290
  {item.sibling}
@@ -296,6 +309,7 @@ type SettingItemProps = {
296
309
  text: string;
297
310
  icon: React.ReactElement;
298
311
  onPress(): void;
312
+ disabled?: TouchableOpacityProps['disabled'];
299
313
  testID?: TouchableOpacityProps['testID'];
300
314
  isActive?: boolean;
301
315
  };
@@ -305,6 +319,7 @@ const SettingItem: React.FC<SettingItemProps> = ({
305
319
  text,
306
320
  icon,
307
321
  onPress,
322
+ disabled,
308
323
  isActive = false,
309
324
  }) => {
310
325
  const hmsRoomStyles = useHMSRoomStyleSheet((theme, typography) => ({
@@ -320,6 +335,7 @@ const SettingItem: React.FC<SettingItemProps> = ({
320
335
  return (
321
336
  <TouchableOpacity
322
337
  testID={testID}
338
+ disabled={disabled}
323
339
  style={[styles.button, isActive ? hmsRoomStyles.button : null]}
324
340
  onPress={onPress}
325
341
  >
@@ -10,6 +10,7 @@ import {
10
10
  } from 'react-native';
11
11
  import {
12
12
  HMSAudioMixingMode,
13
+ HMSStreamingState,
13
14
  HMSUpdateListenerActions,
14
15
  checkNotifications,
15
16
  } from '@100mslive/react-native-hms';
@@ -61,7 +62,7 @@ export const RoomSettingsModalDebugModeContent: React.FC<
61
62
  );
62
63
  const isHLSStreaming = useSelector(
63
64
  (state: RootState) =>
64
- state.hmsStates.room?.hlsStreamingState?.running ?? false
65
+ state.hmsStates.room?.hlsStreamingState?.state === HMSStreamingState.STARTED ?? false
65
66
  );
66
67
 
67
68
  const pipModeStatus = useSelector(
@@ -1,5 +1,11 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { useSelector } from 'react-redux';
3
+ import { SafeAreaView, useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context';
4
+ import type { SharedValue } from 'react-native-reanimated';
5
+ import Animated, {
6
+ interpolate,
7
+ useAnimatedStyle,
8
+ } from 'react-native-reanimated';
3
9
 
4
10
  import { MaxTilesInOnePage, PipModes } from '../utils/types';
5
11
  import type { PeerTrackNode } from '../utils/types';
@@ -13,15 +19,22 @@ import { LocalPeerRegularVideoView } from './LocalPeerRegularVideoView';
13
19
  import { WelcomeInMeeting } from './WelcomeInMeeting';
14
20
  import { OverlayContainer } from './OverlayContainer';
15
21
  import { OverlayedViews } from './OverlayedViews';
22
+ import { useFooterHeight } from './Footer';
23
+ import { useHeaderHeight } from './Header';
16
24
 
17
25
  interface WebrtcViewProps {
26
+ offset: SharedValue<number>;
18
27
  peerTrackNodes: Array<PeerTrackNode>;
19
28
  handlePeerTileMorePress(node: PeerTrackNode): void;
20
29
  }
21
30
 
22
31
  export const WebrtcView = React.forwardRef<GridViewRefAttrs, WebrtcViewProps>(
23
- ({ peerTrackNodes, handlePeerTileMorePress }, gridViewRef) => {
32
+ ({ offset, peerTrackNodes, handlePeerTileMorePress }, gridViewRef) => {
24
33
  const isPortrait = useIsPortraitOrientation();
34
+ const { height } = useSafeAreaFrame(); // This height does not include top & bottom safe area as this component isn't wrapped in SafeAreaView
35
+ const footerHeight = useFooterHeight(); // This height includes top safearea by default
36
+ const headerHeight = useHeaderHeight(); // This height includes top safearea by default
37
+ const { top, bottom } = useSafeAreaInsets();
25
38
 
26
39
  const isPipModeActive = useSelector(
27
40
  (state: RootState) => state.app.pipModeStatus === PipModes.ACTIVE
@@ -55,37 +68,61 @@ export const WebrtcView = React.forwardRef<GridViewRefAttrs, WebrtcViewProps>(
55
68
  !state.app.localPeerTrackNode && pairedPeers.length === 0
56
69
  );
57
70
 
71
+ const animatedStyles = useAnimatedStyle(() => {
72
+ return {
73
+ height: interpolate(
74
+ offset.value,
75
+ [0, 1],
76
+ [height - top - bottom, height - headerHeight - footerHeight]
77
+ ),
78
+ };
79
+ }, [height, top, bottom, footerHeight, headerHeight]);
80
+
81
+ const headerPlaceholderAnimatedStyles = useAnimatedStyle(() => {
82
+ return {
83
+ height: interpolate(offset.value, [0, 1], [top, headerHeight]),
84
+ };
85
+ }, [headerHeight, top]);
86
+
58
87
  if (isPipModeActive) {
59
88
  return (
60
89
  <PIPView
61
90
  peerTrackNodes={peerTrackNodes}
62
- customView={showWelcomeBanner ? (
63
- <WelcomeInMeeting />
64
- ) : pairedPeers.length <= 0 ? (
65
- <LocalPeerRegularVideoView />
66
- ) : null}
91
+ customView={
92
+ showWelcomeBanner ? (
93
+ <WelcomeInMeeting />
94
+ ) : pairedPeers.length <= 0 ? (
95
+ <LocalPeerRegularVideoView />
96
+ ) : null
97
+ }
67
98
  />
68
99
  );
69
100
  }
70
101
 
71
102
  return (
72
- <OverlayContainer>
73
- {showWelcomeBanner ? (
74
- <WelcomeInMeeting />
75
- ) : pairedPeers.length > 0 ? (
76
- <GridView
77
- ref={gridViewRef}
78
- onPeerTileMorePress={handlePeerTileMorePress}
79
- pairedPeers={pairedPeers}
80
- />
81
- ) : (
82
- <LocalPeerRegularVideoView
83
- onMoreOptionsPress={handlePeerTileMorePress}
84
- />
85
- )}
103
+ <SafeAreaView edges={['left','right']} style={{ flex: 1 }}>
104
+ <Animated.View style={headerPlaceholderAnimatedStyles} />
105
+
106
+ <Animated.View style={animatedStyles}>
107
+ <OverlayContainer>
108
+ {showWelcomeBanner ? (
109
+ <WelcomeInMeeting />
110
+ ) : pairedPeers.length > 0 ? (
111
+ <GridView
112
+ ref={gridViewRef}
113
+ onPeerTileMorePress={handlePeerTileMorePress}
114
+ pairedPeers={pairedPeers}
115
+ />
116
+ ) : (
117
+ <LocalPeerRegularVideoView
118
+ onMoreOptionsPress={handlePeerTileMorePress}
119
+ />
120
+ )}
86
121
 
87
- <OverlayedViews />
88
- </OverlayContainer>
122
+ <OverlayedViews offset={offset} />
123
+ </OverlayContainer>
124
+ </Animated.View>
125
+ </SafeAreaView>
89
126
  );
90
127
  }
91
128
  );
@@ -3,6 +3,7 @@ import type {
3
3
  HLSLiveStreamingScreen,
4
4
  Layout,
5
5
  } from '@100mslive/types-prebuilt';
6
+ import { HMSStreamingState } from '@100mslive/react-native-hms';
6
7
  import type { HMSRole } from '@100mslive/react-native-hms';
7
8
  import { JoinForm_JoinBtnType } from '@100mslive/types-prebuilt/elements/join_form';
8
9
 
@@ -46,7 +47,7 @@ export const selectShouldGoLive = (state: RootState) => {
46
47
  );
47
48
 
48
49
  const isHLSStreaming =
49
- state.hmsStates.room?.hlsStreamingState?.running ?? false;
50
+ state.hmsStates.room?.hlsStreamingState?.state === HMSStreamingState.STARTED ?? false;
50
51
 
51
52
  const joinButtonType =
52
53
  layoutConfig?.screens?.preview?.default?.elements?.join_form
package/src/hooks-util.ts CHANGED
@@ -94,6 +94,7 @@ import {
94
94
  setActiveChatBottomSheetTab,
95
95
  setActiveSpeakers,
96
96
  setAutoEnterPipMode,
97
+ setEditUsernameDisabled,
97
98
  setFullScreenPeerTrackNode,
98
99
  setHMSLocalPeerState,
99
100
  setHMSRoleState,
@@ -151,6 +152,7 @@ import type { GridViewRefAttrs } from './components/GridView';
151
152
  import { getRoomLayout } from './modules/HMSManager';
152
153
  import { DEFAULT_THEME, DEFAULT_TYPOGRAPHY } from './utils/theme';
153
154
  import { NotificationTypes } from './types';
155
+ import { KeyboardState, useSharedValue } from 'react-native-reanimated';
154
156
 
155
157
  export const useHMSListeners = (
156
158
  setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
@@ -189,48 +191,6 @@ const useHMSRoomUpdate = (hmsInstance: HMSSDK) => {
189
191
  }
190
192
  } else if (type === HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED) {
191
193
  dispatch(changeStartingHLSStream(false));
192
- } else if (type === HMSRoomUpdate.RTMP_STREAMING_STATE_UPDATED) {
193
- let streaming = room?.rtmpHMSRtmpStreamingState?.running;
194
- const startAtDate = room?.rtmpHMSRtmpStreamingState?.startedAt;
195
-
196
- let startTime: null | string = null;
197
-
198
- if (startAtDate) {
199
- let hours = startAtDate.getHours().toString();
200
- let minutes = startAtDate.getMinutes()?.toString();
201
- startTime = hours + ':' + minutes;
202
- }
203
-
204
- Toast.showWithGravity(
205
- `RTMP Streaming ${
206
- streaming
207
- ? `Started ${startTime ? 'At ' + startTime : ''}`
208
- : 'Stopped'
209
- }`,
210
- Toast.LONG,
211
- Toast.TOP
212
- );
213
- } else if (type === HMSRoomUpdate.SERVER_RECORDING_STATE_UPDATED) {
214
- let streaming = room?.serverRecordingState?.running;
215
- const startAtDate = room?.serverRecordingState?.startedAt;
216
-
217
- let startTime: null | string = null;
218
-
219
- if (startAtDate) {
220
- let hours = startAtDate.getHours().toString();
221
- let minutes = startAtDate.getMinutes()?.toString();
222
- startTime = hours + ':' + minutes;
223
- }
224
-
225
- Toast.showWithGravity(
226
- `Server Recording ${
227
- streaming
228
- ? `Started ${startTime ? 'At ' + startTime : ''}`
229
- : 'Stopped'
230
- }`,
231
- Toast.LONG,
232
- Toast.TOP
233
- );
234
194
  }
235
195
  };
236
196
 
@@ -2388,8 +2348,13 @@ export const useSavePropsToStore = (
2388
2348
  const { roomCode, options, onLeave, handleBackButton, autoEnterPipMode } =
2389
2349
  props;
2390
2350
 
2351
+ dispatch(setPrebuiltData({ roomCode, options }));
2352
+
2391
2353
  useEffect(() => {
2392
- dispatch(setPrebuiltData({ roomCode, options }));
2354
+ const passedUserName = options?.userName;
2355
+ if (passedUserName && passedUserName.length > 0) {
2356
+ dispatch(setEditUsernameDisabled(true));
2357
+ }
2393
2358
  }, [roomCode, options]);
2394
2359
 
2395
2360
  useEffect(() => {
@@ -2453,7 +2418,59 @@ export const useAndroidSoftInputAdjustResize = () => {
2453
2418
  if (currentSoftInputRef.current !== null) {
2454
2419
  setSoftInputMode(currentSoftInputRef.current);
2455
2420
  }
2456
- }
2421
+ };
2457
2422
  }
2458
2423
  }, []);
2459
2424
  };
2425
+
2426
+ export const useKeyboardState = () => {
2427
+ const keyboardState = useSharedValue(KeyboardState.UNKNOWN);
2428
+
2429
+ useEffect(() => {
2430
+ let didShowTimeoutId: null | NodeJS.Timeout = null;
2431
+ let didHideTimeoutId: null | NodeJS.Timeout = null;
2432
+
2433
+ const didShowSubscription = Keyboard.addListener('keyboardDidShow', () => {
2434
+ keyboardState.value = KeyboardState.OPENING;
2435
+ if (didShowTimeoutId !== null) {
2436
+ clearTimeout(didShowTimeoutId);
2437
+ }
2438
+ didShowTimeoutId = setTimeout(() => {
2439
+ keyboardState.value = KeyboardState.OPEN;
2440
+ didShowTimeoutId = null;
2441
+ }, 400);
2442
+ });
2443
+
2444
+ const didHideSubscription = Keyboard.addListener('keyboardDidHide', () => {
2445
+ keyboardState.value = KeyboardState.CLOSING;
2446
+ if (didHideTimeoutId !== null) {
2447
+ clearTimeout(didHideTimeoutId);
2448
+ }
2449
+ didHideTimeoutId = setTimeout(() => {
2450
+ keyboardState.value = KeyboardState.CLOSED;
2451
+ didHideTimeoutId = null;
2452
+ }, 400);
2453
+ });
2454
+
2455
+ return () => {
2456
+ if (didShowTimeoutId !== null) {
2457
+ clearTimeout(didShowTimeoutId);
2458
+ }
2459
+ if (didHideTimeoutId !== null) {
2460
+ clearTimeout(didHideTimeoutId);
2461
+ }
2462
+ if ('remove' in didShowSubscription) {
2463
+ didShowSubscription.remove();
2464
+ } else {
2465
+ Keyboard.removeSubscription(didShowSubscription);
2466
+ }
2467
+ if ('remove' in didHideSubscription) {
2468
+ didHideSubscription.remove();
2469
+ } else {
2470
+ Keyboard.removeSubscription(didHideSubscription);
2471
+ }
2472
+ };
2473
+ }, []);
2474
+
2475
+ return { keyboardState };
2476
+ };
@@ -88,6 +88,8 @@ const SET_HANDLE_BACK_BUTTON = 'SET_HANDLE_BACK_BUTTON';
88
88
 
89
89
  const SET_AUTO_ENTER_PIP_MODE = 'SET_AUTO_ENTER_PIP_MODE';
90
90
 
91
+ const SET_EDIT_USERNAME_DISABLED = 'SET_EDIT_USERNAME_DISABLED';
92
+
91
93
  export default {
92
94
  ADD_PINNED_MESSAGE,
93
95
  ADD_MESSAGE,
@@ -129,6 +131,7 @@ export default {
129
131
  SET_CHAT_FILTER_SHEET_VISIBLE,
130
132
  SET_HANDLE_BACK_BUTTON,
131
133
  SET_AUTO_ENTER_PIP_MODE,
134
+ SET_EDIT_USERNAME_DISABLED,
132
135
  };
133
136
 
134
137
  export enum HmsStateActionTypes {
@@ -391,3 +391,8 @@ export const setAutoEnterPipMode = (autoEnterPipMode?: boolean) => ({
391
391
  type: actionTypes.SET_AUTO_ENTER_PIP_MODE,
392
392
  payload: { autoEnterPipMode },
393
393
  });
394
+
395
+ export const setEditUsernameDisabled = (editUsernameDisabled: boolean) => ({
396
+ type: actionTypes.SET_EDIT_USERNAME_DISABLED,
397
+ payload: { editUsernameDisabled },
398
+ });
@@ -54,6 +54,7 @@ type IntialStateType = {
54
54
  chatFilterSheetVisible: boolean;
55
55
  handleBackButton: boolean;
56
56
  autoEnterPipMode: boolean;
57
+ editUsernameDisabled: boolean;
57
58
  };
58
59
 
59
60
  const INITIAL_STATE: IntialStateType = {
@@ -85,6 +86,7 @@ const INITIAL_STATE: IntialStateType = {
85
86
  chatFilterSheetVisible: false,
86
87
  handleBackButton: false,
87
88
  autoEnterPipMode: false,
89
+ editUsernameDisabled: false,
88
90
  };
89
91
 
90
92
  const appReducer = (
@@ -300,6 +302,12 @@ const appReducer = (
300
302
  autoEnterPipMode: action.payload.autoEnterPipMode ?? INITIAL_STATE.autoEnterPipMode,
301
303
  };
302
304
  }
305
+ case ActionTypes.SET_EDIT_USERNAME_DISABLED: {
306
+ return {
307
+ ...state,
308
+ editUsernameDisabled: action.payload.editUsernameDisabled ?? INITIAL_STATE.editUsernameDisabled,
309
+ }
310
+ }
303
311
  case HmsStateActionTypes.CLEAR_STATES:
304
312
  return INITIAL_STATE;
305
313
  default:
@@ -107,7 +107,7 @@ export const ChatBroadcastFilter = { name: 'everyone' } as const;
107
107
 
108
108
  export const PeerListRefreshInterval = 5000; // in milliseconds
109
109
 
110
- export enum OnLeaveReason {
110
+ export enum OnLeaveReason {
111
111
  /**
112
112
  * User left the meeting room by pressing the "Leave" or "End Stream" button in Leave Modal
113
113
  */
@@ -128,6 +128,15 @@ export enum OnLeaveReason {
128
128
  * User left the meeting room by pressing the "end" button in PIP window
129
129
  */
130
130
  PIP = 'pip',
131
- };
131
+ }
132
+
133
+ export const TerminalExceptionCodes = [
134
+ 4005,
135
+ 1003,
136
+ 2000,
137
+ '4005',
138
+ '1003',
139
+ '2000',
140
+ ];
132
141
 
133
- export const TerminalExceptionCodes = [4005, 1003, 2000, "4005", "1003", "2000"];
142
+ export const HeaderFooterHideDelayMs = 5000;