@100mslive/react-native-room-kit 1.0.7 → 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 (513) 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.map +1 -1
  27. package/lib/commonjs/Icons/index.js +22 -0
  28. package/lib/commonjs/Icons/index.js.map +1 -1
  29. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  30. package/lib/commonjs/components/Chat/ChatFilterBottomSheet.js +36 -0
  31. package/lib/commonjs/components/Chat/ChatFilterBottomSheet.js.map +1 -0
  32. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js +90 -23
  33. package/lib/commonjs/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -1
  34. package/lib/commonjs/components/Chat/ChatFilterItem.js +10 -7
  35. package/lib/commonjs/components/Chat/ChatFilterItem.js.map +1 -1
  36. package/lib/commonjs/components/Chat/ChatFilterView.js +54 -45
  37. package/lib/commonjs/components/Chat/ChatFilterView.js.map +1 -1
  38. package/lib/commonjs/components/Chat/ChatList.js +13 -6
  39. package/lib/commonjs/components/Chat/ChatList.js.map +1 -1
  40. package/lib/commonjs/components/Chat/ChatMessage.js +79 -7
  41. package/lib/commonjs/components/Chat/ChatMessage.js.map +1 -1
  42. package/lib/commonjs/components/Chat/ChatMoreActionsModal.js +61 -0
  43. package/lib/commonjs/components/Chat/ChatMoreActionsModal.js.map +1 -0
  44. package/lib/commonjs/components/Chat/ChatMoreActionsSheetView.js +63 -0
  45. package/lib/commonjs/components/Chat/ChatMoreActionsSheetView.js.map +1 -0
  46. package/lib/commonjs/components/Chat/ChatMoreActionsView.js +83 -0
  47. package/lib/commonjs/components/Chat/ChatMoreActionsView.js.map +1 -0
  48. package/lib/commonjs/components/Chat/ChatPaused.js +86 -0
  49. package/lib/commonjs/components/Chat/ChatPaused.js.map +1 -0
  50. package/lib/commonjs/components/Chat/MessageOptionsBottomSheet.js +34 -0
  51. package/lib/commonjs/components/Chat/MessageOptionsBottomSheet.js.map +1 -0
  52. package/lib/commonjs/components/Chat/MessageOptionsBottomSheetView.js +66 -0
  53. package/lib/commonjs/components/Chat/MessageOptionsBottomSheetView.js.map +1 -0
  54. package/lib/commonjs/components/Chat/MessageOptionsView.js +188 -0
  55. package/lib/commonjs/components/Chat/MessageOptionsView.js.map +1 -0
  56. package/lib/commonjs/components/Chat/PeerBlockedFromChat.js +47 -0
  57. package/lib/commonjs/components/Chat/PeerBlockedFromChat.js.map +1 -0
  58. package/lib/commonjs/components/Chat/PinnedMessages.js +297 -0
  59. package/lib/commonjs/components/Chat/PinnedMessages.js.map +1 -0
  60. package/lib/commonjs/components/Chat/index.js +4 -4
  61. package/lib/commonjs/components/Chat/index.js.map +1 -1
  62. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  63. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js +21 -2
  64. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  65. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js +3 -1
  66. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  67. package/lib/commonjs/components/ChatAndParticipants/ChatView.js +21 -2
  68. package/lib/commonjs/components/ChatAndParticipants/ChatView.js.map +1 -1
  69. package/lib/commonjs/components/EndRoomModalContent.js +6 -9
  70. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  71. package/lib/commonjs/components/Footer.js.map +1 -1
  72. package/lib/commonjs/components/GridView.js.map +1 -1
  73. package/lib/commonjs/components/HLSView.js +8 -6
  74. package/lib/commonjs/components/HLSView.js.map +1 -1
  75. package/lib/commonjs/components/HMSBaseButton.js +10 -2
  76. package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
  77. package/lib/commonjs/components/HMSDangerButton.js +4 -2
  78. package/lib/commonjs/components/HMSDangerButton.js.map +1 -1
  79. package/lib/commonjs/components/HMSHLSMessage.js +86 -1
  80. package/lib/commonjs/components/HMSHLSMessage.js.map +1 -1
  81. package/lib/commonjs/components/HMSHLSMessageList.js +2 -2
  82. package/lib/commonjs/components/HMSHLSMessageList.js.map +1 -1
  83. package/lib/commonjs/components/HMSHandRaiseNotification.js +6 -3
  84. package/lib/commonjs/components/HMSHandRaiseNotification.js.map +1 -1
  85. package/lib/commonjs/components/HMSKeyboardAvoidingView.js +5 -1
  86. package/lib/commonjs/components/HMSKeyboardAvoidingView.js.map +1 -1
  87. package/lib/commonjs/components/HMSLiveIndicator.js +2 -6
  88. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -1
  89. package/lib/commonjs/components/HMSLiveViewerCount.js +8 -7
  90. package/lib/commonjs/components/HMSLiveViewerCount.js.map +1 -1
  91. package/lib/commonjs/components/HMSLocalScreenshareNotification.js +2 -1
  92. package/lib/commonjs/components/HMSLocalScreenshareNotification.js.map +1 -1
  93. package/lib/commonjs/components/HMSNotification.js +31 -4
  94. package/lib/commonjs/components/HMSNotification.js.map +1 -1
  95. package/lib/commonjs/components/HMSNotifications.js +9 -2
  96. package/lib/commonjs/components/HMSNotifications.js.map +1 -1
  97. package/lib/commonjs/components/HMSOverlayChatView.js +44 -2
  98. package/lib/commonjs/components/HMSOverlayChatView.js.map +1 -1
  99. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  100. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js +2 -6
  101. package/lib/commonjs/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  102. package/lib/commonjs/components/HMSPrimaryButton.js +4 -2
  103. package/lib/commonjs/components/HMSPrimaryButton.js.map +1 -1
  104. package/lib/commonjs/components/HMSRecordingIndicator.js +11 -16
  105. package/lib/commonjs/components/HMSRecordingIndicator.js.map +1 -1
  106. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  107. package/lib/commonjs/components/HMSTerminalErrorNotification.js +6 -2
  108. package/lib/commonjs/components/HMSTerminalErrorNotification.js.map +1 -1
  109. package/lib/commonjs/components/Header.js.map +1 -1
  110. package/lib/commonjs/components/LeaveRoomBottomSheet.js +3 -6
  111. package/lib/commonjs/components/LeaveRoomBottomSheet.js.map +1 -1
  112. package/lib/commonjs/components/Meeting.js +3 -0
  113. package/lib/commonjs/components/Meeting.js.map +1 -1
  114. package/lib/commonjs/components/MeetingScreenContent.js.map +1 -1
  115. package/lib/commonjs/components/Modals.js +9 -12
  116. package/lib/commonjs/components/Modals.js.map +1 -1
  117. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js +5 -1
  118. package/lib/commonjs/components/Participants/ParticipantsItemOptions.js.map +1 -1
  119. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  120. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  121. package/lib/commonjs/components/Preview.js +14 -1
  122. package/lib/commonjs/components/Preview.js.map +1 -1
  123. package/lib/commonjs/components/PreviewForRoleChangeModal.js +5 -4
  124. package/lib/commonjs/components/PreviewForRoleChangeModal.js.map +1 -1
  125. package/lib/commonjs/components/RoomSettingsModalContent.js +15 -6
  126. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  127. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js +2 -4
  128. package/lib/commonjs/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  129. package/lib/commonjs/components/WebrtcView.js.map +1 -1
  130. package/lib/commonjs/hooks-sdk-selectors.js +16 -1
  131. package/lib/commonjs/hooks-sdk-selectors.js.map +1 -1
  132. package/lib/commonjs/hooks-sdk.js +27 -1
  133. package/lib/commonjs/hooks-sdk.js.map +1 -1
  134. package/lib/commonjs/hooks-util-selectors.js +3 -3
  135. package/lib/commonjs/hooks-util-selectors.js.map +1 -1
  136. package/lib/commonjs/hooks-util.js +408 -61
  137. package/lib/commonjs/hooks-util.js.map +1 -1
  138. package/lib/commonjs/redux/actionTypes.js +16 -3
  139. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  140. package/lib/commonjs/redux/actions/index.js +44 -4
  141. package/lib/commonjs/redux/actions/index.js.map +1 -1
  142. package/lib/commonjs/redux/reducers/appState.js +41 -1
  143. package/lib/commonjs/redux/reducers/appState.js.map +1 -1
  144. package/lib/commonjs/redux/reducers/chatWindow.js +1 -2
  145. package/lib/commonjs/redux/reducers/chatWindow.js.map +1 -1
  146. package/lib/commonjs/redux/reducers/message.js +17 -4
  147. package/lib/commonjs/redux/reducers/message.js.map +1 -1
  148. package/lib/commonjs/types.js +1 -0
  149. package/lib/commonjs/types.js.map +1 -1
  150. package/lib/commonjs/utils/types.js +3 -0
  151. package/lib/commonjs/utils/types.js.map +1 -1
  152. package/lib/commonjs/utils.js +2 -2
  153. package/lib/commonjs/utils.js.map +1 -1
  154. package/lib/module/HMSRoomSetup.js +5 -2
  155. package/lib/module/HMSRoomSetup.js.map +1 -1
  156. package/lib/module/Icons/Chat/assets/chat-on.png +0 -0
  157. package/lib/module/Icons/Chat/assets/chat-on@2x.png +0 -0
  158. package/lib/module/Icons/Chat/assets/chat-on@3x.png +0 -0
  159. package/lib/module/Icons/Chat/index.js +4 -3
  160. package/lib/module/Icons/Chat/index.js.map +1 -1
  161. package/lib/module/Icons/NoEntry/assets/no-entry.png +0 -0
  162. package/lib/module/Icons/NoEntry/assets/no-entry@2x.png +0 -0
  163. package/lib/module/Icons/NoEntry/assets/no-entry@3x.png +0 -0
  164. package/lib/module/Icons/NoEntry/index.js +25 -0
  165. package/lib/module/Icons/NoEntry/index.js.map +1 -0
  166. package/lib/module/Icons/PauseCircle/assets/pause-circle.png +0 -0
  167. package/lib/module/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
  168. package/lib/module/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
  169. package/lib/module/Icons/PauseCircle/index.js +21 -0
  170. package/lib/module/Icons/PauseCircle/index.js.map +1 -0
  171. package/lib/module/Icons/Pin/assets/unpin.png +0 -0
  172. package/lib/module/Icons/Pin/assets/unpin@2x.png +0 -0
  173. package/lib/module/Icons/Pin/assets/unpin@3x.png +0 -0
  174. package/lib/module/Icons/Pin/index.js +2 -1
  175. package/lib/module/Icons/Pin/index.js.map +1 -1
  176. package/lib/module/Icons/Recording/assets/recording-pause.png +0 -0
  177. package/lib/module/Icons/Recording/assets/recording-pause@2x.png +0 -0
  178. package/lib/module/Icons/Recording/assets/recording-pause@3x.png +0 -0
  179. package/lib/module/Icons/Recording/index.js.map +1 -1
  180. package/lib/module/Icons/index.js +2 -0
  181. package/lib/module/Icons/index.js.map +1 -1
  182. package/lib/module/components/BottomSheet.js.map +1 -1
  183. package/lib/module/components/Chat/ChatFilterBottomSheet.js +28 -0
  184. package/lib/module/components/Chat/ChatFilterBottomSheet.js.map +1 -0
  185. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js +93 -26
  186. package/lib/module/components/Chat/ChatFilterBottomSheetOpener.js.map +1 -1
  187. package/lib/module/components/Chat/ChatFilterItem.js +11 -8
  188. package/lib/module/components/Chat/ChatFilterItem.js.map +1 -1
  189. package/lib/module/components/Chat/ChatFilterView.js +55 -46
  190. package/lib/module/components/Chat/ChatFilterView.js.map +1 -1
  191. package/lib/module/components/Chat/ChatList.js +14 -7
  192. package/lib/module/components/Chat/ChatList.js.map +1 -1
  193. package/lib/module/components/Chat/ChatMessage.js +81 -9
  194. package/lib/module/components/Chat/ChatMessage.js.map +1 -1
  195. package/lib/module/components/Chat/ChatMoreActionsModal.js +53 -0
  196. package/lib/module/components/Chat/ChatMoreActionsModal.js.map +1 -0
  197. package/lib/module/components/Chat/ChatMoreActionsSheetView.js +55 -0
  198. package/lib/module/components/Chat/ChatMoreActionsSheetView.js.map +1 -0
  199. package/lib/module/components/Chat/ChatMoreActionsView.js +75 -0
  200. package/lib/module/components/Chat/ChatMoreActionsView.js.map +1 -0
  201. package/lib/module/components/Chat/ChatPaused.js +77 -0
  202. package/lib/module/components/Chat/ChatPaused.js.map +1 -0
  203. package/lib/module/components/Chat/MessageOptionsBottomSheet.js +26 -0
  204. package/lib/module/components/Chat/MessageOptionsBottomSheet.js.map +1 -0
  205. package/lib/module/components/Chat/MessageOptionsBottomSheetView.js +58 -0
  206. package/lib/module/components/Chat/MessageOptionsBottomSheetView.js.map +1 -0
  207. package/lib/module/components/Chat/MessageOptionsView.js +180 -0
  208. package/lib/module/components/Chat/MessageOptionsView.js.map +1 -0
  209. package/lib/module/components/Chat/PeerBlockedFromChat.js +38 -0
  210. package/lib/module/components/Chat/PeerBlockedFromChat.js.map +1 -0
  211. package/lib/module/components/Chat/PinnedMessages.js +288 -0
  212. package/lib/module/components/Chat/PinnedMessages.js.map +1 -0
  213. package/lib/module/components/Chat/index.js +1 -1
  214. package/lib/module/components/Chat/index.js.map +1 -1
  215. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.js.map +1 -1
  216. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +24 -5
  217. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  218. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js +3 -1
  219. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsView.js.map +1 -1
  220. package/lib/module/components/ChatAndParticipants/ChatView.js +22 -3
  221. package/lib/module/components/ChatAndParticipants/ChatView.js.map +1 -1
  222. package/lib/module/components/EndRoomModalContent.js +6 -9
  223. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  224. package/lib/module/components/Footer.js.map +1 -1
  225. package/lib/module/components/GridView.js.map +1 -1
  226. package/lib/module/components/HLSView.js +9 -7
  227. package/lib/module/components/HLSView.js.map +1 -1
  228. package/lib/module/components/HMSBaseButton.js +10 -2
  229. package/lib/module/components/HMSBaseButton.js.map +1 -1
  230. package/lib/module/components/HMSDangerButton.js +4 -2
  231. package/lib/module/components/HMSDangerButton.js.map +1 -1
  232. package/lib/module/components/HMSHLSMessage.js +88 -3
  233. package/lib/module/components/HMSHLSMessage.js.map +1 -1
  234. package/lib/module/components/HMSHLSMessageList.js +2 -2
  235. package/lib/module/components/HMSHLSMessageList.js.map +1 -1
  236. package/lib/module/components/HMSHandRaiseNotification.js +6 -3
  237. package/lib/module/components/HMSHandRaiseNotification.js.map +1 -1
  238. package/lib/module/components/HMSKeyboardAvoidingView.js +6 -2
  239. package/lib/module/components/HMSKeyboardAvoidingView.js.map +1 -1
  240. package/lib/module/components/HMSLiveIndicator.js +2 -6
  241. package/lib/module/components/HMSLiveIndicator.js.map +1 -1
  242. package/lib/module/components/HMSLiveViewerCount.js +8 -7
  243. package/lib/module/components/HMSLiveViewerCount.js.map +1 -1
  244. package/lib/module/components/HMSLocalScreenshareNotification.js +2 -1
  245. package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -1
  246. package/lib/module/components/HMSNotification.js +32 -5
  247. package/lib/module/components/HMSNotification.js.map +1 -1
  248. package/lib/module/components/HMSNotifications.js +9 -2
  249. package/lib/module/components/HMSNotifications.js.map +1 -1
  250. package/lib/module/components/HMSOverlayChatView.js +45 -3
  251. package/lib/module/components/HMSOverlayChatView.js.map +1 -1
  252. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  253. package/lib/module/components/HMSPreviewHLSLiveIndicator.js +2 -6
  254. package/lib/module/components/HMSPreviewHLSLiveIndicator.js.map +1 -1
  255. package/lib/module/components/HMSPrimaryButton.js +4 -2
  256. package/lib/module/components/HMSPrimaryButton.js.map +1 -1
  257. package/lib/module/components/HMSRecordingIndicator.js +11 -16
  258. package/lib/module/components/HMSRecordingIndicator.js.map +1 -1
  259. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  260. package/lib/module/components/HMSTerminalErrorNotification.js +6 -2
  261. package/lib/module/components/HMSTerminalErrorNotification.js.map +1 -1
  262. package/lib/module/components/Header.js.map +1 -1
  263. package/lib/module/components/LeaveRoomBottomSheet.js +3 -6
  264. package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
  265. package/lib/module/components/Meeting.js +4 -1
  266. package/lib/module/components/Meeting.js.map +1 -1
  267. package/lib/module/components/MeetingScreenContent.js.map +1 -1
  268. package/lib/module/components/Modals.js +10 -13
  269. package/lib/module/components/Modals.js.map +1 -1
  270. package/lib/module/components/Participants/ParticipantsItemOptions.js +5 -1
  271. package/lib/module/components/Participants/ParticipantsItemOptions.js.map +1 -1
  272. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  273. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  274. package/lib/module/components/Preview.js +13 -2
  275. package/lib/module/components/Preview.js.map +1 -1
  276. package/lib/module/components/PreviewForRoleChangeModal.js +5 -4
  277. package/lib/module/components/PreviewForRoleChangeModal.js.map +1 -1
  278. package/lib/module/components/RoomSettingsModalContent.js +16 -7
  279. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  280. package/lib/module/components/RoomSettingsModalDebugModeContent.js +3 -5
  281. package/lib/module/components/RoomSettingsModalDebugModeContent.js.map +1 -1
  282. package/lib/module/components/WebrtcView.js.map +1 -1
  283. package/lib/module/hooks-sdk-selectors.js +12 -0
  284. package/lib/module/hooks-sdk-selectors.js.map +1 -1
  285. package/lib/module/hooks-sdk.js +23 -1
  286. package/lib/module/hooks-sdk.js.map +1 -1
  287. package/lib/module/hooks-util-selectors.js +3 -3
  288. package/lib/module/hooks-util-selectors.js.map +1 -1
  289. package/lib/module/hooks-util.js +398 -62
  290. package/lib/module/hooks-util.js.map +1 -1
  291. package/lib/module/redux/actionTypes.js +16 -3
  292. package/lib/module/redux/actionTypes.js.map +1 -1
  293. package/lib/module/redux/actions/index.js +36 -2
  294. package/lib/module/redux/actions/index.js.map +1 -1
  295. package/lib/module/redux/reducers/appState.js +41 -1
  296. package/lib/module/redux/reducers/appState.js.map +1 -1
  297. package/lib/module/redux/reducers/chatWindow.js +1 -2
  298. package/lib/module/redux/reducers/chatWindow.js.map +1 -1
  299. package/lib/module/redux/reducers/message.js +17 -4
  300. package/lib/module/redux/reducers/message.js.map +1 -1
  301. package/lib/module/types.js +1 -0
  302. package/lib/module/types.js.map +1 -1
  303. package/lib/module/utils/types.js +3 -0
  304. package/lib/module/utils/types.js.map +1 -1
  305. package/lib/module/utils.js +2 -2
  306. package/lib/module/utils.js.map +1 -1
  307. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  308. package/lib/typescript/Icons/Chat/index.d.ts +1 -0
  309. package/lib/typescript/Icons/Chat/index.d.ts.map +1 -1
  310. package/lib/typescript/Icons/NoEntry/index.d.ts +7 -0
  311. package/lib/typescript/Icons/NoEntry/index.d.ts.map +1 -0
  312. package/lib/typescript/Icons/PauseCircle/index.d.ts +7 -0
  313. package/lib/typescript/Icons/PauseCircle/index.d.ts.map +1 -0
  314. package/lib/typescript/Icons/Pin/index.d.ts +1 -0
  315. package/lib/typescript/Icons/Pin/index.d.ts.map +1 -1
  316. package/lib/typescript/Icons/index.d.ts +2 -0
  317. package/lib/typescript/Icons/index.d.ts.map +1 -1
  318. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  319. package/lib/typescript/components/Chat/ChatFilterBottomSheet.d.ts +3 -0
  320. package/lib/typescript/components/Chat/ChatFilterBottomSheet.d.ts.map +1 -0
  321. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts +1 -0
  322. package/lib/typescript/components/Chat/ChatFilterBottomSheetOpener.d.ts.map +1 -1
  323. package/lib/typescript/components/Chat/ChatFilterItem.d.ts +1 -0
  324. package/lib/typescript/components/Chat/ChatFilterItem.d.ts.map +1 -1
  325. package/lib/typescript/components/Chat/ChatFilterView.d.ts +1 -0
  326. package/lib/typescript/components/Chat/ChatFilterView.d.ts.map +1 -1
  327. package/lib/typescript/components/Chat/ChatList.d.ts.map +1 -1
  328. package/lib/typescript/components/Chat/ChatMessage.d.ts.map +1 -1
  329. package/lib/typescript/components/Chat/ChatMoreActionsModal.d.ts +7 -0
  330. package/lib/typescript/components/Chat/ChatMoreActionsModal.d.ts.map +1 -0
  331. package/lib/typescript/components/Chat/ChatMoreActionsSheetView.d.ts +6 -0
  332. package/lib/typescript/components/Chat/ChatMoreActionsSheetView.d.ts.map +1 -0
  333. package/lib/typescript/components/Chat/ChatMoreActionsView.d.ts +7 -0
  334. package/lib/typescript/components/Chat/ChatMoreActionsView.d.ts.map +1 -0
  335. package/lib/typescript/components/Chat/ChatPaused.d.ts +10 -0
  336. package/lib/typescript/components/Chat/ChatPaused.d.ts.map +1 -0
  337. package/lib/typescript/components/Chat/MessageOptionsBottomSheet.d.ts +3 -0
  338. package/lib/typescript/components/Chat/MessageOptionsBottomSheet.d.ts.map +1 -0
  339. package/lib/typescript/components/Chat/MessageOptionsBottomSheetView.d.ts +6 -0
  340. package/lib/typescript/components/Chat/MessageOptionsBottomSheetView.d.ts.map +1 -0
  341. package/lib/typescript/components/Chat/MessageOptionsView.d.ts +7 -0
  342. package/lib/typescript/components/Chat/MessageOptionsView.d.ts.map +1 -0
  343. package/lib/typescript/components/Chat/PeerBlockedFromChat.d.ts +9 -0
  344. package/lib/typescript/components/Chat/PeerBlockedFromChat.d.ts.map +1 -0
  345. package/lib/typescript/components/Chat/PinnedMessages.d.ts +8 -0
  346. package/lib/typescript/components/Chat/PinnedMessages.d.ts.map +1 -0
  347. package/lib/typescript/components/Chat/index.d.ts +1 -1
  348. package/lib/typescript/components/Chat/index.d.ts.map +1 -1
  349. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.d.ts.map +1 -1
  350. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -1
  351. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsView.d.ts.map +1 -1
  352. package/lib/typescript/components/ChatAndParticipants/ChatView.d.ts.map +1 -1
  353. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  354. package/lib/typescript/components/Footer.d.ts.map +1 -1
  355. package/lib/typescript/components/GridView.d.ts.map +1 -1
  356. package/lib/typescript/components/HMSBaseButton.d.ts +1 -0
  357. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  358. package/lib/typescript/components/HMSDangerButton.d.ts +1 -0
  359. package/lib/typescript/components/HMSDangerButton.d.ts.map +1 -1
  360. package/lib/typescript/components/HMSHLSMessage.d.ts +1 -1
  361. package/lib/typescript/components/HMSHLSMessage.d.ts.map +1 -1
  362. package/lib/typescript/components/HMSHandRaiseNotification.d.ts.map +1 -1
  363. package/lib/typescript/components/HMSKeyboardAvoidingView.d.ts.map +1 -1
  364. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
  365. package/lib/typescript/components/HMSLiveViewerCount.d.ts.map +1 -1
  366. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -1
  367. package/lib/typescript/components/HMSNotification.d.ts +2 -1
  368. package/lib/typescript/components/HMSNotification.d.ts.map +1 -1
  369. package/lib/typescript/components/HMSNotifications.d.ts.map +1 -1
  370. package/lib/typescript/components/HMSOverlayChatView.d.ts.map +1 -1
  371. package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
  372. package/lib/typescript/components/HMSPreviewHLSLiveIndicator.d.ts.map +1 -1
  373. package/lib/typescript/components/HMSPrimaryButton.d.ts +1 -0
  374. package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
  375. package/lib/typescript/components/HMSRecordingIndicator.d.ts.map +1 -1
  376. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  377. package/lib/typescript/components/HMSTerminalErrorNotification.d.ts.map +1 -1
  378. package/lib/typescript/components/Header.d.ts.map +1 -1
  379. package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
  380. package/lib/typescript/components/Meeting.d.ts.map +1 -1
  381. package/lib/typescript/components/MeetingScreenContent.d.ts.map +1 -1
  382. package/lib/typescript/components/Modals.d.ts.map +1 -1
  383. package/lib/typescript/components/Participants/ParticipantsItemOptions.d.ts.map +1 -1
  384. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  385. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  386. package/lib/typescript/components/Preview.d.ts.map +1 -1
  387. package/lib/typescript/components/PreviewForRoleChangeModal.d.ts.map +1 -1
  388. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  389. package/lib/typescript/components/RoomSettingsModalDebugModeContent.d.ts.map +1 -1
  390. package/lib/typescript/components/WebrtcView.d.ts.map +1 -1
  391. package/lib/typescript/hooks-sdk-selectors.d.ts +3 -0
  392. package/lib/typescript/hooks-sdk-selectors.d.ts.map +1 -1
  393. package/lib/typescript/hooks-sdk.d.ts +4 -0
  394. package/lib/typescript/hooks-sdk.d.ts.map +1 -1
  395. package/lib/typescript/hooks-util-selectors.d.ts.map +1 -1
  396. package/lib/typescript/hooks-util.d.ts +35 -3
  397. package/lib/typescript/hooks-util.d.ts.map +1 -1
  398. package/lib/typescript/redux/actionTypes.d.ts +9 -2
  399. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  400. package/lib/typescript/redux/actions/index.d.ts +37 -3
  401. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  402. package/lib/typescript/redux/index.d.ts +7 -2
  403. package/lib/typescript/redux/index.d.ts.map +1 -1
  404. package/lib/typescript/redux/reducers/appState.d.ts +7 -2
  405. package/lib/typescript/redux/reducers/appState.d.ts.map +1 -1
  406. package/lib/typescript/redux/reducers/chatWindow.d.ts +1 -1
  407. package/lib/typescript/redux/reducers/chatWindow.d.ts.map +1 -1
  408. package/lib/typescript/redux/reducers/index.d.ts +7 -2
  409. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  410. package/lib/typescript/redux/reducers/message.d.ts +3 -2
  411. package/lib/typescript/redux/reducers/message.d.ts.map +1 -1
  412. package/lib/typescript/types.d.ts +23 -3
  413. package/lib/typescript/types.d.ts.map +1 -1
  414. package/lib/typescript/utils/types.d.ts +3 -0
  415. package/lib/typescript/utils/types.d.ts.map +1 -1
  416. package/package.json +179 -179
  417. package/src/HMSRoomSetup.tsx +7 -2
  418. package/src/Icons/Chat/assets/chat-on.png +0 -0
  419. package/src/Icons/Chat/assets/chat-on@2x.png +0 -0
  420. package/src/Icons/Chat/assets/chat-on@3x.png +0 -0
  421. package/src/Icons/Chat/index.tsx +19 -6
  422. package/src/Icons/NoEntry/assets/no-entry.png +0 -0
  423. package/src/Icons/NoEntry/assets/no-entry@2x.png +0 -0
  424. package/src/Icons/NoEntry/assets/no-entry@3x.png +0 -0
  425. package/src/Icons/NoEntry/index.tsx +33 -0
  426. package/src/Icons/PauseCircle/assets/pause-circle.png +0 -0
  427. package/src/Icons/PauseCircle/assets/pause-circle@2x.png +0 -0
  428. package/src/Icons/PauseCircle/assets/pause-circle@3x.png +0 -0
  429. package/src/Icons/PauseCircle/index.tsx +27 -0
  430. package/src/Icons/Pin/assets/unpin.png +0 -0
  431. package/src/Icons/Pin/assets/unpin@2x.png +0 -0
  432. package/src/Icons/Pin/assets/unpin@3x.png +0 -0
  433. package/src/Icons/Pin/index.tsx +13 -3
  434. package/src/Icons/Recording/assets/recording-pause.png +0 -0
  435. package/src/Icons/Recording/assets/recording-pause@2x.png +0 -0
  436. package/src/Icons/Recording/assets/recording-pause@3x.png +0 -0
  437. package/src/Icons/Recording/index.tsx +2 -2
  438. package/src/Icons/index.ts +2 -0
  439. package/src/components/BottomSheet.tsx +13 -3
  440. package/src/components/Chat/ChatFilterBottomSheet.tsx +35 -0
  441. package/src/components/Chat/ChatFilterBottomSheetOpener.tsx +170 -42
  442. package/src/components/Chat/ChatFilterItem.tsx +8 -4
  443. package/src/components/Chat/ChatFilterView.tsx +102 -75
  444. package/src/components/Chat/ChatList.tsx +18 -6
  445. package/src/components/Chat/ChatMessage.tsx +111 -7
  446. package/src/components/Chat/ChatMoreActionsModal.tsx +75 -0
  447. package/src/components/Chat/ChatMoreActionsSheetView.tsx +77 -0
  448. package/src/components/Chat/ChatMoreActionsView.tsx +84 -0
  449. package/src/components/Chat/ChatPaused.tsx +103 -0
  450. package/src/components/Chat/MessageOptionsBottomSheet.tsx +33 -0
  451. package/src/components/Chat/MessageOptionsBottomSheetView.tsx +82 -0
  452. package/src/components/Chat/MessageOptionsView.tsx +248 -0
  453. package/src/components/Chat/PeerBlockedFromChat.tsx +49 -0
  454. package/src/components/Chat/PinnedMessages.tsx +422 -0
  455. package/src/components/Chat/index.ts +1 -1
  456. package/src/components/ChatAndParticipants/ChatAndParticipantsBottomSheet.tsx +4 -1
  457. package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +48 -12
  458. package/src/components/ChatAndParticipants/ChatAndParticipantsView.tsx +9 -1
  459. package/src/components/ChatAndParticipants/ChatView.tsx +37 -5
  460. package/src/components/EndRoomModalContent.tsx +11 -14
  461. package/src/components/Footer.tsx +3 -1
  462. package/src/components/GridView.tsx +17 -8
  463. package/src/components/HLSView.tsx +45 -45
  464. package/src/components/HMSBaseButton.tsx +17 -2
  465. package/src/components/HMSDangerButton.tsx +3 -0
  466. package/src/components/HMSHLSMessage.tsx +130 -13
  467. package/src/components/HMSHLSMessageList.tsx +2 -2
  468. package/src/components/HMSHandRaiseNotification.tsx +17 -10
  469. package/src/components/HMSKeyboardAvoidingView.tsx +6 -1
  470. package/src/components/HMSLiveIndicator.tsx +9 -13
  471. package/src/components/HMSLiveViewerCount.tsx +21 -20
  472. package/src/components/HMSLocalScreenshareNotification.tsx +1 -0
  473. package/src/components/HMSNotification.tsx +56 -13
  474. package/src/components/HMSNotifications.tsx +12 -2
  475. package/src/components/HMSOverlayChatView.tsx +74 -17
  476. package/src/components/HMSPreviewEditName.tsx +3 -1
  477. package/src/components/HMSPreviewHLSLiveIndicator.tsx +2 -6
  478. package/src/components/HMSPrimaryButton.tsx +3 -0
  479. package/src/components/HMSRecordingIndicator.tsx +8 -22
  480. package/src/components/HMSRoomOptions.tsx +4 -1
  481. package/src/components/HMSTerminalErrorNotification.tsx +15 -10
  482. package/src/components/Header.tsx +4 -1
  483. package/src/components/LeaveRoomBottomSheet.tsx +13 -11
  484. package/src/components/Meeting.tsx +4 -0
  485. package/src/components/MeetingScreenContent.tsx +24 -21
  486. package/src/components/Modals.tsx +23 -25
  487. package/src/components/Participants/ParticipantsItemOptions.tsx +12 -7
  488. package/src/components/PeerSettingsModalContent.tsx +3 -1
  489. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +3 -1
  490. package/src/components/Preview.tsx +15 -2
  491. package/src/components/PreviewForRoleChangeModal.tsx +4 -3
  492. package/src/components/RoomSettingsModalContent.tsx +62 -18
  493. package/src/components/RoomSettingsModalDebugModeContent.tsx +2 -5
  494. package/src/components/WebrtcView.tsx +6 -2
  495. package/src/hooks-sdk-selectors.tsx +19 -0
  496. package/src/hooks-sdk.ts +37 -0
  497. package/src/hooks-util-selectors.tsx +2 -3
  498. package/src/hooks-util.ts +578 -87
  499. package/src/redux/actionTypes.ts +22 -2
  500. package/src/redux/actions/index.ts +41 -4
  501. package/src/redux/reducers/appState.ts +54 -5
  502. package/src/redux/reducers/chatWindow.ts +2 -2
  503. package/src/redux/reducers/message.ts +20 -6
  504. package/src/types.ts +35 -6
  505. package/src/utils/types.ts +3 -0
  506. package/src/utils.ts +2 -2
  507. package/lib/commonjs/components/Chat/PinnedMessage.js +0 -81
  508. package/lib/commonjs/components/Chat/PinnedMessage.js.map +0 -1
  509. package/lib/module/components/Chat/PinnedMessage.js +0 -72
  510. package/lib/module/components/Chat/PinnedMessage.js.map +0 -1
  511. package/lib/typescript/components/Chat/PinnedMessage.d.ts +0 -3
  512. package/lib/typescript/components/Chat/PinnedMessage.d.ts.map +0 -1
  513. 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,8 @@ import {
94
91
  setActiveChatBottomSheetTab,
95
92
  setActiveSpeakers,
96
93
  setAutoEnterPipMode,
94
+ setChatPeerBlacklist,
95
+ setChatState,
97
96
  setEditUsernameDisabled,
98
97
  setFullScreenPeerTrackNode,
99
98
  setHMSLocalPeerState,
@@ -127,7 +126,7 @@ import {
127
126
  replacePeerTrackNodesWithTrack,
128
127
  } from './peerTrackNodeUtils';
129
128
  import { MeetingState } from './types';
130
- import type { HMSPrebuiltProps } from './types';
129
+ import type { ChatState, HMSPrebuiltProps, PinnedMessage } from './types';
131
130
  import {
132
131
  BackHandler,
133
132
  InteractionManager,
@@ -153,6 +152,7 @@ import { getRoomLayout } from './modules/HMSManager';
153
152
  import { DEFAULT_THEME, DEFAULT_TYPOGRAPHY } from './utils/theme';
154
153
  import { NotificationTypes } from './types';
155
154
  import { KeyboardState, useSharedValue } from 'react-native-reanimated';
155
+ import { useHMSActions } from './hooks-sdk';
156
156
 
157
157
  export const useHMSListeners = (
158
158
  setPeerTrackNodes: React.Dispatch<React.SetStateAction<PeerTrackNode[]>>
@@ -220,6 +220,7 @@ const useHMSPeersUpdate = (
220
220
  // const inMeeting = useSelector(
221
221
  // (state: RootState) => state.app.meetingState === MeetingState.IN_MEETING
222
222
  // );
223
+ const hmsActions = useHMSActions();
223
224
 
224
225
  useEffect(() => {
225
226
  const peerUpdateHandler = ({ peer, type }: PeerUpdate) => {
@@ -273,6 +274,7 @@ const useHMSPeersUpdate = (
273
274
  const fullScreenPeerTrackNode = reduxState.app.fullScreenPeerTrackNode;
274
275
  const miniviewPeerTrackNode = reduxState.app.miniviewPeerTrackNode;
275
276
  const localPeerTrackNode = reduxState.app.localPeerTrackNode;
277
+ const initialRole = reduxState.app.initialRole;
276
278
 
277
279
  // Currently Applied Layout config
278
280
  const currentLayoutConfig = selectLayoutConfigForRole(
@@ -343,11 +345,41 @@ const useHMSPeersUpdate = (
343
345
  // - TODO: update local localPeer state
344
346
  // - Pass this updated data to Meeting component -> DisplayView component
345
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
+ }
346
368
  return;
347
369
  }
348
370
  if (type === HMSPeerUpdate.ROLE_CHANGED) {
349
371
  dispatch(addUpdateParticipant(peer));
350
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
+
351
383
  // Handling regular tiles list
352
384
  if (
353
385
  peer.role?.publishSettings?.allowed === undefined ||
@@ -1000,6 +1032,7 @@ type SessionStoreListeners = Array<{ remove: () => void }>;
1000
1032
  export const useHMSSessionStoreListeners = (
1001
1033
  gridViewRef: React.MutableRefObject<GridViewRefAttrs | null>
1002
1034
  ) => {
1035
+ const store = useStore<RootState>();
1003
1036
  const dispatch = useDispatch();
1004
1037
  const hmsSessionStore = useSelector(
1005
1038
  (state: RootState) => state.user.hmsSessionStore
@@ -1013,18 +1046,105 @@ export const useHMSSessionStoreListeners = (
1013
1046
 
1014
1047
  const addSessionStoreListeners = () => {
1015
1048
  // Handle 'spotlight' key values
1016
- const handleSpotlightIdChange = (id: HMSSessionStoreValue) => {
1017
- // set value to the state to rerender the component to reflect changes
1018
- dispatch(saveUserData({ spotlightTrackId: id }));
1019
- // Scroll to start of the list
1020
- gridViewRef.current
1021
- ?.getRegularTilesFlatlistRef()
1022
- .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
+ }
1023
1058
  };
1024
1059
 
1025
- // Handle 'pinnedMessage' key values
1026
- const handlePinnedMessageChange = (data: HMSSessionStoreValue) => {
1027
- 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
+ }
1028
1148
  };
1029
1149
 
1030
1150
  // Getting value for 'spotlight' key by using `get` method on HMSSessionStore instance
@@ -1044,19 +1164,53 @@ export const useHMSSessionStoreListeners = (
1044
1164
  )
1045
1165
  );
1046
1166
 
1047
- // 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
1048
1202
  hmsSessionStore
1049
- .get('pinnedMessage')
1203
+ .get('chatPeerBlacklist')
1050
1204
  .then((data) => {
1051
1205
  console.log(
1052
- 'Session Store get `pinnedMessage` key value success: ',
1206
+ 'Session Store get `chatPeerBlacklist` key value success: ',
1053
1207
  data
1054
1208
  );
1055
- handlePinnedMessageChange(data);
1209
+ handleChatPeerBlacklistChange(data);
1056
1210
  })
1057
1211
  .catch((error) =>
1058
1212
  console.log(
1059
- 'Session Store get `pinnedMessage` key value error: ',
1213
+ 'Session Store get `chatPeerBlacklist` key value error: ',
1060
1214
  error
1061
1215
  )
1062
1216
  );
@@ -1064,66 +1218,44 @@ export const useHMSSessionStoreListeners = (
1064
1218
  // let lastSpotlightValue: HMSSessionStoreValue = null;
1065
1219
  // let lastPinnedMessageValue: HMSSessionStoreValue = null;
1066
1220
 
1067
- // Add subscription for `spotlight` & `pinnedMessage` keys updates on Session Store
1221
+ // Add subscription for `spotlight`, `pinnedMessages`, `chatState` & `chatPeerBlacklist` keys updates on Session Store
1068
1222
  const subscription = hmsSessionStore.addKeyChangeListener<
1069
- ['spotlight', 'pinnedMessage']
1070
- >(['spotlight', 'pinnedMessage'], (error, data) => {
1071
- // If error occurs, handle error and return early
1072
- if (error !== null) {
1073
- console.log(
1074
- '`spotlight` & `pinnedMessage` key listener Error -> ',
1075
- error
1076
- );
1077
- return;
1078
- }
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
+ }
1079
1235
 
1080
- // If no error, handle data
1081
- if (data !== null) {
1082
- switch (data.key) {
1083
- case 'spotlight': {
1084
- handleSpotlightIdChange(data.value);
1085
-
1086
- // Showing Toast message if value has actually changed
1087
- // if (
1088
- // data.value !== lastSpotlightValue &&
1089
- // (data.value || lastSpotlightValue)
1090
- // ) {
1091
- // Toast.showWithGravity(
1092
- // `SessionStore: \`spotlight\` key's value changed to ${data.value}`,
1093
- // Toast.LONG,
1094
- // Toast.TOP
1095
- // );
1096
- // }
1097
-
1098
- // lastSpotlightValue = data.value;
1099
- break;
1100
- }
1101
- case 'pinnedMessage': {
1102
- handlePinnedMessageChange(data.value);
1103
-
1104
- // Showing Toast message if value has actually changed
1105
- // if (
1106
- // data.value !== lastPinnedMessageValue &&
1107
- // (data.value || lastPinnedMessageValue)
1108
- // ) {
1109
- // if (toastTimeoutId !== null) {
1110
- // clearTimeout(toastTimeoutId);
1111
- // }
1112
- // toastTimeoutId = setTimeout(() => {
1113
- // Toast.showWithGravity(
1114
- // `SessionStore: \`pinnedMessage\` key's value changed to ${data.value}`,
1115
- // Toast.LONG,
1116
- // Toast.TOP
1117
- // );
1118
- // }, 1500);
1119
- // }
1120
-
1121
- // lastPinnedMessageValue = data.value;
1122
- 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
+ }
1123
1255
  }
1124
1256
  }
1125
1257
  }
1126
- });
1258
+ );
1127
1259
 
1128
1260
  // Save reference of `subscription` in a ref
1129
1261
  sessionStoreListenersRef.current.push(subscription);
@@ -1140,7 +1272,7 @@ export const useHMSSessionStoreListeners = (
1140
1272
  // if (toastTimeoutId !== null) clearTimeout(toastTimeoutId);
1141
1273
  };
1142
1274
  }
1143
- }, [hmsSessionStore]);
1275
+ }, [store, hmsSessionStore]);
1144
1276
  };
1145
1277
 
1146
1278
  export const useHMSSessionStore = () => {
@@ -2202,12 +2334,9 @@ export const useSendMessage = () => {
2202
2334
  const chatWindowState = reduxStore.getState().chatWindow;
2203
2335
 
2204
2336
  const message = chatWindowState.typedMessage;
2205
- const sendingTo = chatWindowState.sendTo as
2206
- | HMSRole
2207
- | HMSRemotePeer
2208
- | typeof ChatBroadcastFilter;
2337
+ const sendingTo = chatWindowState.sendTo;
2209
2338
 
2210
- if (message.length <= 0) return;
2339
+ if (message.length <= 0 || !sendingTo) return;
2211
2340
 
2212
2341
  const hmsMessageRecipient = new HMSMessageRecipient({
2213
2342
  recipientType:
@@ -2271,6 +2400,72 @@ export const useSendMessage = () => {
2271
2400
  };
2272
2401
  };
2273
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
+
2274
2469
  export const useHMSChatLayoutConfig = <Selected = unknown>(
2275
2470
  selector: (chatConfig: ChatConfig | null) => Selected,
2276
2471
  equalityFn?: (left: Selected, right: Selected) => boolean
@@ -2388,7 +2583,7 @@ export const useStartRecording = () => {
2388
2583
  addNotification({
2389
2584
  id: Math.random().toString(16).slice(2),
2390
2585
  type: NotificationTypes.ERROR,
2391
- message: error.message,
2586
+ title: error.message,
2392
2587
  })
2393
2588
  );
2394
2589
  });
@@ -2400,6 +2595,185 @@ export const useStartRecording = () => {
2400
2595
  };
2401
2596
  };
2402
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
+
2403
2777
  export const useAndroidSoftInputAdjustResize = () => {
2404
2778
  const currentSoftInputRef = useRef<null | SoftInputModes>(null);
2405
2779
 
@@ -2474,3 +2848,120 @@ export const useKeyboardState = () => {
2474
2848
 
2475
2849
  return { keyboardState };
2476
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
+ };