@100mslive/react-native-room-kit 0.2.0 → 1.0.0

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 (914) hide show
  1. package/README.md +1 -10
  2. package/lib/commonjs/HMSPrebuilt.js +6 -6
  3. package/lib/commonjs/HMSPrebuilt.js.map +1 -1
  4. package/lib/commonjs/HMSRoomSetup.js +27 -30
  5. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  6. package/lib/commonjs/Icons/AlertTriangle/assets/alert-triangle-filled.png +0 -0
  7. package/lib/commonjs/Icons/AlertTriangle/assets/alert-triangle-filled@2x.png +0 -0
  8. package/lib/commonjs/Icons/AlertTriangle/assets/alert-triangle-filled@3x.png +0 -0
  9. package/lib/commonjs/Icons/AlertTriangle/index.js +2 -1
  10. package/lib/commonjs/Icons/AlertTriangle/index.js.map +1 -1
  11. package/lib/commonjs/Icons/Eye/assets/eye-on-small.png +0 -0
  12. package/lib/commonjs/Icons/Eye/assets/eye-on-small@2x.png +0 -0
  13. package/lib/commonjs/Icons/Eye/assets/eye-on-small@3x.png +0 -0
  14. package/lib/commonjs/Icons/Eye/index.js +35 -0
  15. package/lib/commonjs/Icons/Eye/index.js.map +1 -0
  16. package/lib/commonjs/Icons/Person/assets/person-left.png +0 -0
  17. package/lib/commonjs/Icons/Person/assets/person-left@2x.png +0 -0
  18. package/lib/commonjs/Icons/Person/assets/person-left@3x.png +0 -0
  19. package/lib/commonjs/Icons/Person/assets/person-off.png +0 -0
  20. package/lib/commonjs/Icons/Person/assets/person-off@2x.png +0 -0
  21. package/lib/commonjs/Icons/Person/assets/person-off@3x.png +0 -0
  22. package/lib/commonjs/Icons/Person/assets/person-rectangle.png +0 -0
  23. package/lib/commonjs/Icons/Person/assets/person-rectangle@2x.png +0 -0
  24. package/lib/commonjs/Icons/Person/assets/person-rectangle@3x.png +0 -0
  25. package/lib/commonjs/Icons/Person/index.js +2 -1
  26. package/lib/commonjs/Icons/Person/index.js.map +1 -1
  27. package/lib/commonjs/Icons/Search/assets/search.png +0 -0
  28. package/lib/commonjs/Icons/Search/assets/search@2x.png +0 -0
  29. package/lib/commonjs/Icons/Search/assets/search@3x.png +0 -0
  30. package/lib/commonjs/Icons/Search/index.js +34 -0
  31. package/lib/commonjs/Icons/Search/index.js.map +1 -0
  32. package/lib/commonjs/Icons/index.js +22 -0
  33. package/lib/commonjs/Icons/index.js.map +1 -1
  34. package/lib/commonjs/assets/audio-level-white.json +1271 -0
  35. package/lib/commonjs/assets/empty-chat-illustration/empty-chat.png +0 -0
  36. package/lib/commonjs/assets/empty-chat-illustration/empty-chat@2x.png +0 -0
  37. package/lib/commonjs/assets/empty-chat-illustration/empty-chat@3x.png +0 -0
  38. package/lib/commonjs/assets/welcome.png +0 -0
  39. package/lib/commonjs/components/AnimatedFooter.js +35 -0
  40. package/lib/commonjs/components/AnimatedFooter.js.map +1 -0
  41. package/lib/commonjs/components/AnimatedHLSFooter.js +36 -0
  42. package/lib/commonjs/components/AnimatedHLSFooter.js.map +1 -0
  43. package/lib/commonjs/components/AnimatedHeader.js +44 -0
  44. package/lib/commonjs/components/AnimatedHeader.js.map +1 -0
  45. package/lib/commonjs/components/BottomSheet.js +6 -3
  46. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  47. package/lib/commonjs/components/ChangeNameModalContent.js +0 -12
  48. package/lib/commonjs/components/ChangeNameModalContent.js.map +1 -1
  49. package/lib/commonjs/components/Chat/ChatBanner.js +35 -55
  50. package/lib/commonjs/components/Chat/ChatBanner.js.map +1 -1
  51. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js +83 -0
  52. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -0
  53. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js +69 -0
  54. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js.map +1 -0
  55. package/lib/commonjs/components/Chat/ChatFilterItem.js +71 -0
  56. package/lib/commonjs/components/Chat/ChatFilterItem.js.map +1 -0
  57. package/lib/commonjs/components/Chat/ChatFilterView.js +198 -0
  58. package/lib/commonjs/components/Chat/ChatFilterView.js.map +1 -0
  59. package/lib/commonjs/components/Chat/ChatList.js +6 -6
  60. package/lib/commonjs/components/Chat/ChatList.js.map +1 -1
  61. package/lib/commonjs/components/Chat/ChatMessage.js +35 -135
  62. package/lib/commonjs/components/Chat/ChatMessage.js.map +1 -1
  63. package/lib/commonjs/components/Chat/PinnedMessage.js +39 -43
  64. package/lib/commonjs/components/Chat/PinnedMessage.js.map +1 -1
  65. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +42 -0
  66. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -0
  67. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js +105 -0
  68. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -0
  69. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +66 -0
  70. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -0
  71. package/lib/commonjs/components/ChatAndParticipants/ChatView.js +37 -0
  72. package/lib/commonjs/components/ChatAndParticipants/ChatView.js.map +1 -0
  73. package/lib/commonjs/components/{Participants/SearchableParticipantsView.js → ChatAndParticipants/ParticipantsView.js} +24 -12
  74. package/lib/commonjs/components/ChatAndParticipants/ParticipantsView.js.map +1 -0
  75. package/lib/commonjs/components/ChatAndParticipants/index.js +17 -0
  76. package/lib/commonjs/components/ChatAndParticipants/index.js.map +1 -0
  77. package/lib/commonjs/components/CompanyLogo.js +4 -3
  78. package/lib/commonjs/components/CompanyLogo.js.map +1 -1
  79. package/lib/commonjs/components/DefaultModal.js +2 -6
  80. package/lib/commonjs/components/DefaultModal.js.map +1 -1
  81. package/lib/commonjs/components/DisplayView.js +6 -19
  82. package/lib/commonjs/components/DisplayView.js.map +1 -1
  83. package/lib/commonjs/components/EndRoomModalContent.js +20 -6
  84. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  85. package/lib/commonjs/components/Footer.js +37 -28
  86. package/lib/commonjs/components/Footer.js.map +1 -1
  87. package/lib/commonjs/components/FullScreenVideoView.js +74 -0
  88. package/lib/commonjs/components/FullScreenVideoView.js.map +1 -0
  89. package/lib/commonjs/components/GridView.js +129 -48
  90. package/lib/commonjs/components/GridView.js.map +1 -1
  91. package/lib/commonjs/components/{ParticipantsModal.js → HLSFooter.js} +19 -27
  92. package/lib/commonjs/components/HLSFooter.js.map +1 -0
  93. package/lib/commonjs/components/HLSView.js +10 -22
  94. package/lib/commonjs/components/HLSView.js.map +1 -1
  95. package/lib/commonjs/components/HMSChat.js +15 -14
  96. package/lib/commonjs/components/HMSChat.js.map +1 -1
  97. package/lib/commonjs/components/HMSHLSMessage.js +67 -0
  98. package/lib/commonjs/components/HMSHLSMessage.js.map +1 -0
  99. package/lib/commonjs/components/HMSHLSMessageList.js +58 -0
  100. package/lib/commonjs/components/HMSHLSMessageList.js.map +1 -0
  101. package/lib/commonjs/components/HMSHLSNotStarted.js +1 -6
  102. package/lib/commonjs/components/HMSHLSNotStarted.js.map +1 -1
  103. package/lib/commonjs/components/HMSHandRaiseNotification.js +84 -0
  104. package/lib/commonjs/components/HMSHandRaiseNotification.js.map +1 -0
  105. package/lib/commonjs/components/HMSKeyboardAvoidingView.js +49 -0
  106. package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -0
  107. package/lib/commonjs/components/HMSLiveIndicator.js +105 -0
  108. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -0
  109. package/lib/commonjs/components/HMSLocalScreenshareNotification.js +38 -0
  110. package/lib/commonjs/components/HMSLocalScreenshareNotification.js.map +1 -0
  111. package/lib/commonjs/components/HMSLocalVideoView.js +4 -23
  112. package/lib/commonjs/components/HMSLocalVideoView.js.map +1 -1
  113. package/lib/commonjs/components/HMSManageAudioOutput.js +7 -1
  114. package/lib/commonjs/components/HMSManageAudioOutput.js.map +1 -1
  115. package/lib/commonjs/components/HMSManageLeave.js +33 -11
  116. package/lib/commonjs/components/HMSManageLeave.js.map +1 -1
  117. package/lib/commonjs/components/HMSNotification.js +96 -0
  118. package/lib/commonjs/components/HMSNotification.js.map +1 -0
  119. package/lib/commonjs/components/HMSNotifications.js +114 -0
  120. package/lib/commonjs/components/HMSNotifications.js.map +1 -0
  121. package/lib/commonjs/components/HMSOverlayChatView.js +30 -0
  122. package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -0
  123. package/lib/commonjs/components/HMSPreviewJoinButton.js +1 -2
  124. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  125. package/lib/commonjs/components/HMSPreviewNetworkQuality.js +1 -1
  126. package/lib/commonjs/components/HMSPreviewNetworkQuality.js.map +1 -1
  127. package/lib/commonjs/components/HMSPreviewSubtitle.js +1 -3
  128. package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
  129. package/lib/commonjs/components/HMSPreviewTitle.js +1 -3
  130. package/lib/commonjs/components/HMSPreviewTitle.js.map +1 -1
  131. package/lib/commonjs/components/HMSRecordingIndicator.js +6 -2
  132. package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
  133. package/lib/commonjs/components/HMSRoleChangeDeclinedNotification.js +30 -0
  134. package/lib/commonjs/components/HMSRoleChangeDeclinedNotification.js.map +1 -0
  135. package/lib/commonjs/components/HMSSendMessageInput.js +57 -0
  136. package/lib/commonjs/components/HMSSendMessageInput.js.map +1 -0
  137. package/lib/commonjs/components/HMSTextInput.js +98 -12
  138. package/lib/commonjs/components/HMSTextInput.js.map +1 -1
  139. package/lib/commonjs/components/HMSVideoView.js +43 -0
  140. package/lib/commonjs/components/HMSVideoView.js.map +1 -0
  141. package/lib/commonjs/components/Header.js +19 -123
  142. package/lib/commonjs/components/Header.js.map +1 -1
  143. package/lib/commonjs/components/LocalPeerScreenshareView.js +1 -7
  144. package/lib/commonjs/components/LocalPeerScreenshareView.js.map +1 -1
  145. package/lib/commonjs/components/Meeting.js +6 -5
  146. package/lib/commonjs/components/Meeting.js.map +1 -1
  147. package/lib/commonjs/components/MeetingScreenContent.js +21 -8
  148. package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
  149. package/lib/commonjs/components/MenuModal/Menu.js +2 -2
  150. package/lib/commonjs/components/MenuModal/Menu.js.map +1 -1
  151. package/lib/commonjs/components/MiniView.js +8 -3
  152. package/lib/commonjs/components/MiniView.js.map +1 -1
  153. package/lib/commonjs/components/Modals.js +88 -317
  154. package/lib/commonjs/components/Modals.js.map +1 -1
  155. package/lib/commonjs/components/OverlayContainer.js +41 -0
  156. package/lib/commonjs/components/OverlayContainer.js.map +1 -0
  157. package/lib/commonjs/components/OverlayedViews.js +22 -0
  158. package/lib/commonjs/components/OverlayedViews.js.map +1 -0
  159. package/lib/commonjs/components/PaginationDots.js +4 -4
  160. package/lib/commonjs/components/PaginationDots.js.map +1 -1
  161. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js +131 -0
  162. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js.map +1 -0
  163. package/lib/commonjs/components/Participants/ParticipantsGroupOptions.js +80 -0
  164. package/lib/commonjs/components/Participants/ParticipantsGroupOptions.js.map +1 -0
  165. package/lib/commonjs/components/Participants/ParticipantsItem.js +132 -0
  166. package/lib/commonjs/components/Participants/ParticipantsItem.js.map +1 -0
  167. package/lib/commonjs/components/Participants/ParticipantsItemOption.js +46 -0
  168. package/lib/commonjs/components/Participants/ParticipantsItemOption.js.map +1 -0
  169. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js +220 -0
  170. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js.map +1 -0
  171. package/lib/commonjs/components/Participants/ParticipantsList.js +40 -224
  172. package/lib/commonjs/components/Participants/ParticipantsList.js.map +1 -1
  173. package/lib/commonjs/components/Participants/ParticipantsSeachInput.js +36 -30
  174. package/lib/commonjs/components/Participants/ParticipantsSeachInput.js.map +1 -1
  175. package/lib/commonjs/components/Participants/index.js +0 -33
  176. package/lib/commonjs/components/Participants/index.js.map +1 -1
  177. package/lib/commonjs/components/PeerMinimizedView.js +1 -1
  178. package/lib/commonjs/components/PeerSettingsModalContent.js +47 -123
  179. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  180. package/lib/commonjs/components/PeerVideoTile/AvatarView.js +19 -5
  181. package/lib/commonjs/components/PeerVideoTile/AvatarView.js.map +1 -1
  182. package/lib/commonjs/components/PeerVideoTile/HMSFullScreenButton.js +45 -0
  183. package/lib/commonjs/components/PeerVideoTile/HMSFullScreenButton.js.map +1 -0
  184. package/lib/commonjs/components/PeerVideoTile/HMSPinchGesture.js +202 -0
  185. package/lib/commonjs/components/PeerVideoTile/HMSPinchGesture.js.map +1 -0
  186. package/lib/commonjs/components/PeerVideoTile/{PeerAudioMutedIndicator.js → PeerAudioIndicator.js} +30 -4
  187. package/lib/commonjs/components/PeerVideoTile/PeerAudioIndicator.js.map +1 -0
  188. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js +10 -2
  189. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  190. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +38 -17
  191. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  192. package/lib/commonjs/components/PeerVideoTile/VideoView.js +43 -10
  193. package/lib/commonjs/components/PeerVideoTile/VideoView.js.map +1 -1
  194. package/lib/commonjs/components/PressableIcon.js +10 -5
  195. package/lib/commonjs/components/PressableIcon.js.map +1 -1
  196. package/lib/commonjs/components/Preview.js +5 -14
  197. package/lib/commonjs/components/Preview.js.map +1 -1
  198. package/lib/commonjs/components/PreviewForRoleChangeModal.js +332 -0
  199. package/lib/commonjs/components/PreviewForRoleChangeModal.js.map +1 -0
  200. package/lib/commonjs/components/ReconnectionView.js +66 -0
  201. package/lib/commonjs/components/ReconnectionView.js.map +1 -0
  202. package/lib/commonjs/components/RoomSettingsModalContent.js +25 -34
  203. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  204. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +31 -70
  205. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  206. package/lib/commonjs/components/StreamingQualityModalContent.js +8 -9
  207. package/lib/commonjs/components/StreamingQualityModalContent.js.map +1 -1
  208. package/lib/commonjs/components/TilesContainer.js +31 -9
  209. package/lib/commonjs/components/TilesContainer.js.map +1 -1
  210. package/lib/commonjs/components/WebrtcView.js +11 -14
  211. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  212. package/lib/commonjs/components/WelcomeInMeeting.js +7 -31
  213. package/lib/commonjs/components/WelcomeInMeeting.js.map +1 -1
  214. package/lib/commonjs/components/index.js +0 -33
  215. package/lib/commonjs/components/index.js.map +1 -1
  216. package/lib/commonjs/hooks-util-selectors.js +43 -9
  217. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  218. package/lib/commonjs/hooks-util.js +619 -213
  219. package/lib/commonjs/hooks-util.js.map +1 -1
  220. package/lib/commonjs/modules/HMSManager.js +3 -3
  221. package/lib/commonjs/modules/HMSManager.js.map +1 -1
  222. package/lib/commonjs/modules/parser.js +2 -3
  223. package/lib/commonjs/modules/parser.js.map +1 -1
  224. package/lib/commonjs/redux/actionTypes.js +25 -1
  225. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  226. package/lib/commonjs/redux/actions/index.js +90 -1
  227. package/lib/commonjs/redux/actions/index.js.map +1 -1
  228. package/lib/commonjs/redux/reducers/appState.js +77 -2
  229. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  230. package/lib/commonjs/redux/reducers/chatWindow.js +3 -7
  231. package/lib/commonjs/redux/reducers/chatWindow.js.map +1 -1
  232. package/lib/commonjs/redux/reducers/hmsStates.js +70 -7
  233. package/lib/commonjs/redux/reducers/hmsStates.js.map +1 -1
  234. package/lib/commonjs/utils/functions.js +10 -3
  235. package/lib/commonjs/utils/functions.js.map +1 -1
  236. package/lib/commonjs/utils/theme.js +2 -0
  237. package/lib/commonjs/utils/theme.js.map +1 -1
  238. package/lib/commonjs/utils/types.js +9 -3
  239. package/lib/commonjs/utils/types.js.map +1 -1
  240. package/lib/commonjs/utils.js +8 -1
  241. package/lib/commonjs/utils.js.map +1 -1
  242. package/lib/module/HMSPrebuilt.js +6 -6
  243. package/lib/module/HMSPrebuilt.js.map +1 -1
  244. package/lib/module/HMSRoomSetup.js +29 -32
  245. package/lib/module/HMSRoomSetup.js.map +1 -1
  246. package/lib/module/Icons/AlertTriangle/assets/alert-triangle-filled.png +0 -0
  247. package/lib/module/Icons/AlertTriangle/assets/alert-triangle-filled@2x.png +0 -0
  248. package/lib/module/Icons/AlertTriangle/assets/alert-triangle-filled@3x.png +0 -0
  249. package/lib/module/Icons/AlertTriangle/index.js +2 -1
  250. package/lib/module/Icons/AlertTriangle/index.js.map +1 -1
  251. package/lib/module/Icons/Eye/assets/eye-on-small.png +0 -0
  252. package/lib/module/Icons/Eye/assets/eye-on-small@2x.png +0 -0
  253. package/lib/module/Icons/Eye/assets/eye-on-small@3x.png +0 -0
  254. package/lib/module/Icons/Eye/index.js +27 -0
  255. package/lib/module/Icons/Eye/index.js.map +1 -0
  256. package/lib/module/Icons/Person/assets/person-left.png +0 -0
  257. package/lib/module/Icons/Person/assets/person-left@2x.png +0 -0
  258. package/lib/module/Icons/Person/assets/person-left@3x.png +0 -0
  259. package/lib/module/Icons/Person/assets/person-off.png +0 -0
  260. package/lib/module/Icons/Person/assets/person-off@2x.png +0 -0
  261. package/lib/module/Icons/Person/assets/person-off@3x.png +0 -0
  262. package/lib/module/Icons/Person/assets/person-rectangle.png +0 -0
  263. package/lib/module/Icons/Person/assets/person-rectangle@2x.png +0 -0
  264. package/lib/module/Icons/Person/assets/person-rectangle@3x.png +0 -0
  265. package/lib/module/Icons/Person/index.js +2 -1
  266. package/lib/module/Icons/Person/index.js.map +1 -1
  267. package/lib/module/Icons/Search/assets/search.png +0 -0
  268. package/lib/module/Icons/Search/assets/search@2x.png +0 -0
  269. package/lib/module/Icons/Search/assets/search@3x.png +0 -0
  270. package/lib/module/Icons/Search/index.js +26 -0
  271. package/lib/module/Icons/Search/index.js.map +1 -0
  272. package/lib/module/Icons/index.js +2 -0
  273. package/lib/module/Icons/index.js.map +1 -1
  274. package/lib/module/assets/audio-level-white.json +1271 -0
  275. package/lib/module/assets/empty-chat-illustration/empty-chat.png +0 -0
  276. package/lib/module/assets/empty-chat-illustration/empty-chat@2x.png +0 -0
  277. package/lib/module/assets/empty-chat-illustration/empty-chat@3x.png +0 -0
  278. package/lib/module/assets/welcome.png +0 -0
  279. package/lib/module/components/AnimatedFooter.js +26 -0
  280. package/lib/module/components/AnimatedFooter.js.map +1 -0
  281. package/lib/module/components/AnimatedHLSFooter.js +27 -0
  282. package/lib/module/components/AnimatedHLSFooter.js.map +1 -0
  283. package/lib/module/components/AnimatedHeader.js +35 -0
  284. package/lib/module/components/AnimatedHeader.js.map +1 -0
  285. package/lib/module/components/BottomSheet.js +6 -3
  286. package/lib/module/components/BottomSheet.js.map +1 -1
  287. package/lib/module/components/ChangeNameModalContent.js +2 -14
  288. package/lib/module/components/ChangeNameModalContent.js.map +1 -1
  289. package/lib/module/components/Chat/ChatBanner.js +36 -55
  290. package/lib/module/components/Chat/ChatBanner.js.map +1 -1
  291. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js +74 -0
  292. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -0
  293. package/lib/module/components/Chat/ChatFilterBottomSheetView.js +60 -0
  294. package/lib/module/components/Chat/ChatFilterBottomSheetView.js.map +1 -0
  295. package/lib/module/components/Chat/ChatFilterItem.js +62 -0
  296. package/lib/module/components/Chat/ChatFilterItem.js.map +1 -0
  297. package/lib/module/components/Chat/ChatFilterView.js +189 -0
  298. package/lib/module/components/Chat/ChatFilterView.js.map +1 -0
  299. package/lib/module/components/Chat/ChatList.js +6 -6
  300. package/lib/module/components/Chat/ChatList.js.map +1 -1
  301. package/lib/module/components/Chat/ChatMessage.js +36 -135
  302. package/lib/module/components/Chat/ChatMessage.js.map +1 -1
  303. package/lib/module/components/Chat/PinnedMessage.js +40 -43
  304. package/lib/module/components/Chat/PinnedMessage.js.map +1 -1
  305. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +33 -0
  306. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -0
  307. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +96 -0
  308. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -0
  309. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +57 -0
  310. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -0
  311. package/lib/module/components/ChatAndParticipants/ChatView.js +28 -0
  312. package/lib/module/components/ChatAndParticipants/ChatView.js.map +1 -0
  313. package/lib/module/components/ChatAndParticipants/ParticipantsView.js +30 -0
  314. package/lib/module/components/ChatAndParticipants/ParticipantsView.js.map +1 -0
  315. package/lib/module/components/ChatAndParticipants/index.js +2 -0
  316. package/lib/module/components/ChatAndParticipants/index.js.map +1 -0
  317. package/lib/module/components/CompanyLogo.js +4 -3
  318. package/lib/module/components/CompanyLogo.js.map +1 -1
  319. package/lib/module/components/DefaultModal.js +2 -6
  320. package/lib/module/components/DefaultModal.js.map +1 -1
  321. package/lib/module/components/DisplayView.js +7 -20
  322. package/lib/module/components/DisplayView.js.map +1 -1
  323. package/lib/module/components/EndRoomModalContent.js +20 -6
  324. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  325. package/lib/module/components/Footer.js +39 -30
  326. package/lib/module/components/Footer.js.map +1 -1
  327. package/lib/module/components/FullScreenVideoView.js +64 -0
  328. package/lib/module/components/FullScreenVideoView.js.map +1 -0
  329. package/lib/module/components/GridView.js +130 -49
  330. package/lib/module/components/GridView.js.map +1 -1
  331. package/lib/module/components/HLSFooter.js +26 -0
  332. package/lib/module/components/HLSFooter.js.map +1 -0
  333. package/lib/module/components/HLSView.js +11 -23
  334. package/lib/module/components/HLSView.js.map +1 -1
  335. package/lib/module/components/HMSChat.js +16 -15
  336. package/lib/module/components/HMSChat.js.map +1 -1
  337. package/lib/module/components/HMSHLSMessage.js +58 -0
  338. package/lib/module/components/HMSHLSMessage.js.map +1 -0
  339. package/lib/module/components/HMSHLSMessageList.js +49 -0
  340. package/lib/module/components/HMSHLSMessageList.js.map +1 -0
  341. package/lib/module/components/HMSHLSNotStarted.js +2 -7
  342. package/lib/module/components/HMSHLSNotStarted.js.map +1 -1
  343. package/lib/module/components/HMSHandRaiseNotification.js +75 -0
  344. package/lib/module/components/HMSHandRaiseNotification.js.map +1 -0
  345. package/lib/module/components/HMSKeyboardAvoidingView.js +40 -0
  346. package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -0
  347. package/lib/module/components/HMSLiveIndicator.js +96 -0
  348. package/lib/module/components/HMSLiveIndicator.js.map +1 -0
  349. package/lib/module/components/HMSLocalScreenshareNotification.js +29 -0
  350. package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -0
  351. package/lib/module/components/HMSLocalVideoView.js +4 -23
  352. package/lib/module/components/HMSLocalVideoView.js.map +1 -1
  353. package/lib/module/components/HMSManageAudioOutput.js +8 -2
  354. package/lib/module/components/HMSManageAudioOutput.js.map +1 -1
  355. package/lib/module/components/HMSManageLeave.js +35 -13
  356. package/lib/module/components/HMSManageLeave.js.map +1 -1
  357. package/lib/module/components/HMSNotification.js +87 -0
  358. package/lib/module/components/HMSNotification.js.map +1 -0
  359. package/lib/module/components/HMSNotifications.js +105 -0
  360. package/lib/module/components/HMSNotifications.js.map +1 -0
  361. package/lib/module/components/HMSOverlayChatView.js +20 -0
  362. package/lib/module/components/HMSOverlayChatView.js.map +1 -0
  363. package/lib/module/components/HMSPreviewJoinButton.js +2 -3
  364. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  365. package/lib/module/components/HMSPreviewNetworkQuality.js +1 -1
  366. package/lib/module/components/HMSPreviewNetworkQuality.js.map +1 -1
  367. package/lib/module/components/HMSPreviewSubtitle.js +2 -4
  368. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  369. package/lib/module/components/HMSPreviewTitle.js +2 -4
  370. package/lib/module/components/HMSPreviewTitle.js.map +1 -1
  371. package/lib/module/components/HMSRecordingIndicator.js +6 -2
  372. package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
  373. package/lib/module/components/HMSRoleChangeDeclinedNotification.js +21 -0
  374. package/lib/module/components/HMSRoleChangeDeclinedNotification.js.map +1 -0
  375. package/lib/module/components/HMSSendMessageInput.js +48 -0
  376. package/lib/module/components/HMSSendMessageInput.js.map +1 -0
  377. package/lib/module/components/HMSTextInput.js +99 -13
  378. package/lib/module/components/HMSTextInput.js.map +1 -1
  379. package/lib/module/components/HMSVideoView.js +34 -0
  380. package/lib/module/components/HMSVideoView.js.map +1 -0
  381. package/lib/module/components/Header.js +18 -123
  382. package/lib/module/components/Header.js.map +1 -1
  383. package/lib/module/components/LocalPeerScreenshareView.js +1 -6
  384. package/lib/module/components/LocalPeerScreenshareView.js.map +1 -1
  385. package/lib/module/components/Meeting.js +8 -7
  386. package/lib/module/components/Meeting.js.map +1 -1
  387. package/lib/module/components/MeetingScreenContent.js +23 -10
  388. package/lib/module/components/MeetingScreenContent.js.map +1 -1
  389. package/lib/module/components/MenuModal/Menu.js +2 -2
  390. package/lib/module/components/MenuModal/Menu.js.map +1 -1
  391. package/lib/module/components/MiniView.js +8 -3
  392. package/lib/module/components/MiniView.js.map +1 -1
  393. package/lib/module/components/Modals.js +88 -313
  394. package/lib/module/components/Modals.js.map +1 -1
  395. package/lib/module/components/OverlayContainer.js +32 -0
  396. package/lib/module/components/OverlayContainer.js.map +1 -0
  397. package/lib/module/components/OverlayedViews.js +13 -0
  398. package/lib/module/components/OverlayedViews.js.map +1 -0
  399. package/lib/module/components/PaginationDots.js +4 -4
  400. package/lib/module/components/PaginationDots.js.map +1 -1
  401. package/lib/module/components/Participants/ParticipantsGroupHeader.js +121 -0
  402. package/lib/module/components/Participants/ParticipantsGroupHeader.js.map +1 -0
  403. package/lib/module/components/Participants/ParticipantsGroupOptions.js +71 -0
  404. package/lib/module/components/Participants/ParticipantsGroupOptions.js.map +1 -0
  405. package/lib/module/components/Participants/ParticipantsItem.js +123 -0
  406. package/lib/module/components/Participants/ParticipantsItem.js.map +1 -0
  407. package/lib/module/components/Participants/ParticipantsItemOption.js +37 -0
  408. package/lib/module/components/Participants/ParticipantsItemOption.js.map +1 -0
  409. package/lib/module/components/Participants/ParticipantsItemOptions.js +211 -0
  410. package/lib/module/components/Participants/ParticipantsItemOptions.js.map +1 -0
  411. package/lib/module/components/Participants/ParticipantsList.js +42 -225
  412. package/lib/module/components/Participants/ParticipantsList.js.map +1 -1
  413. package/lib/module/components/Participants/ParticipantsSeachInput.js +37 -30
  414. package/lib/module/components/Participants/ParticipantsSeachInput.js.map +1 -1
  415. package/lib/module/components/Participants/index.js +0 -3
  416. package/lib/module/components/Participants/index.js.map +1 -1
  417. package/lib/module/components/PeerMinimizedView.js +1 -1
  418. package/lib/module/components/PeerSettingsModalContent.js +50 -126
  419. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  420. package/lib/module/components/PeerVideoTile/AvatarView.js +19 -5
  421. package/lib/module/components/PeerVideoTile/AvatarView.js.map +1 -1
  422. package/lib/module/components/PeerVideoTile/HMSFullScreenButton.js +36 -0
  423. package/lib/module/components/PeerVideoTile/HMSFullScreenButton.js.map +1 -0
  424. package/lib/module/components/PeerVideoTile/HMSPinchGesture.js +193 -0
  425. package/lib/module/components/PeerVideoTile/HMSPinchGesture.js.map +1 -0
  426. package/lib/module/components/PeerVideoTile/PeerAudioIndicator.js +60 -0
  427. package/lib/module/components/PeerVideoTile/PeerAudioIndicator.js.map +1 -0
  428. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js +11 -3
  429. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  430. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +41 -20
  431. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  432. package/lib/module/components/PeerVideoTile/VideoView.js +43 -10
  433. package/lib/module/components/PeerVideoTile/VideoView.js.map +1 -1
  434. package/lib/module/components/PressableIcon.js +11 -6
  435. package/lib/module/components/PressableIcon.js.map +1 -1
  436. package/lib/module/components/Preview.js +6 -13
  437. package/lib/module/components/Preview.js.map +1 -1
  438. package/lib/module/components/PreviewForRoleChangeModal.js +322 -0
  439. package/lib/module/components/PreviewForRoleChangeModal.js.map +1 -0
  440. package/lib/module/components/ReconnectionView.js +56 -0
  441. package/lib/module/components/ReconnectionView.js.map +1 -0
  442. package/lib/module/components/RoomSettingsModalContent.js +27 -36
  443. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  444. package/lib/module/components/RoomSettingsModalDebugModeContent.js +31 -70
  445. package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  446. package/lib/module/components/StreamingQualityModalContent.js +8 -8
  447. package/lib/module/components/StreamingQualityModalContent.js.map +1 -1
  448. package/lib/module/components/TilesContainer.js +31 -9
  449. package/lib/module/components/TilesContainer.js.map +1 -1
  450. package/lib/module/components/WebrtcView.js +11 -14
  451. package/lib/module/components/WebrtcView.js.map +1 -1
  452. package/lib/module/components/WelcomeInMeeting.js +8 -32
  453. package/lib/module/components/WelcomeInMeeting.js.map +1 -1
  454. package/lib/module/components/index.js +0 -3
  455. package/lib/module/components/index.js.map +1 -1
  456. package/lib/module/hooks-util-selectors.js +38 -8
  457. package/lib/module/hooks-util-selectors.js.map +1 -1
  458. package/lib/module/hooks-util.js +615 -213
  459. package/lib/module/hooks-util.js.map +1 -1
  460. package/lib/module/modules/HMSManager.js +3 -3
  461. package/lib/module/modules/HMSManager.js.map +1 -1
  462. package/lib/module/modules/parser.js +2 -3
  463. package/lib/module/modules/parser.js.map +1 -1
  464. package/lib/module/redux/actionTypes.js +25 -1
  465. package/lib/module/redux/actionTypes.js.map +1 -1
  466. package/lib/module/redux/actions/index.js +74 -0
  467. package/lib/module/redux/actions/index.js.map +1 -1
  468. package/lib/module/redux/reducers/appState.js +78 -2
  469. package/lib/module/redux/reducers/appState.js.map +1 -1
  470. package/lib/module/redux/reducers/chatWindow.js +3 -7
  471. package/lib/module/redux/reducers/chatWindow.js.map +1 -1
  472. package/lib/module/redux/reducers/hmsStates.js +70 -7
  473. package/lib/module/redux/reducers/hmsStates.js.map +1 -1
  474. package/lib/module/utils/functions.js +8 -2
  475. package/lib/module/utils/functions.js.map +1 -1
  476. package/lib/module/utils/theme.js +2 -0
  477. package/lib/module/utils/theme.js.map +1 -1
  478. package/lib/module/utils/types.js +6 -2
  479. package/lib/module/utils/types.js.map +1 -1
  480. package/lib/module/utils.js +6 -0
  481. package/lib/module/utils.js.map +1 -1
  482. package/lib/typescript/HMSPrebuilt.d.ts +1 -0
  483. package/lib/typescript/HMSPrebuilt.d.ts.map +1 -1
  484. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  485. package/lib/typescript/Icons/AlertTriangle/index.d.ts +1 -0
  486. package/lib/typescript/Icons/AlertTriangle/index.d.ts.map +1 -1
  487. package/lib/typescript/Icons/Eye/index.d.ts +8 -0
  488. package/lib/typescript/Icons/Eye/index.d.ts.map +1 -0
  489. package/lib/typescript/Icons/Person/index.d.ts +1 -0
  490. package/lib/typescript/Icons/Person/index.d.ts.map +1 -1
  491. package/lib/typescript/Icons/Search/index.d.ts +7 -0
  492. package/lib/typescript/Icons/Search/index.d.ts.map +1 -0
  493. package/lib/typescript/Icons/index.d.ts +2 -0
  494. package/lib/typescript/Icons/index.d.ts.map +1 -1
  495. package/lib/typescript/components/AnimatedFooter.d.ts +8 -0
  496. package/lib/typescript/components/AnimatedFooter.d.ts.map +1 -0
  497. package/lib/typescript/components/AnimatedHLSFooter.d.ts +11 -0
  498. package/lib/typescript/components/AnimatedHLSFooter.d.ts.map +1 -0
  499. package/lib/typescript/components/AnimatedHeader.d.ts +7 -0
  500. package/lib/typescript/components/AnimatedHeader.d.ts.map +1 -0
  501. package/lib/typescript/components/BottomSheet.d.ts +4 -1
  502. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  503. package/lib/typescript/components/ChangeNameModalContent.d.ts.map +1 -1
  504. package/lib/typescript/components/Chat/ChatBanner.d.ts +1 -1
  505. package/lib/typescript/components/Chat/ChatBanner.d.ts.map +1 -1
  506. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts +6 -0
  507. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts.map +1 -0
  508. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts +6 -0
  509. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts.map +1 -0
  510. package/lib/typescript/components/Chat/ChatFilterItem.d.ts +12 -0
  511. package/lib/typescript/components/Chat/ChatFilterItem.d.ts.map +1 -0
  512. package/lib/typescript/components/Chat/ChatFilterView.d.ts +6 -0
  513. package/lib/typescript/components/Chat/ChatFilterView.d.ts.map +1 -0
  514. package/lib/typescript/components/Chat/ChatList.d.ts.map +1 -1
  515. package/lib/typescript/components/Chat/ChatMessage.d.ts +2 -2
  516. package/lib/typescript/components/Chat/ChatMessage.d.ts.map +1 -1
  517. package/lib/typescript/components/Chat/PinnedMessage.d.ts.map +1 -1
  518. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts +3 -0
  519. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -0
  520. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts +7 -0
  521. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -0
  522. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts +3 -0
  523. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -0
  524. package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts +6 -0
  525. package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts.map +1 -0
  526. package/lib/typescript/components/ChatAndParticipants/ParticipantsView.d.ts +5 -0
  527. package/lib/typescript/components/ChatAndParticipants/ParticipantsView.d.ts.map +1 -0
  528. package/lib/typescript/components/ChatAndParticipants/index.d.ts +2 -0
  529. package/lib/typescript/components/ChatAndParticipants/index.d.ts.map +1 -0
  530. package/lib/typescript/components/CompanyLogo.d.ts.map +1 -1
  531. package/lib/typescript/components/DefaultModal.d.ts.map +1 -1
  532. package/lib/typescript/components/DisplayView.d.ts.map +1 -1
  533. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  534. package/lib/typescript/components/Footer.d.ts +0 -2
  535. package/lib/typescript/components/Footer.d.ts.map +1 -1
  536. package/lib/typescript/components/FullScreenVideoView.d.ts +3 -0
  537. package/lib/typescript/components/FullScreenVideoView.d.ts.map +1 -0
  538. package/lib/typescript/components/GridView.d.ts +12 -1
  539. package/lib/typescript/components/GridView.d.ts.map +1 -1
  540. package/lib/typescript/components/HLSFooter.d.ts +8 -0
  541. package/lib/typescript/components/HLSFooter.d.ts.map +1 -0
  542. package/lib/typescript/components/HLSView.d.ts.map +1 -1
  543. package/lib/typescript/components/HMSBaseButton.d.ts +2 -2
  544. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  545. package/lib/typescript/components/HMSChat.d.ts.map +1 -1
  546. package/lib/typescript/components/HMSHLSMessage.d.ts +8 -0
  547. package/lib/typescript/components/HMSHLSMessage.d.ts.map +1 -0
  548. package/lib/typescript/components/HMSHLSMessageList.d.ts +3 -0
  549. package/lib/typescript/components/HMSHLSMessageList.d.ts.map +1 -0
  550. package/lib/typescript/components/HMSHLSNotStarted.d.ts.map +1 -1
  551. package/lib/typescript/components/HMSHandRaiseNotification.d.ts +10 -0
  552. package/lib/typescript/components/HMSHandRaiseNotification.d.ts.map +1 -0
  553. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts +8 -0
  554. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -0
  555. package/lib/typescript/components/HMSLiveIndicator.d.ts +3 -0
  556. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -0
  557. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts +5 -0
  558. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -0
  559. package/lib/typescript/components/HMSLocalVideoView.d.ts.map +1 -1
  560. package/lib/typescript/components/HMSManageAudioOutput.d.ts.map +1 -1
  561. package/lib/typescript/components/HMSManageLeave.d.ts.map +1 -1
  562. package/lib/typescript/components/HMSNotification.d.ts +15 -0
  563. package/lib/typescript/components/HMSNotification.d.ts.map +1 -0
  564. package/lib/typescript/components/HMSNotifications.d.ts +5 -0
  565. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -0
  566. package/lib/typescript/components/HMSOverlayChatView.d.ts +3 -0
  567. package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -0
  568. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  569. package/lib/typescript/components/HMSPreviewNetworkQuality.d.ts.map +1 -1
  570. package/lib/typescript/components/HMSPreviewSubtitle.d.ts.map +1 -1
  571. package/lib/typescript/components/HMSPreviewTitle.d.ts.map +1 -1
  572. package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
  573. package/lib/typescript/components/HMSRoleChangeDeclinedNotification.d.ts +9 -0
  574. package/lib/typescript/components/HMSRoleChangeDeclinedNotification.d.ts.map +1 -0
  575. package/lib/typescript/components/HMSSendMessageInput.d.ts +9 -0
  576. package/lib/typescript/components/HMSSendMessageInput.d.ts.map +1 -0
  577. package/lib/typescript/components/HMSTextInput.d.ts +20 -6
  578. package/lib/typescript/components/HMSTextInput.d.ts.map +1 -1
  579. package/lib/typescript/components/HMSVideoView.d.ts +6 -0
  580. package/lib/typescript/components/HMSVideoView.d.ts.map +1 -0
  581. package/lib/typescript/components/Header.d.ts +3 -2
  582. package/lib/typescript/components/Header.d.ts.map +1 -1
  583. package/lib/typescript/components/LocalPeerScreenshareView.d.ts.map +1 -1
  584. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  585. package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
  586. package/lib/typescript/components/MiniView.d.ts.map +1 -1
  587. package/lib/typescript/components/Modals.d.ts +1 -21
  588. package/lib/typescript/components/Modals.d.ts.map +1 -1
  589. package/lib/typescript/components/OverlayContainer.d.ts +9 -0
  590. package/lib/typescript/components/OverlayContainer.d.ts.map +1 -0
  591. package/lib/typescript/components/OverlayedViews.d.ts +4 -0
  592. package/lib/typescript/components/OverlayedViews.d.ts.map +1 -0
  593. package/lib/typescript/components/PaginationDots.d.ts +3 -0
  594. package/lib/typescript/components/PaginationDots.d.ts.map +1 -1
  595. package/lib/typescript/components/Participants/ParticipantsGroupHeader.d.ts +9 -0
  596. package/lib/typescript/components/Participants/ParticipantsGroupHeader.d.ts.map +1 -0
  597. package/lib/typescript/components/Participants/ParticipantsGroupOptions.d.ts +8 -0
  598. package/lib/typescript/components/Participants/ParticipantsGroupOptions.d.ts.map +1 -0
  599. package/lib/typescript/components/Participants/ParticipantsItem.d.ts +9 -0
  600. package/lib/typescript/components/Participants/ParticipantsItem.d.ts.map +1 -0
  601. package/lib/typescript/components/Participants/ParticipantsItemOption.d.ts +12 -0
  602. package/lib/typescript/components/Participants/ParticipantsItemOption.d.ts.map +1 -0
  603. package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts +10 -0
  604. package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts.map +1 -0
  605. package/lib/typescript/components/Participants/ParticipantsList.d.ts +4 -2
  606. package/lib/typescript/components/Participants/ParticipantsList.d.ts.map +1 -1
  607. package/lib/typescript/components/Participants/ParticipantsSeachInput.d.ts.map +1 -1
  608. package/lib/typescript/components/Participants/index.d.ts +0 -3
  609. package/lib/typescript/components/Participants/index.d.ts.map +1 -1
  610. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  611. package/lib/typescript/components/PeerVideoTile/AvatarView.d.ts +4 -0
  612. package/lib/typescript/components/PeerVideoTile/AvatarView.d.ts.map +1 -1
  613. package/lib/typescript/components/PeerVideoTile/HMSFullScreenButton.d.ts +7 -0
  614. package/lib/typescript/components/PeerVideoTile/HMSFullScreenButton.d.ts.map +1 -0
  615. package/lib/typescript/components/PeerVideoTile/HMSPinchGesture.d.ts +7 -0
  616. package/lib/typescript/components/PeerVideoTile/HMSPinchGesture.d.ts.map +1 -0
  617. package/lib/typescript/components/PeerVideoTile/PeerAudioIndicator.d.ts +8 -0
  618. package/lib/typescript/components/PeerVideoTile/PeerAudioIndicator.d.ts.map +1 -0
  619. package/lib/typescript/components/PeerVideoTile/PeerNameAndNetwork.d.ts.map +1 -1
  620. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts +2 -1
  621. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  622. package/lib/typescript/components/PeerVideoTile/VideoView.d.ts +1 -0
  623. package/lib/typescript/components/PeerVideoTile/VideoView.d.ts.map +1 -1
  624. package/lib/typescript/components/PressableIcon.d.ts.map +1 -1
  625. package/lib/typescript/components/Preview.d.ts.map +1 -1
  626. package/lib/typescript/components/PreviewForRoleChangeModal.d.ts +3 -0
  627. package/lib/typescript/components/PreviewForRoleChangeModal.d.ts.map +1 -0
  628. package/lib/typescript/components/ReconnectionView.d.ts +4 -0
  629. package/lib/typescript/components/ReconnectionView.d.ts.map +1 -0
  630. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  631. package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
  632. package/lib/typescript/components/StreamingQualityModalContent.d.ts.map +1 -1
  633. package/lib/typescript/components/TilesContainer.d.ts.map +1 -1
  634. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  635. package/lib/typescript/components/WelcomeInMeeting.d.ts.map +1 -1
  636. package/lib/typescript/components/index.d.ts +0 -3
  637. package/lib/typescript/components/index.d.ts.map +1 -1
  638. package/lib/typescript/hooks-util-selectors.d.ts +7 -2
  639. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  640. package/lib/typescript/hooks-util.d.ts +53 -23
  641. package/lib/typescript/hooks-util.d.ts.map +1 -1
  642. package/lib/typescript/modules/HMSManager.d.ts +1 -1
  643. package/lib/typescript/modules/HMSManager.d.ts.map +1 -1
  644. package/lib/typescript/modules/parser.d.ts +1 -1
  645. package/lib/typescript/modules/parser.d.ts.map +1 -1
  646. package/lib/typescript/redux/actionTypes.d.ts +16 -1
  647. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  648. package/lib/typescript/redux/actions/index.d.ts +92 -4
  649. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  650. package/lib/typescript/redux/index.d.ts +22 -2
  651. package/lib/typescript/redux/index.d.ts.map +1 -1
  652. package/lib/typescript/redux/reducers/appState.d.ts +10 -0
  653. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  654. package/lib/typescript/redux/reducers/chatWindow.d.ts +6 -6
  655. package/lib/typescript/redux/reducers/chatWindow.d.ts.map +1 -1
  656. package/lib/typescript/redux/reducers/hmsStates.d.ts +32 -4
  657. package/lib/typescript/redux/reducers/hmsStates.d.ts.map +1 -1
  658. package/lib/typescript/redux/reducers/index.d.ts +22 -2
  659. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  660. package/lib/typescript/redux/reducers/userState.d.ts +1 -0
  661. package/lib/typescript/redux/reducers/userState.d.ts.map +1 -1
  662. package/lib/typescript/utils/functions.d.ts +3 -1
  663. package/lib/typescript/utils/functions.d.ts.map +1 -1
  664. package/lib/typescript/utils/theme.d.ts +1 -1
  665. package/lib/typescript/utils/theme.d.ts.map +1 -1
  666. package/lib/typescript/utils/types.d.ts +6 -2
  667. package/lib/typescript/utils/types.d.ts.map +1 -1
  668. package/lib/typescript/utils.d.ts +5 -0
  669. package/lib/typescript/utils.d.ts.map +1 -1
  670. package/package.json +13 -8
  671. package/src/HMSPrebuilt.tsx +10 -10
  672. package/src/HMSRoomSetup.tsx +50 -28
  673. package/src/Icons/AlertTriangle/assets/alert-triangle-filled.png +0 -0
  674. package/src/Icons/AlertTriangle/assets/alert-triangle-filled@2x.png +0 -0
  675. package/src/Icons/AlertTriangle/assets/alert-triangle-filled@3x.png +0 -0
  676. package/src/Icons/AlertTriangle/index.tsx +9 -2
  677. package/src/Icons/Eye/assets/eye-on-small.png +0 -0
  678. package/src/Icons/Eye/assets/eye-on-small@2x.png +0 -0
  679. package/src/Icons/Eye/assets/eye-on-small@3x.png +0 -0
  680. package/src/Icons/Eye/index.tsx +36 -0
  681. package/src/Icons/Person/assets/person-left.png +0 -0
  682. package/src/Icons/Person/assets/person-left@2x.png +0 -0
  683. package/src/Icons/Person/assets/person-left@3x.png +0 -0
  684. package/src/Icons/Person/assets/person-off.png +0 -0
  685. package/src/Icons/Person/assets/person-off@2x.png +0 -0
  686. package/src/Icons/Person/assets/person-off@3x.png +0 -0
  687. package/src/Icons/Person/assets/person-rectangle.png +0 -0
  688. package/src/Icons/Person/assets/person-rectangle@2x.png +0 -0
  689. package/src/Icons/Person/assets/person-rectangle@3x.png +0 -0
  690. package/src/Icons/Person/index.tsx +13 -2
  691. package/src/Icons/Search/assets/search.png +0 -0
  692. package/src/Icons/Search/assets/search@2x.png +0 -0
  693. package/src/Icons/Search/assets/search@3x.png +0 -0
  694. package/src/Icons/Search/index.tsx +33 -0
  695. package/src/Icons/index.ts +2 -0
  696. package/src/assets/audio-level-white.json +1271 -0
  697. package/src/assets/empty-chat-illustration/empty-chat.png +0 -0
  698. package/src/assets/empty-chat-illustration/empty-chat@2x.png +0 -0
  699. package/src/assets/empty-chat-illustration/empty-chat@3x.png +0 -0
  700. package/src/assets/welcome.png +0 -0
  701. package/src/components/AnimatedFooter.tsx +37 -0
  702. package/src/components/AnimatedHLSFooter.tsx +43 -0
  703. package/src/components/AnimatedHeader.tsx +53 -0
  704. package/src/components/BottomSheet.tsx +8 -4
  705. package/src/components/ChangeNameModalContent.tsx +2 -11
  706. package/src/components/Chat/ChatBanner.tsx +37 -52
  707. package/src/components/Chat/ChatFilterBottomSheetOpener.tsx +88 -0
  708. package/src/components/Chat/ChatFilterBottomSheetView.tsx +81 -0
  709. package/src/components/Chat/ChatFilterItem.tsx +71 -0
  710. package/src/components/Chat/ChatFilterView.tsx +250 -0
  711. package/src/components/Chat/ChatList.tsx +16 -12
  712. package/src/components/Chat/ChatMessage.tsx +48 -197
  713. package/src/components/Chat/PinnedMessage.tsx +45 -45
  714. package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +38 -0
  715. package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +140 -0
  716. package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +84 -0
  717. package/src/components/ChatAndParticipants/ChatView.tsx +42 -0
  718. package/src/components/ChatAndParticipants/ParticipantsView.tsx +41 -0
  719. package/src/components/ChatAndParticipants/index.ts +1 -0
  720. package/src/components/CompanyLogo.tsx +3 -2
  721. package/src/components/DefaultModal.tsx +4 -6
  722. package/src/components/DisplayView.tsx +10 -26
  723. package/src/components/EndRoomModalContent.tsx +32 -7
  724. package/src/components/Footer.tsx +93 -58
  725. package/src/components/FullScreenVideoView.tsx +77 -0
  726. package/src/components/GridView.tsx +186 -65
  727. package/src/components/HLSFooter.tsx +32 -0
  728. package/src/components/HLSView.tsx +5 -32
  729. package/src/components/HMSBaseButton.tsx +2 -2
  730. package/src/components/HMSChat.tsx +12 -25
  731. package/src/components/HMSHLSMessage.tsx +72 -0
  732. package/src/components/HMSHLSMessageList.tsx +60 -0
  733. package/src/components/HMSHLSNotStarted.tsx +8 -19
  734. package/src/components/HMSHandRaiseNotification.tsx +101 -0
  735. package/src/components/HMSKeyboardAvoidingView.tsx +58 -0
  736. package/src/components/HMSLiveIndicator.tsx +124 -0
  737. package/src/components/HMSLocalScreenshareNotification.tsx +41 -0
  738. package/src/components/HMSLocalVideoView.tsx +4 -31
  739. package/src/components/HMSManageAudioOutput.tsx +14 -2
  740. package/src/components/HMSManageLeave.tsx +46 -19
  741. package/src/components/HMSNotification.tsx +126 -0
  742. package/src/components/HMSNotifications.tsx +154 -0
  743. package/src/components/HMSOverlayChatView.tsx +36 -0
  744. package/src/components/HMSPreviewJoinButton.tsx +6 -3
  745. package/src/components/HMSPreviewNetworkQuality.tsx +3 -1
  746. package/src/components/HMSPreviewSubtitle.tsx +2 -6
  747. package/src/components/HMSPreviewTitle.tsx +2 -6
  748. package/src/components/HMSRecordingIndicator.tsx +13 -2
  749. package/src/components/HMSRoleChangeDeclinedNotification.tsx +25 -0
  750. package/src/components/HMSSendMessageInput.tsx +59 -0
  751. package/src/components/HMSTextInput.tsx +157 -23
  752. package/src/components/HMSVideoView.tsx +43 -0
  753. package/src/components/Header.tsx +25 -133
  754. package/src/components/LocalPeerScreenshareView.tsx +0 -6
  755. package/src/components/Meeting.tsx +15 -8
  756. package/src/components/MeetingScreenContent.tsx +28 -11
  757. package/src/components/MiniView.tsx +10 -4
  758. package/src/components/Modals.tsx +112 -370
  759. package/src/components/OverlayContainer.tsx +31 -0
  760. package/src/components/OverlayedViews.tsx +22 -0
  761. package/src/components/PaginationDots.tsx +9 -8
  762. package/src/components/Participants/ParticipantsGroupHeader.tsx +145 -0
  763. package/src/components/Participants/ParticipantsGroupOptions.tsx +87 -0
  764. package/src/components/Participants/ParticipantsItem.tsx +170 -0
  765. package/src/components/Participants/ParticipantsItemOption.tsx +52 -0
  766. package/src/components/Participants/ParticipantsItemOptions.tsx +262 -0
  767. package/src/components/Participants/ParticipantsList.tsx +68 -278
  768. package/src/components/Participants/ParticipantsSeachInput.tsx +37 -35
  769. package/src/components/Participants/index.ts +0 -3
  770. package/src/components/PeerMinimizedView.tsx +1 -1
  771. package/src/components/PeerSettingsModalContent.tsx +44 -191
  772. package/src/components/PeerVideoTile/AvatarView.tsx +43 -5
  773. package/src/components/PeerVideoTile/HMSFullScreenButton.tsx +56 -0
  774. package/src/components/PeerVideoTile/HMSPinchGesture.tsx +176 -0
  775. package/src/components/PeerVideoTile/PeerAudioIndicator.tsx +78 -0
  776. package/src/components/PeerVideoTile/PeerNameAndNetwork.tsx +15 -2
  777. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +172 -115
  778. package/src/components/PeerVideoTile/VideoView.tsx +59 -9
  779. package/src/components/PressableIcon.tsx +26 -13
  780. package/src/components/Preview.tsx +17 -24
  781. package/src/components/PreviewForRoleChangeModal.tsx +448 -0
  782. package/src/components/ReconnectionView.tsx +73 -0
  783. package/src/components/RoomSettingsModalContent.tsx +32 -30
  784. package/src/components/RoomSettingsModalDebugModeContent.tsx +11 -65
  785. package/src/components/StreamingQualityModalContent.tsx +8 -8
  786. package/src/components/TilesContainer.tsx +54 -24
  787. package/src/components/WebrtcView.tsx +29 -19
  788. package/src/components/WelcomeInMeeting.tsx +5 -34
  789. package/src/components/index.ts +0 -3
  790. package/src/hooks-util-selectors.tsx +69 -6
  791. package/src/hooks-util.ts +852 -270
  792. package/src/modules/HMSManager.ts +3 -3
  793. package/src/modules/parser.ts +3 -4
  794. package/src/redux/actionTypes.ts +33 -0
  795. package/src/redux/actions/index.ts +96 -1
  796. package/src/redux/reducers/appState.ts +83 -1
  797. package/src/redux/reducers/chatWindow.ts +12 -5
  798. package/src/redux/reducers/hmsStates.ts +136 -4
  799. package/src/redux/reducers/userState.ts +1 -1
  800. package/src/utils/functions.ts +9 -0
  801. package/src/utils/theme.ts +3 -1
  802. package/src/utils/types.ts +6 -2
  803. package/src/utils.ts +6 -0
  804. package/lib/commonjs/assets/100ms-logo.png +0 -0
  805. package/lib/commonjs/assets/brb.png +0 -0
  806. package/lib/commonjs/assets/icon.png +0 -0
  807. package/lib/commonjs/assets/illustration.png +0 -0
  808. package/lib/commonjs/assets/network_0.png +0 -0
  809. package/lib/commonjs/assets/network_1.png +0 -0
  810. package/lib/commonjs/assets/network_2.png +0 -0
  811. package/lib/commonjs/assets/network_3.png +0 -0
  812. package/lib/commonjs/assets/network_4.png +0 -0
  813. package/lib/commonjs/assets/user_music.png +0 -0
  814. package/lib/commonjs/components/ChatWindow.js +0 -608
  815. package/lib/commonjs/components/ChatWindow.js.map +0 -1
  816. package/lib/commonjs/components/CustomInput.js +0 -89
  817. package/lib/commonjs/components/CustomInput.js.map +0 -1
  818. package/lib/commonjs/components/DisplayTrack.js +0 -70
  819. package/lib/commonjs/components/DisplayTrack.js.map +0 -1
  820. package/lib/commonjs/components/HMSShareScreen.js +0 -59
  821. package/lib/commonjs/components/HMSShareScreen.js.map +0 -1
  822. package/lib/commonjs/components/HMSShowNetworkQuality.js +0 -56
  823. package/lib/commonjs/components/HMSShowNetworkQuality.js.map +0 -1
  824. package/lib/commonjs/components/LiveButton.js +0 -70
  825. package/lib/commonjs/components/LiveButton.js.map +0 -1
  826. package/lib/commonjs/components/Participants/ParticipantsFilter.js +0 -128
  827. package/lib/commonjs/components/Participants/ParticipantsFilter.js.map +0 -1
  828. package/lib/commonjs/components/Participants/ParticipantsHeader.js +0 -67
  829. package/lib/commonjs/components/Participants/ParticipantsHeader.js.map +0 -1
  830. package/lib/commonjs/components/Participants/SearchableParticipantsView.js.map +0 -1
  831. package/lib/commonjs/components/ParticipantsModal.js.map +0 -1
  832. package/lib/commonjs/components/PeerVideoTile/PeerAudioMutedIndicator.js.map +0 -1
  833. package/lib/commonjs/components/Picker.js +0 -93
  834. package/lib/commonjs/components/Picker.js.map +0 -1
  835. package/lib/module/assets/100ms-logo.png +0 -0
  836. package/lib/module/assets/brb.png +0 -0
  837. package/lib/module/assets/icon.png +0 -0
  838. package/lib/module/assets/illustration.png +0 -0
  839. package/lib/module/assets/network_0.png +0 -0
  840. package/lib/module/assets/network_1.png +0 -0
  841. package/lib/module/assets/network_2.png +0 -0
  842. package/lib/module/assets/network_3.png +0 -0
  843. package/lib/module/assets/network_4.png +0 -0
  844. package/lib/module/assets/user_music.png +0 -0
  845. package/lib/module/components/ChatWindow.js +0 -595
  846. package/lib/module/components/ChatWindow.js.map +0 -1
  847. package/lib/module/components/CustomInput.js +0 -82
  848. package/lib/module/components/CustomInput.js.map +0 -1
  849. package/lib/module/components/DisplayTrack.js +0 -63
  850. package/lib/module/components/DisplayTrack.js.map +0 -1
  851. package/lib/module/components/HMSShareScreen.js +0 -50
  852. package/lib/module/components/HMSShareScreen.js.map +0 -1
  853. package/lib/module/components/HMSShowNetworkQuality.js +0 -47
  854. package/lib/module/components/HMSShowNetworkQuality.js.map +0 -1
  855. package/lib/module/components/LiveButton.js +0 -61
  856. package/lib/module/components/LiveButton.js.map +0 -1
  857. package/lib/module/components/Participants/ParticipantsFilter.js +0 -121
  858. package/lib/module/components/Participants/ParticipantsFilter.js.map +0 -1
  859. package/lib/module/components/Participants/ParticipantsHeader.js +0 -58
  860. package/lib/module/components/Participants/ParticipantsHeader.js.map +0 -1
  861. package/lib/module/components/Participants/SearchableParticipantsView.js +0 -18
  862. package/lib/module/components/Participants/SearchableParticipantsView.js.map +0 -1
  863. package/lib/module/components/ParticipantsModal.js +0 -34
  864. package/lib/module/components/ParticipantsModal.js.map +0 -1
  865. package/lib/module/components/PeerVideoTile/PeerAudioMutedIndicator.js +0 -35
  866. package/lib/module/components/PeerVideoTile/PeerAudioMutedIndicator.js.map +0 -1
  867. package/lib/module/components/Picker.js +0 -83
  868. package/lib/module/components/Picker.js.map +0 -1
  869. package/lib/typescript/components/ChatWindow.d.ts +0 -22
  870. package/lib/typescript/components/ChatWindow.d.ts.map +0 -1
  871. package/lib/typescript/components/CustomInput.d.ts +0 -24
  872. package/lib/typescript/components/CustomInput.d.ts.map +0 -1
  873. package/lib/typescript/components/DisplayTrack.d.ts +0 -9
  874. package/lib/typescript/components/DisplayTrack.d.ts.map +0 -1
  875. package/lib/typescript/components/HMSShareScreen.d.ts +0 -9
  876. package/lib/typescript/components/HMSShareScreen.d.ts.map +0 -1
  877. package/lib/typescript/components/HMSShowNetworkQuality.d.ts +0 -3
  878. package/lib/typescript/components/HMSShowNetworkQuality.d.ts.map +0 -1
  879. package/lib/typescript/components/LiveButton.d.ts +0 -17
  880. package/lib/typescript/components/LiveButton.d.ts.map +0 -1
  881. package/lib/typescript/components/Participants/ParticipantsFilter.d.ts +0 -6
  882. package/lib/typescript/components/Participants/ParticipantsFilter.d.ts.map +0 -1
  883. package/lib/typescript/components/Participants/ParticipantsHeader.d.ts +0 -9
  884. package/lib/typescript/components/Participants/ParticipantsHeader.d.ts.map +0 -1
  885. package/lib/typescript/components/Participants/SearchableParticipantsView.d.ts +0 -3
  886. package/lib/typescript/components/Participants/SearchableParticipantsView.d.ts.map +0 -1
  887. package/lib/typescript/components/ParticipantsModal.d.ts +0 -5
  888. package/lib/typescript/components/ParticipantsModal.d.ts.map +0 -1
  889. package/lib/typescript/components/PeerVideoTile/PeerAudioMutedIndicator.d.ts +0 -6
  890. package/lib/typescript/components/PeerVideoTile/PeerAudioMutedIndicator.d.ts.map +0 -1
  891. package/lib/typescript/components/Picker.d.ts +0 -9
  892. package/lib/typescript/components/Picker.d.ts.map +0 -1
  893. package/src/assets/100ms-logo.png +0 -0
  894. package/src/assets/brb.png +0 -0
  895. package/src/assets/icon.png +0 -0
  896. package/src/assets/illustration.png +0 -0
  897. package/src/assets/network_0.png +0 -0
  898. package/src/assets/network_1.png +0 -0
  899. package/src/assets/network_2.png +0 -0
  900. package/src/assets/network_3.png +0 -0
  901. package/src/assets/network_4.png +0 -0
  902. package/src/assets/user_music.png +0 -0
  903. package/src/components/ChatWindow.tsx +0 -706
  904. package/src/components/CustomInput.tsx +0 -138
  905. package/src/components/DisplayTrack.tsx +0 -92
  906. package/src/components/HMSShareScreen.tsx +0 -71
  907. package/src/components/HMSShowNetworkQuality.tsx +0 -68
  908. package/src/components/LiveButton.tsx +0 -77
  909. package/src/components/Participants/ParticipantsFilter.tsx +0 -144
  910. package/src/components/Participants/ParticipantsHeader.tsx +0 -64
  911. package/src/components/Participants/SearchableParticipantsView.tsx +0 -21
  912. package/src/components/ParticipantsModal.tsx +0 -46
  913. package/src/components/PeerVideoTile/PeerAudioMutedIndicator.tsx +0 -41
  914. package/src/components/Picker.tsx +0 -108
package/src/hooks-util.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  HMSConfig,
4
4
  HMSLocalPeer,
5
5
  HMSMessage,
6
+ HMSMessageRecipientType,
6
7
  HMSPIPListenerActions,
7
8
  HMSPeer,
8
9
  HMSPeerUpdate,
@@ -16,15 +17,21 @@ import {
16
17
  HMSTrackType,
17
18
  HMSTrackUpdate,
18
19
  HMSUpdateListenerActions,
20
+ HMSMessageRecipient,
19
21
  // useHMSPeerUpdates,
20
22
  } from '@100mslive/react-native-hms';
23
+ import type { Chat as ChatConfig } from '@100mslive/types-prebuilt/elements/chat';
21
24
  import type {
25
+ HMSRole,
22
26
  HMSSessionStore,
23
27
  HMSSessionStoreValue,
24
28
  HMSSpeaker,
25
29
  } from '@100mslive/react-native-hms';
26
30
  import type {
27
31
  ColorPalette,
32
+ DefaultConferencingScreen,
33
+ HLSLiveStreamingScreen,
34
+ Layout,
28
35
  Theme,
29
36
  Typography,
30
37
  } from '@100mslive/types-prebuilt';
@@ -40,7 +47,7 @@ import {
40
47
  import type { DependencyList } from 'react';
41
48
 
42
49
  import { MaxTilesInOnePage, ModalTypes, PipModes } from './utils/types';
43
- import type { PeerTrackNode } from './utils/types';
50
+ import type { ChatBroadcastFilter, PeerTrackNode } from './utils/types';
44
51
  import { createPeerTrackNode, parseMetadata } from './utils/functions';
45
52
  import {
46
53
  batch,
@@ -52,12 +59,22 @@ import {
52
59
  import type { RootState } from './redux';
53
60
  import {
54
61
  addMessage,
62
+ addNotification,
63
+ addParticipant,
55
64
  addPinnedMessage,
65
+ addScreenshareTile,
66
+ addUpdateParticipant,
56
67
  changeMeetingState,
57
68
  changePipModeStatus,
58
69
  changeStartingHLSStream,
59
70
  clearStore,
71
+ removeNotification,
72
+ removeParticipant,
73
+ removeScreenshareTile,
60
74
  saveUserData,
75
+ setActiveChatBottomSheetTab,
76
+ setActiveSpeakers,
77
+ setFullScreenPeerTrackNode,
61
78
  setHMSLocalPeerState,
62
79
  setHMSRoleState,
63
80
  setHMSRoomState,
@@ -67,9 +84,13 @@ import {
67
84
  setLocalPeerTrackNode,
68
85
  setMiniViewPeerTrackNode,
69
86
  setModalType,
87
+ setReconnecting,
88
+ setRoleChangeRequest,
70
89
  setStartingOrStoppingRecording,
90
+ updateFullScreenPeerTrackNode,
71
91
  updateLocalPeerTrackNode,
72
92
  updateMiniViewPeerTrackNode,
93
+ updateScreenshareTile,
73
94
  } from './redux/actions';
74
95
  import {
75
96
  createPeerTrackNodeUniqueId,
@@ -85,6 +106,7 @@ import { MeetingState } from './types';
85
106
  import {
86
107
  AppState,
87
108
  InteractionManager,
109
+ Keyboard,
88
110
  LayoutAnimation,
89
111
  Platform,
90
112
  } from 'react-native';
@@ -95,13 +117,17 @@ import {
95
117
  useIsPortraitOrientation,
96
118
  } from './utils/dimension';
97
119
  import {
98
- useSafeAreaFrame,
99
- useSafeAreaInsets,
100
- } from 'react-native-safe-area-context';
101
- import { selectIsHLSViewer, selectShouldGoLive } from './hooks-util-selectors';
120
+ selectChatLayoutConfig,
121
+ selectConferencingScreenConfig,
122
+ selectIsHLSViewer,
123
+ selectLayoutConfigForRole,
124
+ selectShouldGoLive,
125
+ selectVideoTileLayoutConfig,
126
+ } from './hooks-util-selectors';
102
127
  import type { GridViewRefAttrs } from './components/GridView';
103
128
  import { getRoomLayout } from './modules/HMSManager';
104
129
  import { DEFAULT_THEME, DEFAULT_TYPOGRAPHY } from './utils/theme';
130
+ import { NotificationTypes } from './utils';
105
131
 
106
132
  export const useHMSListeners = (
107
133
  setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
@@ -129,21 +155,6 @@ const useHMSRoomUpdate = (hmsInstance: HMSSDK) => {
129
155
 
130
156
  dispatch(setHMSRoomState(room));
131
157
 
132
- /**
133
- * Handle case when User is joining as HLSViewer,
134
- * before ON_JOIN, if ON_ROOM comes then we can show Meeting screen to user, instead of Loader or Preview
135
- */
136
- if (room.localPeer.role?.name?.includes('hls-') ?? false) {
137
- const meetingState = reduxStore.getState().app.meetingState;
138
-
139
- batch(() => {
140
- dispatch(setHMSLocalPeerState(room.localPeer));
141
- if (meetingState !== MeetingState.IN_MEETING) {
142
- dispatch(changeMeetingState(MeetingState.IN_MEETING));
143
- }
144
- });
145
- }
146
-
147
158
  if (type === HMSRoomUpdate.BROWSER_RECORDING_STATE_UPDATED) {
148
159
  const startingOrStoppingRecording =
149
160
  reduxStore.getState().app.startingOrStoppingRecording;
@@ -151,37 +162,8 @@ const useHMSRoomUpdate = (hmsInstance: HMSSDK) => {
151
162
  if (startingOrStoppingRecording) {
152
163
  dispatch(setStartingOrStoppingRecording(false));
153
164
  }
154
-
155
- let streaming = room?.browserRecordingState?.running;
156
- const startAtDate = room?.browserRecordingState?.startedAt;
157
-
158
- let startTime: null | string = null;
159
-
160
- if (startAtDate) {
161
- let hours = startAtDate.getHours().toString();
162
- let minutes = startAtDate.getMinutes()?.toString();
163
- startTime = hours + ':' + minutes;
164
- }
165
-
166
- Toast.showWithGravity(
167
- `Browser Recording ${
168
- streaming
169
- ? `Started ${startTime ? 'At ' + startTime : ''}`
170
- : 'Stopped'
171
- }`,
172
- Toast.LONG,
173
- Toast.TOP
174
- );
175
165
  } else if (type === HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED) {
176
166
  dispatch(changeStartingHLSStream(false));
177
-
178
- let streaming = room?.hlsStreamingState?.running;
179
-
180
- Toast.showWithGravity(
181
- `HLS Streaming ${streaming ? 'Started' : 'Stopped'}`,
182
- Toast.LONG,
183
- Toast.TOP
184
- );
185
167
  } else if (type === HMSRoomUpdate.RTMP_STREAMING_STATE_UPDATED) {
186
168
  let streaming = room?.rtmpHMSRtmpStreamingState?.running;
187
169
  const startAtDate = room?.rtmpHMSRtmpStreamingState?.startedAt;
@@ -268,41 +250,108 @@ const useHMSPeersUpdate = (
268
250
 
269
251
  // Handle State for Meeting screen
270
252
  if (type === HMSPeerUpdate.PEER_JOINED) {
253
+ dispatch(addParticipant(peer));
271
254
  return;
272
255
  }
273
256
  if (type === HMSPeerUpdate.PEER_LEFT) {
257
+ dispatch(removeParticipant(peer));
258
+
259
+ // Handling regular tiles list
274
260
  setPeerTrackNodes((prevPeerTrackNodes) =>
275
261
  removePeerTrackNodes(prevPeerTrackNodes, peer)
276
262
  );
263
+
264
+ const reduxState = store.getState();
265
+
266
+ // Handling Screenshare tiles list
267
+ const screensharePeerTrackNodes =
268
+ reduxState.app.screensharePeerTrackNodes;
269
+ const nodeToRemove = screensharePeerTrackNodes.find(
270
+ (node) => node.peer.peerID === peer.peerID
271
+ );
272
+ if (nodeToRemove) {
273
+ dispatch(removeScreenshareTile(nodeToRemove.id));
274
+ }
275
+
276
+ // Handling Full screen view
277
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
278
+ if (
279
+ fullScreenPeerTrackNode !== null &&
280
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
281
+ ) {
282
+ dispatch(setFullScreenPeerTrackNode(null));
283
+ }
277
284
  return;
278
285
  }
279
286
  if (peer.isLocal) {
280
- setPeerTrackNodes((prevPeerTrackNodes) => {
281
- if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
282
- return replacePeerTrackNodes(prevPeerTrackNodes, peer);
283
- }
284
- return prevPeerTrackNodes;
285
- });
286
-
287
287
  const reduxState = store.getState();
288
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
288
289
  const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
289
290
  const localPeerTrackNode = reduxState.app.localPeerTrackNode;
290
291
 
292
+ // Currently Applied Layout config
293
+ const currentLayoutConfig = selectLayoutConfigForRole(
294
+ reduxState.hmsStates.layoutConfig,
295
+ peer.role || null
296
+ );
297
+
298
+ // Local Tile Inset layout is enabled
299
+ const enableLocalTileInset =
300
+ selectVideoTileLayoutConfig(currentLayoutConfig)?.grid
301
+ ?.enable_local_tile_inset;
302
+
303
+ // Local Tile Inset layout is disabled
304
+ const localTileInsetDisbaled = !enableLocalTileInset;
305
+
306
+ // Local Tile Inset layout is disabled
307
+ // then update local peer track node available in list of peer track nodes
308
+ if (localTileInsetDisbaled) {
309
+ setPeerTrackNodes((prevPeerTrackNodes) => {
310
+ if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
311
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
312
+ }
313
+ return prevPeerTrackNodes;
314
+ });
315
+ }
316
+
291
317
  batch(() => {
292
318
  if (localPeerTrackNode) {
293
319
  dispatch(updateLocalPeerTrackNode({ peer }));
294
- } else {
320
+ } else if (isPublishingAllowed(peer)) {
295
321
  dispatch(
296
322
  setLocalPeerTrackNode(createPeerTrackNode(peer, peer.videoTrack))
297
323
  );
298
324
  }
299
325
 
300
- // only set `localPeerTrackNode` as miniview peer track node when we are already using it.
301
326
  if (
302
- miniviewPeerTrackNode &&
303
- miniviewPeerTrackNode.peer.peerID === peer.peerID
327
+ fullScreenPeerTrackNode &&
328
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
304
329
  ) {
305
- dispatch(updateMiniViewPeerTrackNode({ peer }));
330
+ dispatch(updateFullScreenPeerTrackNode({ peer }));
331
+ }
332
+
333
+ // If Local Tile Inset layout is enabled, then update or set it
334
+ if (enableLocalTileInset) {
335
+ if (
336
+ miniviewPeerTrackNode !== null &&
337
+ miniviewPeerTrackNode.peer.peerID === peer.peerID
338
+ ) {
339
+ dispatch(updateMiniViewPeerTrackNode({ peer }));
340
+ } else if (
341
+ miniviewPeerTrackNode === null &&
342
+ peer.role?.publishSettings?.allowed &&
343
+ peer.role.publishSettings.allowed.length > 0
344
+ ) {
345
+ dispatch(
346
+ setMiniViewPeerTrackNode(
347
+ createPeerTrackNode(peer, peer.videoTrack)
348
+ )
349
+ );
350
+ }
351
+ }
352
+ // If Local Tile Inset layout is disabled, then remove it if it exists
353
+ else if (miniviewPeerTrackNode) {
354
+ dispatch(setMiniViewPeerTrackNode(null));
306
355
  }
307
356
  });
308
357
 
@@ -312,6 +361,9 @@ const useHMSPeersUpdate = (
312
361
  return;
313
362
  }
314
363
  if (type === HMSPeerUpdate.ROLE_CHANGED) {
364
+ dispatch(addUpdateParticipant(peer));
365
+
366
+ // Handling regular tiles list
315
367
  if (
316
368
  peer.role?.publishSettings?.allowed === undefined ||
317
369
  (peer.role?.publishSettings?.allowed &&
@@ -324,6 +376,40 @@ const useHMSPeersUpdate = (
324
376
  return prevPeerTrackNodes;
325
377
  });
326
378
  }
379
+
380
+ const reduxState = store.getState();
381
+
382
+ // Handling screenshare tiles list
383
+ if (
384
+ peer.role?.publishSettings?.allowed === undefined ||
385
+ (peer.role?.publishSettings?.allowed &&
386
+ !peer.role?.publishSettings?.allowed.includes('screen'))
387
+ ) {
388
+ const screensharePeerTrackNodes =
389
+ reduxState.app.screensharePeerTrackNodes;
390
+ const nodeToRemove = screensharePeerTrackNodes.find(
391
+ (node) => node.peer.peerID === peer.peerID
392
+ );
393
+ if (nodeToRemove) {
394
+ dispatch(removeScreenshareTile(nodeToRemove.id));
395
+ }
396
+ }
397
+
398
+ // Handling full screen view
399
+ if (
400
+ peer.role?.publishSettings?.allowed === undefined ||
401
+ (peer.role?.publishSettings?.allowed &&
402
+ !peer.role?.publishSettings?.allowed.includes('video'))
403
+ ) {
404
+ const fullScreenPeerTrackNode =
405
+ reduxState.app.fullScreenPeerTrackNode;
406
+ if (
407
+ fullScreenPeerTrackNode !== null &&
408
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
409
+ ) {
410
+ dispatch(setFullScreenPeerTrackNode(null));
411
+ }
412
+ }
327
413
  return;
328
414
  }
329
415
  if (
@@ -331,12 +417,80 @@ const useHMSPeersUpdate = (
331
417
  type === HMSPeerUpdate.NAME_CHANGED ||
332
418
  type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
333
419
  ) {
420
+ dispatch(addUpdateParticipant(peer));
421
+
422
+ const reduxState = store.getState();
423
+
424
+ if (type === HMSPeerUpdate.METADATA_CHANGED) {
425
+ const handRaised = parseMetadata(peer.metadata).isHandRaised;
426
+
427
+ if (handRaised) {
428
+ const { layoutConfig, localPeer } = reduxState.hmsStates;
429
+
430
+ const selectedLayoutConfig = selectLayoutConfigForRole(
431
+ layoutConfig,
432
+ localPeer?.role || null
433
+ );
434
+
435
+ // list of roles which should be brought on stage when they raise hand
436
+ const offStageRoles =
437
+ selectedLayoutConfig?.screens?.conferencing?.default?.elements
438
+ ?.on_stage_exp?.off_stage_roles;
439
+
440
+ // checking if the current peer role is included in the above list
441
+ const shouldBringOnStage =
442
+ offStageRoles && offStageRoles.includes(peer.role?.name!);
443
+
444
+ const canChangeRole =
445
+ reduxState.hmsStates.localPeer?.role?.permissions?.changeRole;
446
+
447
+ if (shouldBringOnStage && canChangeRole) {
448
+ dispatch(
449
+ addNotification({
450
+ id: `${peer.peerID}-${NotificationTypes.HAND_RAISE}`,
451
+ type: NotificationTypes.HAND_RAISE,
452
+ peer,
453
+ })
454
+ );
455
+ }
456
+ } else {
457
+ const notifications = reduxState.app.notifications;
458
+ const notificationToRemove = notifications.find(
459
+ (notification) =>
460
+ notification.id ===
461
+ `${peer.peerID}-${NotificationTypes.HAND_RAISE}`
462
+ );
463
+ if (notificationToRemove) {
464
+ dispatch(removeNotification(notificationToRemove.id));
465
+ }
466
+ }
467
+ }
468
+
334
469
  setPeerTrackNodes((prevPeerTrackNodes) => {
335
470
  if (peerTrackNodeExistForPeer(prevPeerTrackNodes, peer)) {
336
471
  return replacePeerTrackNodes(prevPeerTrackNodes, peer);
337
472
  }
338
473
  return prevPeerTrackNodes;
339
474
  });
475
+
476
+ // Handling screenshare tile views
477
+ const screensharePeerTrackNodes =
478
+ reduxState.app.screensharePeerTrackNodes;
479
+ const nodeToUpdate = screensharePeerTrackNodes.find(
480
+ (node) => node.peer.peerID === peer.peerID
481
+ );
482
+ if (nodeToUpdate) {
483
+ dispatch(updateScreenshareTile({ id: nodeToUpdate.id, peer }));
484
+ }
485
+
486
+ // Handling fullscreen view
487
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
488
+ if (
489
+ fullScreenPeerTrackNode !== null &&
490
+ fullScreenPeerTrackNode.peer.peerID === peer.peerID
491
+ ) {
492
+ dispatch(updateFullScreenPeerTrackNode({ peer }));
493
+ }
340
494
  return;
341
495
  }
342
496
  };
@@ -358,6 +512,14 @@ type TrackUpdate = {
358
512
  type: HMSTrackUpdate;
359
513
  };
360
514
 
515
+ export const isPublishingAllowed = (peer: HMSPeer): boolean => {
516
+ return (
517
+ (peer.role?.publishSettings?.allowed &&
518
+ peer.role?.publishSettings?.allowed?.length > 0) ??
519
+ false
520
+ );
521
+ };
522
+
361
523
  const useHMSTrackUpdate = (
362
524
  hmsInstance: HMSSDK,
363
525
  updateLocalPeer: () => void,
@@ -369,48 +531,66 @@ const useHMSTrackUpdate = (
369
531
  useEffect(() => {
370
532
  const trackUpdateHandler = ({ peer, track, type }: TrackUpdate) => {
371
533
  const reduxState = store.getState();
534
+ const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
372
535
  const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
373
536
  const localPeerTrackNode = reduxState.app.localPeerTrackNode;
374
537
 
538
+ const currentLayoutConfig = selectLayoutConfigForRole(
539
+ reduxState.hmsStates.layoutConfig,
540
+ reduxState.hmsStates.localPeer?.role ?? null
541
+ );
542
+
543
+ const localTileInsetEnabled =
544
+ selectVideoTileLayoutConfig(currentLayoutConfig)?.grid
545
+ ?.enable_local_tile_inset;
546
+
375
547
  if (type === HMSTrackUpdate.TRACK_ADDED) {
376
548
  const newPeerTrackNode = createPeerTrackNode(peer, track);
377
549
 
378
- const willCreateMiniviewPeerTrackNode =
379
- !miniviewPeerTrackNode &&
380
- peer.isLocal &&
381
- track.source === HMSTrackSource.REGULAR;
550
+ if (track.source === HMSTrackSource.SCREEN) {
551
+ if (!peer.isLocal && track.type === HMSTrackType.VIDEO) {
552
+ dispatch(addScreenshareTile(newPeerTrackNode));
553
+ }
554
+ } else {
555
+ setPeerTrackNodes((prevPeerTrackNodes) => {
556
+ if (
557
+ peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
558
+ ) {
559
+ if (track.type === HMSTrackType.VIDEO) {
560
+ return replacePeerTrackNodesWithTrack(
561
+ prevPeerTrackNodes,
562
+ peer,
563
+ track
564
+ );
565
+ }
566
+ return replacePeerTrackNodes(prevPeerTrackNodes, peer);
567
+ }
382
568
 
383
- setPeerTrackNodes((prevPeerTrackNodes) => {
384
- if (
385
- peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
386
- ) {
387
- if (track.type === HMSTrackType.VIDEO) {
388
- return replacePeerTrackNodesWithTrack(
389
- prevPeerTrackNodes,
390
- peer,
391
- track
392
- );
569
+ if (peer.isLocal && !localTileInsetEnabled) {
570
+ return [newPeerTrackNode, ...prevPeerTrackNodes];
393
571
  }
394
- return replacePeerTrackNodes(prevPeerTrackNodes, peer);
395
- }
396
572
 
397
- if (
398
- miniviewPeerTrackNode
399
- ? newPeerTrackNode.id !== miniviewPeerTrackNode.id
400
- : !willCreateMiniviewPeerTrackNode
401
- ) {
402
- return [...prevPeerTrackNodes, newPeerTrackNode];
403
- }
573
+ if (
574
+ !peer.isLocal &&
575
+ (miniviewPeerTrackNode
576
+ ? newPeerTrackNode.id !== miniviewPeerTrackNode.id
577
+ : true)
578
+ ) {
579
+ return [...prevPeerTrackNodes, newPeerTrackNode];
580
+ }
404
581
 
405
- return prevPeerTrackNodes;
406
- });
582
+ return prevPeerTrackNodes;
583
+ });
584
+ }
407
585
 
408
586
  // - TODO: update local localPeer state
409
587
  // - Pass this updated data to Meeting component -> DisplayView component
410
588
  if (peer.isLocal) {
411
589
  if (track.source === HMSTrackSource.REGULAR) {
412
590
  if (!localPeerTrackNode) {
413
- dispatch(setLocalPeerTrackNode(newPeerTrackNode));
591
+ if (isPublishingAllowed(newPeerTrackNode.peer)) {
592
+ dispatch(setLocalPeerTrackNode(newPeerTrackNode));
593
+ }
414
594
  } else {
415
595
  dispatch(
416
596
  updateLocalPeerTrackNode(
@@ -419,18 +599,28 @@ const useHMSTrackUpdate = (
419
599
  );
420
600
  }
421
601
 
422
- // only setting `miniviewPeerTrackNode`, when:
423
- // - there is no `miniviewPeerTrackNode`
424
- // - if there is, then it is of regular track
425
- if (!miniviewPeerTrackNode) {
426
- dispatch(setMiniViewPeerTrackNode(newPeerTrackNode));
427
- } else if (miniviewPeerTrackNode.id === newPeerTrackNode.id) {
428
- dispatch(
429
- updateMiniViewPeerTrackNode(
430
- track.type === HMSTrackType.VIDEO ? { peer, track } : { peer }
431
- )
432
- );
602
+ if (localTileInsetEnabled) {
603
+ // only setting `miniviewPeerTrackNode`, when:
604
+ // - there is no `miniviewPeerTrackNode`
605
+ // - if there is, then it is of regular track
606
+ if (!miniviewPeerTrackNode) {
607
+ dispatch(setMiniViewPeerTrackNode(newPeerTrackNode));
608
+ } else if (miniviewPeerTrackNode.id === newPeerTrackNode.id) {
609
+ dispatch(
610
+ updateMiniViewPeerTrackNode(
611
+ track.type === HMSTrackType.VIDEO
612
+ ? { peer, track }
613
+ : { peer }
614
+ )
615
+ );
616
+ }
433
617
  }
618
+
619
+ // if (track.type === HMSTrackType.AUDIO) {
620
+ // dispatch(setIsLocalAudioMutedState(track.isMute()));
621
+ // } else if (track.type === HMSTrackType.VIDEO) {
622
+ // dispatch(setIsLocalVideoMutedState(track.isMute()));
623
+ // }
434
624
  }
435
625
  // else -> {
436
626
  // should `localPeerTrackNode` be created/updated for non-regular track addition?
@@ -456,8 +646,19 @@ const useHMSTrackUpdate = (
456
646
  return;
457
647
  }
458
648
  if (type === HMSTrackUpdate.TRACK_REMOVED) {
459
- if (
460
- track.source !== HMSTrackSource.REGULAR ||
649
+ if (track.source === HMSTrackSource.SCREEN) {
650
+ if (!peer.isLocal && track.type === HMSTrackType.VIDEO) {
651
+ const screensharePeerTrackNodes =
652
+ reduxState.app.screensharePeerTrackNodes;
653
+ const nodeToRemove = screensharePeerTrackNodes.find(
654
+ (node) => node.track?.trackId === track.trackId
655
+ );
656
+ if (nodeToRemove) {
657
+ dispatch(removeScreenshareTile(nodeToRemove.id));
658
+ }
659
+ }
660
+ } else if (
661
+ track.source === HMSTrackSource.PLUGIN ||
461
662
  (peer.audioTrack?.trackId === undefined &&
462
663
  peer.videoTrack?.trackId === undefined)
463
664
  ) {
@@ -466,6 +667,14 @@ const useHMSTrackUpdate = (
466
667
  );
467
668
  }
468
669
 
670
+ if (
671
+ fullScreenPeerTrackNode &&
672
+ fullScreenPeerTrackNode.track &&
673
+ fullScreenPeerTrackNode.track.trackId === track.trackId
674
+ ) {
675
+ dispatch(setFullScreenPeerTrackNode(null));
676
+ }
677
+
469
678
  // - TODO: update local localPeer state
470
679
  // - Pass this updated data to Meeting component -> DisplayView component
471
680
  if (peer.isLocal) {
@@ -552,48 +761,67 @@ const useHMSTrackUpdate = (
552
761
 
553
762
  // - TODO: update local localPeer state
554
763
  // - Pass this updated data to Meeting component -> DisplayView component
555
- if (peer.isLocal) {
556
- const updatePayload =
557
- track.type === HMSTrackType.VIDEO ? { peer, track } : { peer };
764
+ const updatePayload =
765
+ track.type === HMSTrackType.VIDEO ? { peer, track } : { peer };
558
766
 
767
+ if (peer.isLocal) {
559
768
  dispatch(updateLocalPeerTrackNode(updatePayload));
560
-
561
- // Take care of miniviewPeerTrackNode
562
- if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
563
- dispatch(updateMiniViewPeerTrackNode(updatePayload));
564
- }
565
-
566
769
  updateLocalPeer();
567
- } else {
568
- if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
569
- const updatePayload =
570
- track.type === HMSTrackType.VIDEO ? { peer, track } : { peer };
770
+ }
571
771
 
572
- dispatch(updateMiniViewPeerTrackNode(updatePayload));
573
- }
772
+ if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
773
+ dispatch(updateMiniViewPeerTrackNode(updatePayload));
774
+ }
775
+
776
+ if (
777
+ fullScreenPeerTrackNode &&
778
+ fullScreenPeerTrackNode.id === uniqueId
779
+ ) {
780
+ dispatch(updateFullScreenPeerTrackNode(updatePayload));
574
781
  }
782
+
575
783
  return;
576
784
  }
577
785
  if (
578
786
  type === HMSTrackUpdate.TRACK_RESTORED ||
579
787
  type === HMSTrackUpdate.TRACK_DEGRADED
580
788
  ) {
581
- setPeerTrackNodes((prevPeerTrackNodes) => {
582
- if (
583
- peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
584
- ) {
585
- return degradeOrRestorePeerTrackNodes(
586
- prevPeerTrackNodes,
587
- peer,
588
- track,
589
- type === HMSTrackUpdate.TRACK_DEGRADED
789
+ // Checking if track source is screenshare
790
+ if (track.source === HMSTrackSource.SCREEN) {
791
+ // Handling screenshare tiles list
792
+ const screensharePeerTrackNodes =
793
+ reduxState.app.screensharePeerTrackNodes;
794
+ const nodeToUpdate = screensharePeerTrackNodes.find(
795
+ (node) => node.track?.trackId === track.trackId
796
+ );
797
+ if (nodeToUpdate) {
798
+ dispatch(
799
+ updateScreenshareTile({
800
+ id: nodeToUpdate.id,
801
+ isDegraded: type === HMSTrackUpdate.TRACK_DEGRADED,
802
+ })
590
803
  );
591
804
  }
592
- return prevPeerTrackNodes;
593
- });
805
+ } else {
806
+ // Handling regular tiles list
807
+ setPeerTrackNodes((prevPeerTrackNodes) => {
808
+ if (
809
+ peerTrackNodeExistForPeerAndTrack(prevPeerTrackNodes, peer, track)
810
+ ) {
811
+ return degradeOrRestorePeerTrackNodes(
812
+ prevPeerTrackNodes,
813
+ peer,
814
+ track,
815
+ type === HMSTrackUpdate.TRACK_DEGRADED
816
+ );
817
+ }
818
+ return prevPeerTrackNodes;
819
+ });
820
+ }
594
821
 
595
822
  const uniqueId = createPeerTrackNodeUniqueId(peer, track);
596
823
 
824
+ // Handling miniview
597
825
  if (miniviewPeerTrackNode && miniviewPeerTrackNode.id === uniqueId) {
598
826
  dispatch(
599
827
  updateMiniViewPeerTrackNode({
@@ -601,6 +829,18 @@ const useHMSTrackUpdate = (
601
829
  })
602
830
  );
603
831
  }
832
+
833
+ // Handling full screen view
834
+ if (
835
+ fullScreenPeerTrackNode &&
836
+ fullScreenPeerTrackNode.id === uniqueId
837
+ ) {
838
+ dispatch(
839
+ updateFullScreenPeerTrackNode({
840
+ isDegraded: type === HMSTrackUpdate.TRACK_DEGRADED,
841
+ })
842
+ );
843
+ }
604
844
  return;
605
845
  }
606
846
  };
@@ -651,9 +891,14 @@ export const useHMSInstance = () => {
651
891
  };
652
892
 
653
893
  export const useIsHLSViewer = () => {
654
- return useSelector((state: RootState) =>
655
- selectIsHLSViewer(state.hmsStates.localPeer)
656
- );
894
+ return useSelector((state: RootState) => {
895
+ const { layoutConfig, localPeer } = state.hmsStates;
896
+ const selectedLayoutConfig = selectLayoutConfigForRole(
897
+ layoutConfig,
898
+ localPeer?.role || null
899
+ );
900
+ return selectIsHLSViewer(localPeer?.role, selectedLayoutConfig);
901
+ });
657
902
  };
658
903
 
659
904
  type TrackStateChangeRequest = {
@@ -702,26 +947,20 @@ export const useHMSChangeTrackStateRequest = (
702
947
  return trackStateChangeRequest;
703
948
  };
704
949
 
705
- type RoleChangeRequest = {
706
- requestedBy?: string;
707
- suggestedRole?: string;
708
- };
709
-
710
950
  export const useHMSRoleChangeRequest = (
711
951
  callback?: (request: HMSRoleChangeRequest) => void,
712
952
  deps?: React.DependencyList
713
953
  ) => {
954
+ const taskRef = useRef<any>(null);
955
+ const dispatch = useDispatch();
714
956
  const hmsInstance = useHMSInstance();
715
- const [roleChangeRequest, setRoleChangeRequest] =
716
- useState<RoleChangeRequest | null>(null);
717
957
 
718
958
  useEffect(() => {
719
- const changeRoleRequestHandler = (request: HMSRoleChangeRequest) => {
720
- setRoleChangeRequest({
721
- requestedBy: request?.requestedBy?.name,
722
- suggestedRole: request?.suggestedRole?.name,
959
+ const changeRoleRequestHandler = async (request: HMSRoleChangeRequest) => {
960
+ taskRef.current = InteractionManager.runAfterInteractions(() => {
961
+ dispatch(setRoleChangeRequest(request));
962
+ callback?.(request);
723
963
  });
724
- callback?.(request);
725
964
  };
726
965
 
727
966
  hmsInstance.addEventListener(
@@ -730,13 +969,12 @@ export const useHMSRoleChangeRequest = (
730
969
  );
731
970
 
732
971
  return () => {
972
+ taskRef.current?.cancel();
733
973
  hmsInstance.removeEventListener(
734
974
  HMSUpdateListenerActions.ON_ROLE_CHANGE_REQUEST
735
975
  );
736
976
  };
737
977
  }, [...(deps || []), hmsInstance]);
738
-
739
- return roleChangeRequest;
740
978
  };
741
979
 
742
980
  type SessionStoreListeners = Array<{ remove: () => void }>;
@@ -762,7 +1000,7 @@ export const useHMSSessionStoreListeners = (
762
1000
  dispatch(saveUserData({ spotlightTrackId: id }));
763
1001
  // Scroll to start of the list
764
1002
  gridViewRef.current
765
- ?.getFlatlistRef()
1003
+ ?.getRegularTilesFlatlistRef()
766
1004
  .current?.scrollToOffset({ animated: true, offset: 0 });
767
1005
  };
768
1006
 
@@ -917,10 +1155,31 @@ export const useHMSSessionStore = () => {
917
1155
  export const useHMSMessages = () => {
918
1156
  const hmsInstance = useHMSInstance();
919
1157
  const dispatch = useDispatch();
1158
+ const canChangeRole = useSelector(
1159
+ (state: RootState) =>
1160
+ state.hmsStates.localPeer?.role?.permissions?.changeRole
1161
+ );
1162
+ const canShowChat = useHMSConferencingScreenConfig(
1163
+ (conferencingScreenConfig) => !!conferencingScreenConfig?.elements?.chat
1164
+ );
920
1165
 
921
1166
  useEffect(() => {
922
1167
  const onMessageListener = (message: HMSMessage) => {
923
- dispatch(addMessage(message));
1168
+ if (message.type === NotificationTypes.ROLE_CHANGE_DECLINED) {
1169
+ if (canChangeRole) {
1170
+ dispatch(
1171
+ addNotification({
1172
+ id: `${message.sender?.peerID}-${NotificationTypes.ROLE_CHANGE_DECLINED}`,
1173
+ type: NotificationTypes.ROLE_CHANGE_DECLINED,
1174
+ peer: message.sender!,
1175
+ })
1176
+ );
1177
+ }
1178
+ } else if (message.type === 'EMOJI_REACTION') {
1179
+ console.log('Ignoring Emoji Reaction Message: ', message);
1180
+ } else if (canShowChat) {
1181
+ dispatch(addMessage(message));
1182
+ }
924
1183
  };
925
1184
 
926
1185
  hmsInstance.addEventListener(
@@ -932,12 +1191,38 @@ export const useHMSMessages = () => {
932
1191
  // TODO: Remove this listener when user leaves, removed or room is ended
933
1192
  hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_MESSAGE);
934
1193
  };
1194
+ }, [canChangeRole, canShowChat, hmsInstance]);
1195
+ };
1196
+
1197
+ export const useHMSReconnection = () => {
1198
+ const dispatch = useDispatch();
1199
+ const hmsInstance = useHMSInstance();
1200
+
1201
+ useEffect(() => {
1202
+ let mounted = true;
1203
+
1204
+ hmsInstance.addEventListener(HMSUpdateListenerActions.RECONNECTING, () => {
1205
+ if (mounted) {
1206
+ dispatch(setReconnecting(true));
1207
+ }
1208
+ });
1209
+ hmsInstance.addEventListener(HMSUpdateListenerActions.RECONNECTED, () => {
1210
+ if (mounted) {
1211
+ dispatch(setReconnecting(false));
1212
+ }
1213
+ });
1214
+
1215
+ return () => {
1216
+ mounted = false;
1217
+ hmsInstance.removeEventListener(HMSUpdateListenerActions.RECONNECTING);
1218
+ hmsInstance.removeEventListener(HMSUpdateListenerActions.RECONNECTED);
1219
+ };
935
1220
  }, [hmsInstance]);
936
1221
  };
937
1222
 
938
1223
  export const useHMSPIPRoomLeave = () => {
939
1224
  const hmsInstance = useHMSInstance();
940
- const { destroy } = useLeaveMethods();
1225
+ const { destroy } = useLeaveMethods(true);
941
1226
 
942
1227
  useEffect(() => {
943
1228
  const pipRoomLeaveHandler = () => {
@@ -957,7 +1242,7 @@ export const useHMSPIPRoomLeave = () => {
957
1242
 
958
1243
  export const useHMSRemovedFromRoomUpdate = () => {
959
1244
  const hmsInstance = useHMSInstance();
960
- const { destroy } = useLeaveMethods();
1245
+ const { destroy } = useLeaveMethods(true);
961
1246
 
962
1247
  useEffect(() => {
963
1248
  const removedFromRoomHandler = () => {
@@ -1036,6 +1321,7 @@ export const useHMSActiveSpeakerUpdates = (
1036
1321
  active?: boolean
1037
1322
  ) => {
1038
1323
  const hmsInstance = useHMSInstance();
1324
+ const dispatch = useDispatch();
1039
1325
  const reduxStore = useStore<RootState>();
1040
1326
  const isPortraitOrientation = useIsPortraitOrientation();
1041
1327
 
@@ -1045,6 +1331,8 @@ export const useHMSActiveSpeakerUpdates = (
1045
1331
  }
1046
1332
 
1047
1333
  const handleActiveSpeaker = (data: HMSSpeaker[]) => {
1334
+ dispatch(setActiveSpeakers(data));
1335
+
1048
1336
  const activePage = reduxStore.getState().app.gridViewActivePage;
1049
1337
  if (activePage !== 0) {
1050
1338
  return;
@@ -1192,12 +1480,9 @@ export const useShowLandscapeLayout = () => {
1192
1480
  const localPeerRoleName = useSelector(
1193
1481
  (state: RootState) => state.hmsStates.localPeer?.role?.name
1194
1482
  );
1483
+ const isHLSViewer = useIsHLSViewer();
1195
1484
 
1196
- return (
1197
- isLandscapeOrientation &&
1198
- !!localPeerRoleName &&
1199
- localPeerRoleName.includes('hls-')
1200
- );
1485
+ return isLandscapeOrientation && !!localPeerRoleName && isHLSViewer;
1201
1486
  };
1202
1487
 
1203
1488
  let hmsConfig: HMSConfig | null = null;
@@ -1227,7 +1512,7 @@ export const useHMSConfig = () => {
1227
1512
  const roomLayout = await getRoomLayout(
1228
1513
  hmsInstance,
1229
1514
  token,
1230
- 'https://api-nonprod.100ms.live'
1515
+ storeState.user.endPoints?.layout
1231
1516
  );
1232
1517
  dispatch(setLayoutConfig(roomLayout));
1233
1518
  } catch (error) {
@@ -1259,155 +1544,321 @@ export const useHMSConfig = () => {
1259
1544
  return { clearConfig, updateConfig, getConfig };
1260
1545
  };
1261
1546
 
1262
- export const useSafeDimensions = () => {
1263
- const { height, width } = useSafeAreaFrame();
1264
- const safeAreaInsets = useSafeAreaInsets();
1547
+ export const useShowChatAndParticipants = () => {
1548
+ const dispatch = useDispatch();
1549
+ const { modalVisibleType, handleModalVisibleType: setModalVisible } =
1550
+ useModalType();
1265
1551
 
1266
- return {
1267
- safeWidth: width - safeAreaInsets.left - safeAreaInsets.right,
1268
- safeHeight: height - safeAreaInsets.top - safeAreaInsets.bottom,
1269
- };
1270
- };
1552
+ const overlayChatLayout = useHMSChatLayoutConfig(
1553
+ (chatConfig) => chatConfig?.is_overlay
1554
+ );
1555
+ const canShowChat = useHMSConferencingScreenConfig(
1556
+ (conferencingScreenConfig) => !!conferencingScreenConfig?.elements?.chat
1557
+ );
1558
+ const canShowParticipants = useHMSConferencingScreenConfig(
1559
+ (conferencingScreenConfig) =>
1560
+ !!conferencingScreenConfig?.elements?.participant_list
1561
+ );
1271
1562
 
1272
- export const useShowChat = (): [
1273
- 'none' | 'inset' | 'modal',
1274
- (show: boolean) => void,
1275
- ] => {
1276
- const dispatch = useDispatch();
1277
- const isHLSViewer = useIsHLSViewer();
1278
- const showChatView = useSelector(
1563
+ // state for inset chat view
1564
+ const overlayChatVisible = useSelector(
1279
1565
  (state: RootState) => state.chatWindow.showChatView
1280
1566
  );
1281
- const hlsAspectRatio = useSelector(
1282
- (state: RootState) => state.app.hlsAspectRatio
1283
- );
1284
- const chatVisible: 'none' | 'inset' | 'modal' = useMemo(() => {
1285
- if (!showChatView) return 'none';
1286
1567
 
1287
- if (isHLSViewer && ['16:9', '4:3'].includes(hlsAspectRatio.id))
1288
- return 'inset';
1568
+ const modalVisible = modalVisibleType === ModalTypes.CHAT_AND_PARTICIPANTS;
1289
1569
 
1290
- // TODO: handle case when type modal is selected, but chat modal is not shown because aspect ration modal was just closed
1291
- return 'modal';
1292
- }, [showChatView, hlsAspectRatio.id, isHLSViewer]);
1570
+ const show = useCallback(
1571
+ (view: 'chat' | 'participants') => {
1572
+ // Handle Showing Chat View/Modal
1573
+ if (view === 'chat') {
1574
+ if (!canShowChat) return;
1293
1575
 
1294
- const isChatVisibleInsetType = chatVisible === 'inset';
1576
+ if (overlayChatLayout) {
1577
+ dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: true });
1578
+ } else {
1579
+ batch(() => {
1580
+ dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: false });
1581
+ dispatch(setActiveChatBottomSheetTab('Chat'));
1582
+ });
1583
+ setModalVisible(ModalTypes.CHAT_AND_PARTICIPANTS);
1584
+ }
1585
+ }
1586
+ // Handle Showing Participant
1587
+ else if (canShowParticipants) {
1588
+ dispatch(setActiveChatBottomSheetTab('Participants'));
1589
+ setModalVisible(ModalTypes.CHAT_AND_PARTICIPANTS);
1590
+ }
1591
+ },
1592
+ [overlayChatLayout, canShowChat, canShowParticipants, setModalVisible]
1593
+ );
1295
1594
 
1296
- const showChat = useCallback(
1297
- (show: boolean) => {
1298
- if (isChatVisibleInsetType) {
1299
- LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
1595
+ const hide = useCallback(
1596
+ (view: 'chat_overlay' | 'modal') => {
1597
+ if (view === 'chat_overlay') {
1598
+ dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: false });
1599
+ } else {
1600
+ setModalVisible(ModalTypes.DEFAULT);
1300
1601
  }
1301
- dispatch({ type: 'SET_SHOW_CHAT_VIEW', showChatView: show });
1302
1602
  },
1303
- [isChatVisibleInsetType]
1603
+ [overlayChatLayout, setModalVisible]
1304
1604
  );
1305
1605
 
1306
- return [chatVisible, showChat];
1606
+ return {
1607
+ overlayChatVisible,
1608
+ modalVisible,
1609
+ overlayChatLayout,
1610
+ canShowChat,
1611
+ canShowParticipants,
1612
+ show,
1613
+ hide,
1614
+ };
1307
1615
  };
1308
1616
 
1309
1617
  export const usePortraitChatViewVisible = () => {
1310
- const [chatVisible] = useShowChat();
1618
+ const { overlayChatVisible } = useShowChatAndParticipants();
1311
1619
  const pipModeNotActive = useSelector(
1312
1620
  (state: RootState) => state.app.pipModeStatus !== PipModes.ACTIVE
1313
1621
  );
1314
1622
  const isPortraitOrientation = useIsPortraitOrientation();
1315
1623
 
1316
- return pipModeNotActive && isPortraitOrientation && chatVisible === 'inset';
1624
+ return pipModeNotActive && isPortraitOrientation && overlayChatVisible;
1317
1625
  };
1318
1626
 
1319
1627
  export const useLandscapeChatViewVisible = () => {
1320
- const [chatVisible] = useShowChat();
1628
+ const { overlayChatVisible } = useShowChatAndParticipants();
1321
1629
  const pipModeNotActive = useSelector(
1322
1630
  (state: RootState) => state.app.pipModeStatus !== PipModes.ACTIVE
1323
1631
  );
1324
1632
  const isLandscapeOrientation = useIsLandscapeOrientation();
1325
1633
 
1326
- return pipModeNotActive && isLandscapeOrientation && chatVisible === 'inset';
1634
+ return pipModeNotActive && isLandscapeOrientation && overlayChatVisible;
1635
+ };
1636
+
1637
+ export type ParticipantHeaderData = {
1638
+ label: string;
1639
+ role: HMSRole;
1640
+ itemsLength: number;
1641
+ };
1642
+
1643
+ export type ParticipantHandRaisedHeaderData = {
1644
+ label: string;
1645
+ itemsLength: number;
1646
+ };
1647
+
1648
+ export type ListItemUI<
1649
+ T =
1650
+ | ParticipantHeaderData
1651
+ | HMSLocalPeer
1652
+ | HMSPeer
1653
+ | ParticipantHandRaisedHeaderData,
1654
+ > = {
1655
+ type: 'EXPANDED_HEADER' | 'COLLAPSED_HEADER' | 'LAST_ITEM' | 'REGULAR_ITEM';
1656
+ data: T;
1657
+ key: string;
1327
1658
  };
1328
1659
 
1329
1660
  export const useFilteredParticipants = () => {
1330
- const hmsInstance = useHMSInstance();
1331
- const localPeer = useSelector(
1332
- (state: RootState) => state.hmsStates.localPeer
1661
+ const roles = useSelector((state: RootState) => state.hmsStates.roles);
1662
+ const onStageRole = useHMSLayoutConfig(
1663
+ (layoutConfig) =>
1664
+ layoutConfig?.screens?.conferencing?.default?.elements?.on_stage_exp
1665
+ ?.on_stage_role || null
1333
1666
  );
1334
- const [filter, setFilter] = useState('everyone');
1335
- const [participantsSearchInput, setParticipantsSearchInput] = useState('');
1336
- const [hmsPeers, setHmsPeers] = useState<(HMSLocalPeer | HMSRemotePeer)[]>(
1337
- localPeer ? [localPeer] : []
1667
+
1668
+ const [searchText, setSearchText] = useState('');
1669
+ const formattedSearchText = searchText.trim().toLowerCase();
1670
+
1671
+ const participants = useSelector(
1672
+ (state: RootState) => state.hmsStates.participants
1338
1673
  );
1339
1674
 
1340
- const filteredPeerTrackNodes = useMemo(() => {
1341
- const newFilteredPeerTrackNodes = hmsPeers?.filter((peer) => {
1342
- if (
1343
- participantsSearchInput.length < 1 ||
1344
- peer.name.includes(participantsSearchInput) ||
1345
- peer.role?.name?.includes(participantsSearchInput)
1346
- ) {
1347
- return true;
1348
- }
1349
- return false;
1350
- });
1675
+ const peerGroups = useMemo(() => {
1676
+ return groupParticipantsAsPerRole(participants, formattedSearchText);
1677
+ }, [formattedSearchText, participants]);
1678
+
1679
+ const sortedRoles = useMemo(() => {
1680
+ return roles
1681
+ .filter((role) => peerGroups.has(role.name!))
1682
+ .sort((a, b) => {
1683
+ if (onStageRole) {
1684
+ if (a.name === onStageRole && b.name === onStageRole) {
1685
+ return 0;
1686
+ }
1351
1687
 
1352
- if (filter === 'everyone') {
1353
- return newFilteredPeerTrackNodes;
1354
- }
1688
+ if (a.name === onStageRole) {
1689
+ return -1;
1690
+ }
1691
+
1692
+ if (b.name === onStageRole) {
1693
+ return 1;
1694
+ }
1695
+ }
1696
+
1697
+ const canAPublish: boolean =
1698
+ (a.publishSettings?.allowed &&
1699
+ a.publishSettings.allowed.length > 0) ??
1700
+ false;
1701
+ const canBPublish: boolean =
1702
+ (b.publishSettings?.allowed &&
1703
+ b.publishSettings.allowed.length > 0) ??
1704
+ false;
1705
+
1706
+ if (canAPublish && canBPublish) {
1707
+ return 0;
1708
+ }
1709
+
1710
+ if (canAPublish) {
1711
+ return -1;
1712
+ }
1355
1713
 
1356
- if (filter === 'raised hand') {
1357
- return newFilteredPeerTrackNodes.filter((peer) => {
1358
- const parsedMetaData = parseMetadata(peer.metadata);
1359
- return parsedMetaData.isHandRaised === true;
1714
+ return 1;
1360
1715
  });
1716
+ }, [peerGroups, onStageRole, roles]);
1717
+
1718
+ const firstGroupName = peerGroups.has('hand-raised')
1719
+ ? 'hand-raised'
1720
+ : sortedRoles[0]?.name;
1721
+
1722
+ const [expandedGroups, setExpandedGroups] = useState<string[]>(
1723
+ firstGroupName ? [firstGroupName] : []
1724
+ );
1725
+
1726
+ const groupedList = useMemo(() => {
1727
+ let list: ListItemUI[] = [];
1728
+
1729
+ const handRaisedPeers = peerGroups.get('hand-raised');
1730
+
1731
+ if (handRaisedPeers) {
1732
+ const expanded = expandedGroups.includes('hand-raised');
1733
+
1734
+ list.push({
1735
+ type: expanded ? 'EXPANDED_HEADER' : 'COLLAPSED_HEADER',
1736
+ key: 'hand-raised',
1737
+ data: {
1738
+ label: `Hand Raised (${handRaisedPeers.length})`,
1739
+ itemsLength: handRaisedPeers.length,
1740
+ },
1741
+ });
1742
+
1743
+ if (expanded) {
1744
+ list = list.concat(
1745
+ handRaisedPeers.map((peer, idx, arr) => {
1746
+ const isLast = arr.length - 1 === idx;
1747
+
1748
+ return {
1749
+ data: peer,
1750
+ key: `${peer.peerID}--${'hand-raised'}`,
1751
+ type: isLast ? 'LAST_ITEM' : 'REGULAR_ITEM',
1752
+ };
1753
+ })
1754
+ );
1755
+ }
1361
1756
  }
1362
1757
 
1363
- return newFilteredPeerTrackNodes.filter(
1364
- (peer) => peer.role?.name === filter
1365
- );
1366
- }, [participantsSearchInput, filter, hmsPeers]);
1758
+ sortedRoles.forEach((role) => {
1759
+ const peers = peerGroups.get(role.name!);
1367
1760
 
1368
- useEffect(() => {
1369
- let ignore = false;
1761
+ if (peers) {
1762
+ const expanded = expandedGroups.includes(role.name!);
1370
1763
 
1371
- hmsInstance.getRemotePeers().then((peers) => {
1372
- if (localPeer) {
1373
- InteractionManager.runAfterInteractions(() => {
1374
- if (!ignore) {
1375
- setHmsPeers([localPeer, ...peers]);
1376
- }
1764
+ list.push({
1765
+ type: expanded ? 'EXPANDED_HEADER' : 'COLLAPSED_HEADER',
1766
+ key: role.name!,
1767
+ data: {
1768
+ label: `${role.name!} (${peers.length})`,
1769
+ role: role,
1770
+ itemsLength: peers.length,
1771
+ },
1377
1772
  });
1773
+
1774
+ if (expanded) {
1775
+ list = list.concat(
1776
+ peers.map((peer, idx, arr) => {
1777
+ const isLast = arr.length - 1 === idx;
1778
+
1779
+ return {
1780
+ data: peer,
1781
+ key: `${peer.peerID}--${role.name!}`,
1782
+ type: isLast ? 'LAST_ITEM' : 'REGULAR_ITEM',
1783
+ };
1784
+ })
1785
+ );
1786
+ }
1378
1787
  }
1379
1788
  });
1380
1789
 
1381
- return () => {
1382
- ignore = true;
1383
- };
1384
- }, [localPeer, hmsInstance]);
1790
+ return list;
1791
+ }, [expandedGroups, peerGroups, sortedRoles]);
1385
1792
 
1386
1793
  return {
1387
- allParticipants: hmsPeers,
1388
- filteredParticipants: filteredPeerTrackNodes,
1389
- selectedFilter: filter,
1390
- changeFilter: setFilter,
1391
- searchText: participantsSearchInput,
1392
- setSearchText: setParticipantsSearchInput,
1794
+ data: groupedList,
1795
+ searchText,
1796
+ formattedSearchText,
1797
+ setSearchText,
1798
+ expandedGroups,
1799
+ setExpandedGroups,
1393
1800
  };
1394
1801
  };
1395
1802
 
1803
+ const groupParticipantsAsPerRole = (
1804
+ participants: (HMSLocalPeer | HMSPeer)[],
1805
+ searchText: string
1806
+ ) => {
1807
+ const groups: Map<string, (HMSLocalPeer | HMSPeer)[]> = new Map();
1808
+
1809
+ for (const participant of participants) {
1810
+ const participantRole = participant.role;
1811
+
1812
+ if (!participantRole) {
1813
+ continue;
1814
+ }
1815
+
1816
+ if (
1817
+ searchText.length <= 0 ||
1818
+ participant.name.toLowerCase().includes(searchText)
1819
+ ) {
1820
+ if (!groups.has(participantRole.name!)) {
1821
+ groups.set(participantRole.name!, []);
1822
+ }
1823
+
1824
+ const group = groups.get(participantRole.name!);
1825
+
1826
+ if (!group) {
1827
+ continue;
1828
+ }
1829
+
1830
+ group.push(participant);
1831
+
1832
+ if (parseMetadata(participant.metadata).isHandRaised) {
1833
+ if (!groups.has('hand-raised')) {
1834
+ groups.set('hand-raised', []);
1835
+ }
1836
+
1837
+ const group = groups.get('hand-raised');
1838
+
1839
+ if (group) group.push(participant);
1840
+ }
1841
+ }
1842
+ }
1843
+
1844
+ return groups;
1845
+ };
1846
+
1396
1847
  export const useShouldGoLive = () => {
1397
1848
  const shouldGoLive = useSelector(selectShouldGoLive);
1398
1849
 
1399
1850
  return shouldGoLive;
1400
1851
  };
1401
1852
 
1402
- export const useLeaveMethods = () => {
1853
+ export const useLeaveMethods = (isUnmounted: boolean) => {
1403
1854
  const navigation = useContext(NavigationContext);
1404
1855
  const hmsInstance = useHMSInstance();
1405
1856
  const dispatch = useDispatch();
1406
1857
  const reduxStore = useStore<RootState>();
1407
1858
 
1408
- const destroy = useCallback(async () => {
1859
+ const destroy = useCallback(() => {
1409
1860
  try {
1410
- const s = await hmsInstance.destroy();
1861
+ const s = hmsInstance.destroy();
1411
1862
  console.log('Destroy Success: ', s);
1412
1863
  // TODOS:
1413
1864
  // - If show `Meeting_Ended` is true, show Meeting screen by setting state to MEETING_ENDED
@@ -1434,11 +1885,10 @@ export const useLeaveMethods = () => {
1434
1885
  if (typeof onLeave === 'function') {
1435
1886
  onLeave();
1436
1887
  dispatch(clearStore());
1437
- } else if (navigation && navigation.canGoBack()) {
1888
+ } else if (navigation && navigation.canGoBack() && !isUnmounted) {
1438
1889
  navigation.goBack();
1439
1890
  dispatch(clearStore());
1440
1891
  } else {
1441
- // TODO: call onLeave Callback if provided
1442
1892
  // Otherwise default action is to show "Meeting Ended" screen
1443
1893
  dispatch(clearStore()); // TODO: We need different clearStore for MeetingEnded
1444
1894
  dispatch(changeMeetingState(MeetingState.MEETING_ENDED));
@@ -1454,16 +1904,24 @@ export const useLeaveMethods = () => {
1454
1904
  }
1455
1905
  }, [hmsInstance]);
1456
1906
 
1457
- const leave = useCallback(async () => {
1458
- try {
1459
- const d = await hmsInstance.leave();
1460
- console.log('Leave Success: ', d);
1461
- await destroy();
1462
- } catch (e) {
1463
- console.log(`Leave Room Error: ${e}`);
1464
- Toast.showWithGravity(`Leave Room Error: ${e}`, Toast.LONG, Toast.TOP);
1465
- }
1466
- }, [destroy, hmsInstance]);
1907
+ const leave = useCallback(
1908
+ async (shouldEndStream: boolean = false) => {
1909
+ if (shouldEndStream) {
1910
+ hmsInstance.stopHLSStreaming().catch((error) => {
1911
+ console.log('Stop HLS Streaming Error: ', error);
1912
+ });
1913
+ }
1914
+ try {
1915
+ const d = await hmsInstance.leave();
1916
+ console.log('Leave Success: ', d);
1917
+ await destroy();
1918
+ } catch (e) {
1919
+ console.log(`Leave Room Error: ${e}`);
1920
+ Toast.showWithGravity(`Leave Room Error: ${e}`, Toast.LONG, Toast.TOP);
1921
+ }
1922
+ },
1923
+ [destroy, hmsInstance]
1924
+ );
1467
1925
 
1468
1926
  const goToPreview = useCallback(async () => {
1469
1927
  try {
@@ -1492,21 +1950,32 @@ export const useLeaveMethods = () => {
1492
1950
  return { destroy, leave, endRoom, goToPreview };
1493
1951
  };
1494
1952
 
1495
- export const useHMSLayoutConfig = () => {
1496
- return useSelector((state: RootState) => state.hmsStates.layoutConfig);
1953
+ // Returns layout config as it is returned from server
1954
+ export const useHMSLayoutConfig = <Selected = unknown>(
1955
+ selector: (layoutConfig: Layout | null) => Selected,
1956
+ equalityFn?: (left: Selected, right: Selected) => boolean
1957
+ ): Selected => {
1958
+ return useSelector((state: RootState) => {
1959
+ return selector(
1960
+ selectLayoutConfigForRole(
1961
+ state.hmsStates.layoutConfig,
1962
+ state.hmsStates.localPeer?.role || null
1963
+ )
1964
+ );
1965
+ }, equalityFn);
1497
1966
  };
1498
1967
 
1499
- export const useHMSRoomTheme = <S>(
1500
- selector?: (theme: Required<Theme>) => S
1501
- ): Required<Theme> | S => {
1502
- return useSelector((state: RootState) => {
1503
- const layoutConfig = state.hmsStates.layoutConfig;
1968
+ type ThemeWithPalette = Theme & { palette: ColorPalette };
1504
1969
 
1505
- const roomTheme = layoutConfig?.themes.find((theme) => theme.default);
1970
+ export const useHMSRoomTheme = <S>(
1971
+ selector?: (theme: ThemeWithPalette) => S
1972
+ ): ThemeWithPalette | S => {
1973
+ return useHMSLayoutConfig((layoutConfig) => {
1974
+ const roomTheme = layoutConfig?.themes?.find((theme) => theme.default);
1506
1975
 
1507
- const defaultTheme: Required<Theme> = roomTheme
1976
+ const defaultTheme: ThemeWithPalette = roomTheme
1508
1977
  ? roomTheme.palette
1509
- ? (roomTheme as Required<Theme>)
1978
+ ? (roomTheme as ThemeWithPalette)
1510
1979
  : { ...roomTheme, palette: DEFAULT_THEME.palette }
1511
1980
  : DEFAULT_THEME;
1512
1981
 
@@ -1522,10 +1991,8 @@ export const useHMSRoomColorPalette = (): ColorPalette => {
1522
1991
  return useHMSRoomTheme((theme) => theme.palette) as ColorPalette;
1523
1992
  };
1524
1993
 
1525
- export const useHMSRoomTypography = (): Typography => {
1526
- return useSelector((state: RootState) => {
1527
- const layoutConfig = state.hmsStates.layoutConfig;
1528
-
1994
+ export const useHMSRoomTypography = (): Required<Typography> => {
1995
+ return useHMSLayoutConfig((layoutConfig) => {
1529
1996
  const typography = layoutConfig?.typography;
1530
1997
 
1531
1998
  if (!typography) {
@@ -1539,17 +2006,20 @@ export const useHMSRoomTypography = (): Typography => {
1539
2006
  };
1540
2007
  }
1541
2008
 
1542
- return typography;
2009
+ // formatting font family name
2010
+ typography.font_family = typography.font_family.replace(/ /g, '');
2011
+
2012
+ return typography as Required<Typography>;
1543
2013
  }, shallowEqual);
1544
2014
  };
1545
2015
 
1546
2016
  export const useHMSRoomStyleSheet = <
1547
2017
  T extends { [key: string]: StyleProp<ViewStyle | TextStyle | ImageStyle> },
1548
2018
  >(
1549
- updater: (theme: Required<Theme>, typography: Required<Typography>) => T,
2019
+ updater: (theme: ThemeWithPalette, typography: Required<Typography>) => T,
1550
2020
  deps: DependencyList = []
1551
2021
  ): T => {
1552
- const theme = useHMSRoomTheme<Required<Theme>>();
2022
+ const theme = useHMSRoomTheme<ThemeWithPalette>();
1553
2023
  const typography = useHMSRoomTypography();
1554
2024
 
1555
2025
  return useMemo(
@@ -1561,7 +2031,7 @@ export const useHMSRoomStyleSheet = <
1561
2031
  export const useHMSRoomStyle = <
1562
2032
  T extends StyleProp<ViewStyle | TextStyle | ImageStyle>,
1563
2033
  >(
1564
- updater: (theme: Required<Theme>, typography: Required<Typography>) => T,
2034
+ updater: (theme: ThemeWithPalette, typography: Required<Typography>) => T,
1565
2035
  deps: DependencyList = []
1566
2036
  ): T => {
1567
2037
  return useHMSRoomStyleSheet(
@@ -1571,3 +2041,115 @@ export const useHMSRoomStyle = <
1571
2041
  deps
1572
2042
  ).default;
1573
2043
  };
2044
+
2045
+ export const useSendMessage = () => {
2046
+ const hmsInstance = useHMSInstance();
2047
+ const dispatch = useDispatch();
2048
+ const reduxStore = useStore<RootState>();
2049
+
2050
+ const message = useSelector(
2051
+ (state: RootState) => state.chatWindow.typedMessage
2052
+ );
2053
+
2054
+ const setMessage = useCallback((text: string) => {
2055
+ dispatch({ type: 'SET_TYPED_MESSAGE', typedMessage: text });
2056
+ }, []);
2057
+
2058
+ const sendMessage = useCallback(async () => {
2059
+ const chatWindowState = reduxStore.getState().chatWindow;
2060
+
2061
+ const message = chatWindowState.typedMessage;
2062
+ const sendingTo = chatWindowState.sendTo as
2063
+ | HMSRole
2064
+ | HMSRemotePeer
2065
+ | typeof ChatBroadcastFilter;
2066
+
2067
+ if (message.length <= 0) return;
2068
+
2069
+ const hmsMessageRecipient = new HMSMessageRecipient({
2070
+ recipientType:
2071
+ 'publishSettings' in sendingTo
2072
+ ? HMSMessageRecipientType.ROLES
2073
+ : 'peerID' in sendingTo
2074
+ ? HMSMessageRecipientType.PEER
2075
+ : HMSMessageRecipientType.BROADCAST,
2076
+ recipientPeer: 'peerID' in sendingTo ? sendingTo : undefined,
2077
+ recipientRoles: 'publishSettings' in sendingTo ? [sendingTo] : undefined,
2078
+ });
2079
+
2080
+ // Saving reference of `message` state to local variable
2081
+ // to use the typed message after clearing state
2082
+ const messageText = message;
2083
+
2084
+ dispatch({ type: 'SET_TYPED_MESSAGE', typedMessage: '' });
2085
+
2086
+ const handleMessageID = ({
2087
+ messageId,
2088
+ }: {
2089
+ messageId: string | undefined;
2090
+ }) => {
2091
+ const localPeer = reduxStore.getState().hmsStates.localPeer;
2092
+
2093
+ if (messageId) {
2094
+ Keyboard.dismiss();
2095
+ const localMessage = new HMSMessage({
2096
+ messageId: messageId,
2097
+ message: messageText,
2098
+ type: 'chat',
2099
+ time: new Date(),
2100
+ sender: localPeer || undefined,
2101
+ recipient: hmsMessageRecipient,
2102
+ });
2103
+ dispatch(addMessage(localMessage));
2104
+ }
2105
+ };
2106
+
2107
+ try {
2108
+ let result: { messageId: string | undefined };
2109
+ if ('publishSettings' in sendingTo) {
2110
+ result = await hmsInstance.sendGroupMessage(messageText, [sendingTo]);
2111
+ } else if ('peerID' in sendingTo) {
2112
+ result = await hmsInstance.sendDirectMessage(messageText, sendingTo);
2113
+ } else {
2114
+ result = await hmsInstance.sendBroadcastMessage(messageText);
2115
+ }
2116
+ handleMessageID(result);
2117
+
2118
+ return Promise.resolve(result);
2119
+ } catch (error) {
2120
+ return Promise.reject(error);
2121
+ }
2122
+ }, []);
2123
+
2124
+ return {
2125
+ message,
2126
+ setMessage,
2127
+ sendMessage,
2128
+ };
2129
+ };
2130
+
2131
+ export const useHMSChatLayoutConfig = <Selected = unknown>(
2132
+ selector: (chatConfig: ChatConfig | null) => Selected,
2133
+ equalityFn?: (left: Selected, right: Selected) => boolean
2134
+ ): Selected => {
2135
+ return useHMSLayoutConfig((layoutConfig) => {
2136
+ const chatConfig = selectChatLayoutConfig(layoutConfig);
2137
+ return selector(chatConfig);
2138
+ }, equalityFn);
2139
+ };
2140
+
2141
+ export const useHMSConferencingScreenConfig = <Selected = unknown>(
2142
+ selector: (
2143
+ conferencingScreenConfig:
2144
+ | DefaultConferencingScreen
2145
+ | HLSLiveStreamingScreen
2146
+ | null
2147
+ ) => Selected,
2148
+ equalityFn?: (left: Selected, right: Selected) => boolean
2149
+ ): Selected => {
2150
+ return useHMSLayoutConfig((layoutConfig) => {
2151
+ const conferencingScreenConfig =
2152
+ selectConferencingScreenConfig(layoutConfig);
2153
+ return selector(conferencingScreenConfig);
2154
+ }, equalityFn);
2155
+ };