@100mslive/react-native-room-kit 1.0.5 → 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 (356) hide show
  1. package/lib/commonjs/HMSRoomSetup.js +1 -0
  2. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  3. package/lib/commonjs/Icons/Recording/assets/recording-pause.png +0 -0
  4. package/lib/commonjs/Icons/Recording/assets/recording-pause@2x.png +0 -0
  5. package/lib/commonjs/Icons/Recording/assets/recording-pause@3x.png +0 -0
  6. package/lib/commonjs/Icons/Recording/index.js +1 -1
  7. package/lib/commonjs/Icons/Recording/index.js.map +1 -1
  8. package/lib/commonjs/components/AnimatedFooter.js +5 -3
  9. package/lib/commonjs/components/AnimatedFooter.js.map +1 -1
  10. package/lib/commonjs/components/AnimatedHLSFooter.js +4 -9
  11. package/lib/commonjs/components/AnimatedHLSFooter.js.map +1 -1
  12. package/lib/commonjs/components/AnimatedHeader.js +17 -5
  13. package/lib/commonjs/components/AnimatedHeader.js.map +1 -1
  14. package/lib/commonjs/components/AvatarView.js +0 -1
  15. package/lib/commonjs/components/AvatarView.js.map +1 -1
  16. package/lib/commonjs/components/BottomSheet.js +23 -7
  17. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  18. package/lib/commonjs/components/Chat/ChatBanner.js +10 -3
  19. package/lib/commonjs/components/Chat/ChatBanner.js.map +1 -1
  20. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js +7 -2
  21. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js.map +1 -1
  22. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +14 -10
  23. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  24. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +5 -3
  25. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  26. package/lib/commonjs/components/DefaultModal.js +9 -1
  27. package/lib/commonjs/components/DefaultModal.js.map +1 -1
  28. package/lib/commonjs/components/DisplayView.js +4 -11
  29. package/lib/commonjs/components/DisplayView.js.map +1 -1
  30. package/lib/commonjs/components/EndRoomModal.js +1 -2
  31. package/lib/commonjs/components/EndRoomModal.js.map +1 -1
  32. package/lib/commonjs/components/EndRoomModalContent.js +2 -1
  33. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  34. package/lib/commonjs/components/Footer.js +12 -8
  35. package/lib/commonjs/components/Footer.js.map +1 -1
  36. package/lib/commonjs/components/GridView.js +53 -9
  37. package/lib/commonjs/components/GridView.js.map +1 -1
  38. package/lib/commonjs/components/HLSFooter.js +3 -1
  39. package/lib/commonjs/components/HLSFooter.js.map +1 -1
  40. package/lib/commonjs/components/HLSView.js +1 -1
  41. package/lib/commonjs/components/HLSView.js.map +1 -1
  42. package/lib/commonjs/components/HMSHLSMessageList.js +5 -2
  43. package/lib/commonjs/components/HMSHLSMessageList.js.map +1 -1
  44. package/lib/commonjs/components/HMSKeyboardAvoidingView.android.js +44 -0
  45. package/lib/commonjs/components/HMSKeyboardAvoidingView.android.js.map +1 -0
  46. package/lib/commonjs/components/HMSKeyboardAvoidingView.js +3 -1
  47. package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -1
  48. package/lib/commonjs/components/HMSLiveIndicator.js +6 -57
  49. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -1
  50. package/lib/commonjs/components/HMSLiveViewerCount.js +78 -0
  51. package/lib/commonjs/components/HMSLiveViewerCount.js.map +1 -0
  52. package/lib/commonjs/components/HMSManageAudioOutput.js +0 -1
  53. package/lib/commonjs/components/HMSManageAudioOutput.js.map +1 -1
  54. package/lib/commonjs/components/HMSNotifications.js +9 -1
  55. package/lib/commonjs/components/HMSNotifications.js.map +1 -1
  56. package/lib/commonjs/components/HMSOverlayChatView.js +11 -2
  57. package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -1
  58. package/lib/commonjs/components/HMSPreviewEditName.js +6 -1
  59. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  60. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +2 -1
  61. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  62. package/lib/commonjs/components/HMSRecordingIndicator.js +15 -4
  63. package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
  64. package/lib/commonjs/components/HMSRoomOptions.js +3 -6
  65. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  66. package/lib/commonjs/components/HMSTextInput.js +2 -3
  67. package/lib/commonjs/components/HMSTextInput.js.map +1 -1
  68. package/lib/commonjs/components/Header.js +11 -3
  69. package/lib/commonjs/components/Header.js.map +1 -1
  70. package/lib/commonjs/components/LeaveRoomBottomSheet.js +4 -7
  71. package/lib/commonjs/components/LeaveRoomBottomSheet.js.map +1 -1
  72. package/lib/commonjs/components/Meeting.js +2 -13
  73. package/lib/commonjs/components/Meeting.js.map +1 -1
  74. package/lib/commonjs/components/MeetingScreenContent.js +45 -45
  75. package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
  76. package/lib/commonjs/components/MiniView.js +12 -13
  77. package/lib/commonjs/components/MiniView.js.map +1 -1
  78. package/lib/commonjs/components/OverlayedViews.js +6 -2
  79. package/lib/commonjs/components/OverlayedViews.js.map +1 -1
  80. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js +1 -0
  81. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js.map +1 -1
  82. package/lib/commonjs/components/PeerSettingsModalContent.js +2 -1
  83. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  84. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js +0 -1
  85. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  86. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +2 -1
  87. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  88. package/lib/commonjs/components/PeerVideoTile/VideoView.js +0 -1
  89. package/lib/commonjs/components/PeerVideoTile/VideoView.js.map +1 -1
  90. package/lib/commonjs/components/PressableIcon.js +6 -2
  91. package/lib/commonjs/components/PressableIcon.js.map +1 -1
  92. package/lib/commonjs/components/Preview.js +2 -1
  93. package/lib/commonjs/components/Preview.js.map +1 -1
  94. package/lib/commonjs/components/RoomSettingsModalContent.js +25 -9
  95. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  96. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +1 -1
  97. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  98. package/lib/commonjs/components/TilesContainer.js +3 -3
  99. package/lib/commonjs/components/TilesContainer.js.map +1 -1
  100. package/lib/commonjs/components/WebrtcView.js +37 -2
  101. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  102. package/lib/commonjs/hooks-util-selectors.js +2 -1
  103. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  104. package/lib/commonjs/hooks-util.js +78 -31
  105. package/lib/commonjs/hooks-util.js.map +1 -1
  106. package/lib/commonjs/redux/actionTypes.js +3 -1
  107. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  108. package/lib/commonjs/redux/actions/index.js +8 -1
  109. package/lib/commonjs/redux/actions/index.js.map +1 -1
  110. package/lib/commonjs/redux/reducers/appState.js +9 -1
  111. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  112. package/lib/commonjs/utils/theme.js +0 -1
  113. package/lib/commonjs/utils/theme.js.map +1 -1
  114. package/lib/commonjs/utils/types.js +3 -3
  115. package/lib/commonjs/utils/types.js.map +1 -1
  116. package/lib/commonjs/utils.js +0 -1
  117. package/lib/commonjs/utils.js.map +1 -1
  118. package/lib/module/HMSRoomSetup.js +2 -1
  119. package/lib/module/HMSRoomSetup.js.map +1 -1
  120. package/lib/module/Icons/Recording/assets/recording-pause.png +0 -0
  121. package/lib/module/Icons/Recording/assets/recording-pause@2x.png +0 -0
  122. package/lib/module/Icons/Recording/assets/recording-pause@3x.png +0 -0
  123. package/lib/module/Icons/Recording/index.js +1 -1
  124. package/lib/module/Icons/Recording/index.js.map +1 -1
  125. package/lib/module/components/AnimatedFooter.js +5 -3
  126. package/lib/module/components/AnimatedFooter.js.map +1 -1
  127. package/lib/module/components/AnimatedHLSFooter.js +5 -10
  128. package/lib/module/components/AnimatedHLSFooter.js.map +1 -1
  129. package/lib/module/components/AnimatedHeader.js +18 -6
  130. package/lib/module/components/AnimatedHeader.js.map +1 -1
  131. package/lib/module/components/AvatarView.js +0 -1
  132. package/lib/module/components/AvatarView.js.map +1 -1
  133. package/lib/module/components/BottomSheet.js +24 -8
  134. package/lib/module/components/BottomSheet.js.map +1 -1
  135. package/lib/module/components/Chat/ChatBanner.js +10 -3
  136. package/lib/module/components/Chat/ChatBanner.js.map +1 -1
  137. package/lib/module/components/Chat/ChatFilterBottomSheetView.js +7 -2
  138. package/lib/module/components/Chat/ChatFilterBottomSheetView.js.map +1 -1
  139. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +16 -12
  140. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  141. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +6 -4
  142. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  143. package/lib/module/components/DefaultModal.js +9 -1
  144. package/lib/module/components/DefaultModal.js.map +1 -1
  145. package/lib/module/components/DisplayView.js +5 -12
  146. package/lib/module/components/DisplayView.js.map +1 -1
  147. package/lib/module/components/EndRoomModal.js +1 -2
  148. package/lib/module/components/EndRoomModal.js.map +1 -1
  149. package/lib/module/components/EndRoomModalContent.js +2 -1
  150. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  151. package/lib/module/components/Footer.js +12 -9
  152. package/lib/module/components/Footer.js.map +1 -1
  153. package/lib/module/components/GridView.js +54 -10
  154. package/lib/module/components/GridView.js.map +1 -1
  155. package/lib/module/components/HLSFooter.js +3 -1
  156. package/lib/module/components/HLSFooter.js.map +1 -1
  157. package/lib/module/components/HLSView.js +2 -2
  158. package/lib/module/components/HLSView.js.map +1 -1
  159. package/lib/module/components/HMSHLSMessageList.js +5 -2
  160. package/lib/module/components/HMSHLSMessageList.js.map +1 -1
  161. package/lib/module/components/HMSKeyboardAvoidingView.android.js +33 -0
  162. package/lib/module/components/HMSKeyboardAvoidingView.android.js.map +1 -0
  163. package/lib/module/components/HMSKeyboardAvoidingView.js +3 -1
  164. package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -1
  165. package/lib/module/components/HMSLiveIndicator.js +9 -60
  166. package/lib/module/components/HMSLiveIndicator.js.map +1 -1
  167. package/lib/module/components/HMSLiveViewerCount.js +70 -0
  168. package/lib/module/components/HMSLiveViewerCount.js.map +1 -0
  169. package/lib/module/components/HMSManageAudioOutput.js +0 -1
  170. package/lib/module/components/HMSManageAudioOutput.js.map +1 -1
  171. package/lib/module/components/HMSNotifications.js +9 -2
  172. package/lib/module/components/HMSNotifications.js.map +1 -1
  173. package/lib/module/components/HMSOverlayChatView.js +11 -2
  174. package/lib/module/components/HMSOverlayChatView.js.map +1 -1
  175. package/lib/module/components/HMSPreviewEditName.js +6 -1
  176. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  177. package/lib/module/components/HMSPreviewHLSLiveIndicator.js +2 -1
  178. package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  179. package/lib/module/components/HMSRecordingIndicator.js +15 -4
  180. package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
  181. package/lib/module/components/HMSRoomOptions.js +3 -6
  182. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  183. package/lib/module/components/HMSTextInput.js +2 -3
  184. package/lib/module/components/HMSTextInput.js.map +1 -1
  185. package/lib/module/components/Header.js +10 -3
  186. package/lib/module/components/Header.js.map +1 -1
  187. package/lib/module/components/LeaveRoomBottomSheet.js +5 -7
  188. package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
  189. package/lib/module/components/Meeting.js +3 -14
  190. package/lib/module/components/Meeting.js.map +1 -1
  191. package/lib/module/components/MeetingScreenContent.js +50 -50
  192. package/lib/module/components/MeetingScreenContent.js.map +1 -1
  193. package/lib/module/components/MiniView.js +12 -13
  194. package/lib/module/components/MiniView.js.map +1 -1
  195. package/lib/module/components/OverlayedViews.js +6 -2
  196. package/lib/module/components/OverlayedViews.js.map +1 -1
  197. package/lib/module/components/Participants/ParticipantsGroupHeader.js +1 -0
  198. package/lib/module/components/Participants/ParticipantsGroupHeader.js.map +1 -1
  199. package/lib/module/components/PeerSettingsModalContent.js +2 -1
  200. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  201. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js +0 -1
  202. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  203. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +2 -1
  204. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  205. package/lib/module/components/PeerVideoTile/VideoView.js +0 -1
  206. package/lib/module/components/PeerVideoTile/VideoView.js.map +1 -1
  207. package/lib/module/components/PressableIcon.js +6 -2
  208. package/lib/module/components/PressableIcon.js.map +1 -1
  209. package/lib/module/components/Preview.js +2 -1
  210. package/lib/module/components/Preview.js.map +1 -1
  211. package/lib/module/components/RoomSettingsModalContent.js +26 -10
  212. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  213. package/lib/module/components/RoomSettingsModalDebugModeContent.js +2 -2
  214. package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  215. package/lib/module/components/TilesContainer.js +3 -3
  216. package/lib/module/components/TilesContainer.js.map +1 -1
  217. package/lib/module/components/WebrtcView.js +37 -2
  218. package/lib/module/components/WebrtcView.js.map +1 -1
  219. package/lib/module/hooks-util-selectors.js +2 -1
  220. package/lib/module/hooks-util-selectors.js.map +1 -1
  221. package/lib/module/hooks-util.js +78 -32
  222. package/lib/module/hooks-util.js.map +1 -1
  223. package/lib/module/redux/actionTypes.js +3 -1
  224. package/lib/module/redux/actionTypes.js.map +1 -1
  225. package/lib/module/redux/actions/index.js +6 -0
  226. package/lib/module/redux/actions/index.js.map +1 -1
  227. package/lib/module/redux/reducers/appState.js +9 -1
  228. package/lib/module/redux/reducers/appState.js.map +1 -1
  229. package/lib/module/utils/theme.js +0 -1
  230. package/lib/module/utils/theme.js.map +1 -1
  231. package/lib/module/utils/types.js +2 -2
  232. package/lib/module/utils/types.js.map +1 -1
  233. package/lib/module/utils.js +0 -1
  234. package/lib/module/utils.js.map +1 -1
  235. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  236. package/lib/typescript/Icons/Recording/index.d.ts +1 -1
  237. package/lib/typescript/Icons/Recording/index.d.ts.map +1 -1
  238. package/lib/typescript/components/AnimatedFooter.d.ts.map +1 -1
  239. package/lib/typescript/components/AnimatedHLSFooter.d.ts.map +1 -1
  240. package/lib/typescript/components/AnimatedHeader.d.ts.map +1 -1
  241. package/lib/typescript/components/BottomSheet.d.ts +2 -0
  242. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  243. package/lib/typescript/components/Chat/ChatBanner.d.ts.map +1 -1
  244. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts.map +1 -1
  245. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -1
  246. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -1
  247. package/lib/typescript/components/DefaultModal.d.ts.map +1 -1
  248. package/lib/typescript/components/DisplayView.d.ts.map +1 -1
  249. package/lib/typescript/components/EndRoomModal.d.ts.map +1 -1
  250. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  251. package/lib/typescript/components/Footer.d.ts +1 -1
  252. package/lib/typescript/components/Footer.d.ts.map +1 -1
  253. package/lib/typescript/components/GridView.d.ts.map +1 -1
  254. package/lib/typescript/components/HLSView.d.ts.map +1 -1
  255. package/lib/typescript/components/HMSHLSMessageList.d.ts.map +1 -1
  256. package/lib/typescript/components/HMSKeyboardAvoidingView.android.d.ts +9 -0
  257. package/lib/typescript/components/HMSKeyboardAvoidingView.android.d.ts.map +1 -0
  258. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts +2 -1
  259. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -1
  260. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
  261. package/lib/typescript/components/HMSLiveViewerCount.d.ts +3 -0
  262. package/lib/typescript/components/HMSLiveViewerCount.d.ts.map +1 -0
  263. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -1
  264. package/lib/typescript/components/HMSOverlayChatView.d.ts +5 -1
  265. package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -1
  266. package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
  267. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -1
  268. package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
  269. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  270. package/lib/typescript/components/HMSTextInput.d.ts.map +1 -1
  271. package/lib/typescript/components/Header.d.ts +1 -0
  272. package/lib/typescript/components/Header.d.ts.map +1 -1
  273. package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
  274. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  275. package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
  276. package/lib/typescript/components/MiniView.d.ts +2 -3
  277. package/lib/typescript/components/MiniView.d.ts.map +1 -1
  278. package/lib/typescript/components/OverlayedViews.d.ts +4 -1
  279. package/lib/typescript/components/OverlayedViews.d.ts.map +1 -1
  280. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  281. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  282. package/lib/typescript/components/PressableIcon.d.ts.map +1 -1
  283. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  284. package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
  285. package/lib/typescript/components/TilesContainer.d.ts.map +1 -1
  286. package/lib/typescript/components/WebrtcView.d.ts +2 -0
  287. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  288. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  289. package/lib/typescript/hooks-util.d.ts +5 -0
  290. package/lib/typescript/hooks-util.d.ts.map +1 -1
  291. package/lib/typescript/redux/actionTypes.d.ts +1 -0
  292. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  293. package/lib/typescript/redux/actions/index.d.ts +6 -0
  294. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  295. package/lib/typescript/redux/index.d.ts +1 -0
  296. package/lib/typescript/redux/index.d.ts.map +1 -1
  297. package/lib/typescript/redux/reducers/appState.d.ts +1 -0
  298. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  299. package/lib/typescript/redux/reducers/index.d.ts +1 -0
  300. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  301. package/lib/typescript/utils/types.d.ts +1 -0
  302. package/lib/typescript/utils/types.d.ts.map +1 -1
  303. package/package.json +179 -179
  304. package/src/HMSRoomSetup.tsx +4 -1
  305. package/src/Icons/Recording/assets/recording-pause.png +0 -0
  306. package/src/Icons/Recording/assets/recording-pause@2x.png +0 -0
  307. package/src/Icons/Recording/assets/recording-pause@3x.png +0 -0
  308. package/src/Icons/Recording/index.tsx +3 -1
  309. package/src/components/AnimatedFooter.tsx +9 -3
  310. package/src/components/AnimatedHLSFooter.tsx +8 -17
  311. package/src/components/AnimatedHeader.tsx +16 -5
  312. package/src/components/BottomSheet.tsx +52 -9
  313. package/src/components/Chat/ChatBanner.tsx +9 -0
  314. package/src/components/Chat/ChatFilterBottomSheetView.tsx +8 -1
  315. package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +17 -7
  316. package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +5 -4
  317. package/src/components/DefaultModal.tsx +12 -1
  318. package/src/components/DisplayView.tsx +4 -13
  319. package/src/components/EndRoomModal.tsx +0 -1
  320. package/src/components/EndRoomModalContent.tsx +2 -1
  321. package/src/components/Footer.tsx +19 -10
  322. package/src/components/GridView.tsx +54 -15
  323. package/src/components/HLSFooter.tsx +1 -1
  324. package/src/components/HLSView.tsx +2 -1
  325. package/src/components/HMSHLSMessageList.tsx +8 -2
  326. package/src/components/HMSKeyboardAvoidingView.android.tsx +45 -0
  327. package/src/components/HMSKeyboardAvoidingView.tsx +6 -3
  328. package/src/components/HMSLiveIndicator.tsx +8 -73
  329. package/src/components/HMSLiveViewerCount.tsx +90 -0
  330. package/src/components/HMSNotifications.tsx +11 -1
  331. package/src/components/HMSOverlayChatView.tsx +18 -2
  332. package/src/components/HMSPreviewEditName.tsx +10 -1
  333. package/src/components/HMSPreviewHLSLiveIndicator.tsx +2 -1
  334. package/src/components/HMSRecordingIndicator.tsx +28 -2
  335. package/src/components/HMSRoomOptions.tsx +0 -3
  336. package/src/components/HMSTextInput.tsx +1 -0
  337. package/src/components/Header.tsx +14 -3
  338. package/src/components/LeaveRoomBottomSheet.tsx +3 -6
  339. package/src/components/Meeting.tsx +2 -19
  340. package/src/components/MeetingScreenContent.tsx +67 -62
  341. package/src/components/MiniView.tsx +18 -15
  342. package/src/components/OverlayedViews.tsx +6 -3
  343. package/src/components/PeerSettingsModalContent.tsx +2 -1
  344. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +2 -1
  345. package/src/components/PressableIcon.tsx +22 -17
  346. package/src/components/Preview.tsx +2 -2
  347. package/src/components/RoomSettingsModalContent.tsx +22 -6
  348. package/src/components/RoomSettingsModalDebugModeContent.tsx +2 -1
  349. package/src/components/TilesContainer.tsx +9 -5
  350. package/src/components/WebrtcView.tsx +59 -22
  351. package/src/hooks-util-selectors.tsx +2 -1
  352. package/src/hooks-util.ts +86 -43
  353. package/src/redux/actionTypes.ts +3 -0
  354. package/src/redux/actions/index.ts +5 -0
  355. package/src/redux/reducers/appState.ts +8 -0
  356. package/src/utils/types.ts +12 -3
@@ -54,7 +54,6 @@ export const HMSRoomOptions: React.FC<HMSRoomOptionsProps> = () => {
54
54
  <BottomSheet
55
55
  isVisible={modalVisible === ModalTypes.SETTINGS}
56
56
  dismissModal={dismissModal}
57
- animationOutTiming={700}
58
57
  >
59
58
  <RoomSettingsModalContent
60
59
  newAudioMixingMode={newAudioMixingMode}
@@ -73,7 +72,6 @@ export const HMSRoomOptions: React.FC<HMSRoomOptionsProps> = () => {
73
72
  isVisible={modalVisible === ModalTypes.CHANGE_NAME}
74
73
  dismissModal={dismissModal}
75
74
  avoidKeyboard={true}
76
- animationOutTiming={700}
77
75
  >
78
76
  <ChangeNameModalContent dismissModal={dismissModal} />
79
77
  </BottomSheet>
@@ -81,7 +79,6 @@ export const HMSRoomOptions: React.FC<HMSRoomOptionsProps> = () => {
81
79
  <BottomSheet
82
80
  isVisible={modalVisible === ModalTypes.STOP_RECORDING}
83
81
  dismissModal={dismissModal}
84
- animationOutTiming={800}
85
82
  >
86
83
  <StopRecordingModalContent dismissModal={dismissModal} />
87
84
  </BottomSheet>
@@ -130,6 +130,7 @@ export const HMSTextInput: React.FC<HMSTextInputProps> = ({
130
130
  selectionColor={resetProps.selectionColor ?? onSurfaceHighColor}
131
131
  onFocus={resetProps.onFocus ?? handleInputFocus}
132
132
  onBlur={resetProps.onBlur ?? handleInputBlur}
133
+ disableFullscreenUI={true}
133
134
  />
134
135
  );
135
136
 
@@ -1,6 +1,9 @@
1
1
  import React, { memo } from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
- import { SafeAreaView } from 'react-native-safe-area-context';
3
+ import {
4
+ SafeAreaView,
5
+ useSafeAreaInsets,
6
+ } from 'react-native-safe-area-context';
4
7
 
5
8
  import { HMSManageCameraRotation } from './HMSManageCameraRotation';
6
9
  import { useHMSRoomStyle } from '../hooks-util';
@@ -8,6 +11,7 @@ import { HMSManageAudioOutput } from './HMSManageAudioOutput';
8
11
  import { HMSRecordingIndicator } from './HMSRecordingIndicator';
9
12
  import { CompanyLogo } from './CompanyLogo';
10
13
  import { HMSLiveIndicator } from './HMSLiveIndicator';
14
+ import { HMSLiveViewerCount } from './HMSLiveViewerCount';
11
15
 
12
16
  interface HeaderProps {
13
17
  transparent?: boolean;
@@ -19,6 +23,11 @@ const BOTTOM_PADDING = 16;
19
23
  const CONTENT_HEIGHT = 42;
20
24
  export const HEADER_HEIGHT = TOP_PADDING + CONTENT_HEIGHT + BOTTOM_PADDING;
21
25
 
26
+ export const useHeaderHeight = (excludeSafeArea: boolean = false) => {
27
+ const { top } = useSafeAreaInsets();
28
+ return (excludeSafeArea ? 0 : top) + HEADER_HEIGHT;
29
+ };
30
+
22
31
  export const _Header: React.FC<HeaderProps> = ({
23
32
  transparent = false,
24
33
  showControls = true,
@@ -28,14 +37,16 @@ export const _Header: React.FC<HeaderProps> = ({
28
37
  }));
29
38
 
30
39
  return (
31
- <SafeAreaView style={transparent ? null : containerStyles} edges={['top']}>
40
+ <SafeAreaView style={transparent ? null : containerStyles} edges={['top','left','right']}>
32
41
  <View style={[styles.container, transparent ? null : containerStyles]}>
33
42
  <View style={styles.logoContainer}>
34
43
  <CompanyLogo style={styles.logo} />
35
44
 
45
+ <HMSLiveIndicator />
46
+
36
47
  <HMSRecordingIndicator />
37
48
 
38
- <HMSLiveIndicator />
49
+ <HMSLiveViewerCount />
39
50
  </View>
40
51
 
41
52
  {showControls ? (
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
3
3
  import { useSelector } from 'react-redux';
4
+ import { HMSStreamingState } from '@100mslive/react-native-hms';
4
5
 
5
6
  import { LeaveIcon } from '../Icons';
6
7
  import { useHMSRoomStyleSheet, useLeaveMethods, useModalType } from '../hooks-util';
@@ -26,7 +27,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
26
27
 
27
28
  const isStreaming = useSelector(
28
29
  (state: RootState) =>
29
- state.hmsStates.room?.hlsStreamingState?.running ?? false
30
+ state.hmsStates.room?.hlsStreamingState?.state === HMSStreamingState.STARTED ?? false
30
31
  );
31
32
 
32
33
  const hmsRoomStyles = useHMSRoomStyleSheet((theme, typography) => ({
@@ -105,10 +106,9 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
105
106
  return (
106
107
  <BottomSheet
107
108
  isVisible={modalVisibleType === ModalTypes.LEAVE_ROOM}
108
- containerStyle={styles.container}
109
+ bottomOffsetSpace={0}
109
110
  dismissModal={onPopupDismiss}
110
111
  onModalHide={handlePopupHide}
111
- animationOutTiming={700}
112
112
  >
113
113
  <View>
114
114
  <TouchableOpacity
@@ -176,9 +176,6 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
176
176
  };
177
177
 
178
178
  const styles = StyleSheet.create({
179
- container: {
180
- paddingBottom: 0,
181
- },
182
179
  button: {
183
180
  flexDirection: 'row',
184
181
  padding: 24,
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { StyleSheet, View } from 'react-native';
3
3
  import { useSelector } from 'react-redux';
4
- import { SafeAreaView } from 'react-native-safe-area-context';
5
4
 
6
5
  import type { PeerTrackNode } from '../utils/types';
7
6
  import { useRTCStatsListeners } from '../utils/hooks';
@@ -16,7 +15,6 @@ import {
16
15
  useHMSReconnection,
17
16
  useHMSRemovedFromRoomUpdate,
18
17
  useHMSRoomStyle,
19
- useIsHLSViewer,
20
18
  usePIPListener,
21
19
  } from '../hooks-util';
22
20
  import { MeetingScreenContent } from './MeetingScreenContent';
@@ -32,8 +30,6 @@ export const Meeting: React.FC<MeetingProps> = ({ peerTrackNodes }) => {
32
30
  (state: RootState) => state.app.startingHLSStream
33
31
  );
34
32
 
35
- const isHLSViewer = useIsHLSViewer();
36
-
37
33
  // TODO: Fetch latest Room and localPeer on mount of this component?
38
34
 
39
35
  useFetchHMSRoles();
@@ -76,23 +72,10 @@ export const Meeting: React.FC<MeetingProps> = ({ peerTrackNodes }) => {
76
72
  return <HMSHLSStreamLoading />;
77
73
  }
78
74
 
79
- const Container = isHLSViewer ? View : SafeAreaView;
80
-
81
- /**
82
- * TODO: disbaled Expended View animation in Webrtc flow
83
- *
84
- * Problem: Tiles Flatlist was not scrollable because Root Pressable was registering screen taps.
85
- * Solution: Try using Tab Gesture detector instead on Pressable component
86
- */
87
75
  return (
88
- <Container
89
- style={[styles.container, containerStyles]}
90
- edges={['left', 'right']}
91
- >
76
+ <View style={[styles.container, containerStyles]}>
92
77
  <MeetingScreenContent peerTrackNodes={peerTrackNodes} />
93
-
94
- {/* {landscapeChatViewVisible ? <ChatView /> : null} */}
95
- </Container>
78
+ </View>
96
79
  );
97
80
  };
98
81
 
@@ -1,21 +1,23 @@
1
- import React, { useCallback, useRef, useState } from 'react';
2
- import { StyleSheet, Pressable, View } from 'react-native';
1
+ import React, { useCallback, useRef, useState, useEffect } from 'react';
2
+ import { StyleSheet, View, Keyboard } from 'react-native';
3
3
  import { useSelector } from 'react-redux';
4
4
  import {
5
5
  Easing,
6
+ KeyboardState,
6
7
  cancelAnimation,
7
8
  runOnJS,
8
9
  useSharedValue,
9
10
  withTiming,
10
11
  } from 'react-native-reanimated';
12
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
11
13
 
12
- import { PipModes } from '../utils/types';
14
+ import { HeaderFooterHideDelayMs, PipModes } from '../utils/types';
13
15
  import type { PeerTrackNode } from '../utils/types';
14
16
  import type { RootState } from '../redux';
15
17
  import { Footer } from './Footer';
16
18
  import { DisplayView } from './DisplayView';
17
19
  import { Header } from './Header';
18
- import { useIsHLSViewer } from '../hooks-util';
20
+ import { useIsHLSViewer, useKeyboardState } from '../hooks-util';
19
21
  import { HMSStatusBar } from './StatusBar';
20
22
  import { AnimatedFooter } from './AnimatedFooter';
21
23
  import { HLSFooter } from './HLSFooter';
@@ -36,79 +38,82 @@ export const MeetingScreenContent: React.FC<MeetingScreenContentProps> = ({
36
38
  const isPipModeActive = useSelector(
37
39
  (state: RootState) => state.app.pipModeStatus === PipModes.ACTIVE
38
40
  );
41
+ const { keyboardState } = useKeyboardState();
39
42
 
40
- const toggleControls = useCallback(() => {
41
- 'worklet';
42
- if (timerIdRef.current) {
43
+ const dismissKeyboard = useCallback(() => {
44
+ Keyboard.dismiss();
45
+ }, []);
46
+
47
+ const clearTimer = useCallback(() => {
48
+ if (timerIdRef.current !== null) {
43
49
  clearTimeout(timerIdRef.current);
44
50
  timerIdRef.current = null;
45
51
  }
46
- cancelAnimation(offset);
47
- offset.value = withTiming(
48
- offset.value === 1 ? 0 : 1,
49
- { duration: 200, easing: Easing.ease },
50
- (finished) => {
51
- if (finished) {
52
- runOnJS(setControlsHidden)(offset.value === 0);
53
- }
54
- }
55
- );
56
52
  }, []);
57
53
 
54
+ const toggleControls = useCallback((fromTimeout: boolean = false) => {
55
+ 'worklet';
56
+ if (
57
+ fromTimeout !== true &&
58
+ (keyboardState.value === KeyboardState.OPEN ||
59
+ keyboardState.value === KeyboardState.OPENING)
60
+ ) {
61
+ runOnJS(dismissKeyboard)();
62
+ } else {
63
+ runOnJS(clearTimer)();
64
+ cancelAnimation(offset);
65
+ offset.value = withTiming(
66
+ offset.value === 1 ? 0 : 1,
67
+ { duration: 200, easing: Easing.ease },
68
+ (finished) => {
69
+ if (finished) {
70
+ runOnJS(setControlsHidden)(offset.value === 0);
71
+ }
72
+ }
73
+ );
74
+ }
75
+ }, [dismissKeyboard, clearTimer]);
76
+
58
77
  // Handles Auto hiding the controls for the first time
59
78
  // to make this feature discoverable
60
- // useEffect(() => {
61
- // if (false && !isHLSViewer) {
62
- // if (timerIdRef.current) {
63
- // clearTimeout(timerIdRef.current);
64
- // }
65
- // timerIdRef.current = setTimeout(() => {
66
- // timerIdRef.current = null;
67
- // toggleControls();
68
- // }, 3000); d
79
+ useEffect(() => {
80
+ clearTimer();
81
+ timerIdRef.current = setTimeout(() => {
82
+ timerIdRef.current = null;
83
+ toggleControls(true);
84
+ }, HeaderFooterHideDelayMs);
69
85
 
70
- // return () => {
71
- // if (timerIdRef.current) {
72
- // clearTimeout(timerIdRef.current);
73
- // }
74
- // };
75
- // }
76
- // }, [isHLSViewer]);
86
+ return clearTimer;
87
+ }, [clearTimer, toggleControls]);
88
+
89
+ const tapGesture = Gesture.Tap()
90
+ .onEnd(() => toggleControls())
91
+ .requireExternalGestureToFail();
77
92
 
78
- /**
79
- * TODO: disbaled Expended View animation in Webrtc flow
80
- *
81
- * Problem: Tiles Flatlist was not scrollable because Root Pressable was registering screen taps.
82
- * Solution: Try using Tab Gesture detector instead on Pressable component
83
- */
84
93
  return (
85
- <Pressable
86
- onPress={toggleControls}
87
- style={styles.container}
88
- disabled={isHLSViewer || true}
89
- >
94
+ <View style={styles.container}>
90
95
  <HMSStatusBar hidden={controlsHidden} barStyle={'light-content'} />
91
96
 
92
- <View style={styles.reconnectionWrapper}>
93
- {isPipModeActive ? null : (
94
- <AnimatedHeader offset={offset}>
95
- <Header transparent={isHLSViewer} showControls={!isHLSViewer} />
96
- </AnimatedHeader>
97
- )}
98
-
99
- <DisplayView offset={offset} peerTrackNodes={peerTrackNodes} />
97
+ <GestureDetector gesture={tapGesture}>
98
+ <View collapsable={false} style={styles.container}>
99
+ {isPipModeActive ? null : (
100
+ <AnimatedHeader offset={offset}>
101
+ <Header transparent={isHLSViewer} showControls={!isHLSViewer} />
102
+ </AnimatedHeader>
103
+ )}
100
104
 
101
- {/* <ReconnectionView /> */}
102
- </View>
105
+ <DisplayView offset={offset} peerTrackNodes={peerTrackNodes} />
103
106
 
104
- {isPipModeActive ? null : isHLSViewer ? (
105
- <HLSFooter offset={offset} />
106
- ) : (
107
- <AnimatedFooter offset={offset}>
108
- <Footer />
109
- </AnimatedFooter>
110
- )}
111
- </Pressable>
107
+ {isPipModeActive ? null : isHLSViewer ? (
108
+ <HLSFooter offset={offset} />
109
+ ) : (
110
+ <AnimatedFooter offset={offset}>
111
+ <Footer />
112
+ </AnimatedFooter>
113
+ )}
114
+ </View>
115
+ </GestureDetector>
116
+ </View>
112
117
  );
113
118
  };
114
119
 
@@ -1,8 +1,6 @@
1
1
  import * as React from 'react';
2
- import type { MutableRefObject } from 'react';
3
2
  import { useDispatch, useSelector } from 'react-redux';
4
3
  import { StyleSheet, View, LayoutAnimation } from 'react-native';
5
- import type { LayoutRectangle } from 'react-native';
6
4
  import { GestureDetector, Gesture } from 'react-native-gesture-handler';
7
5
  import Animated, {
8
6
  cancelAnimation,
@@ -20,6 +18,7 @@ import {
20
18
  import type { RootState } from '../redux';
21
19
  import { setInsetViewMinimized } from '../redux/actions';
22
20
  import { isPublishingAllowed } from '../hooks-util';
21
+ import { useIsLandscapeOrientation } from '../utils/dimension';
23
22
 
24
23
  const cornerOffset = {
25
24
  x: 8, // rightX
@@ -30,13 +29,16 @@ const cornerOffset = {
30
29
 
31
30
  export interface MiniViewProps
32
31
  extends Omit<PeerVideoTileViewProps, 'peerTrackNode'> {
33
- boundingBoxRef: MutableRefObject<LayoutRectangle | null>;
32
+ boundingBoxWidth: number | null;
33
+ boundingBoxHeight: number | null;
34
34
  }
35
35
 
36
36
  export const MiniView: React.FC<Omit<MiniViewProps, 'insetMode'>> = ({
37
- boundingBoxRef,
37
+ boundingBoxWidth,
38
+ boundingBoxHeight,
38
39
  onMoreOptionsPress,
39
40
  }) => {
41
+ const isLandscapeOrientation = useIsLandscapeOrientation();
40
42
  const isPressed = useSharedValue(false);
41
43
  const xOffset = useSharedValue(0);
42
44
  const yOffset = useSharedValue(0);
@@ -54,8 +56,8 @@ export const MiniView: React.FC<Omit<MiniViewProps, 'insetMode'>> = ({
54
56
  usePeerMinimizedViewDimensions();
55
57
 
56
58
  const size = {
57
- width: minimized ? minimizedViewWidth : 104,
58
- height: minimized ? minimizedViewHeigth : 186,
59
+ width: minimized ? minimizedViewWidth : isLandscapeOrientation ? 178 : 104,
60
+ height: minimized ? minimizedViewHeigth : isLandscapeOrientation ? 98 : 186,
59
61
  };
60
62
 
61
63
  const dimensionStyles = {
@@ -83,7 +85,8 @@ export const MiniView: React.FC<Omit<MiniViewProps, 'insetMode'>> = ({
83
85
  size.height,
84
86
  cornerOffset.x,
85
87
  cornerOffset.topY,
86
- boundingBoxRef.current
88
+ boundingBoxWidth,
89
+ boundingBoxHeight
87
90
  );
88
91
 
89
92
  const finalX = snapPointX;
@@ -130,7 +133,7 @@ export const MiniView: React.FC<Omit<MiniViewProps, 'insetMode'>> = ({
130
133
  cancelAnimation(xOffset);
131
134
  cancelAnimation(yOffset);
132
135
  };
133
- }, [minimized]);
136
+ }, [boundingBoxWidth, boundingBoxHeight, minimized]);
134
137
 
135
138
  const handleMaximize = () => {
136
139
  LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
@@ -195,25 +198,25 @@ const getSnappingPoints = (
195
198
  compHeight: number,
196
199
  xCornerOffset: number,
197
200
  yCornerOffset: number,
198
- boundingBox: null | { width: number; height: number }
201
+ boundingBoxWidth: number | null,
202
+ boundingBoxHeight: number | null
199
203
  ) => {
200
204
  'worklet';
201
- if (!boundingBox) {
205
+ if (!boundingBoxWidth || !boundingBoxHeight) {
202
206
  return {
203
207
  snapPointX: 0,
204
208
  snapPointY: 0,
205
209
  };
206
210
  }
207
- const { height, width } = boundingBox;
208
211
 
209
212
  return {
210
213
  snapPointX:
211
- Math.abs(currentValueX) + compWidth < width / 2
214
+ Math.abs(currentValueX) + compWidth < boundingBoxWidth / 2
212
215
  ? 0
213
- : -width + compWidth + xCornerOffset * 2,
216
+ : -boundingBoxWidth + compWidth + xCornerOffset * 2,
214
217
  snapPointY:
215
- Math.abs(currentValueY) + compHeight < height / 2
218
+ Math.abs(currentValueY) + compHeight < boundingBoxHeight / 2
216
219
  ? 0
217
- : -height + compHeight + yCornerOffset * 2,
220
+ : -boundingBoxHeight + compHeight + yCornerOffset * 2,
218
221
  };
219
222
  };
@@ -1,18 +1,21 @@
1
1
  import * as React from 'react';
2
+ import type { SharedValue } from 'react-native-reanimated';
2
3
 
3
4
  import { HMSNotifications } from './HMSNotifications';
4
5
  import { OverlayContainer } from './OverlayContainer';
5
6
  import { HLSChatView } from './HMSOverlayChatView';
6
7
  import { useShowChatAndParticipants } from '../hooks-util';
7
8
 
8
- export type OverlayedViewsProps = {};
9
+ export type OverlayedViewsProps = {
10
+ offset: SharedValue<number>;
11
+ };
9
12
 
10
- const _OverlayedViews: React.FC<OverlayedViewsProps> = () => {
13
+ const _OverlayedViews: React.FC<OverlayedViewsProps> = ({ offset }) => {
11
14
  const { overlayChatVisible } = useShowChatAndParticipants();
12
15
 
13
16
  return (
14
17
  <OverlayContainer.Overlay>
15
- {overlayChatVisible ? <HLSChatView /> : null}
18
+ {overlayChatVisible ? <HLSChatView offset={offset} /> : null}
16
19
 
17
20
  <HMSNotifications />
18
21
  </OverlayContainer.Overlay>
@@ -47,6 +47,7 @@ export const PeerSettingsModalContent: React.FC<
47
47
  const mininode = state.app.miniviewPeerTrackNode;
48
48
  return mininode && mininode.id === peerTrackNode.id;
49
49
  });
50
+ const editUsernameDisabled = useSelector((state: RootState) => state.app.editUsernameDisabled);
50
51
 
51
52
  const removeTextStyle = useHMSRoomStyle((theme) => ({
52
53
  color: theme.palette.alert_error_default,
@@ -123,7 +124,7 @@ export const PeerSettingsModalContent: React.FC<
123
124
 
124
125
  {/* Content */}
125
126
  <View style={styles.contentContainer}>
126
- {peer.isLocal ? (
127
+ {peer.isLocal && !editUsernameDisabled ? (
127
128
  <SettingItem
128
129
  testID={TestIds.tile_modal_change_name_btn}
129
130
  text={'Change Name'}
@@ -52,6 +52,7 @@ export const _PeerVideoTileView = React.forwardRef<
52
52
  const isPipModeActive = useSelector(
53
53
  (state: RootState) => state.app.pipModeStatus === PipModes.ACTIVE
54
54
  );
55
+ const editUsernameDisabled = useSelector((state: RootState) => state.app.editUsernameDisabled);
55
56
 
56
57
  const onSpotlight = useSelector((state: RootState) => {
57
58
  const { onSpotlight } = isTileOnSpotlight(state.user.spotlightTrackId, {
@@ -101,7 +102,7 @@ export const _PeerVideoTileView = React.forwardRef<
101
102
 
102
103
  const canTakeActionOnPeer = useSelector((state: RootState) => {
103
104
  if (peer.isLocal) {
104
- return true;
105
+ return !editUsernameDisabled || insetMode;
105
106
  }
106
107
 
107
108
  const permissions = state.hmsStates.localPeer?.role?.permissions;
@@ -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
 
@@ -114,7 +114,7 @@ export const Preview = ({
114
114
  <BackButton />
115
115
  </SafeAreaView>
116
116
 
117
- <View style={styles.footerWrapper}>
117
+ <SafeAreaView edges={['left', 'right']} style={styles.footerWrapper}>
118
118
  <HMSPreviewNetworkQuality />
119
119
 
120
120
  <HMSKeyboardAvoidingView
@@ -145,7 +145,7 @@ export const Preview = ({
145
145
  />
146
146
  </View>
147
147
  </HMSKeyboardAvoidingView>
148
- </View>
148
+ </SafeAreaView>
149
149
  </View>
150
150
  </TouchableWithoutFeedback>
151
151
  );
@@ -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
  >