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

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 (609) hide show
  1. package/lib/commonjs/HMSRoomSetup.js +4 -1
  2. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  3. package/lib/commonjs/Icons/Chat/assets/chat-on.png +0 -0
  4. package/lib/commonjs/Icons/Chat/assets/chat-on@2x.png +0 -0
  5. package/lib/commonjs/Icons/Chat/assets/chat-on@3x.png +0 -0
  6. package/lib/commonjs/Icons/Chat/index.js +4 -3
  7. package/lib/commonjs/Icons/Chat/index.js.map +1 -1
  8. package/lib/commonjs/Icons/NoEntry/assets/no-entry.png +0 -0
  9. package/lib/commonjs/Icons/NoEntry/assets/no-entry@2x.png +0 -0
  10. package/lib/commonjs/Icons/NoEntry/assets/no-entry@3x.png +0 -0
  11. package/lib/commonjs/Icons/NoEntry/index.js +33 -0
  12. package/lib/commonjs/Icons/NoEntry/index.js.map +1 -0
  13. package/lib/commonjs/Icons/PauseCircle/assets/pause-circle.png +0 -0
  14. package/lib/commonjs/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
  15. package/lib/commonjs/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
  16. package/lib/commonjs/Icons/PauseCircle/index.js +29 -0
  17. package/lib/commonjs/Icons/PauseCircle/index.js.map +1 -0
  18. package/lib/commonjs/Icons/Pin/assets/unpin.png +0 -0
  19. package/lib/commonjs/Icons/Pin/assets/unpin@2x.png +0 -0
  20. package/lib/commonjs/Icons/Pin/assets/unpin@3x.png +0 -0
  21. package/lib/commonjs/Icons/Pin/index.js +2 -1
  22. package/lib/commonjs/Icons/Pin/index.js.map +1 -1
  23. package/lib/commonjs/Icons/Recording/assets/recording-pause.png +0 -0
  24. package/lib/commonjs/Icons/Recording/assets/recording-pause@2x.png +0 -0
  25. package/lib/commonjs/Icons/Recording/assets/recording-pause@3x.png +0 -0
  26. package/lib/commonjs/Icons/Recording/index.js +1 -1
  27. package/lib/commonjs/Icons/Recording/index.js.map +1 -1
  28. package/lib/commonjs/Icons/index.js +22 -0
  29. package/lib/commonjs/Icons/index.js.map +1 -1
  30. package/lib/commonjs/components/AnimatedFooter.js +5 -3
  31. package/lib/commonjs/components/AnimatedFooter.js.map +1 -1
  32. package/lib/commonjs/components/AnimatedHLSFooter.js +4 -9
  33. package/lib/commonjs/components/AnimatedHLSFooter.js.map +1 -1
  34. package/lib/commonjs/components/AnimatedHeader.js +17 -5
  35. package/lib/commonjs/components/AnimatedHeader.js.map +1 -1
  36. package/lib/commonjs/components/BottomSheet.js +11 -5
  37. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  38. package/lib/commonjs/components/Chat/ChatFilterBottomSheet.js +36 -0
  39. package/lib/commonjs/components/Chat/ChatFilterBottomSheet.js.map +1 -0
  40. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js +90 -23
  41. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -1
  42. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js +2 -1
  43. package/lib/commonjs/components/Chat/ChatFilterBottomSheetView.js.map +1 -1
  44. package/lib/commonjs/components/Chat/ChatFilterItem.js +10 -7
  45. package/lib/commonjs/components/Chat/ChatFilterItem.js.map +1 -1
  46. package/lib/commonjs/components/Chat/ChatFilterView.js +54 -45
  47. package/lib/commonjs/components/Chat/ChatFilterView.js.map +1 -1
  48. package/lib/commonjs/components/Chat/ChatList.js +13 -6
  49. package/lib/commonjs/components/Chat/ChatList.js.map +1 -1
  50. package/lib/commonjs/components/Chat/ChatMessage.js +79 -7
  51. package/lib/commonjs/components/Chat/ChatMessage.js.map +1 -1
  52. package/lib/commonjs/components/Chat/ChatMoreActionsModal.js +61 -0
  53. package/lib/commonjs/components/Chat/ChatMoreActionsModal.js.map +1 -0
  54. package/lib/commonjs/components/Chat/ChatMoreActionsSheetView.js +63 -0
  55. package/lib/commonjs/components/Chat/ChatMoreActionsSheetView.js.map +1 -0
  56. package/lib/commonjs/components/Chat/ChatMoreActionsView.js +83 -0
  57. package/lib/commonjs/components/Chat/ChatMoreActionsView.js.map +1 -0
  58. package/lib/commonjs/components/Chat/ChatPaused.js +86 -0
  59. package/lib/commonjs/components/Chat/ChatPaused.js.map +1 -0
  60. package/lib/commonjs/components/Chat/MessageOptionsBottomSheet.js +34 -0
  61. package/lib/commonjs/components/Chat/MessageOptionsBottomSheet.js.map +1 -0
  62. package/lib/commonjs/components/Chat/MessageOptionsBottomSheetView.js +66 -0
  63. package/lib/commonjs/components/Chat/MessageOptionsBottomSheetView.js.map +1 -0
  64. package/lib/commonjs/components/Chat/MessageOptionsView.js +188 -0
  65. package/lib/commonjs/components/Chat/MessageOptionsView.js.map +1 -0
  66. package/lib/commonjs/components/Chat/PeerBlockedFromChat.js +47 -0
  67. package/lib/commonjs/components/Chat/PeerBlockedFromChat.js.map +1 -0
  68. package/lib/commonjs/components/Chat/PinnedMessages.js +297 -0
  69. package/lib/commonjs/components/Chat/PinnedMessages.js.map +1 -0
  70. package/lib/commonjs/components/Chat/index.js +4 -4
  71. package/lib/commonjs/components/Chat/index.js.map +1 -1
  72. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +11 -10
  73. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  74. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js +21 -2
  75. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  76. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +8 -4
  77. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  78. package/lib/commonjs/components/ChatAndParticipants/ChatView.js +21 -2
  79. package/lib/commonjs/components/ChatAndParticipants/ChatView.js.map +1 -1
  80. package/lib/commonjs/components/DisplayView.js +4 -11
  81. package/lib/commonjs/components/DisplayView.js.map +1 -1
  82. package/lib/commonjs/components/EndRoomModal.js +1 -2
  83. package/lib/commonjs/components/EndRoomModal.js.map +1 -1
  84. package/lib/commonjs/components/EndRoomModalContent.js +6 -8
  85. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  86. package/lib/commonjs/components/Footer.js +12 -18
  87. package/lib/commonjs/components/Footer.js.map +1 -1
  88. package/lib/commonjs/components/GridView.js +31 -1
  89. package/lib/commonjs/components/GridView.js.map +1 -1
  90. package/lib/commonjs/components/HLSFooter.js +3 -1
  91. package/lib/commonjs/components/HLSFooter.js.map +1 -1
  92. package/lib/commonjs/components/HLSView.js +8 -6
  93. package/lib/commonjs/components/HLSView.js.map +1 -1
  94. package/lib/commonjs/components/HMSBaseButton.js +10 -2
  95. package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
  96. package/lib/commonjs/components/HMSDangerButton.js +4 -2
  97. package/lib/commonjs/components/HMSDangerButton.js.map +1 -1
  98. package/lib/commonjs/components/HMSHLSMessage.js +86 -1
  99. package/lib/commonjs/components/HMSHLSMessage.js.map +1 -1
  100. package/lib/commonjs/components/HMSHLSMessageList.js +2 -2
  101. package/lib/commonjs/components/HMSHLSMessageList.js.map +1 -1
  102. package/lib/commonjs/components/HMSHandRaiseNotification.js +6 -3
  103. package/lib/commonjs/components/HMSHandRaiseNotification.js.map +1 -1
  104. package/lib/commonjs/components/HMSKeyboardAvoidingView.android.js +2 -0
  105. package/lib/commonjs/components/HMSKeyboardAvoidingView.android.js.map +1 -1
  106. package/lib/commonjs/components/HMSKeyboardAvoidingView.js +8 -2
  107. package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -1
  108. package/lib/commonjs/components/HMSLiveIndicator.js +5 -60
  109. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -1
  110. package/lib/commonjs/components/HMSLiveViewerCount.js +79 -0
  111. package/lib/commonjs/components/HMSLiveViewerCount.js.map +1 -0
  112. package/lib/commonjs/components/HMSLocalScreenshareNotification.js +2 -1
  113. package/lib/commonjs/components/HMSLocalScreenshareNotification.js.map +1 -1
  114. package/lib/commonjs/components/HMSNotification.js +31 -4
  115. package/lib/commonjs/components/HMSNotification.js.map +1 -1
  116. package/lib/commonjs/components/HMSNotifications.js +9 -2
  117. package/lib/commonjs/components/HMSNotifications.js.map +1 -1
  118. package/lib/commonjs/components/HMSOverlayChatView.js +55 -4
  119. package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -1
  120. package/lib/commonjs/components/HMSPreviewEditName.js +6 -1
  121. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  122. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +2 -5
  123. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  124. package/lib/commonjs/components/HMSPrimaryButton.js +4 -2
  125. package/lib/commonjs/components/HMSPrimaryButton.js.map +1 -1
  126. package/lib/commonjs/components/HMSRecordingIndicator.js +12 -7
  127. package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
  128. package/lib/commonjs/components/HMSRoomOptions.js +3 -6
  129. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  130. package/lib/commonjs/components/HMSTerminalErrorNotification.js +6 -2
  131. package/lib/commonjs/components/HMSTerminalErrorNotification.js.map +1 -1
  132. package/lib/commonjs/components/Header.js +11 -3
  133. package/lib/commonjs/components/Header.js.map +1 -1
  134. package/lib/commonjs/components/LeaveRoomBottomSheet.js +5 -11
  135. package/lib/commonjs/components/LeaveRoomBottomSheet.js.map +1 -1
  136. package/lib/commonjs/components/Meeting.js +5 -13
  137. package/lib/commonjs/components/Meeting.js.map +1 -1
  138. package/lib/commonjs/components/MeetingScreenContent.js +46 -48
  139. package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
  140. package/lib/commonjs/components/MiniView.js.map +1 -1
  141. package/lib/commonjs/components/Modals.js +9 -12
  142. package/lib/commonjs/components/Modals.js.map +1 -1
  143. package/lib/commonjs/components/OverlayedViews.js +6 -2
  144. package/lib/commonjs/components/OverlayedViews.js.map +1 -1
  145. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js +5 -1
  146. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js.map +1 -1
  147. package/lib/commonjs/components/PeerSettingsModalContent.js +2 -1
  148. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  149. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +2 -1
  150. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  151. package/lib/commonjs/components/PressableIcon.js +6 -2
  152. package/lib/commonjs/components/PressableIcon.js.map +1 -1
  153. package/lib/commonjs/components/Preview.js +14 -1
  154. package/lib/commonjs/components/Preview.js.map +1 -1
  155. package/lib/commonjs/components/PreviewForRoleChangeModal.js +5 -4
  156. package/lib/commonjs/components/PreviewForRoleChangeModal.js.map +1 -1
  157. package/lib/commonjs/components/RoomSettingsModalContent.js +34 -9
  158. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  159. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +2 -4
  160. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  161. package/lib/commonjs/components/WebrtcView.js +37 -2
  162. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  163. package/lib/commonjs/hooks-sdk-selectors.js +16 -1
  164. package/lib/commonjs/hooks-sdk-selectors.js.map +1 -1
  165. package/lib/commonjs/hooks-sdk.js +27 -1
  166. package/lib/commonjs/hooks-sdk.js.map +1 -1
  167. package/lib/commonjs/hooks-util-selectors.js +3 -2
  168. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  169. package/lib/commonjs/hooks-util.js +466 -89
  170. package/lib/commonjs/hooks-util.js.map +1 -1
  171. package/lib/commonjs/redux/actionTypes.js +18 -3
  172. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  173. package/lib/commonjs/redux/actions/index.js +51 -4
  174. package/lib/commonjs/redux/actions/index.js.map +1 -1
  175. package/lib/commonjs/redux/reducers/appState.js +49 -1
  176. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  177. package/lib/commonjs/redux/reducers/chatWindow.js +1 -2
  178. package/lib/commonjs/redux/reducers/chatWindow.js.map +1 -1
  179. package/lib/commonjs/redux/reducers/message.js +17 -4
  180. package/lib/commonjs/redux/reducers/message.js.map +1 -1
  181. package/lib/commonjs/types.js +1 -0
  182. package/lib/commonjs/types.js.map +1 -1
  183. package/lib/commonjs/utils/types.js +6 -3
  184. package/lib/commonjs/utils/types.js.map +1 -1
  185. package/lib/commonjs/utils.js +2 -2
  186. package/lib/commonjs/utils.js.map +1 -1
  187. package/lib/module/HMSRoomSetup.js +5 -2
  188. package/lib/module/HMSRoomSetup.js.map +1 -1
  189. package/lib/module/Icons/Chat/assets/chat-on.png +0 -0
  190. package/lib/module/Icons/Chat/assets/chat-on@2x.png +0 -0
  191. package/lib/module/Icons/Chat/assets/chat-on@3x.png +0 -0
  192. package/lib/module/Icons/Chat/index.js +4 -3
  193. package/lib/module/Icons/Chat/index.js.map +1 -1
  194. package/lib/module/Icons/NoEntry/assets/no-entry.png +0 -0
  195. package/lib/module/Icons/NoEntry/assets/no-entry@2x.png +0 -0
  196. package/lib/module/Icons/NoEntry/assets/no-entry@3x.png +0 -0
  197. package/lib/module/Icons/NoEntry/index.js +25 -0
  198. package/lib/module/Icons/NoEntry/index.js.map +1 -0
  199. package/lib/module/Icons/PauseCircle/assets/pause-circle.png +0 -0
  200. package/lib/module/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
  201. package/lib/module/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
  202. package/lib/module/Icons/PauseCircle/index.js +21 -0
  203. package/lib/module/Icons/PauseCircle/index.js.map +1 -0
  204. package/lib/module/Icons/Pin/assets/unpin.png +0 -0
  205. package/lib/module/Icons/Pin/assets/unpin@2x.png +0 -0
  206. package/lib/module/Icons/Pin/assets/unpin@3x.png +0 -0
  207. package/lib/module/Icons/Pin/index.js +2 -1
  208. package/lib/module/Icons/Pin/index.js.map +1 -1
  209. package/lib/module/Icons/Recording/assets/recording-pause.png +0 -0
  210. package/lib/module/Icons/Recording/assets/recording-pause@2x.png +0 -0
  211. package/lib/module/Icons/Recording/assets/recording-pause@3x.png +0 -0
  212. package/lib/module/Icons/Recording/index.js +1 -1
  213. package/lib/module/Icons/Recording/index.js.map +1 -1
  214. package/lib/module/Icons/index.js +2 -0
  215. package/lib/module/Icons/index.js.map +1 -1
  216. package/lib/module/components/AnimatedFooter.js +5 -3
  217. package/lib/module/components/AnimatedFooter.js.map +1 -1
  218. package/lib/module/components/AnimatedHLSFooter.js +5 -10
  219. package/lib/module/components/AnimatedHLSFooter.js.map +1 -1
  220. package/lib/module/components/AnimatedHeader.js +18 -6
  221. package/lib/module/components/AnimatedHeader.js.map +1 -1
  222. package/lib/module/components/BottomSheet.js +12 -6
  223. package/lib/module/components/BottomSheet.js.map +1 -1
  224. package/lib/module/components/Chat/ChatFilterBottomSheet.js +28 -0
  225. package/lib/module/components/Chat/ChatFilterBottomSheet.js.map +1 -0
  226. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js +93 -26
  227. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -1
  228. package/lib/module/components/Chat/ChatFilterBottomSheetView.js +2 -1
  229. package/lib/module/components/Chat/ChatFilterBottomSheetView.js.map +1 -1
  230. package/lib/module/components/Chat/ChatFilterItem.js +11 -8
  231. package/lib/module/components/Chat/ChatFilterItem.js.map +1 -1
  232. package/lib/module/components/Chat/ChatFilterView.js +55 -46
  233. package/lib/module/components/Chat/ChatFilterView.js.map +1 -1
  234. package/lib/module/components/Chat/ChatList.js +14 -7
  235. package/lib/module/components/Chat/ChatList.js.map +1 -1
  236. package/lib/module/components/Chat/ChatMessage.js +81 -9
  237. package/lib/module/components/Chat/ChatMessage.js.map +1 -1
  238. package/lib/module/components/Chat/ChatMoreActionsModal.js +53 -0
  239. package/lib/module/components/Chat/ChatMoreActionsModal.js.map +1 -0
  240. package/lib/module/components/Chat/ChatMoreActionsSheetView.js +55 -0
  241. package/lib/module/components/Chat/ChatMoreActionsSheetView.js.map +1 -0
  242. package/lib/module/components/Chat/ChatMoreActionsView.js +75 -0
  243. package/lib/module/components/Chat/ChatMoreActionsView.js.map +1 -0
  244. package/lib/module/components/Chat/ChatPaused.js +77 -0
  245. package/lib/module/components/Chat/ChatPaused.js.map +1 -0
  246. package/lib/module/components/Chat/MessageOptionsBottomSheet.js +26 -0
  247. package/lib/module/components/Chat/MessageOptionsBottomSheet.js.map +1 -0
  248. package/lib/module/components/Chat/MessageOptionsBottomSheetView.js +58 -0
  249. package/lib/module/components/Chat/MessageOptionsBottomSheetView.js.map +1 -0
  250. package/lib/module/components/Chat/MessageOptionsView.js +180 -0
  251. package/lib/module/components/Chat/MessageOptionsView.js.map +1 -0
  252. package/lib/module/components/Chat/PeerBlockedFromChat.js +38 -0
  253. package/lib/module/components/Chat/PeerBlockedFromChat.js.map +1 -0
  254. package/lib/module/components/Chat/PinnedMessages.js +288 -0
  255. package/lib/module/components/Chat/PinnedMessages.js.map +1 -0
  256. package/lib/module/components/Chat/index.js +1 -1
  257. package/lib/module/components/Chat/index.js.map +1 -1
  258. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js +13 -12
  259. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  260. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +24 -5
  261. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  262. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +9 -5
  263. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  264. package/lib/module/components/ChatAndParticipants/ChatView.js +22 -3
  265. package/lib/module/components/ChatAndParticipants/ChatView.js.map +1 -1
  266. package/lib/module/components/DisplayView.js +5 -12
  267. package/lib/module/components/DisplayView.js.map +1 -1
  268. package/lib/module/components/EndRoomModal.js +1 -2
  269. package/lib/module/components/EndRoomModal.js.map +1 -1
  270. package/lib/module/components/EndRoomModalContent.js +6 -8
  271. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  272. package/lib/module/components/Footer.js +12 -18
  273. package/lib/module/components/Footer.js.map +1 -1
  274. package/lib/module/components/GridView.js +32 -2
  275. package/lib/module/components/GridView.js.map +1 -1
  276. package/lib/module/components/HLSFooter.js +3 -1
  277. package/lib/module/components/HLSFooter.js.map +1 -1
  278. package/lib/module/components/HLSView.js +8 -6
  279. package/lib/module/components/HLSView.js.map +1 -1
  280. package/lib/module/components/HMSBaseButton.js +10 -2
  281. package/lib/module/components/HMSBaseButton.js.map +1 -1
  282. package/lib/module/components/HMSDangerButton.js +4 -2
  283. package/lib/module/components/HMSDangerButton.js.map +1 -1
  284. package/lib/module/components/HMSHLSMessage.js +88 -3
  285. package/lib/module/components/HMSHLSMessage.js.map +1 -1
  286. package/lib/module/components/HMSHLSMessageList.js +2 -2
  287. package/lib/module/components/HMSHLSMessageList.js.map +1 -1
  288. package/lib/module/components/HMSHandRaiseNotification.js +6 -3
  289. package/lib/module/components/HMSHandRaiseNotification.js.map +1 -1
  290. package/lib/module/components/HMSKeyboardAvoidingView.android.js +2 -3
  291. package/lib/module/components/HMSKeyboardAvoidingView.android.js.map +1 -1
  292. package/lib/module/components/HMSKeyboardAvoidingView.js +9 -3
  293. package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -1
  294. package/lib/module/components/HMSLiveIndicator.js +8 -63
  295. package/lib/module/components/HMSLiveIndicator.js.map +1 -1
  296. package/lib/module/components/HMSLiveViewerCount.js +71 -0
  297. package/lib/module/components/HMSLiveViewerCount.js.map +1 -0
  298. package/lib/module/components/HMSLocalScreenshareNotification.js +2 -1
  299. package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -1
  300. package/lib/module/components/HMSNotification.js +32 -5
  301. package/lib/module/components/HMSNotification.js.map +1 -1
  302. package/lib/module/components/HMSNotifications.js +9 -2
  303. package/lib/module/components/HMSNotifications.js.map +1 -1
  304. package/lib/module/components/HMSOverlayChatView.js +56 -5
  305. package/lib/module/components/HMSOverlayChatView.js.map +1 -1
  306. package/lib/module/components/HMSPreviewEditName.js +6 -1
  307. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  308. package/lib/module/components/HMSPreviewHLSLiveIndicator.js +2 -5
  309. package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  310. package/lib/module/components/HMSPrimaryButton.js +4 -2
  311. package/lib/module/components/HMSPrimaryButton.js.map +1 -1
  312. package/lib/module/components/HMSRecordingIndicator.js +12 -7
  313. package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
  314. package/lib/module/components/HMSRoomOptions.js +3 -6
  315. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  316. package/lib/module/components/HMSTerminalErrorNotification.js +6 -2
  317. package/lib/module/components/HMSTerminalErrorNotification.js.map +1 -1
  318. package/lib/module/components/Header.js +10 -3
  319. package/lib/module/components/Header.js.map +1 -1
  320. package/lib/module/components/LeaveRoomBottomSheet.js +5 -11
  321. package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
  322. package/lib/module/components/Meeting.js +6 -14
  323. package/lib/module/components/Meeting.js.map +1 -1
  324. package/lib/module/components/MeetingScreenContent.js +51 -53
  325. package/lib/module/components/MeetingScreenContent.js.map +1 -1
  326. package/lib/module/components/MiniView.js.map +1 -1
  327. package/lib/module/components/Modals.js +10 -13
  328. package/lib/module/components/Modals.js.map +1 -1
  329. package/lib/module/components/OverlayedViews.js +6 -2
  330. package/lib/module/components/OverlayedViews.js.map +1 -1
  331. package/lib/module/components/Participants/ParticipantsItemOptions.js +5 -1
  332. package/lib/module/components/Participants/ParticipantsItemOptions.js.map +1 -1
  333. package/lib/module/components/PeerSettingsModalContent.js +2 -1
  334. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  335. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +2 -1
  336. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  337. package/lib/module/components/PressableIcon.js +6 -2
  338. package/lib/module/components/PressableIcon.js.map +1 -1
  339. package/lib/module/components/Preview.js +13 -2
  340. package/lib/module/components/Preview.js.map +1 -1
  341. package/lib/module/components/PreviewForRoleChangeModal.js +5 -4
  342. package/lib/module/components/PreviewForRoleChangeModal.js.map +1 -1
  343. package/lib/module/components/RoomSettingsModalContent.js +36 -11
  344. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  345. package/lib/module/components/RoomSettingsModalDebugModeContent.js +2 -4
  346. package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  347. package/lib/module/components/WebrtcView.js +37 -2
  348. package/lib/module/components/WebrtcView.js.map +1 -1
  349. package/lib/module/hooks-sdk-selectors.js +12 -0
  350. package/lib/module/hooks-sdk-selectors.js.map +1 -1
  351. package/lib/module/hooks-sdk.js +23 -1
  352. package/lib/module/hooks-sdk.js.map +1 -1
  353. package/lib/module/hooks-util-selectors.js +3 -2
  354. package/lib/module/hooks-util-selectors.js.map +1 -1
  355. package/lib/module/hooks-util.js +455 -90
  356. package/lib/module/hooks-util.js.map +1 -1
  357. package/lib/module/redux/actionTypes.js +18 -3
  358. package/lib/module/redux/actionTypes.js.map +1 -1
  359. package/lib/module/redux/actions/index.js +42 -2
  360. package/lib/module/redux/actions/index.js.map +1 -1
  361. package/lib/module/redux/reducers/appState.js +49 -1
  362. package/lib/module/redux/reducers/appState.js.map +1 -1
  363. package/lib/module/redux/reducers/chatWindow.js +1 -2
  364. package/lib/module/redux/reducers/chatWindow.js.map +1 -1
  365. package/lib/module/redux/reducers/message.js +17 -4
  366. package/lib/module/redux/reducers/message.js.map +1 -1
  367. package/lib/module/types.js +1 -0
  368. package/lib/module/types.js.map +1 -1
  369. package/lib/module/utils/types.js +5 -2
  370. package/lib/module/utils/types.js.map +1 -1
  371. package/lib/module/utils.js +2 -2
  372. package/lib/module/utils.js.map +1 -1
  373. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  374. package/lib/typescript/Icons/Chat/index.d.ts +1 -0
  375. package/lib/typescript/Icons/Chat/index.d.ts.map +1 -1
  376. package/lib/typescript/Icons/NoEntry/index.d.ts +7 -0
  377. package/lib/typescript/Icons/NoEntry/index.d.ts.map +1 -0
  378. package/lib/typescript/Icons/PauseCircle/index.d.ts +7 -0
  379. package/lib/typescript/Icons/PauseCircle/index.d.ts.map +1 -0
  380. package/lib/typescript/Icons/Pin/index.d.ts +1 -0
  381. package/lib/typescript/Icons/Pin/index.d.ts.map +1 -1
  382. package/lib/typescript/Icons/Recording/index.d.ts +1 -1
  383. package/lib/typescript/Icons/Recording/index.d.ts.map +1 -1
  384. package/lib/typescript/Icons/index.d.ts +2 -0
  385. package/lib/typescript/Icons/index.d.ts.map +1 -1
  386. package/lib/typescript/components/AnimatedFooter.d.ts.map +1 -1
  387. package/lib/typescript/components/AnimatedHLSFooter.d.ts.map +1 -1
  388. package/lib/typescript/components/AnimatedHeader.d.ts.map +1 -1
  389. package/lib/typescript/components/BottomSheet.d.ts +1 -0
  390. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  391. package/lib/typescript/components/Chat/ChatFilterBottomSheet.d.ts +3 -0
  392. package/lib/typescript/components/Chat/ChatFilterBottomSheet.d.ts.map +1 -0
  393. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts +1 -0
  394. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts.map +1 -1
  395. package/lib/typescript/components/Chat/ChatFilterBottomSheetView.d.ts.map +1 -1
  396. package/lib/typescript/components/Chat/ChatFilterItem.d.ts +1 -0
  397. package/lib/typescript/components/Chat/ChatFilterItem.d.ts.map +1 -1
  398. package/lib/typescript/components/Chat/ChatFilterView.d.ts +1 -0
  399. package/lib/typescript/components/Chat/ChatFilterView.d.ts.map +1 -1
  400. package/lib/typescript/components/Chat/ChatList.d.ts.map +1 -1
  401. package/lib/typescript/components/Chat/ChatMessage.d.ts.map +1 -1
  402. package/lib/typescript/components/Chat/ChatMoreActionsModal.d.ts +7 -0
  403. package/lib/typescript/components/Chat/ChatMoreActionsModal.d.ts.map +1 -0
  404. package/lib/typescript/components/Chat/ChatMoreActionsSheetView.d.ts +6 -0
  405. package/lib/typescript/components/Chat/ChatMoreActionsSheetView.d.ts.map +1 -0
  406. package/lib/typescript/components/Chat/ChatMoreActionsView.d.ts +7 -0
  407. package/lib/typescript/components/Chat/ChatMoreActionsView.d.ts.map +1 -0
  408. package/lib/typescript/components/Chat/ChatPaused.d.ts +10 -0
  409. package/lib/typescript/components/Chat/ChatPaused.d.ts.map +1 -0
  410. package/lib/typescript/components/Chat/MessageOptionsBottomSheet.d.ts +3 -0
  411. package/lib/typescript/components/Chat/MessageOptionsBottomSheet.d.ts.map +1 -0
  412. package/lib/typescript/components/Chat/MessageOptionsBottomSheetView.d.ts +6 -0
  413. package/lib/typescript/components/Chat/MessageOptionsBottomSheetView.d.ts.map +1 -0
  414. package/lib/typescript/components/Chat/MessageOptionsView.d.ts +7 -0
  415. package/lib/typescript/components/Chat/MessageOptionsView.d.ts.map +1 -0
  416. package/lib/typescript/components/Chat/PeerBlockedFromChat.d.ts +9 -0
  417. package/lib/typescript/components/Chat/PeerBlockedFromChat.d.ts.map +1 -0
  418. package/lib/typescript/components/Chat/PinnedMessages.d.ts +8 -0
  419. package/lib/typescript/components/Chat/PinnedMessages.d.ts.map +1 -0
  420. package/lib/typescript/components/Chat/index.d.ts +1 -1
  421. package/lib/typescript/components/Chat/index.d.ts.map +1 -1
  422. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -1
  423. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -1
  424. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -1
  425. package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts.map +1 -1
  426. package/lib/typescript/components/DisplayView.d.ts.map +1 -1
  427. package/lib/typescript/components/EndRoomModal.d.ts.map +1 -1
  428. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  429. package/lib/typescript/components/Footer.d.ts +1 -1
  430. package/lib/typescript/components/Footer.d.ts.map +1 -1
  431. package/lib/typescript/components/GridView.d.ts.map +1 -1
  432. package/lib/typescript/components/HLSView.d.ts.map +1 -1
  433. package/lib/typescript/components/HMSBaseButton.d.ts +1 -0
  434. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  435. package/lib/typescript/components/HMSDangerButton.d.ts +1 -0
  436. package/lib/typescript/components/HMSDangerButton.d.ts.map +1 -1
  437. package/lib/typescript/components/HMSHLSMessage.d.ts +1 -1
  438. package/lib/typescript/components/HMSHLSMessage.d.ts.map +1 -1
  439. package/lib/typescript/components/HMSHandRaiseNotification.d.ts.map +1 -1
  440. package/lib/typescript/components/HMSKeyboardAvoidingView.android.d.ts.map +1 -1
  441. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts +2 -1
  442. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -1
  443. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
  444. package/lib/typescript/components/HMSLiveViewerCount.d.ts +3 -0
  445. package/lib/typescript/components/HMSLiveViewerCount.d.ts.map +1 -0
  446. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -1
  447. package/lib/typescript/components/HMSNotification.d.ts +2 -1
  448. package/lib/typescript/components/HMSNotification.d.ts.map +1 -1
  449. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -1
  450. package/lib/typescript/components/HMSOverlayChatView.d.ts +5 -1
  451. package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -1
  452. package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
  453. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -1
  454. package/lib/typescript/components/HMSPrimaryButton.d.ts +1 -0
  455. package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
  456. package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
  457. package/lib/typescript/components/HMSTerminalErrorNotification.d.ts.map +1 -1
  458. package/lib/typescript/components/Header.d.ts +1 -0
  459. package/lib/typescript/components/Header.d.ts.map +1 -1
  460. package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
  461. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  462. package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
  463. package/lib/typescript/components/Modals.d.ts.map +1 -1
  464. package/lib/typescript/components/OverlayedViews.d.ts +4 -1
  465. package/lib/typescript/components/OverlayedViews.d.ts.map +1 -1
  466. package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts.map +1 -1
  467. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  468. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  469. package/lib/typescript/components/PressableIcon.d.ts.map +1 -1
  470. package/lib/typescript/components/Preview.d.ts.map +1 -1
  471. package/lib/typescript/components/PreviewForRoleChangeModal.d.ts.map +1 -1
  472. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  473. package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
  474. package/lib/typescript/components/WebrtcView.d.ts +2 -0
  475. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  476. package/lib/typescript/hooks-sdk-selectors.d.ts +3 -0
  477. package/lib/typescript/hooks-sdk-selectors.d.ts.map +1 -1
  478. package/lib/typescript/hooks-sdk.d.ts +4 -0
  479. package/lib/typescript/hooks-sdk.d.ts.map +1 -1
  480. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  481. package/lib/typescript/hooks-util.d.ts +39 -3
  482. package/lib/typescript/hooks-util.d.ts.map +1 -1
  483. package/lib/typescript/redux/actionTypes.d.ts +10 -2
  484. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  485. package/lib/typescript/redux/actions/index.d.ts +43 -3
  486. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  487. package/lib/typescript/redux/index.d.ts +8 -2
  488. package/lib/typescript/redux/index.d.ts.map +1 -1
  489. package/lib/typescript/redux/reducers/appState.d.ts +8 -2
  490. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  491. package/lib/typescript/redux/reducers/chatWindow.d.ts +1 -1
  492. package/lib/typescript/redux/reducers/chatWindow.d.ts.map +1 -1
  493. package/lib/typescript/redux/reducers/index.d.ts +8 -2
  494. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  495. package/lib/typescript/redux/reducers/message.d.ts +3 -2
  496. package/lib/typescript/redux/reducers/message.d.ts.map +1 -1
  497. package/lib/typescript/types.d.ts +23 -3
  498. package/lib/typescript/types.d.ts.map +1 -1
  499. package/lib/typescript/utils/types.d.ts +4 -0
  500. package/lib/typescript/utils/types.d.ts.map +1 -1
  501. package/package.json +3 -3
  502. package/src/HMSRoomSetup.tsx +8 -3
  503. package/src/Icons/Chat/assets/chat-on.png +0 -0
  504. package/src/Icons/Chat/assets/chat-on@2x.png +0 -0
  505. package/src/Icons/Chat/assets/chat-on@3x.png +0 -0
  506. package/src/Icons/Chat/index.tsx +19 -6
  507. package/src/Icons/NoEntry/assets/no-entry.png +0 -0
  508. package/src/Icons/NoEntry/assets/no-entry@2x.png +0 -0
  509. package/src/Icons/NoEntry/assets/no-entry@3x.png +0 -0
  510. package/src/Icons/NoEntry/index.tsx +33 -0
  511. package/src/Icons/PauseCircle/assets/pause-circle.png +0 -0
  512. package/src/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
  513. package/src/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
  514. package/src/Icons/PauseCircle/index.tsx +27 -0
  515. package/src/Icons/Pin/assets/unpin.png +0 -0
  516. package/src/Icons/Pin/assets/unpin@2x.png +0 -0
  517. package/src/Icons/Pin/assets/unpin@3x.png +0 -0
  518. package/src/Icons/Pin/index.tsx +13 -3
  519. package/src/Icons/Recording/assets/recording-pause.png +0 -0
  520. package/src/Icons/Recording/assets/recording-pause@2x.png +0 -0
  521. package/src/Icons/Recording/assets/recording-pause@3x.png +0 -0
  522. package/src/Icons/Recording/index.tsx +4 -2
  523. package/src/Icons/index.ts +2 -0
  524. package/src/components/AnimatedFooter.tsx +9 -3
  525. package/src/components/AnimatedHLSFooter.tsx +8 -17
  526. package/src/components/AnimatedHeader.tsx +16 -5
  527. package/src/components/BottomSheet.tsx +21 -5
  528. package/src/components/Chat/ChatFilterBottomSheet.tsx +35 -0
  529. package/src/components/Chat/ChatFilterBottomSheetOpener.tsx +170 -42
  530. package/src/components/Chat/ChatFilterBottomSheetView.tsx +1 -0
  531. package/src/components/Chat/ChatFilterItem.tsx +8 -4
  532. package/src/components/Chat/ChatFilterView.tsx +102 -75
  533. package/src/components/Chat/ChatList.tsx +18 -6
  534. package/src/components/Chat/ChatMessage.tsx +111 -7
  535. package/src/components/Chat/ChatMoreActionsModal.tsx +75 -0
  536. package/src/components/Chat/ChatMoreActionsSheetView.tsx +77 -0
  537. package/src/components/Chat/ChatMoreActionsView.tsx +84 -0
  538. package/src/components/Chat/ChatPaused.tsx +103 -0
  539. package/src/components/Chat/MessageOptionsBottomSheet.tsx +33 -0
  540. package/src/components/Chat/MessageOptionsBottomSheetView.tsx +82 -0
  541. package/src/components/Chat/MessageOptionsView.tsx +248 -0
  542. package/src/components/Chat/PeerBlockedFromChat.tsx +49 -0
  543. package/src/components/Chat/PinnedMessages.tsx +422 -0
  544. package/src/components/Chat/index.ts +1 -1
  545. package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +15 -7
  546. package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +48 -12
  547. package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +14 -5
  548. package/src/components/ChatAndParticipants/ChatView.tsx +37 -5
  549. package/src/components/DisplayView.tsx +4 -13
  550. package/src/components/EndRoomModal.tsx +0 -1
  551. package/src/components/EndRoomModalContent.tsx +11 -13
  552. package/src/components/Footer.tsx +20 -23
  553. package/src/components/GridView.tsx +44 -8
  554. package/src/components/HLSFooter.tsx +1 -1
  555. package/src/components/HLSView.tsx +45 -44
  556. package/src/components/HMSBaseButton.tsx +17 -2
  557. package/src/components/HMSDangerButton.tsx +3 -0
  558. package/src/components/HMSHLSMessage.tsx +130 -13
  559. package/src/components/HMSHLSMessageList.tsx +2 -2
  560. package/src/components/HMSHandRaiseNotification.tsx +17 -10
  561. package/src/components/HMSKeyboardAvoidingView.android.tsx +1 -5
  562. package/src/components/HMSKeyboardAvoidingView.tsx +12 -4
  563. package/src/components/HMSLiveIndicator.tsx +14 -83
  564. package/src/components/HMSLiveViewerCount.tsx +91 -0
  565. package/src/components/HMSLocalScreenshareNotification.tsx +1 -0
  566. package/src/components/HMSNotification.tsx +56 -13
  567. package/src/components/HMSNotifications.tsx +12 -2
  568. package/src/components/HMSOverlayChatView.tsx +91 -18
  569. package/src/components/HMSPreviewEditName.tsx +12 -1
  570. package/src/components/HMSPreviewHLSLiveIndicator.tsx +2 -5
  571. package/src/components/HMSPrimaryButton.tsx +3 -0
  572. package/src/components/HMSRecordingIndicator.tsx +10 -7
  573. package/src/components/HMSRoomOptions.tsx +4 -4
  574. package/src/components/HMSTerminalErrorNotification.tsx +15 -10
  575. package/src/components/Header.tsx +17 -3
  576. package/src/components/LeaveRoomBottomSheet.tsx +14 -15
  577. package/src/components/Meeting.tsx +6 -19
  578. package/src/components/MeetingScreenContent.tsx +70 -64
  579. package/src/components/MiniView.tsx +4 -4
  580. package/src/components/Modals.tsx +23 -25
  581. package/src/components/OverlayedViews.tsx +6 -3
  582. package/src/components/Participants/ParticipantsItemOptions.tsx +12 -7
  583. package/src/components/PeerSettingsModalContent.tsx +4 -1
  584. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +4 -1
  585. package/src/components/PressableIcon.tsx +22 -17
  586. package/src/components/Preview.tsx +15 -2
  587. package/src/components/PreviewForRoleChangeModal.tsx +4 -3
  588. package/src/components/RoomSettingsModalContent.tsx +74 -14
  589. package/src/components/RoomSettingsModalDebugModeContent.tsx +2 -4
  590. package/src/components/WebrtcView.tsx +63 -22
  591. package/src/hooks-sdk-selectors.tsx +19 -0
  592. package/src/hooks-sdk.ts +37 -0
  593. package/src/hooks-util-selectors.tsx +2 -2
  594. package/src/hooks-util.ts +639 -131
  595. package/src/redux/actionTypes.ts +25 -2
  596. package/src/redux/actions/index.ts +46 -4
  597. package/src/redux/reducers/appState.ts +60 -3
  598. package/src/redux/reducers/chatWindow.ts +2 -2
  599. package/src/redux/reducers/message.ts +20 -6
  600. package/src/types.ts +35 -6
  601. package/src/utils/types.ts +15 -3
  602. package/src/utils.ts +2 -2
  603. package/lib/commonjs/components/Chat/PinnedMessage.js +0 -81
  604. package/lib/commonjs/components/Chat/PinnedMessage.js.map +0 -1
  605. package/lib/module/components/Chat/PinnedMessage.js +0 -72
  606. package/lib/module/components/Chat/PinnedMessage.js.map +0 -1
  607. package/lib/typescript/components/Chat/PinnedMessage.d.ts +0 -3
  608. package/lib/typescript/components/Chat/PinnedMessage.d.ts.map +0 -1
  609. package/src/components/Chat/PinnedMessage.tsx +0 -89
package/src/hooks-util.ts CHANGED
@@ -7,7 +7,6 @@ import {
7
7
  HMSPIPListenerActions,
8
8
  HMSPeer,
9
9
  HMSPeerUpdate,
10
- HMSRemotePeer,
11
10
  HMSRoleChangeRequest,
12
11
  HMSRoom,
13
12
  HMSRoomUpdate,
@@ -30,8 +29,8 @@ import type {
30
29
  HMSPIPConfig,
31
30
  HMSRole,
32
31
  HMSSessionStore,
33
- HMSSessionStoreValue,
34
32
  HMSSpeaker,
33
+ JsonValue,
35
34
  } from '@100mslive/react-native-hms';
36
35
  import type {
37
36
  ColorPalette,
@@ -59,12 +58,9 @@ import {
59
58
  PeerListRefreshInterval,
60
59
  PipModes,
61
60
  } from './utils/types';
62
- import type {
63
- ChatBroadcastFilter,
64
- OnLeaveHandler,
65
- PeerTrackNode,
66
- } from './utils/types';
67
- import { createPeerTrackNode } from './utils/functions';
61
+ import { ChatBroadcastFilter } from './utils/types';
62
+ import type { OnLeaveHandler, PeerTrackNode } from './utils/types';
63
+ import { createPeerTrackNode, parseMetadata } from './utils/functions';
68
64
  import {
69
65
  batch,
70
66
  shallowEqual,
@@ -78,13 +74,14 @@ import {
78
74
  addNotification,
79
75
  addParticipant,
80
76
  addParticipants,
81
- addPinnedMessage,
77
+ addPinnedMessages,
82
78
  addScreenshareTile,
83
79
  addUpdateParticipant,
84
80
  changeMeetingState,
85
81
  changePipModeStatus,
86
82
  changeStartingHLSStream,
87
83
  clearStore,
84
+ filterOutMsgsFromBlockedPeers,
88
85
  removeNotification,
89
86
  removeParticipant,
90
87
  removeParticipants,
@@ -94,6 +91,9 @@ import {
94
91
  setActiveChatBottomSheetTab,
95
92
  setActiveSpeakers,
96
93
  setAutoEnterPipMode,
94
+ setChatPeerBlacklist,
95
+ setChatState,
96
+ setEditUsernameDisabled,
97
97
  setFullScreenPeerTrackNode,
98
98
  setHMSLocalPeerState,
99
99
  setHMSRoleState,
@@ -126,7 +126,7 @@ import {
126
126
  replacePeerTrackNodesWithTrack,
127
127
  } from './peerTrackNodeUtils';
128
128
  import { MeetingState } from './types';
129
- import type { HMSPrebuiltProps } from './types';
129
+ import type { ChatState, HMSPrebuiltProps, PinnedMessage } from './types';
130
130
  import {
131
131
  BackHandler,
132
132
  InteractionManager,
@@ -151,6 +151,8 @@ import type { GridViewRefAttrs } from './components/GridView';
151
151
  import { getRoomLayout } from './modules/HMSManager';
152
152
  import { DEFAULT_THEME, DEFAULT_TYPOGRAPHY } from './utils/theme';
153
153
  import { NotificationTypes } from './types';
154
+ import { KeyboardState, useSharedValue } from 'react-native-reanimated';
155
+ import { useHMSActions } from './hooks-sdk';
154
156
 
155
157
  export const useHMSListeners = (
156
158
  setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
@@ -189,48 +191,6 @@ const useHMSRoomUpdate = (hmsInstance: HMSSDK) => {
189
191
  }
190
192
  } else if (type === HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED) {
191
193
  dispatch(changeStartingHLSStream(false));
192
- } else if (type === HMSRoomUpdate.RTMP_STREAMING_STATE_UPDATED) {
193
- let streaming = room?.rtmpHMSRtmpStreamingState?.running;
194
- const startAtDate = room?.rtmpHMSRtmpStreamingState?.startedAt;
195
-
196
- let startTime: null | string = null;
197
-
198
- if (startAtDate) {
199
- let hours = startAtDate.getHours().toString();
200
- let minutes = startAtDate.getMinutes()?.toString();
201
- startTime = hours + ':' + minutes;
202
- }
203
-
204
- Toast.showWithGravity(
205
- `RTMP Streaming ${
206
- streaming
207
- ? `Started ${startTime ? 'At ' + startTime : ''}`
208
- : 'Stopped'
209
- }`,
210
- Toast.LONG,
211
- Toast.TOP
212
- );
213
- } else if (type === HMSRoomUpdate.SERVER_RECORDING_STATE_UPDATED) {
214
- let streaming = room?.serverRecordingState?.running;
215
- const startAtDate = room?.serverRecordingState?.startedAt;
216
-
217
- let startTime: null | string = null;
218
-
219
- if (startAtDate) {
220
- let hours = startAtDate.getHours().toString();
221
- let minutes = startAtDate.getMinutes()?.toString();
222
- startTime = hours + ':' + minutes;
223
- }
224
-
225
- Toast.showWithGravity(
226
- `Server Recording ${
227
- streaming
228
- ? `Started ${startTime ? 'At ' + startTime : ''}`
229
- : 'Stopped'
230
- }`,
231
- Toast.LONG,
232
- Toast.TOP
233
- );
234
194
  }
235
195
  };
236
196
 
@@ -260,6 +220,7 @@ const useHMSPeersUpdate = (
260
220
  // const inMeeting = useSelector(
261
221
  // (state: RootState) => state.app.meetingState === MeetingState.IN_MEETING
262
222
  // );
223
+ const hmsActions = useHMSActions();
263
224
 
264
225
  useEffect(() => {
265
226
  const peerUpdateHandler = ({ peer, type }: PeerUpdate) => {
@@ -313,6 +274,7 @@ const useHMSPeersUpdate = (
313
274
  const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
314
275
  const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
315
276
  const localPeerTrackNode = reduxState.app.localPeerTrackNode;
277
+ const initialRole = reduxState.app.initialRole;
316
278
 
317
279
  // Currently Applied Layout config
318
280
  const currentLayoutConfig = selectLayoutConfigForRole(
@@ -383,11 +345,41 @@ const useHMSPeersUpdate = (
383
345
  // - TODO: update local localPeer state
384
346
  // - Pass this updated data to Meeting component -> DisplayView component
385
347
  updateLocalPeer();
348
+
349
+ if (type === HMSPeerUpdate.ROLE_CHANGED) {
350
+ const parsedLocalPeerMetadata = parseMetadata(peer.metadata);
351
+
352
+ if (parsedLocalPeerMetadata.prevRole !== initialRole) {
353
+ const newMetadata = {
354
+ ...parsedLocalPeerMetadata,
355
+ prevRole: initialRole?.name,
356
+ };
357
+
358
+ hmsActions
359
+ .changeMetadata(newMetadata)
360
+ .then((r) => {
361
+ console.log('Metadata changed successfully', r);
362
+ })
363
+ .catch((e) => {
364
+ console.log('Metadata change failed', e);
365
+ });
366
+ }
367
+ }
386
368
  return;
387
369
  }
388
370
  if (type === HMSPeerUpdate.ROLE_CHANGED) {
389
371
  dispatch(addUpdateParticipant(peer));
390
372
 
373
+ // saving current role in peer metadata,
374
+ // so that when peer is removed from stage, we can assign previous role to it.
375
+ // if (localPeerRoleName) {
376
+ // const newMetadata = {
377
+ // ...localPeerMetadata,
378
+ // prevRole: localPeerRoleName,
379
+ // };
380
+ // await hmsActions.changeMetadata(newMetadata);
381
+ // }
382
+
391
383
  // Handling regular tiles list
392
384
  if (
393
385
  peer.role?.publishSettings?.allowed === undefined ||
@@ -1040,6 +1032,7 @@ type SessionStoreListeners = Array<{ remove: () => void }>;
1040
1032
  export const useHMSSessionStoreListeners = (
1041
1033
  gridViewRef: React.MutableRefObject<GridViewRefAttrs | null>
1042
1034
  ) => {
1035
+ const store = useStore<RootState>();
1043
1036
  const dispatch = useDispatch();
1044
1037
  const hmsSessionStore = useSelector(
1045
1038
  (state: RootState) => state.user.hmsSessionStore
@@ -1053,18 +1046,105 @@ export const useHMSSessionStoreListeners = (
1053
1046
 
1054
1047
  const addSessionStoreListeners = () => {
1055
1048
  // Handle 'spotlight' key values
1056
- const handleSpotlightIdChange = (id: HMSSessionStoreValue) => {
1057
- // set value to the state to rerender the component to reflect changes
1058
- dispatch(saveUserData({ spotlightTrackId: id }));
1059
- // Scroll to start of the list
1060
- gridViewRef.current
1061
- ?.getRegularTilesFlatlistRef()
1062
- .current?.scrollToOffset({ animated: true, offset: 0 });
1049
+ const handleSpotlightIdChange = (id: JsonValue) => {
1050
+ if (id === null || id === undefined || typeof id === 'string') {
1051
+ // set value to the state to rerender the component to reflect changes
1052
+ dispatch(saveUserData({ spotlightTrackId: id }));
1053
+ // Scroll to start of the list
1054
+ gridViewRef.current
1055
+ ?.getRegularTilesFlatlistRef()
1056
+ .current?.scrollToOffset({ animated: true, offset: 0 });
1057
+ }
1063
1058
  };
1064
1059
 
1065
- // Handle 'pinnedMessage' key values
1066
- const handlePinnedMessageChange = (data: HMSSessionStoreValue) => {
1067
- dispatch(addPinnedMessage(data));
1060
+ // Handle 'pinnedMessages' key values
1061
+ const handlePinnedMessagesChange = (data: JsonValue) => {
1062
+ if (Array.isArray(data)) {
1063
+ dispatch(addPinnedMessages(data as PinnedMessage[]));
1064
+ }
1065
+ };
1066
+
1067
+ // Handle 'chatState' key values
1068
+ const handleChatStateChange = (data: JsonValue) => {
1069
+ try {
1070
+ if (
1071
+ typeof data !== 'object' ||
1072
+ Array.isArray(data) ||
1073
+ data === null
1074
+ ) {
1075
+ throw new Error('`data` is a falsy value');
1076
+ }
1077
+ if (!('enabled' in data)) {
1078
+ throw new Error("`data` doesn't have `enabled` property");
1079
+ }
1080
+
1081
+ const parsedData = data as ChatState;
1082
+
1083
+ const reduxState = store.getState();
1084
+ const currentChatState = reduxState.app.chatState;
1085
+
1086
+ if (parsedData.enabled === currentChatState?.enabled) {
1087
+ return;
1088
+ }
1089
+
1090
+ const currentLayoutConfig = selectLayoutConfigForRole(
1091
+ reduxState.hmsStates.layoutConfig,
1092
+ reduxState.hmsStates.localPeer?.role ?? null
1093
+ );
1094
+
1095
+ const chatLayoutConfig =
1096
+ selectChatLayoutConfig(currentLayoutConfig);
1097
+
1098
+ const isAllowedToSendMessage =
1099
+ (chatLayoutConfig?.private_chat_enabled ||
1100
+ chatLayoutConfig?.public_chat_enabled ||
1101
+ (chatLayoutConfig?.roles_whitelist &&
1102
+ chatLayoutConfig?.roles_whitelist.length > 0)) ??
1103
+ false;
1104
+
1105
+ batch(() => {
1106
+ if (
1107
+ isAllowedToSendMessage && // Only show notification when allowed to send message, AND
1108
+ (!parsedData.enabled || // Chat is Paused, OR
1109
+ (currentChatState &&
1110
+ parsedData.enabled !== currentChatState.enabled)) // current Chat state is different from previous state
1111
+ ) {
1112
+ dispatch(
1113
+ addNotification({
1114
+ id: `chat-state-enabled-${Math.random()
1115
+ .toString(16)
1116
+ .slice(2)}`,
1117
+ icon: parsedData.enabled ? 'chat-on' : 'chat-off',
1118
+ type: NotificationTypes.INFO,
1119
+ title: `Chat ${parsedData.enabled ? 'Resumed' : 'Paused'}`,
1120
+ message: `Chat ${
1121
+ parsedData.enabled ? 'resumed' : 'paused'
1122
+ } ${
1123
+ parsedData.updatedBy
1124
+ ? `by ${parsedData.updatedBy.userName}`
1125
+ : ''
1126
+ }`,
1127
+ })
1128
+ );
1129
+ }
1130
+ dispatch(setChatState(parsedData));
1131
+ });
1132
+ } catch (error) {
1133
+ dispatch(setChatState(null));
1134
+ }
1135
+ };
1136
+
1137
+ // Handle 'chatPeerBlacklist' key values
1138
+ const handleChatPeerBlacklistChange = (data: JsonValue) => {
1139
+ // Whenever list changes :
1140
+ // - check if local peer is blocked or unblocked
1141
+ // - filter out messages of blocked peers
1142
+ if (Array.isArray(data)) {
1143
+ batch(() => {
1144
+ dispatch(setChatPeerBlacklist(data as string[]));
1145
+ dispatch(filterOutMsgsFromBlockedPeers(data as string[]));
1146
+ });
1147
+ }
1068
1148
  };
1069
1149
 
1070
1150
  // Getting value for 'spotlight' key by using `get` method on HMSSessionStore instance
@@ -1084,19 +1164,53 @@ export const useHMSSessionStoreListeners = (
1084
1164
  )
1085
1165
  );
1086
1166
 
1087
- // Getting value for 'pinnedMessage' key by using `get` method on HMSSessionStore instance
1167
+ // Getting value for 'pinnedMessages' key by using `get` method on HMSSessionStore instance
1168
+ hmsSessionStore
1169
+ .get('pinnedMessages')
1170
+ .then((data) => {
1171
+ console.log(
1172
+ 'Session Store get `pinnedMessages` key value success: ',
1173
+ data
1174
+ );
1175
+ handlePinnedMessagesChange(data);
1176
+ })
1177
+ .catch((error) =>
1178
+ console.log(
1179
+ 'Session Store get `pinnedMessages` key value error: ',
1180
+ error
1181
+ )
1182
+ );
1183
+
1184
+ // Getting value for 'chatState' key by using `get` method on HMSSessionStore instance
1185
+ hmsSessionStore
1186
+ .get('chatState')
1187
+ .then((data) => {
1188
+ console.log(
1189
+ 'Session Store get `chatState` key value success: ',
1190
+ data
1191
+ );
1192
+ handleChatStateChange(data);
1193
+ })
1194
+ .catch((error) =>
1195
+ console.log(
1196
+ 'Session Store get `chatState` key value error: ',
1197
+ error
1198
+ )
1199
+ );
1200
+
1201
+ // Getting value for 'chatPeerBlacklist' key by using `get` method on HMSSessionStore instance
1088
1202
  hmsSessionStore
1089
- .get('pinnedMessage')
1203
+ .get('chatPeerBlacklist')
1090
1204
  .then((data) => {
1091
1205
  console.log(
1092
- 'Session Store get `pinnedMessage` key value success: ',
1206
+ 'Session Store get `chatPeerBlacklist` key value success: ',
1093
1207
  data
1094
1208
  );
1095
- handlePinnedMessageChange(data);
1209
+ handleChatPeerBlacklistChange(data);
1096
1210
  })
1097
1211
  .catch((error) =>
1098
1212
  console.log(
1099
- 'Session Store get `pinnedMessage` key value error: ',
1213
+ 'Session Store get `chatPeerBlacklist` key value error: ',
1100
1214
  error
1101
1215
  )
1102
1216
  );
@@ -1104,66 +1218,44 @@ export const useHMSSessionStoreListeners = (
1104
1218
  // let lastSpotlightValue: HMSSessionStoreValue = null;
1105
1219
  // let lastPinnedMessageValue: HMSSessionStoreValue = null;
1106
1220
 
1107
- // Add subscription for `spotlight` & `pinnedMessage` keys updates on Session Store
1221
+ // Add subscription for `spotlight`, `pinnedMessages`, `chatState` & `chatPeerBlacklist` keys updates on Session Store
1108
1222
  const subscription = hmsSessionStore.addKeyChangeListener<
1109
- ['spotlight', 'pinnedMessage']
1110
- >(['spotlight', 'pinnedMessage'], (error, data) => {
1111
- // If error occurs, handle error and return early
1112
- if (error !== null) {
1113
- console.log(
1114
- '`spotlight` & `pinnedMessage` key listener Error -> ',
1115
- error
1116
- );
1117
- return;
1118
- }
1223
+ ['spotlight', 'pinnedMessages', 'chatState', 'chatPeerBlacklist']
1224
+ >(
1225
+ ['spotlight', 'pinnedMessages', 'chatState', 'chatPeerBlacklist'],
1226
+ (error, data) => {
1227
+ // If error occurs, handle error and return early
1228
+ if (error !== null) {
1229
+ console.log(
1230
+ '`spotlight`, `pinnedMessages`, `chatState` & `chatPeerBlacklist` key listener Error -> ',
1231
+ error
1232
+ );
1233
+ return;
1234
+ }
1119
1235
 
1120
- // If no error, handle data
1121
- if (data !== null) {
1122
- switch (data.key) {
1123
- case 'spotlight': {
1124
- handleSpotlightIdChange(data.value);
1125
-
1126
- // Showing Toast message if value has actually changed
1127
- // if (
1128
- // data.value !== lastSpotlightValue &&
1129
- // (data.value || lastSpotlightValue)
1130
- // ) {
1131
- // Toast.showWithGravity(
1132
- // `SessionStore: \`spotlight\` key's value changed to ${data.value}`,
1133
- // Toast.LONG,
1134
- // Toast.TOP
1135
- // );
1136
- // }
1137
-
1138
- // lastSpotlightValue = data.value;
1139
- break;
1140
- }
1141
- case 'pinnedMessage': {
1142
- handlePinnedMessageChange(data.value);
1143
-
1144
- // Showing Toast message if value has actually changed
1145
- // if (
1146
- // data.value !== lastPinnedMessageValue &&
1147
- // (data.value || lastPinnedMessageValue)
1148
- // ) {
1149
- // if (toastTimeoutId !== null) {
1150
- // clearTimeout(toastTimeoutId);
1151
- // }
1152
- // toastTimeoutId = setTimeout(() => {
1153
- // Toast.showWithGravity(
1154
- // `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
1155
- // Toast.LONG,
1156
- // Toast.TOP
1157
- // );
1158
- // }, 1500);
1159
- // }
1160
-
1161
- // lastPinnedMessageValue = data.value;
1162
- break;
1236
+ // If no error, handle data
1237
+ if (data !== null) {
1238
+ switch (data.key) {
1239
+ case 'spotlight': {
1240
+ handleSpotlightIdChange(data.value);
1241
+ break;
1242
+ }
1243
+ case 'pinnedMessages': {
1244
+ handlePinnedMessagesChange(data.value);
1245
+ break;
1246
+ }
1247
+ case 'chatState': {
1248
+ handleChatStateChange(data.value);
1249
+ break;
1250
+ }
1251
+ case 'chatPeerBlacklist': {
1252
+ handleChatPeerBlacklistChange(data.value);
1253
+ break;
1254
+ }
1163
1255
  }
1164
1256
  }
1165
1257
  }
1166
- });
1258
+ );
1167
1259
 
1168
1260
  // Save reference of `subscription` in a ref
1169
1261
  sessionStoreListenersRef.current.push(subscription);
@@ -1180,7 +1272,7 @@ export const useHMSSessionStoreListeners = (
1180
1272
  // if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
1181
1273
  };
1182
1274
  }
1183
- }, [hmsSessionStore]);
1275
+ }, [store, hmsSessionStore]);
1184
1276
  };
1185
1277
 
1186
1278
  export const useHMSSessionStore = () => {
@@ -2242,12 +2334,9 @@ export const useSendMessage = () => {
2242
2334
  const chatWindowState = reduxStore.getState().chatWindow;
2243
2335
 
2244
2336
  const message = chatWindowState.typedMessage;
2245
- const sendingTo = chatWindowState.sendTo as
2246
- | HMSRole
2247
- | HMSRemotePeer
2248
- | typeof ChatBroadcastFilter;
2337
+ const sendingTo = chatWindowState.sendTo;
2249
2338
 
2250
- if (message.length <= 0) return;
2339
+ if (message.length <= 0 || !sendingTo) return;
2251
2340
 
2252
2341
  const hmsMessageRecipient = new HMSMessageRecipient({
2253
2342
  recipientType:
@@ -2311,6 +2400,72 @@ export const useSendMessage = () => {
2311
2400
  };
2312
2401
  };
2313
2402
 
2403
+ export const useHMSCanDisableChat = () => {
2404
+ return useHMSChatLayoutConfig<boolean>(
2405
+ (chatLayoutConfig) =>
2406
+ chatLayoutConfig?.real_time_controls?.can_disable_chat ?? false
2407
+ );
2408
+ };
2409
+
2410
+ type ChatRecipients = {
2411
+ privateChat: boolean;
2412
+ publicChat: boolean;
2413
+ roles: HMSRole[];
2414
+ };
2415
+
2416
+ export const useHMSChatRecipientSelector = (): ChatRecipients => {
2417
+ const roles = useSelector((state: RootState) => state.hmsStates.roles);
2418
+
2419
+ const defaultChatRecipient = useMemo(
2420
+ () => ({
2421
+ privateChat: false,
2422
+ publicChat: false,
2423
+ roles: [],
2424
+ }),
2425
+ []
2426
+ );
2427
+
2428
+ const chatLayoutConfig = useHMSChatLayoutConfig(
2429
+ (_chatLayoutConfig) => _chatLayoutConfig
2430
+ );
2431
+
2432
+ const rolesWhitelist = chatLayoutConfig?.roles_whitelist;
2433
+
2434
+ const whitelistedRoles = useMemo(() => {
2435
+ if (!rolesWhitelist) {
2436
+ return defaultChatRecipient.roles;
2437
+ }
2438
+ return rolesWhitelist
2439
+ .map((roleStr) => roles.find((role) => role.name === roleStr))
2440
+ .filter((role): role is HMSRole => !!role);
2441
+ }, [roles, rolesWhitelist, defaultChatRecipient]);
2442
+
2443
+ const privateChat =
2444
+ chatLayoutConfig?.private_chat_enabled ?? defaultChatRecipient.privateChat;
2445
+ const publicChat =
2446
+ chatLayoutConfig?.public_chat_enabled ?? defaultChatRecipient.publicChat;
2447
+
2448
+ if (chatLayoutConfig) {
2449
+ return {
2450
+ privateChat,
2451
+ publicChat,
2452
+ roles: whitelistedRoles,
2453
+ };
2454
+ }
2455
+
2456
+ return defaultChatRecipient;
2457
+ };
2458
+
2459
+ export const useIsAllowedToSendMessage = () => {
2460
+ const chatRecipients = useHMSChatRecipientSelector();
2461
+
2462
+ return (
2463
+ chatRecipients.privateChat ||
2464
+ chatRecipients.publicChat ||
2465
+ chatRecipients.roles.length > 0
2466
+ );
2467
+ };
2468
+
2314
2469
  export const useHMSChatLayoutConfig = <Selected = unknown>(
2315
2470
  selector: (chatConfig: ChatConfig | null) => Selected,
2316
2471
  equalityFn?: (left: Selected, right: Selected) => boolean
@@ -2388,8 +2543,13 @@ export const useSavePropsToStore = (
2388
2543
  const { roomCode, options, onLeave, handleBackButton, autoEnterPipMode } =
2389
2544
  props;
2390
2545
 
2546
+ dispatch(setPrebuiltData({ roomCode, options }));
2547
+
2391
2548
  useEffect(() => {
2392
- dispatch(setPrebuiltData({ roomCode, options }));
2549
+ const passedUserName = options?.userName;
2550
+ if (passedUserName && passedUserName.length > 0) {
2551
+ dispatch(setEditUsernameDisabled(true));
2552
+ }
2393
2553
  }, [roomCode, options]);
2394
2554
 
2395
2555
  useEffect(() => {
@@ -2423,7 +2583,7 @@ export const useStartRecording = () => {
2423
2583
  addNotification({
2424
2584
  id: Math.random().toString(16).slice(2),
2425
2585
  type: NotificationTypes.ERROR,
2426
- message: error.message,
2586
+ title: error.message,
2427
2587
  })
2428
2588
  );
2429
2589
  });
@@ -2435,6 +2595,185 @@ export const useStartRecording = () => {
2435
2595
  };
2436
2596
  };
2437
2597
 
2598
+ export const useHMSChatState = () => {
2599
+ const hmsSessionStore = useSelector(
2600
+ (state: RootState) => state.user.hmsSessionStore
2601
+ );
2602
+ const localPeerName = useSelector(
2603
+ (state: RootState) => state.hmsStates.localPeer?.name
2604
+ );
2605
+ const localPeerID = useSelector(
2606
+ (state: RootState) => state.hmsStates.localPeer?.peerID
2607
+ );
2608
+ const localPeerUserID = useSelector(
2609
+ (state: RootState) => state.hmsStates.localPeer?.customerUserID
2610
+ );
2611
+ const _chatState = useSelector((state: RootState) => state.app.chatState);
2612
+
2613
+ const chatState = useMemo(
2614
+ () => _chatState || ({ enabled: true } as const),
2615
+ [_chatState]
2616
+ );
2617
+
2618
+ const setChatState = useCallback(
2619
+ async (enabled: boolean) => {
2620
+ // If instance of HMSSessionStore is available
2621
+ if (hmsSessionStore) {
2622
+ try {
2623
+ const value = {
2624
+ enabled,
2625
+ updatedBy: {
2626
+ peerID: localPeerID ?? null,
2627
+ userID: localPeerUserID ?? null,
2628
+ userName: localPeerName ?? '',
2629
+ },
2630
+ updatedAt: Date.now(),
2631
+ };
2632
+ // set `value` on `session` with key 'chatState'
2633
+ const response = await hmsSessionStore.set(value, 'chatState');
2634
+ console.log('setSessionMetaData Response -> ', response);
2635
+ } catch (error) {
2636
+ console.log('setSessionMetaData Error -> ', error);
2637
+ }
2638
+ }
2639
+ },
2640
+ [localPeerName, hmsSessionStore, localPeerUserID, localPeerID]
2641
+ );
2642
+
2643
+ return { chatState, setChatState };
2644
+ };
2645
+
2646
+ export const useIsMessagePinned = (message: HMSMessage | null) => {
2647
+ return useSelector((state: RootState) =>
2648
+ message
2649
+ ? state.messages.pinnedMessages.findIndex(
2650
+ (pinnedMessage) => pinnedMessage.id === message.messageId
2651
+ ) >= 0
2652
+ : false
2653
+ );
2654
+ };
2655
+
2656
+ export const useHMSMessagePinningActions = () => {
2657
+ const store = useStore<RootState>();
2658
+ const hmsSessionStore = useSelector(
2659
+ (state: RootState) => state.user.hmsSessionStore
2660
+ );
2661
+
2662
+ const pinMessage = useCallback(
2663
+ async (message: HMSMessage | HMSMessage[]) => {
2664
+ let messages = message;
2665
+ if (!Array.isArray(messages)) {
2666
+ messages = [messages];
2667
+ }
2668
+
2669
+ // If instance of HMSSessionStore is available
2670
+ if (hmsSessionStore) {
2671
+ try {
2672
+ const reduxState = store.getState();
2673
+ const localPeerName = reduxState.hmsStates.localPeer?.name;
2674
+ const pinnedMessages = reduxState.messages.pinnedMessages;
2675
+
2676
+ let payload = messages.map((message) => ({
2677
+ authorId: message.sender?.customerUserID ?? '',
2678
+ id: message.messageId,
2679
+ pinnedBy: localPeerName ?? '',
2680
+ text: `${message.sender?.name}: ${message.message}`,
2681
+ }));
2682
+
2683
+ let updatedPinnedMessages = [...pinnedMessages, ...payload];
2684
+
2685
+ if (updatedPinnedMessages.length > 3) {
2686
+ updatedPinnedMessages = updatedPinnedMessages.slice(
2687
+ updatedPinnedMessages.length - 3
2688
+ );
2689
+ }
2690
+
2691
+ const response = await hmsSessionStore.set(
2692
+ updatedPinnedMessages,
2693
+ 'pinnedMessages'
2694
+ );
2695
+ console.log('setSessionMetaData Response -> ', response);
2696
+ } catch (error) {
2697
+ console.log('setSessionMetaData Error -> ', error);
2698
+ return Promise.reject(error);
2699
+ }
2700
+ }
2701
+ },
2702
+ [hmsSessionStore]
2703
+ );
2704
+
2705
+ const unpinMessage = useCallback(
2706
+ async (
2707
+ message: HMSMessage | PinnedMessage | (HMSMessage | PinnedMessage)[]
2708
+ ) => {
2709
+ let messages = message;
2710
+ if (!Array.isArray(messages)) {
2711
+ messages = [messages];
2712
+ }
2713
+
2714
+ // If instance of HMSSessionStore is available
2715
+ if (hmsSessionStore) {
2716
+ try {
2717
+ const pinnedMessages = store.getState().messages.pinnedMessages;
2718
+ const messageIdsToUnpin = messages.map((msg) =>
2719
+ 'messageId' in msg ? msg.messageId : msg.id
2720
+ );
2721
+ const updatedPinnedMessages = pinnedMessages.filter(
2722
+ (pinnedMessage) => !messageIdsToUnpin.includes(pinnedMessage.id)
2723
+ );
2724
+ const response = await hmsSessionStore.set(
2725
+ updatedPinnedMessages,
2726
+ 'pinnedMessages'
2727
+ );
2728
+ console.log('setSessionMetaData Response -> ', response);
2729
+ } catch (error) {
2730
+ console.log('setSessionMetaData Error -> ', error);
2731
+ return Promise.reject(error);
2732
+ }
2733
+ }
2734
+ },
2735
+ [hmsSessionStore]
2736
+ );
2737
+
2738
+ return { pinMessage, unpinMessage };
2739
+ };
2740
+
2741
+ export const useSetDefaultChatRecipient = () => {
2742
+ const dispatch = useDispatch();
2743
+ const localPeerRoleName = useSelector(
2744
+ (state: RootState) => state.hmsStates.localPeer?.role?.name
2745
+ );
2746
+
2747
+ const {
2748
+ privateChat,
2749
+ publicChat,
2750
+ roles: whitelistedRoles,
2751
+ } = useHMSChatRecipientSelector();
2752
+
2753
+ useEffect(() => {
2754
+ if (publicChat) {
2755
+ dispatch({ type: 'SET_SENDTO', sendTo: ChatBroadcastFilter });
2756
+ }
2757
+ // If Role is enabled, Select a role
2758
+ else if (Array.isArray(whitelistedRoles) && whitelistedRoles.length > 0) {
2759
+ const roleObj =
2760
+ whitelistedRoles.length === 1
2761
+ ? whitelistedRoles[0]
2762
+ : whitelistedRoles.filter(
2763
+ (whitelistRole) => whitelistRole.name !== localPeerRoleName
2764
+ )[0];
2765
+
2766
+ if (roleObj) {
2767
+ dispatch({ type: 'SET_SENDTO', sendTo: roleObj });
2768
+ }
2769
+ }
2770
+ // If private is enabled, Select None
2771
+ else if (privateChat) {
2772
+ dispatch({ type: 'SET_SENDTO', sendTo: null });
2773
+ }
2774
+ }, [privateChat, publicChat, whitelistedRoles, localPeerRoleName, dispatch]);
2775
+ };
2776
+
2438
2777
  export const useAndroidSoftInputAdjustResize = () => {
2439
2778
  const currentSoftInputRef = useRef<null | SoftInputModes>(null);
2440
2779
 
@@ -2453,7 +2792,176 @@ export const useAndroidSoftInputAdjustResize = () => {
2453
2792
  if (currentSoftInputRef.current !== null) {
2454
2793
  setSoftInputMode(currentSoftInputRef.current);
2455
2794
  }
2456
- }
2795
+ };
2457
2796
  }
2458
2797
  }, []);
2459
2798
  };
2799
+
2800
+ export const useKeyboardState = () => {
2801
+ const keyboardState = useSharedValue(KeyboardState.UNKNOWN);
2802
+
2803
+ useEffect(() => {
2804
+ let didShowTimeoutId: null | NodeJS.Timeout = null;
2805
+ let didHideTimeoutId: null | NodeJS.Timeout = null;
2806
+
2807
+ const didShowSubscription = Keyboard.addListener('keyboardDidShow', () => {
2808
+ keyboardState.value = KeyboardState.OPENING;
2809
+ if (didShowTimeoutId !== null) {
2810
+ clearTimeout(didShowTimeoutId);
2811
+ }
2812
+ didShowTimeoutId = setTimeout(() => {
2813
+ keyboardState.value = KeyboardState.OPEN;
2814
+ didShowTimeoutId = null;
2815
+ }, 400);
2816
+ });
2817
+
2818
+ const didHideSubscription = Keyboard.addListener('keyboardDidHide', () => {
2819
+ keyboardState.value = KeyboardState.CLOSING;
2820
+ if (didHideTimeoutId !== null) {
2821
+ clearTimeout(didHideTimeoutId);
2822
+ }
2823
+ didHideTimeoutId = setTimeout(() => {
2824
+ keyboardState.value = KeyboardState.CLOSED;
2825
+ didHideTimeoutId = null;
2826
+ }, 400);
2827
+ });
2828
+
2829
+ return () => {
2830
+ if (didShowTimeoutId !== null) {
2831
+ clearTimeout(didShowTimeoutId);
2832
+ }
2833
+ if (didHideTimeoutId !== null) {
2834
+ clearTimeout(didHideTimeoutId);
2835
+ }
2836
+ if ('remove' in didShowSubscription) {
2837
+ didShowSubscription.remove();
2838
+ } else {
2839
+ Keyboard.removeSubscription(didShowSubscription);
2840
+ }
2841
+ if ('remove' in didHideSubscription) {
2842
+ didHideSubscription.remove();
2843
+ } else {
2844
+ Keyboard.removeSubscription(didHideSubscription);
2845
+ }
2846
+ };
2847
+ }, []);
2848
+
2849
+ return { keyboardState };
2850
+ };
2851
+
2852
+ export const useAllowPinningMessage = () => {
2853
+ return useHMSChatLayoutConfig(
2854
+ (config) => config?.allow_pinning_messages ?? false
2855
+ );
2856
+ };
2857
+
2858
+ export const useIsLocalPeerBlockedFromChat = () => {
2859
+ return useSelector((state: RootState) => {
2860
+ const chatPeerBlacklist = state.app.chatPeerBlacklist;
2861
+ const localPeerUserId = state.hmsStates.localPeer?.customerUserID;
2862
+
2863
+ return localPeerUserId
2864
+ ? chatPeerBlacklist.includes(localPeerUserId)
2865
+ : false;
2866
+ });
2867
+ };
2868
+
2869
+ export const useIsPeerBlocked = (peer: HMSPeer | null) => {
2870
+ return useSelector((state: RootState) => {
2871
+ const chatPeerBlacklist = state.app.chatPeerBlacklist;
2872
+ const localPeerUserId = peer?.customerUserID;
2873
+
2874
+ return localPeerUserId
2875
+ ? chatPeerBlacklist.includes(localPeerUserId)
2876
+ : false;
2877
+ });
2878
+ };
2879
+
2880
+ export const useBlockPeerActions = () => {
2881
+ const store = useStore<RootState>();
2882
+ const hmsSessionStore = useSelector(
2883
+ (state: RootState) => state.user.hmsSessionStore
2884
+ );
2885
+ const { unpinMessage } = useHMSMessagePinningActions();
2886
+
2887
+ const blockPeer = useCallback(
2888
+ async (peer: HMSPeer) => {
2889
+ // If instance of HMSSessionStore is available
2890
+ if (hmsSessionStore) {
2891
+ try {
2892
+ const reduxState = store.getState();
2893
+ const chatPeerBlacklist = reduxState.app.chatPeerBlacklist;
2894
+ const pinnedMessages = reduxState.messages.pinnedMessages;
2895
+
2896
+ if (
2897
+ peer.customerUserID &&
2898
+ !chatPeerBlacklist.includes(peer.customerUserID)
2899
+ ) {
2900
+ let updatedChatPeerBlacklist = [
2901
+ ...chatPeerBlacklist,
2902
+ peer.customerUserID,
2903
+ ];
2904
+ const response = await hmsSessionStore.set(
2905
+ updatedChatPeerBlacklist,
2906
+ 'chatPeerBlacklist'
2907
+ );
2908
+ console.log('setSessionMetaData Response -> ', response);
2909
+
2910
+ // Unpin messages from sent by the peer
2911
+ const msgsToUnpin = pinnedMessages.filter(
2912
+ (pinnedMessage) => pinnedMessage.authorId === peer.customerUserID
2913
+ );
2914
+ if (msgsToUnpin.length > 0) {
2915
+ await unpinMessage(msgsToUnpin);
2916
+ }
2917
+
2918
+ return response;
2919
+ }
2920
+ return Promise.reject('Peer is already blocked!');
2921
+ } catch (error) {
2922
+ console.log('setSessionMetaData Error -> ', error);
2923
+ return Promise.reject(error);
2924
+ }
2925
+ }
2926
+ },
2927
+ [hmsSessionStore, unpinMessage]
2928
+ );
2929
+
2930
+ const unblockPeer = useCallback(
2931
+ async (peer: HMSPeer) => {
2932
+ // If instance of HMSSessionStore is available
2933
+ if (hmsSessionStore) {
2934
+ try {
2935
+ const chatPeerBlacklist = store.getState().app.chatPeerBlacklist;
2936
+ if (
2937
+ peer.customerUserID &&
2938
+ chatPeerBlacklist.includes(peer.customerUserID)
2939
+ ) {
2940
+ const updatedChatPeerBlacklist = chatPeerBlacklist.filter(
2941
+ (peerUserId) => peerUserId !== peer.customerUserID
2942
+ );
2943
+ const response = await hmsSessionStore.set(
2944
+ updatedChatPeerBlacklist,
2945
+ 'chatPeerBlacklist'
2946
+ );
2947
+ console.log('setSessionMetaData Response -> ', response);
2948
+ return response;
2949
+ }
2950
+ return Promise.reject('Peer is already unblocked!');
2951
+ } catch (error) {
2952
+ console.log('setSessionMetaData Error -> ', error);
2953
+ return Promise.reject(error);
2954
+ }
2955
+ }
2956
+ },
2957
+ [hmsSessionStore]
2958
+ );
2959
+
2960
+ return { blockPeer, unblockPeer };
2961
+ };
2962
+
2963
+ export const useAllowBlockingPeerFromChat = () => {
2964
+ return useHMSChatLayoutConfig(
2965
+ (config) => config?.real_time_controls?.can_block_user ?? false
2966
+ );
2967
+ };