@sendbird/uikit-react 3.5.0-rc.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (936) hide show
  1. package/App.js +312 -235
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +544 -0
  4. package/Channel/components/ChannelHeader.js +46 -41
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +104 -131
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +56 -52
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +12 -7
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +240 -230
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +152 -129
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +260 -175
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +34 -30
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +139 -193
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +44 -61
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +18 -20
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +12 -19
  27. package/Channel/context.js.map +1 -1
  28. package/Channel.js +69 -44
  29. package/Channel.js.map +1 -1
  30. package/ChannelList/components/AddChannel.js +29 -30
  31. package/ChannelList/components/AddChannel.js.map +1 -1
  32. package/ChannelList/components/ChannelListHeader.js +32 -28
  33. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  34. package/ChannelList/components/ChannelListUI.js +101 -142
  35. package/ChannelList/components/ChannelListUI.js.map +1 -1
  36. package/ChannelList/components/ChannelPreview.js +72 -82
  37. package/ChannelList/components/ChannelPreview.js.map +1 -1
  38. package/ChannelList/components/ChannelPreviewAction.js +36 -36
  39. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  40. package/ChannelList/context.js +7 -8
  41. package/ChannelList/context.js.map +1 -1
  42. package/ChannelList.js +32 -31
  43. package/ChannelList.js.map +1 -1
  44. package/{ChannelListProvider-1d36e2e9.js → ChannelListProvider-4cf5c0f5.js} +233 -285
  45. package/ChannelListProvider-4cf5c0f5.js.map +1 -0
  46. package/{ChannelProvider-289cd35f.js → ChannelProvider-6e8e99df.js} +659 -726
  47. package/ChannelProvider-6e8e99df.js.map +1 -0
  48. package/ChannelSettings/components/ChannelProfile.js +33 -46
  49. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  50. package/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  51. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  52. package/ChannelSettings/components/EditDetailsModal.js +47 -58
  53. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  54. package/ChannelSettings/components/LeaveChannel.js +40 -46
  55. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  56. package/ChannelSettings/components/ModerationPanel.js +522 -605
  57. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  58. package/ChannelSettings/components/UserListItem.js +71 -72
  59. package/ChannelSettings/components/UserListItem.js.map +1 -1
  60. package/ChannelSettings/components/UserPanel.js +29 -32
  61. package/ChannelSettings/components/UserPanel.js.map +1 -1
  62. package/ChannelSettings/context.js +53 -57
  63. package/ChannelSettings/context.js.map +1 -1
  64. package/ChannelSettings.js +20 -20
  65. package/ChannelSettings.js.map +1 -1
  66. package/CreateChannel/components/CreateChannelUI.js +24 -24
  67. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  68. package/CreateChannel/components/InviteUsers.js +102 -124
  69. package/CreateChannel/components/InviteUsers.js.map +1 -1
  70. package/CreateChannel/components/SelectChannelType.js +41 -42
  71. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  72. package/CreateChannel/context.js +4 -4
  73. package/CreateChannel.js +22 -21
  74. package/CreateChannel.js.map +1 -1
  75. package/CreateChannelProvider-34603fa5.js +44 -0
  76. package/CreateChannelProvider-34603fa5.js.map +1 -0
  77. package/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  78. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  79. package/CreateOpenChannel/context.js +33 -33
  80. package/CreateOpenChannel/context.js.map +1 -1
  81. package/CreateOpenChannel.js +18 -17
  82. package/CreateOpenChannel.js.map +1 -1
  83. package/EditUserProfile/components/EditUserProfileUI.js +12 -13
  84. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  85. package/EditUserProfile/context.js +0 -2
  86. package/EditUserProfile/context.js.map +1 -1
  87. package/EditUserProfile.js +18 -17
  88. package/EditUserProfile.js.map +1 -1
  89. package/LocalizationContext-04c0c9dc.js +20 -0
  90. package/{LocalizationContext-289c1917.js.map → LocalizationContext-04c0c9dc.js.map} +1 -1
  91. package/MediaQueryContext-ff9dca2b.js +87 -0
  92. package/MediaQueryContext-ff9dca2b.js.map +1 -0
  93. package/MemberList-9bf26111.js +403 -0
  94. package/MemberList-9bf26111.js.map +1 -0
  95. package/Message/context.js +31 -0
  96. package/Message/context.js.map +1 -0
  97. package/MessageSearch/components/MessageSearchUI.js +62 -71
  98. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  99. package/MessageSearch/context.js +201 -224
  100. package/MessageSearch/context.js.map +1 -1
  101. package/MessageSearch.js +46 -58
  102. package/MessageSearch.js.map +1 -1
  103. package/OpenChannel/components/FrozenChannelNotification.js +8 -6
  104. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  105. package/OpenChannel/components/OpenChannelHeader.js +27 -25
  106. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  107. package/OpenChannel/components/OpenChannelInput.js +50 -35
  108. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  109. package/OpenChannel/components/OpenChannelMessage.js +174 -191
  110. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  111. package/OpenChannel/components/OpenChannelMessageList.js +72 -92
  112. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  113. package/OpenChannel/components/OpenChannelUI.js +52 -49
  114. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  115. package/OpenChannel/context.js +8 -9
  116. package/OpenChannel/context.js.map +1 -1
  117. package/OpenChannel.js +36 -30
  118. package/OpenChannel.js.map +1 -1
  119. package/OpenChannelList/components/OpenChannelListUI.js +61 -76
  120. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  121. package/OpenChannelList/components/OpenChannelPreview.js +21 -22
  122. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  123. package/OpenChannelList/context.js +3 -4
  124. package/OpenChannelList/context.js.map +1 -1
  125. package/OpenChannelList.js +26 -24
  126. package/OpenChannelList.js.map +1 -1
  127. package/OpenChannelListProvider-d7372692.js +429 -0
  128. package/OpenChannelListProvider-d7372692.js.map +1 -0
  129. package/OpenChannelProvider-24cd68b9.js +1885 -0
  130. package/OpenChannelProvider-24cd68b9.js.map +1 -0
  131. package/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  132. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  133. package/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  134. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  135. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  136. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  137. package/OpenChannelSettings/components/OperatorUI.js +516 -586
  138. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  139. package/OpenChannelSettings/components/ParticipantUI.js +15 -16
  140. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  141. package/OpenChannelSettings/context.js +56 -69
  142. package/OpenChannelSettings/context.js.map +1 -1
  143. package/OpenChannelSettings.js +19 -20
  144. package/OpenChannelSettings.js.map +1 -1
  145. package/README.md +62 -13
  146. package/RemoveMessageModal-94e2bf9e.js +36 -0
  147. package/RemoveMessageModal-94e2bf9e.js.map +1 -0
  148. package/SendbirdProvider.js +749 -408
  149. package/SendbirdProvider.js.map +1 -1
  150. package/Thread/components/ParentMessageInfo.js +238 -217
  151. package/Thread/components/ParentMessageInfo.js.map +1 -1
  152. package/Thread/components/ParentMessageInfoItem.js +112 -89
  153. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  154. package/Thread/components/ThreadHeader.js +22 -23
  155. package/Thread/components/ThreadHeader.js.map +1 -1
  156. package/Thread/components/ThreadList.js +108 -83
  157. package/Thread/components/ThreadList.js.map +1 -1
  158. package/Thread/components/ThreadListItem.js +306 -276
  159. package/Thread/components/ThreadListItem.js.map +1 -1
  160. package/Thread/components/ThreadMessageInput.js +146 -113
  161. package/Thread/components/ThreadMessageInput.js.map +1 -1
  162. package/Thread/components/ThreadUI.js +169 -138
  163. package/Thread/components/ThreadUI.js.map +1 -1
  164. package/Thread/context/types.js +9 -14
  165. package/Thread/context/types.js.map +1 -1
  166. package/Thread/context.js +8 -8
  167. package/Thread.js +87 -57
  168. package/Thread.js.map +1 -1
  169. package/ThreadProvider-203b94f3.js +1695 -0
  170. package/ThreadProvider-203b94f3.js.map +1 -0
  171. package/{UserProfileContext-e3530842.js → UserProfileContext-c776d522.js} +1 -4
  172. package/{UserProfileContext-e3530842.js.map → UserProfileContext-c776d522.js.map} +1 -1
  173. package/VoiceMessageInputWrapper-77d8f487.js +170 -0
  174. package/VoiceMessageInputWrapper-77d8f487.js.map +1 -0
  175. package/VoicePlayer/context.js +7 -0
  176. package/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  177. package/VoicePlayer/useVoicePlayer.js +84 -0
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -0
  179. package/VoiceRecorder/context.js +156 -0
  180. package/VoiceRecorder/context.js.map +1 -0
  181. package/VoiceRecorder/useVoiceRecorder.js +121 -0
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  183. package/WebAudioUtils-62e6d3a7.js +123 -0
  184. package/WebAudioUtils-62e6d3a7.js.map +1 -0
  185. package/{_rollupPluginBabelHelpers-519f674b.js → _rollupPluginBabelHelpers-fb0e05a4.js} +17 -11
  186. package/_rollupPluginBabelHelpers-fb0e05a4.js.map +1 -0
  187. package/actionTypes-1db5749d.js +8 -0
  188. package/actionTypes-1db5749d.js.map +1 -0
  189. package/cjs/App.js +312 -235
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +46 -41
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +102 -129
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +56 -52
  196. package/cjs/Channel/components/FileViewer.js.map +1 -1
  197. package/cjs/Channel/components/FrozenNotification.js +12 -7
  198. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  199. package/cjs/Channel/components/Message.js +243 -233
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +151 -128
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +260 -175
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +34 -30
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +139 -193
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +44 -61
  210. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  211. package/cjs/Channel/components/UnreadCount.js +18 -20
  212. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  213. package/cjs/Channel/context.js +12 -23
  214. package/cjs/Channel/context.js.map +1 -1
  215. package/cjs/Channel.js +69 -44
  216. package/cjs/Channel.js.map +1 -1
  217. package/cjs/ChannelList/components/AddChannel.js +29 -30
  218. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  219. package/cjs/ChannelList/components/ChannelListHeader.js +32 -28
  220. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  221. package/cjs/ChannelList/components/ChannelListUI.js +100 -141
  222. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  223. package/cjs/ChannelList/components/ChannelPreview.js +72 -82
  224. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  225. package/cjs/ChannelList/components/ChannelPreviewAction.js +36 -36
  226. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  227. package/cjs/ChannelList/context.js +7 -8
  228. package/cjs/ChannelList/context.js.map +1 -1
  229. package/cjs/ChannelList.js +32 -31
  230. package/cjs/ChannelList.js.map +1 -1
  231. package/cjs/{ChannelListProvider-0de52d2b.js → ChannelListProvider-e0ce316a.js} +232 -284
  232. package/cjs/ChannelListProvider-e0ce316a.js.map +1 -0
  233. package/cjs/{ChannelProvider-fc58e60e.js → ChannelProvider-0df75472.js} +657 -724
  234. package/cjs/ChannelProvider-0df75472.js.map +1 -0
  235. package/cjs/ChannelSettings/components/ChannelProfile.js +33 -46
  236. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  237. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  238. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  239. package/cjs/ChannelSettings/components/EditDetailsModal.js +47 -58
  240. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  241. package/cjs/ChannelSettings/components/LeaveChannel.js +40 -46
  242. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  243. package/cjs/ChannelSettings/components/ModerationPanel.js +522 -605
  244. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  245. package/cjs/ChannelSettings/components/UserListItem.js +71 -72
  246. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  247. package/cjs/ChannelSettings/components/UserPanel.js +29 -32
  248. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  249. package/cjs/ChannelSettings/context.js +55 -59
  250. package/cjs/ChannelSettings/context.js.map +1 -1
  251. package/cjs/ChannelSettings.js +20 -20
  252. package/cjs/ChannelSettings.js.map +1 -1
  253. package/cjs/CreateChannel/components/CreateChannelUI.js +24 -24
  254. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  255. package/cjs/CreateChannel/components/InviteUsers.js +102 -124
  256. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  257. package/cjs/CreateChannel/components/SelectChannelType.js +41 -42
  258. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  259. package/cjs/CreateChannel/context.js +4 -4
  260. package/cjs/CreateChannel.js +22 -21
  261. package/cjs/CreateChannel.js.map +1 -1
  262. package/cjs/CreateChannelProvider-c0fca0a5.js +52 -0
  263. package/cjs/CreateChannelProvider-c0fca0a5.js.map +1 -0
  264. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  265. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  266. package/cjs/CreateOpenChannel/context.js +33 -33
  267. package/cjs/CreateOpenChannel/context.js.map +1 -1
  268. package/cjs/CreateOpenChannel.js +18 -17
  269. package/cjs/CreateOpenChannel.js.map +1 -1
  270. package/cjs/EditUserProfile/components/EditUserProfileUI.js +12 -13
  271. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  272. package/cjs/EditUserProfile/context.js +0 -2
  273. package/cjs/EditUserProfile/context.js.map +1 -1
  274. package/cjs/EditUserProfile.js +18 -17
  275. package/cjs/EditUserProfile.js.map +1 -1
  276. package/cjs/{LocalizationContext-bddc5c2b.js → LocalizationContext-0e429c3d.js} +9 -11
  277. package/cjs/{LocalizationContext-bddc5c2b.js.map → LocalizationContext-0e429c3d.js.map} +1 -1
  278. package/cjs/MediaQueryContext-33fc3b17.js +94 -0
  279. package/cjs/MediaQueryContext-33fc3b17.js.map +1 -0
  280. package/cjs/MemberList-a45a51c4.js +409 -0
  281. package/cjs/MemberList-a45a51c4.js.map +1 -0
  282. package/cjs/Message/context.js +40 -0
  283. package/cjs/Message/context.js.map +1 -0
  284. package/cjs/MessageSearch/components/MessageSearchUI.js +61 -70
  285. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  286. package/cjs/MessageSearch/context.js +201 -224
  287. package/cjs/MessageSearch/context.js.map +1 -1
  288. package/cjs/MessageSearch.js +46 -58
  289. package/cjs/MessageSearch.js.map +1 -1
  290. package/cjs/OpenChannel/components/FrozenChannelNotification.js +8 -6
  291. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  292. package/cjs/OpenChannel/components/OpenChannelHeader.js +27 -25
  293. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  294. package/cjs/OpenChannel/components/OpenChannelInput.js +50 -35
  295. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  296. package/cjs/OpenChannel/components/OpenChannelMessage.js +174 -191
  297. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  298. package/cjs/OpenChannel/components/OpenChannelMessageList.js +72 -92
  299. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  300. package/cjs/OpenChannel/components/OpenChannelUI.js +52 -49
  301. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  302. package/cjs/OpenChannel/context.js +8 -9
  303. package/cjs/OpenChannel/context.js.map +1 -1
  304. package/cjs/OpenChannel.js +36 -30
  305. package/cjs/OpenChannel.js.map +1 -1
  306. package/cjs/OpenChannelList/components/OpenChannelListUI.js +61 -76
  307. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  308. package/cjs/OpenChannelList/components/OpenChannelPreview.js +21 -22
  309. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  310. package/cjs/OpenChannelList/context.js +3 -4
  311. package/cjs/OpenChannelList/context.js.map +1 -1
  312. package/cjs/OpenChannelList.js +26 -24
  313. package/cjs/OpenChannelList.js.map +1 -1
  314. package/cjs/OpenChannelListProvider-fc8b53ee.js +439 -0
  315. package/cjs/OpenChannelListProvider-fc8b53ee.js.map +1 -0
  316. package/cjs/OpenChannelProvider-217a8ac2.js +1894 -0
  317. package/cjs/OpenChannelProvider-217a8ac2.js.map +1 -0
  318. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  319. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  320. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  321. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  322. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  323. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  324. package/cjs/OpenChannelSettings/components/OperatorUI.js +516 -586
  325. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  326. package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -16
  327. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  328. package/cjs/OpenChannelSettings/context.js +57 -70
  329. package/cjs/OpenChannelSettings/context.js.map +1 -1
  330. package/cjs/OpenChannelSettings.js +19 -20
  331. package/cjs/OpenChannelSettings.js.map +1 -1
  332. package/cjs/{RemoveMessageModal-9169766a.js → RemoveMessageModal-5903f232.js} +19 -14
  333. package/cjs/RemoveMessageModal-5903f232.js.map +1 -0
  334. package/cjs/SendbirdProvider.js +748 -408
  335. package/cjs/SendbirdProvider.js.map +1 -1
  336. package/cjs/Thread/components/ParentMessageInfo.js +237 -216
  337. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  338. package/cjs/Thread/components/ParentMessageInfoItem.js +111 -88
  339. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  340. package/cjs/Thread/components/ThreadHeader.js +22 -23
  341. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  342. package/cjs/Thread/components/ThreadList.js +108 -83
  343. package/cjs/Thread/components/ThreadList.js.map +1 -1
  344. package/cjs/Thread/components/ThreadListItem.js +305 -275
  345. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  346. package/cjs/Thread/components/ThreadMessageInput.js +146 -113
  347. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  348. package/cjs/Thread/components/ThreadUI.js +170 -139
  349. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  350. package/cjs/Thread/context/types.js +13 -14
  351. package/cjs/Thread/context/types.js.map +1 -1
  352. package/cjs/Thread/context.js +8 -8
  353. package/cjs/Thread.js +87 -57
  354. package/cjs/Thread.js.map +1 -1
  355. package/cjs/ThreadProvider-8ee179c2.js +1704 -0
  356. package/cjs/ThreadProvider-8ee179c2.js.map +1 -0
  357. package/cjs/{UserProfileContext-8d0dee57.js → UserProfileContext-87580795.js} +1 -4
  358. package/cjs/{UserProfileContext-8d0dee57.js.map → UserProfileContext-87580795.js.map} +1 -1
  359. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js +176 -0
  360. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js.map +1 -0
  361. package/cjs/VoicePlayer/context.js +17 -0
  362. package/cjs/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  363. package/cjs/VoicePlayer/useVoicePlayer.js +88 -0
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -0
  365. package/cjs/VoiceRecorder/context.js +166 -0
  366. package/cjs/VoiceRecorder/context.js.map +1 -0
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +126 -0
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  369. package/cjs/WebAudioUtils-e226789c.js +126 -0
  370. package/cjs/WebAudioUtils-e226789c.js.map +1 -0
  371. package/cjs/{_rollupPluginBabelHelpers-fed1e122.js → _rollupPluginBabelHelpers-c89f311a.js} +17 -10
  372. package/cjs/_rollupPluginBabelHelpers-c89f311a.js.map +1 -0
  373. package/cjs/actionTypes-0fa2943d.js +10 -0
  374. package/cjs/actionTypes-0fa2943d.js.map +1 -0
  375. package/cjs/{color-f47044b3.js → color-bada0fc7.js} +13 -21
  376. package/cjs/color-bada0fc7.js.map +1 -0
  377. package/cjs/{compareIds-4124b297.js → compareIds-ccccfe86.js} +5 -6
  378. package/cjs/compareIds-ccccfe86.js.map +1 -0
  379. package/cjs/const-a85f3364.js +20 -0
  380. package/cjs/const-a85f3364.js.map +1 -0
  381. package/cjs/{const-fd64914b.js → const-d8cece19.js} +4 -4
  382. package/cjs/const-d8cece19.js.map +1 -0
  383. package/cjs/consts-1c3020ad.js +6 -0
  384. package/cjs/consts-1c3020ad.js.map +1 -0
  385. package/cjs/consts-1d94dc61.js +6 -0
  386. package/cjs/consts-1d94dc61.js.map +1 -0
  387. package/cjs/consts-5e0f96b3.js +41 -0
  388. package/cjs/consts-5e0f96b3.js.map +1 -0
  389. package/cjs/consts-740f60b8.js +6 -0
  390. package/cjs/consts-740f60b8.js.map +1 -0
  391. package/cjs/{context-7a0e057b.js → context-8e7e8457.js} +6 -5
  392. package/cjs/{context-7a0e057b.js.map → context-8e7e8457.js.map} +1 -1
  393. package/cjs/dist/index.css +1640 -1187
  394. package/cjs/dist/index.css.map +1 -1
  395. package/cjs/handlers/OpenChannelHandler.js.map +1 -1
  396. package/cjs/handlers/SessionHandler.js.map +1 -1
  397. package/cjs/{index-d14a43c4.js → index-016f7106.js} +1 -1
  398. package/cjs/{index-d14a43c4.js.map → index-016f7106.js.map} +1 -1
  399. package/cjs/{index-9ca07037.js → index-1613ae03.js} +29 -37
  400. package/cjs/index-1613ae03.js.map +1 -0
  401. package/cjs/index-2be14d85.js +57 -0
  402. package/cjs/index-2be14d85.js.map +1 -0
  403. package/cjs/index-3b30939e.js +79 -0
  404. package/cjs/index-3b30939e.js.map +1 -0
  405. package/cjs/index-5231fde8.js +585 -0
  406. package/cjs/index-5231fde8.js.map +1 -0
  407. package/cjs/index-648c06ed.js +330 -0
  408. package/cjs/index-648c06ed.js.map +1 -0
  409. package/cjs/{index-5d5497c2.js → index-6cb0d040.js} +11 -25
  410. package/cjs/index-6cb0d040.js.map +1 -0
  411. package/cjs/{index-c475c3c8.js → index-71fdaa1b.js} +55 -63
  412. package/cjs/index-71fdaa1b.js.map +1 -0
  413. package/cjs/{index-343cd84a.js → index-7d125728.js} +2 -2
  414. package/cjs/{index-343cd84a.js.map → index-7d125728.js.map} +1 -1
  415. package/cjs/{index-3a4f8219.js → index-7f6bbe0c.js} +42 -51
  416. package/cjs/index-7f6bbe0c.js.map +1 -0
  417. package/cjs/{index-8de8f28a.js → index-869e9a94.js} +2 -2
  418. package/cjs/{index-8de8f28a.js.map → index-869e9a94.js.map} +1 -1
  419. package/cjs/index-89d81dad.js +456 -0
  420. package/cjs/index-89d81dad.js.map +1 -0
  421. package/cjs/{index-abbc8024.js → index-8affdde5.js} +57 -3
  422. package/cjs/index-8affdde5.js.map +1 -0
  423. package/cjs/index-99f16473.js +202 -0
  424. package/cjs/index-99f16473.js.map +1 -0
  425. package/cjs/index-c9d348b6.js +367 -0
  426. package/cjs/index-c9d348b6.js.map +1 -0
  427. package/cjs/index-e8c0080f.js +161 -0
  428. package/cjs/index-e8c0080f.js.map +1 -0
  429. package/cjs/{index-c5cd589d.js → index-f570d25c.js} +1 -1
  430. package/cjs/index-f570d25c.js.map +1 -0
  431. package/cjs/index.js +84 -63
  432. package/cjs/index.js.map +1 -1
  433. package/cjs/index.module-0585715f.js +6 -0
  434. package/cjs/index.module-0585715f.js.map +1 -0
  435. package/cjs/lame.all.js +2541 -0
  436. package/cjs/lame.all.js.map +1 -0
  437. package/cjs/resolvedReplyType-67e78c63.js +32 -0
  438. package/cjs/resolvedReplyType-67e78c63.js.map +1 -0
  439. package/cjs/sendbirdSelectors.js +307 -417
  440. package/cjs/sendbirdSelectors.js.map +1 -1
  441. package/cjs/{stringSet-3e6167ef.js → stringSet-106da549.js} +112 -90
  442. package/cjs/stringSet-106da549.js.map +1 -0
  443. package/cjs/tokenize-2aa0f876.js +164 -0
  444. package/cjs/tokenize-2aa0f876.js.map +1 -0
  445. package/cjs/topics-b384e6b3.js +18 -0
  446. package/cjs/topics-b384e6b3.js.map +1 -0
  447. package/cjs/types-e0b77c8c.js +17 -0
  448. package/cjs/types-e0b77c8c.js.map +1 -0
  449. package/cjs/ui/Accordion.js +21 -24
  450. package/cjs/ui/Accordion.js.map +1 -1
  451. package/cjs/ui/AccordionGroup.js +10 -13
  452. package/cjs/ui/AccordionGroup.js.map +1 -1
  453. package/cjs/ui/AdminMessage.js +10 -13
  454. package/cjs/ui/AdminMessage.js.map +1 -1
  455. package/cjs/ui/Avatar.js +57 -79
  456. package/cjs/ui/Avatar.js.map +1 -1
  457. package/cjs/ui/Badge.js +16 -15
  458. package/cjs/ui/Badge.js.map +1 -1
  459. package/cjs/ui/BottomSheet.js +14 -12
  460. package/cjs/ui/BottomSheet.js.map +1 -1
  461. package/cjs/ui/Button.js +20 -35
  462. package/cjs/ui/Button.js.map +1 -1
  463. package/cjs/ui/ChannelAvatar.js +38 -41
  464. package/cjs/ui/ChannelAvatar.js.map +1 -1
  465. package/cjs/ui/Checkbox.js +11 -13
  466. package/cjs/ui/Checkbox.js.map +1 -1
  467. package/cjs/ui/ConnectionStatus.js +7 -5
  468. package/cjs/ui/ConnectionStatus.js.map +1 -1
  469. package/cjs/ui/ContextMenu.js +175 -199
  470. package/cjs/ui/ContextMenu.js.map +1 -1
  471. package/cjs/ui/DateSeparator.js +12 -14
  472. package/cjs/ui/DateSeparator.js.map +1 -1
  473. package/cjs/ui/EmojiReactions.js +299 -107
  474. package/cjs/ui/EmojiReactions.js.map +1 -1
  475. package/cjs/ui/FileMessageItemBody.js +22 -23
  476. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  477. package/cjs/ui/FileViewer.js +36 -36
  478. package/cjs/ui/FileViewer.js.map +1 -1
  479. package/cjs/ui/Icon.js +447 -623
  480. package/cjs/ui/Icon.js.map +1 -1
  481. package/cjs/ui/IconButton.js +20 -31
  482. package/cjs/ui/IconButton.js.map +1 -1
  483. package/cjs/ui/ImageRenderer.js +34 -43
  484. package/cjs/ui/ImageRenderer.js.map +1 -1
  485. package/cjs/ui/Input.js +16 -16
  486. package/cjs/ui/Input.js.map +1 -1
  487. package/cjs/ui/Label.js +2 -2
  488. package/cjs/ui/LinkLabel.js +4 -3
  489. package/cjs/ui/LinkLabel.js.map +1 -1
  490. package/cjs/ui/Loader.js +10 -12
  491. package/cjs/ui/Loader.js.map +1 -1
  492. package/cjs/ui/MentionLabel.js +58 -65
  493. package/cjs/ui/MentionLabel.js.map +1 -1
  494. package/cjs/ui/MentionUserLabel.js +12 -10
  495. package/cjs/ui/MentionUserLabel.js.map +1 -1
  496. package/cjs/ui/MessageContent.js +212 -548
  497. package/cjs/ui/MessageContent.js.map +1 -1
  498. package/cjs/ui/MessageInput.js +392 -119
  499. package/cjs/ui/MessageInput.js.map +1 -1
  500. package/cjs/ui/MessageItemMenu.js +83 -83
  501. package/cjs/ui/MessageItemMenu.js.map +1 -1
  502. package/cjs/ui/MessageItemReactionMenu.js +58 -62
  503. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  504. package/cjs/ui/MessageSearchFileItem.js +56 -51
  505. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  506. package/cjs/ui/MessageSearchItem.js +42 -41
  507. package/cjs/ui/MessageSearchItem.js.map +1 -1
  508. package/cjs/ui/MessageStatus.js +10 -11
  509. package/cjs/ui/MessageStatus.js.map +1 -1
  510. package/cjs/ui/Modal.js +52 -46
  511. package/cjs/ui/Modal.js.map +1 -1
  512. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  513. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  514. package/cjs/ui/OGMessageItemBody.js +67 -63
  515. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  516. package/cjs/ui/OpenChannelAdminMessage.js +8 -7
  517. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  518. package/cjs/ui/OpenChannelAvatar.js +18 -17
  519. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  520. package/cjs/ui/OpenchannelConversationHeader.js +17 -13
  521. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  522. package/cjs/ui/OpenchannelFileMessage.js +140 -151
  523. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  524. package/cjs/ui/OpenchannelOGMessage.js +204 -233
  525. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  526. package/cjs/ui/OpenchannelThumbnailMessage.js +215 -222
  527. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  528. package/cjs/ui/OpenchannelUserMessage.js +168 -178
  529. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  530. package/cjs/ui/PlaceHolder.js +5 -6
  531. package/cjs/ui/PlaceHolder.js.map +1 -1
  532. package/cjs/ui/PlaybackTime.js +35 -0
  533. package/cjs/ui/PlaybackTime.js.map +1 -0
  534. package/cjs/ui/ProgressBar.js +40 -0
  535. package/cjs/ui/ProgressBar.js.map +1 -0
  536. package/cjs/ui/QuoteMessage.js +50 -44
  537. package/cjs/ui/QuoteMessage.js.map +1 -1
  538. package/cjs/ui/QuoteMessageInput.js +31 -29
  539. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  540. package/cjs/ui/ReactionBadge.js +13 -21
  541. package/cjs/ui/ReactionBadge.js.map +1 -1
  542. package/cjs/ui/ReactionButton.js +30 -27
  543. package/cjs/ui/ReactionButton.js.map +1 -1
  544. package/cjs/ui/SortByRow.js +14 -18
  545. package/cjs/ui/SortByRow.js.map +1 -1
  546. package/cjs/ui/TextButton.js +13 -21
  547. package/cjs/ui/TextButton.js.map +1 -1
  548. package/cjs/ui/TextMessageItemBody.js +41 -48
  549. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  550. package/cjs/ui/ThreadReplies.js +25 -22
  551. package/cjs/ui/ThreadReplies.js.map +1 -1
  552. package/cjs/ui/ThumbnailMessageItemBody.js +36 -45
  553. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  554. package/cjs/ui/Toggle.js +202 -0
  555. package/cjs/ui/Toggle.js.map +1 -0
  556. package/cjs/ui/Tooltip.js +8 -9
  557. package/cjs/ui/Tooltip.js.map +1 -1
  558. package/cjs/ui/TooltipWrapper.js +17 -20
  559. package/cjs/ui/TooltipWrapper.js.map +1 -1
  560. package/cjs/ui/UnknownMessageItemBody.js +21 -22
  561. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  562. package/cjs/ui/UserListItem.js +76 -76
  563. package/cjs/ui/UserListItem.js.map +1 -1
  564. package/cjs/ui/UserProfile.js +31 -29
  565. package/cjs/ui/UserProfile.js.map +1 -1
  566. package/cjs/ui/VoiceMessageItemBody.js +119 -0
  567. package/cjs/ui/VoiceMessageItemBody.js.map +1 -0
  568. package/cjs/ui/VoiceMessgeInput.js +22 -0
  569. package/cjs/ui/VoiceMessgeInput.js.map +1 -0
  570. package/cjs/ui/Word.js +31 -39
  571. package/cjs/ui/Word.js.map +1 -1
  572. package/cjs/useDirtyGetMentions-b8ca5675.js +77 -0
  573. package/cjs/useDirtyGetMentions-b8ca5675.js.map +1 -0
  574. package/cjs/useLongPress-8037894e.js +87 -0
  575. package/cjs/useLongPress-8037894e.js.map +1 -0
  576. package/cjs/useSendbirdStateContext.js +2 -3
  577. package/cjs/useSendbirdStateContext.js.map +1 -1
  578. package/cjs/utils/message/getOutgoingMessageState.js +16 -21
  579. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  580. package/cjs/utils/message/isVoiceMessage.js +12 -0
  581. package/cjs/utils/message/isVoiceMessage.js.map +1 -0
  582. package/cjs/{utils-5f86a394.js → utils-01ff5332.js} +3 -7
  583. package/cjs/{utils-5f86a394.js.map → utils-01ff5332.js.map} +1 -1
  584. package/cjs/utils-2edcddc8.js +35 -0
  585. package/cjs/utils-2edcddc8.js.map +1 -0
  586. package/cjs/utils-5ac3db44.js +31 -0
  587. package/cjs/utils-5ac3db44.js.map +1 -0
  588. package/cjs/{utils-374d57b4.js → utils-ad7b5b82.js} +1 -1
  589. package/cjs/{utils-374d57b4.js.map → utils-ad7b5b82.js.map} +1 -1
  590. package/cjs/uuid-12b01f73.js +15 -0
  591. package/cjs/{uuid-2475ef6c.js.map → uuid-12b01f73.js.map} +1 -1
  592. package/cjs/withSendbird.js +5 -6
  593. package/cjs/withSendbird.js.map +1 -1
  594. package/{color-163ba24d.js → color-347926b6.js} +5 -14
  595. package/{color-163ba24d.js.map → color-347926b6.js.map} +1 -1
  596. package/{compareIds-ef41eb2c.js → compareIds-3a43c11b.js} +5 -6
  597. package/compareIds-3a43c11b.js.map +1 -0
  598. package/const-18dba7a4.js +13 -0
  599. package/const-18dba7a4.js.map +1 -0
  600. package/{const-76d87f47.js → const-c608f749.js} +4 -4
  601. package/const-c608f749.js.map +1 -0
  602. package/consts-6bca01c7.js +4 -0
  603. package/consts-6bca01c7.js.map +1 -0
  604. package/consts-7a169a0f.js +4 -0
  605. package/consts-7a169a0f.js.map +1 -0
  606. package/consts-c1baf70a.js +27 -0
  607. package/consts-c1baf70a.js.map +1 -0
  608. package/consts-fb4d475a.js +4 -0
  609. package/consts-fb4d475a.js.map +1 -0
  610. package/context-786ef1a2.js +13 -0
  611. package/{context-10475c77.js.map → context-786ef1a2.js.map} +1 -1
  612. package/dist/index.css +1640 -1187
  613. package/dist/index.css.map +1 -1
  614. package/handlers/OpenChannelHandler.js.map +1 -1
  615. package/handlers/SessionHandler.js.map +1 -1
  616. package/{index-12754b45.js → index-06b854f7.js} +55 -63
  617. package/index-06b854f7.js.map +1 -0
  618. package/index-2673effb.js +360 -0
  619. package/index-2673effb.js.map +1 -0
  620. package/{index-4ebfc7a7.js → index-319984d0.js} +1 -1
  621. package/{index-4ebfc7a7.js.map → index-319984d0.js.map} +1 -1
  622. package/{index-3c013a28.js → index-4455855e.js} +2 -2
  623. package/{index-3c013a28.js.map → index-4455855e.js.map} +1 -1
  624. package/index-6663ce18.js +450 -0
  625. package/index-6663ce18.js.map +1 -0
  626. package/{index-a02da5bd.js → index-6c252d25.js} +2 -2
  627. package/{index-a02da5bd.js.map → index-6c252d25.js.map} +1 -1
  628. package/index-71a20863.js +320 -0
  629. package/index-71a20863.js.map +1 -0
  630. package/index-7d71b26c.js +154 -0
  631. package/index-7d71b26c.js.map +1 -0
  632. package/{index-2f346069.js → index-9a4e0846.js} +1 -1
  633. package/index-9a4e0846.js.map +1 -0
  634. package/{index-232388fa.js → index-9cd77b08.js} +29 -37
  635. package/index-9cd77b08.js.map +1 -0
  636. package/index-c149ea48.js +187 -0
  637. package/index-c149ea48.js.map +1 -0
  638. package/index-cf3939c6.js +76 -0
  639. package/index-cf3939c6.js.map +1 -0
  640. package/index-cf859f03.js +540 -0
  641. package/index-cf859f03.js.map +1 -0
  642. package/{index-2784bdd8.js → index-e33f7f55.js} +11 -25
  643. package/index-e33f7f55.js.map +1 -0
  644. package/{index-aea7b7d6.js → index-eabd1e7e.js} +39 -48
  645. package/index-eabd1e7e.js.map +1 -0
  646. package/index-ebb62af1.js +51 -0
  647. package/index-ebb62af1.js.map +1 -0
  648. package/{index-751f97ce.js → index-edf844f0.js} +57 -4
  649. package/index-edf844f0.js.map +1 -0
  650. package/index.d.ts +176 -124
  651. package/index.js +84 -63
  652. package/index.js.map +1 -1
  653. package/index.module-6b7ed635.js +4 -0
  654. package/index.module-6b7ed635.js.map +1 -0
  655. package/lame.all.js +2537 -0
  656. package/lame.all.js.map +1 -0
  657. package/package.json +62 -41
  658. package/resolvedReplyType-8776d777.js +29 -0
  659. package/resolvedReplyType-8776d777.js.map +1 -0
  660. package/sendbirdSelectors.js +307 -417
  661. package/sendbirdSelectors.js.map +1 -1
  662. package/{stringSet-9ae71b7d.js → stringSet-e0ee1265.js} +112 -90
  663. package/stringSet-e0ee1265.js.map +1 -0
  664. package/tokenize-1b053c86.js +159 -0
  665. package/tokenize-1b053c86.js.map +1 -0
  666. package/topics-70f569e9.js +16 -0
  667. package/topics-70f569e9.js.map +1 -0
  668. package/types-77bbdda6.js +15 -0
  669. package/types-77bbdda6.js.map +1 -0
  670. package/ui/Accordion.js +21 -24
  671. package/ui/Accordion.js.map +1 -1
  672. package/ui/AccordionGroup.js +10 -13
  673. package/ui/AccordionGroup.js.map +1 -1
  674. package/ui/AdminMessage.js +10 -13
  675. package/ui/AdminMessage.js.map +1 -1
  676. package/ui/Avatar.js +57 -79
  677. package/ui/Avatar.js.map +1 -1
  678. package/ui/Badge.js +16 -15
  679. package/ui/Badge.js.map +1 -1
  680. package/ui/BottomSheet.js +14 -12
  681. package/ui/BottomSheet.js.map +1 -1
  682. package/ui/Button.js +20 -35
  683. package/ui/Button.js.map +1 -1
  684. package/ui/ChannelAvatar.js +38 -41
  685. package/ui/ChannelAvatar.js.map +1 -1
  686. package/ui/Checkbox.js +11 -13
  687. package/ui/Checkbox.js.map +1 -1
  688. package/ui/ConnectionStatus.js +7 -5
  689. package/ui/ConnectionStatus.js.map +1 -1
  690. package/ui/ContextMenu.js +176 -200
  691. package/ui/ContextMenu.js.map +1 -1
  692. package/ui/DateSeparator.js +12 -14
  693. package/ui/DateSeparator.js.map +1 -1
  694. package/ui/EmojiReactions.js +300 -108
  695. package/ui/EmojiReactions.js.map +1 -1
  696. package/ui/FileMessageItemBody.js +22 -23
  697. package/ui/FileMessageItemBody.js.map +1 -1
  698. package/ui/FileViewer.js +36 -36
  699. package/ui/FileViewer.js.map +1 -1
  700. package/ui/Icon.js +448 -622
  701. package/ui/Icon.js.map +1 -1
  702. package/ui/IconButton.js +20 -31
  703. package/ui/IconButton.js.map +1 -1
  704. package/ui/ImageRenderer.js +34 -43
  705. package/ui/ImageRenderer.js.map +1 -1
  706. package/ui/Input.js +16 -16
  707. package/ui/Input.js.map +1 -1
  708. package/ui/Label.js +2 -2
  709. package/ui/LinkLabel.js +4 -3
  710. package/ui/LinkLabel.js.map +1 -1
  711. package/ui/Loader.js +10 -12
  712. package/ui/Loader.js.map +1 -1
  713. package/ui/MentionLabel.js +58 -65
  714. package/ui/MentionLabel.js.map +1 -1
  715. package/ui/MentionUserLabel.js +12 -10
  716. package/ui/MentionUserLabel.js.map +1 -1
  717. package/ui/MessageContent.js +215 -551
  718. package/ui/MessageContent.js.map +1 -1
  719. package/ui/MessageInput.js +392 -120
  720. package/ui/MessageInput.js.map +1 -1
  721. package/ui/MessageItemMenu.js +83 -83
  722. package/ui/MessageItemMenu.js.map +1 -1
  723. package/ui/MessageItemReactionMenu.js +58 -62
  724. package/ui/MessageItemReactionMenu.js.map +1 -1
  725. package/ui/MessageSearchFileItem.js +55 -50
  726. package/ui/MessageSearchFileItem.js.map +1 -1
  727. package/ui/MessageSearchItem.js +41 -40
  728. package/ui/MessageSearchItem.js.map +1 -1
  729. package/ui/MessageStatus.js +10 -11
  730. package/ui/MessageStatus.js.map +1 -1
  731. package/ui/Modal.js +52 -46
  732. package/ui/Modal.js.map +1 -1
  733. package/ui/MutedAvatarOverlay.js +10 -10
  734. package/ui/MutedAvatarOverlay.js.map +1 -1
  735. package/ui/OGMessageItemBody.js +68 -64
  736. package/ui/OGMessageItemBody.js.map +1 -1
  737. package/ui/OpenChannelAdminMessage.js +8 -7
  738. package/ui/OpenChannelAdminMessage.js.map +1 -1
  739. package/ui/OpenChannelAvatar.js +18 -17
  740. package/ui/OpenChannelAvatar.js.map +1 -1
  741. package/ui/OpenchannelConversationHeader.js +17 -13
  742. package/ui/OpenchannelConversationHeader.js.map +1 -1
  743. package/ui/OpenchannelFileMessage.js +140 -151
  744. package/ui/OpenchannelFileMessage.js.map +1 -1
  745. package/ui/OpenchannelOGMessage.js +204 -233
  746. package/ui/OpenchannelOGMessage.js.map +1 -1
  747. package/ui/OpenchannelThumbnailMessage.js +215 -222
  748. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  749. package/ui/OpenchannelUserMessage.js +168 -178
  750. package/ui/OpenchannelUserMessage.js.map +1 -1
  751. package/ui/PlaceHolder.js +5 -6
  752. package/ui/PlaceHolder.js.map +1 -1
  753. package/ui/PlaybackTime.js +26 -0
  754. package/ui/PlaybackTime.js.map +1 -0
  755. package/ui/ProgressBar.js +30 -0
  756. package/ui/ProgressBar.js.map +1 -0
  757. package/ui/QuoteMessage.js +50 -44
  758. package/ui/QuoteMessage.js.map +1 -1
  759. package/ui/QuoteMessageInput.js +31 -29
  760. package/ui/QuoteMessageInput.js.map +1 -1
  761. package/ui/ReactionBadge.js +13 -21
  762. package/ui/ReactionBadge.js.map +1 -1
  763. package/ui/ReactionButton.js +30 -27
  764. package/ui/ReactionButton.js.map +1 -1
  765. package/ui/SortByRow.js +14 -18
  766. package/ui/SortByRow.js.map +1 -1
  767. package/ui/TextButton.js +13 -21
  768. package/ui/TextButton.js.map +1 -1
  769. package/ui/TextMessageItemBody.js +41 -48
  770. package/ui/TextMessageItemBody.js.map +1 -1
  771. package/ui/ThreadReplies.js +25 -22
  772. package/ui/ThreadReplies.js.map +1 -1
  773. package/ui/ThumbnailMessageItemBody.js +36 -45
  774. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  775. package/ui/Toggle.js +191 -0
  776. package/ui/Toggle.js.map +1 -0
  777. package/ui/Tooltip.js +8 -9
  778. package/ui/Tooltip.js.map +1 -1
  779. package/ui/TooltipWrapper.js +17 -20
  780. package/ui/TooltipWrapper.js.map +1 -1
  781. package/ui/UnknownMessageItemBody.js +21 -22
  782. package/ui/UnknownMessageItemBody.js.map +1 -1
  783. package/ui/UserListItem.js +76 -76
  784. package/ui/UserListItem.js.map +1 -1
  785. package/ui/UserProfile.js +31 -29
  786. package/ui/UserProfile.js.map +1 -1
  787. package/ui/VoiceMessageItemBody.js +110 -0
  788. package/ui/VoiceMessageItemBody.js.map +1 -0
  789. package/ui/VoiceMessgeInput.js +14 -0
  790. package/ui/VoiceMessgeInput.js.map +1 -0
  791. package/ui/Word.js +31 -39
  792. package/ui/Word.js.map +1 -1
  793. package/useDirtyGetMentions-f00f1f94.js +75 -0
  794. package/useDirtyGetMentions-f00f1f94.js.map +1 -0
  795. package/useLongPress-1ab49410.js +85 -0
  796. package/useLongPress-1ab49410.js.map +1 -0
  797. package/useSendbirdStateContext.js +2 -3
  798. package/useSendbirdStateContext.js.map +1 -1
  799. package/utils/message/getOutgoingMessageState.js +9 -15
  800. package/utils/message/getOutgoingMessageState.js.map +1 -1
  801. package/utils/message/isVoiceMessage.js +8 -0
  802. package/utils/message/isVoiceMessage.js.map +1 -0
  803. package/{utils-ea66f822.js → utils-56cb7de5.js} +1 -1
  804. package/{utils-ea66f822.js.map → utils-56cb7de5.js.map} +1 -1
  805. package/utils-77f7e8b2.js +29 -0
  806. package/utils-77f7e8b2.js.map +1 -0
  807. package/{utils-ddb0df4c.js → utils-7f3d0d8c.js} +3 -7
  808. package/{utils-ddb0df4c.js.map → utils-7f3d0d8c.js.map} +1 -1
  809. package/utils-af9b1c06.js +31 -0
  810. package/utils-af9b1c06.js.map +1 -0
  811. package/uuid-92d22300.js +13 -0
  812. package/{uuid-7e004f47.js.map → uuid-92d22300.js.map} +1 -1
  813. package/withSendbird.js +5 -6
  814. package/withSendbird.js.map +1 -1
  815. package/ChannelListProvider-1d36e2e9.js.map +0 -1
  816. package/ChannelProvider-289cd35f.js.map +0 -1
  817. package/CreateChannelProvider-72b655e9.js +0 -55
  818. package/CreateChannelProvider-72b655e9.js.map +0 -1
  819. package/LocalizationContext-289c1917.js +0 -22
  820. package/MediaQueryContext-273d29f6.js +0 -90
  821. package/MediaQueryContext-273d29f6.js.map +0 -1
  822. package/MemberList-7ad0fa0b.js +0 -435
  823. package/MemberList-7ad0fa0b.js.map +0 -1
  824. package/NotificationChannel/components/NotificationChannelUI.js +0 -119
  825. package/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  826. package/NotificationChannel/components/NotificationList.js +0 -111
  827. package/NotificationChannel/components/NotificationList.js.map +0 -1
  828. package/NotificationChannel/components/NotificationMessageWrap.js +0 -136
  829. package/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  830. package/NotificationChannel/context.js +0 -12
  831. package/NotificationChannel.js +0 -58
  832. package/NotificationChannel.js.map +0 -1
  833. package/NotificationChannelProvider-ad556c64.js +0 -535
  834. package/NotificationChannelProvider-ad556c64.js.map +0 -1
  835. package/OpenChannelListProvider-0febf8b2.js +0 -434
  836. package/OpenChannelListProvider-0febf8b2.js.map +0 -1
  837. package/OpenChannelProvider-c254c663.js +0 -2000
  838. package/OpenChannelProvider-c254c663.js.map +0 -1
  839. package/RemoveMessageModal-d6cbf9fa.js +0 -31
  840. package/RemoveMessageModal-d6cbf9fa.js.map +0 -1
  841. package/ThreadProvider-8696ef31.js +0 -1644
  842. package/ThreadProvider-8696ef31.js.map +0 -1
  843. package/_rollupPluginBabelHelpers-519f674b.js.map +0 -1
  844. package/actionTypes-9f87e87f.js +0 -6
  845. package/actionTypes-9f87e87f.js.map +0 -1
  846. package/cjs/ChannelListProvider-0de52d2b.js.map +0 -1
  847. package/cjs/ChannelProvider-fc58e60e.js.map +0 -1
  848. package/cjs/CreateChannelProvider-a82d20f4.js +0 -62
  849. package/cjs/CreateChannelProvider-a82d20f4.js.map +0 -1
  850. package/cjs/MediaQueryContext-4711a81f.js +0 -97
  851. package/cjs/MediaQueryContext-4711a81f.js.map +0 -1
  852. package/cjs/MemberList-b2623166.js +0 -441
  853. package/cjs/MemberList-b2623166.js.map +0 -1
  854. package/cjs/NotificationChannel/components/NotificationChannelUI.js +0 -125
  855. package/cjs/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  856. package/cjs/NotificationChannel/components/NotificationList.js +0 -117
  857. package/cjs/NotificationChannel/components/NotificationList.js.map +0 -1
  858. package/cjs/NotificationChannel/components/NotificationMessageWrap.js +0 -142
  859. package/cjs/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  860. package/cjs/NotificationChannel/context.js +0 -21
  861. package/cjs/NotificationChannel.js +0 -64
  862. package/cjs/NotificationChannel.js.map +0 -1
  863. package/cjs/NotificationChannelProvider-2cdc7ff4.js +0 -543
  864. package/cjs/NotificationChannelProvider-2cdc7ff4.js.map +0 -1
  865. package/cjs/OpenChannelListProvider-60bc3c69.js +0 -443
  866. package/cjs/OpenChannelListProvider-60bc3c69.js.map +0 -1
  867. package/cjs/OpenChannelProvider-3ed4eb6e.js +0 -2009
  868. package/cjs/OpenChannelProvider-3ed4eb6e.js.map +0 -1
  869. package/cjs/RemoveMessageModal-9169766a.js.map +0 -1
  870. package/cjs/ThreadProvider-389f5031.js +0 -1653
  871. package/cjs/ThreadProvider-389f5031.js.map +0 -1
  872. package/cjs/_rollupPluginBabelHelpers-fed1e122.js.map +0 -1
  873. package/cjs/actionTypes-2f90e726.js +0 -10
  874. package/cjs/actionTypes-2f90e726.js.map +0 -1
  875. package/cjs/color-f47044b3.js.map +0 -1
  876. package/cjs/compareIds-4124b297.js.map +0 -1
  877. package/cjs/const-015e5589.js +0 -20
  878. package/cjs/const-015e5589.js.map +0 -1
  879. package/cjs/const-fd64914b.js.map +0 -1
  880. package/cjs/index-30c97863.js +0 -194
  881. package/cjs/index-30c97863.js.map +0 -1
  882. package/cjs/index-3a4f8219.js.map +0 -1
  883. package/cjs/index-40e4653a.js +0 -59
  884. package/cjs/index-40e4653a.js.map +0 -1
  885. package/cjs/index-5d5497c2.js.map +0 -1
  886. package/cjs/index-62c1bdfc.js +0 -701
  887. package/cjs/index-62c1bdfc.js.map +0 -1
  888. package/cjs/index-9ca07037.js.map +0 -1
  889. package/cjs/index-9f3670d0.js +0 -360
  890. package/cjs/index-9f3670d0.js.map +0 -1
  891. package/cjs/index-abbc8024.js.map +0 -1
  892. package/cjs/index-c475c3c8.js.map +0 -1
  893. package/cjs/index-c5cd589d.js.map +0 -1
  894. package/cjs/stringSet-3e6167ef.js.map +0 -1
  895. package/cjs/topics-56842e14.js +0 -22
  896. package/cjs/topics-56842e14.js.map +0 -1
  897. package/cjs/tslib.es6-b8ba50ef.js +0 -110
  898. package/cjs/tslib.es6-b8ba50ef.js.map +0 -1
  899. package/cjs/useLongPress-99c66f7f.js +0 -118
  900. package/cjs/useLongPress-99c66f7f.js.map +0 -1
  901. package/cjs/utils-9adfd244.js +0 -38
  902. package/cjs/utils-9adfd244.js.map +0 -1
  903. package/cjs/utils-f6a96ebf.js +0 -32
  904. package/cjs/utils-f6a96ebf.js.map +0 -1
  905. package/cjs/uuid-2475ef6c.js +0 -19
  906. package/compareIds-ef41eb2c.js.map +0 -1
  907. package/const-76d87f47.js.map +0 -1
  908. package/const-da6f3d34.js +0 -14
  909. package/const-da6f3d34.js.map +0 -1
  910. package/context-10475c77.js +0 -12
  911. package/index-12754b45.js.map +0 -1
  912. package/index-1e46e582.js +0 -179
  913. package/index-1e46e582.js.map +0 -1
  914. package/index-232388fa.js.map +0 -1
  915. package/index-2784bdd8.js.map +0 -1
  916. package/index-2f346069.js.map +0 -1
  917. package/index-4637b0de.js +0 -57
  918. package/index-4637b0de.js.map +0 -1
  919. package/index-4900e890.js +0 -353
  920. package/index-4900e890.js.map +0 -1
  921. package/index-751f97ce.js.map +0 -1
  922. package/index-855ef33d.js +0 -662
  923. package/index-855ef33d.js.map +0 -1
  924. package/index-aea7b7d6.js.map +0 -1
  925. package/stringSet-9ae71b7d.js.map +0 -1
  926. package/topics-e2963bba.js +0 -13
  927. package/topics-e2963bba.js.map +0 -1
  928. package/tslib.es6-72df3331.js +0 -104
  929. package/tslib.es6-72df3331.js.map +0 -1
  930. package/useLongPress-1a777e9e.js +0 -116
  931. package/useLongPress-1a777e9e.js.map +0 -1
  932. package/utils-2976f2c1.js +0 -30
  933. package/utils-2976f2c1.js.map +0 -1
  934. package/utils-6b69fb18.js +0 -34
  935. package/utils-6b69fb18.js.map +0 -1
  936. package/uuid-7e004f47.js +0 -17
@@ -0,0 +1,1894 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('./index-869e9a94.js');
5
+ var UserProfileContext = require('./UserProfileContext-87580795.js');
6
+ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-c89f311a.js');
7
+ var compareIds = require('./compareIds-ccccfe86.js');
8
+ var topics = require('./topics-b384e6b3.js');
9
+ var SendbirdChat = require('@sendbird/chat');
10
+ var openChannel = require('@sendbird/chat/openChannel');
11
+ var uuid = require('./uuid-12b01f73.js');
12
+ var useSendbirdStateContext = require('./useSendbirdStateContext.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ const getMessageCreatedAt = message => index.format(message.createdAt, 'p');
19
+ const shouldFetchMore = (messageLength, maxMessages) => {
20
+ if (typeof maxMessages !== 'number') {
21
+ return true;
22
+ }
23
+ if (typeof maxMessages === 'number' && maxMessages > messageLength) {
24
+ return true;
25
+ }
26
+ return false;
27
+ };
28
+
29
+ /* eslint-disable default-param-last */
30
+ const scrollIntoLast = function () {
31
+ let initialTry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
32
+ let scrollRef = arguments.length > 1 ? arguments[1] : undefined;
33
+ const MAX_TRIES = 10;
34
+ const currentTry = initialTry;
35
+ if (currentTry > MAX_TRIES) {
36
+ return;
37
+ }
38
+ try {
39
+ const scrollDOM = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || document.querySelector('.sendbird-openchannel-conversation-scroll__container__item-container');
40
+ // eslint-disable-next-line no-multi-assign
41
+ scrollDOM.scrollTop = scrollDOM.scrollHeight;
42
+ } catch (error) {
43
+ setTimeout(() => {
44
+ scrollIntoLast(currentTry + 1, scrollRef);
45
+ }, 500 * currentTry);
46
+ }
47
+ };
48
+ const isSameGroup = (message, comparingMessage) => {
49
+ var _sender, _sender2, _message_$sender, _comparingMessage_$se;
50
+ if (!(message && comparingMessage && message !== null && message !== void 0 && message.messageType && message.messageType !== 'admin' && comparingMessage !== null && comparingMessage !== void 0 && comparingMessage.messageType && comparingMessage.messageType !== 'admin' && message !== null && message !== void 0 && message.sender && comparingMessage !== null && comparingMessage !== void 0 && comparingMessage.sender && message !== null && message !== void 0 && message.createdAt && comparingMessage !== null && comparingMessage !== void 0 && comparingMessage.createdAt && message !== null && message !== void 0 && (_sender = message.sender) !== null && _sender !== void 0 && _sender.userId && comparingMessage !== null && comparingMessage !== void 0 && (_sender2 = comparingMessage.sender) !== null && _sender2 !== void 0 && _sender2.userId)) {
51
+ return false;
52
+ }
53
+ // to fix typecasting
54
+ const message_ = message;
55
+ const comparingMessage_ = comparingMessage;
56
+ return (message_ === null || message_ === void 0 ? void 0 : message_.sendingStatus) === (comparingMessage_ === null || comparingMessage_ === void 0 ? void 0 : comparingMessage_.sendingStatus) && (message_ === null || message_ === void 0 ? void 0 : (_message_$sender = message_.sender) === null || _message_$sender === void 0 ? void 0 : _message_$sender.userId) === (comparingMessage_ === null || comparingMessage_ === void 0 ? void 0 : (_comparingMessage_$se = comparingMessage_.sender) === null || _comparingMessage_$se === void 0 ? void 0 : _comparingMessage_$se.userId) && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage);
57
+ };
58
+ const compareMessagesForGrouping = (prevMessage, currMessage, nextMessage) => [isSameGroup(prevMessage, currMessage), isSameGroup(currMessage, nextMessage)];
59
+ const kFormatter = num => {
60
+ if (Math.abs(num) > 999999) {
61
+ return `${(Math.abs(num) / 1000000).toFixed(1)}M`;
62
+ }
63
+ if (Math.abs(num) > 999) {
64
+ return `${(Math.abs(num) / 1000).toFixed(1)}K`;
65
+ }
66
+ return `${num}`;
67
+ };
68
+ const isOperator = (openChannel, userId) => {
69
+ const operators = openChannel === null || openChannel === void 0 ? void 0 : openChannel.operators;
70
+ if (operators.map(operator => operator.userId).indexOf(userId) < 0) {
71
+ return false;
72
+ }
73
+ return true;
74
+ };
75
+ const isDisabledBecauseFrozen = (openChannel, userId) => {
76
+ const isFrozen = openChannel === null || openChannel === void 0 ? void 0 : openChannel.isFrozen;
77
+ return isFrozen && !isOperator(openChannel, userId);
78
+ };
79
+ const isDisabledBecauseMuted = (mutedParticipantIds, userId) => {
80
+ return mutedParticipantIds.indexOf(userId) > -1;
81
+ };
82
+ const fetchWithListQuery = (listQuery, logger, eachQueryNextCallback) => {
83
+ const fetchList = query => {
84
+ const {
85
+ hasNext
86
+ } = query;
87
+ if (hasNext) {
88
+ query.next().then(users => {
89
+ eachQueryNextCallback(users);
90
+ fetchList(query);
91
+ }).catch(error => {
92
+ logger.warning('OpenChannel | FetchUserList failed', error);
93
+ });
94
+ } else {
95
+ logger.info('OpenChannel | FetchUserList finished');
96
+ }
97
+ };
98
+ logger.info('OpenChannel | FetchUserList start', listQuery);
99
+ fetchList(listQuery);
100
+ };
101
+ const pxToNumber = px => {
102
+ if (typeof px === 'number') {
103
+ return px;
104
+ }
105
+ if (typeof px === 'string') {
106
+ const parsed = Number.parseFloat(px);
107
+ if (!Number.isNaN(parsed)) {
108
+ return parsed;
109
+ }
110
+ }
111
+ return null;
112
+ };
113
+
114
+ const SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
115
+ const SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
116
+ const RESET_MESSAGES = 'RESET_MESSAGES';
117
+ const EXIT_CURRENT_CHANNEL = 'EXIT_CURRENT_CHANNEL';
118
+ const GET_PREV_MESSAGES_START = 'GET_PREV_MESSAGES_START';
119
+ const GET_PREV_MESSAGES_SUCESS = 'GET_PREV_MESSAGES_SUCESS';
120
+ const GET_PREV_MESSAGES_FAIL = 'GET_PREV_MESSAGES_FAIL';
121
+ const SENDING_MESSAGE_FAILED = 'SENDING_MESSAGE_FAILED';
122
+ const SENDING_MESSAGE_SUCCEEDED = 'SENDING_MESSAGE_SUCCEEDED';
123
+ const SENDING_MESSAGE_START = 'SENDING_MESSAGE_START';
124
+ const RESENDING_MESSAGE_START = 'RESENDING_MESSAGE_START';
125
+ const FETCH_PARTICIPANT_LIST = 'FETCH_PARTICIPANT_LIST';
126
+ const FETCH_BANNED_USER_LIST = 'FETCH_BANNED_USER_LIST';
127
+ const FETCH_MUTED_USER_LIST = 'FETCH_MUTED_USER_LIST';
128
+ const TRIM_MESSAGE_LIST = 'TRIM_MESSAGE_LIST';
129
+
130
+ // event handlers
131
+ const ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
132
+ const ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
133
+ const ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
134
+ const ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
135
+ const ON_OPERATOR_UPDATED = 'ON_OPERATOR_UPDATED';
136
+ const ON_USER_ENTERED = 'ON_USER_ENTERED';
137
+ const ON_USER_EXITED = 'ON_USER_EXITED';
138
+ const ON_USER_MUTED = 'ON_USER_MUTED';
139
+ const ON_USER_UNMUTED = 'ON_USER_UNMUTED';
140
+ const ON_USER_BANNED = 'ON_USER_BANNED';
141
+ const ON_USER_UNBANNED = 'ON_USER_UNBANNED';
142
+ const ON_CHANNEL_FROZEN = 'ON_CHANNEL_FROZEN';
143
+ const ON_CHANNEL_UNFROZEN = 'ON_CHANNEL_UNFROZEN';
144
+ const ON_CHANNEL_CHANGED = 'ON_CHANNEL_CHANGED';
145
+ const ON_CHANNEL_DELETED = 'ON_CHANNEL_DELETED';
146
+ const ON_META_DATA_CREATED = 'ON_META_DATA_CREATED';
147
+ const ON_META_DATA_UPDATED = 'ON_META_DATA_UPDATED';
148
+ const ON_META_DATA_DELETED = 'ON_META_DATA_DELETED';
149
+ const ON_META_COUNTERS_CREATED = 'ON_META_COUNTERS_CREATED';
150
+ const ON_META_COUNTERS_UPDATED = 'ON_META_COUNTERS_UPDATED';
151
+ const ON_META_COUNTERS_DELETED = 'ON_META_COUNTERS_DELETED';
152
+ const ON_MENTION_RECEIVED = 'ON_MENTION_RECEIVED';
153
+
154
+ /* eslint-disable @typescript-eslint/no-explicit-any */ // @ts-ignore: Unreachable code error
155
+ function reducer(state, action) {
156
+ switch (action.type) {
157
+ case RESET_MESSAGES:
158
+ {
159
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
160
+ allMessages: []
161
+ });
162
+ }
163
+ case EXIT_CURRENT_CHANNEL:
164
+ {
165
+ var _action$payload, _state$currentOpenCha;
166
+ if (((_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : _action$payload.url) === ((_state$currentOpenCha = state.currentOpenChannel) === null || _state$currentOpenCha === void 0 ? void 0 : _state$currentOpenCha.url)) {
167
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
168
+ currentOpenChannel: null
169
+ });
170
+ }
171
+ return state;
172
+ }
173
+ case SET_CURRENT_CHANNEL:
174
+ {
175
+ const gottenChannel = action.payload;
176
+ const operators = gottenChannel.operators;
177
+ if (!state.isInvalid && state.currentOpenChannel && state.currentOpenChannel.url && state.currentOpenChannel.url === gottenChannel.url) {
178
+ return state;
179
+ }
180
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
181
+ currentOpenChannel: gottenChannel,
182
+ isInvalid: false,
183
+ operators: operators,
184
+ participants: operators,
185
+ bannedParticipantIds: [],
186
+ mutedParticipantIds: []
187
+ });
188
+ }
189
+ case SET_CHANNEL_INVALID:
190
+ {
191
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
192
+ isInvalid: true
193
+ });
194
+ }
195
+ case GET_PREV_MESSAGES_START:
196
+ {
197
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
198
+ loading: true
199
+ });
200
+ }
201
+ case GET_PREV_MESSAGES_SUCESS:
202
+ case GET_PREV_MESSAGES_FAIL:
203
+ {
204
+ const isFailed = action.type === GET_PREV_MESSAGES_FAIL;
205
+ const {
206
+ currentOpenChannel = {},
207
+ messages = [],
208
+ hasMore,
209
+ lastMessageTimestamp
210
+ } = action.payload;
211
+ const actionChannelUrl = currentOpenChannel.url;
212
+ const receivedMessages = isFailed ? [] : messages;
213
+ const _hasMore = isFailed ? false : hasMore;
214
+ const _lastMessageTimestamp = isFailed ? 0 : lastMessageTimestamp;
215
+ const stateChannel = state.currentOpenChannel;
216
+ const stateChannelUrl = stateChannel.url;
217
+ if (actionChannelUrl !== stateChannelUrl) {
218
+ return state;
219
+ }
220
+ const filteredAllMessages = state.allMessages.filter(message => !receivedMessages.find(_ref => {
221
+ let {
222
+ messageId
223
+ } = _ref;
224
+ return compareIds.compareIds(messageId, message.messageId);
225
+ }));
226
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
227
+ loading: false,
228
+ initialized: true,
229
+ hasMore: _hasMore,
230
+ lastMessageTimestamp: _lastMessageTimestamp,
231
+ allMessages: [...receivedMessages, ...filteredAllMessages]
232
+ });
233
+ }
234
+ case SENDING_MESSAGE_START:
235
+ {
236
+ const {
237
+ message,
238
+ channel
239
+ } = action.payload;
240
+ if ((channel === null || channel === void 0 ? void 0 : channel.url) !== state.currentOpenChannel.url || state.allMessages.some(m => m.reqId === message.reqId)
241
+ // Handing failed first than sending start issue
242
+ ) {
243
+ return state;
244
+ }
245
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
246
+ allMessages: [...state.allMessages, message]
247
+ });
248
+ }
249
+ case SENDING_MESSAGE_SUCCEEDED:
250
+ {
251
+ const sentMessage = action.payload;
252
+ const newMessages = state.allMessages.map(m => compareIds.compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m);
253
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
254
+ allMessages: newMessages
255
+ });
256
+ }
257
+ case SENDING_MESSAGE_FAILED:
258
+ {
259
+ const sentMessage = action.payload;
260
+ sentMessage.sendingStatus = 'failed';
261
+ if (!state.allMessages.some(m => (m === null || m === void 0 ? void 0 : m.reqId) === (sentMessage === null || sentMessage === void 0 ? void 0 : sentMessage.reqId))) {
262
+ // Handling failed first than sending start issue
263
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
264
+ allMessages: [...state.allMessages.filter(m => !compareIds.compareIds(m.reqId, sentMessage)), sentMessage]
265
+ });
266
+ } else {
267
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
268
+ allMessages: state.allMessages.map(m => compareIds.compareIds(m.reqId, sentMessage.reqId) ? sentMessage : m)
269
+ });
270
+ }
271
+ }
272
+ case TRIM_MESSAGE_LIST:
273
+ {
274
+ var _action$payload2;
275
+ const {
276
+ allMessages
277
+ } = state;
278
+ const messageLimit = (_action$payload2 = action.payload) === null || _action$payload2 === void 0 ? void 0 : _action$payload2.messageLimit;
279
+ if (messageLimit && messageLimit > 0 && (allMessages === null || allMessages === void 0 ? void 0 : allMessages.length) > messageLimit) {
280
+ const sliceAt = allMessages.length - messageLimit;
281
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
282
+ allMessages: allMessages.slice(sliceAt)
283
+ });
284
+ }
285
+ return state;
286
+ }
287
+ case RESENDING_MESSAGE_START:
288
+ {
289
+ const eventedChannel = action.payload.channel;
290
+ const resentMessage = action.payload.message;
291
+ if (eventedChannel.url !== state.currentOpenChannel.url) {
292
+ return state;
293
+ }
294
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
295
+ allMessages: state.allMessages.map(m => compareIds.compareIds(m.reqId, resentMessage.reqId) ? resentMessage : m)
296
+ });
297
+ }
298
+ case FETCH_PARTICIPANT_LIST:
299
+ {
300
+ const eventedChannel = action.payload.channel;
301
+ const fetchedParticipantList = action.payload.users;
302
+ if (eventedChannel.url !== state.currentOpenChannel.url) {
303
+ return state;
304
+ }
305
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
306
+ participants: [...state.participants, ...fetchedParticipantList]
307
+ // Should check duplication
308
+ });
309
+ }
310
+
311
+ case FETCH_BANNED_USER_LIST:
312
+ {
313
+ const eventedChannel = action.payload.channel;
314
+ const fetchedBannedUserList = action.payload.users;
315
+ if (eventedChannel.url !== state.currentOpenChannel.url || !fetchedBannedUserList.every(user => typeof user.userId === 'string')) {
316
+ return state;
317
+ }
318
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
319
+ bannedParticipantIds: [...state.bannedParticipantIds, ...fetchedBannedUserList.map(user => user.userId)]
320
+ // Should check duplication
321
+ });
322
+ }
323
+
324
+ case FETCH_MUTED_USER_LIST:
325
+ {
326
+ const eventedChannel = action.payload.channel;
327
+ const fetchedMutedUserList = action.payload.users;
328
+ if (eventedChannel.url !== state.currentOpenChannel.url || !fetchedMutedUserList.every(user => typeof user.userId === 'string')) {
329
+ return state;
330
+ }
331
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
332
+ mutedParticipantIds: [...state.mutedParticipantIds, ...fetchedMutedUserList.map(user => user.userId)]
333
+ // Should check duplication
334
+ });
335
+ }
336
+ // events
337
+ case ON_MESSAGE_RECEIVED:
338
+ {
339
+ const eventedChannel = action.payload.channel;
340
+ const receivedMessage = action.payload.message;
341
+ const {
342
+ currentOpenChannel
343
+ } = state;
344
+ if (!compareIds.compareIds(eventedChannel.url, currentOpenChannel.url) || !(state.allMessages.map(message => message.messageId).indexOf(receivedMessage.messageId) < 0)) {
345
+ return state;
346
+ }
347
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
348
+ allMessages: [...state.allMessages, receivedMessage]
349
+ });
350
+ }
351
+ case ON_MESSAGE_UPDATED:
352
+ {
353
+ const eventedChannel = action.payload.channel;
354
+ const updatedMessage = action.payload.message;
355
+ const currentChannel = state.currentOpenChannel;
356
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
357
+ return state;
358
+ }
359
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
360
+ allMessages: state.allMessages.map(message => message.isIdentical(updatedMessage) ? updatedMessage : message)
361
+ });
362
+ }
363
+ case ON_MESSAGE_DELETED:
364
+ {
365
+ const eventedChannel = action.payload.channel;
366
+ const deletedMessageId = action.payload.messageId;
367
+ const currentChannel = state.currentOpenChannel;
368
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
369
+ return state;
370
+ }
371
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
372
+ allMessages: state.allMessages.filter(message => !compareIds.compareIds(message.messageId, deletedMessageId))
373
+ });
374
+ }
375
+ case ON_MESSAGE_DELETED_BY_REQ_ID:
376
+ {
377
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
378
+ allMessages: state.allMessages.filter(m => !compareIds.compareIds(m.reqId, action.payload))
379
+ });
380
+ }
381
+ case ON_OPERATOR_UPDATED:
382
+ {
383
+ const eventedChannel = action.payload.channel;
384
+ const updatedOperators = action.payload.operators;
385
+ const currentChannel = state.currentOpenChannel;
386
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
387
+ return state;
388
+ }
389
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
390
+ currentOpenChannel: eventedChannel,
391
+ operators: updatedOperators
392
+ });
393
+ }
394
+ case ON_USER_ENTERED:
395
+ {
396
+ const eventedChannel = action.payload.channel;
397
+ const enteredUser = action.payload.user;
398
+ const currentChannel = state.currentOpenChannel;
399
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
400
+ return state;
401
+ }
402
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
403
+ participants: [...state.participants, enteredUser]
404
+ });
405
+ }
406
+ case ON_USER_EXITED:
407
+ {
408
+ const eventedChannel = action.payload.channel;
409
+ const exitedUser = action.payload.user;
410
+ const currentChannel = state.currentOpenChannel;
411
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url) {
412
+ return state;
413
+ }
414
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
415
+ participants: state.participants.filter(participant => !compareIds.compareIds(participant.userId, exitedUser.userId))
416
+ });
417
+ }
418
+ case ON_USER_MUTED:
419
+ {
420
+ const eventedChannel = action.payload.channel;
421
+ const mutedUser = action.payload.user;
422
+ const currentChannel = state.currentOpenChannel;
423
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url || state.mutedParticipantIds.indexOf(mutedUser.userId) >= 0) {
424
+ return state;
425
+ }
426
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
427
+ mutedParticipantIds: [...state.mutedParticipantIds, mutedUser.userId]
428
+ });
429
+ }
430
+ case ON_USER_UNMUTED:
431
+ {
432
+ const eventedChannel = action.payload.channel;
433
+ const unmutedUser = action.payload.user;
434
+ const currentChannel = state.currentOpenChannel;
435
+ if (!currentChannel || currentChannel.url && currentChannel.url !== eventedChannel.url || state.mutedParticipantIds.indexOf(unmutedUser.userId) < 0) {
436
+ return state;
437
+ }
438
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
439
+ mutedParticipantIds: state.mutedParticipantIds.filter(userId => userId !== unmutedUser.userId)
440
+ });
441
+ }
442
+ case ON_USER_BANNED:
443
+ {
444
+ const eventedChannel = action.payload.channel;
445
+ const bannedUser = action.payload.user;
446
+ const currentUser = action.payload.currentUser;
447
+ const currentChannel = state.currentOpenChannel;
448
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (eventedChannel === null || eventedChannel === void 0 ? void 0 : eventedChannel.url) && (bannedUser === null || bannedUser === void 0 ? void 0 : bannedUser.userId) === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) {
449
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
450
+ currentOpenChannel: null
451
+ });
452
+ } else if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (eventedChannel === null || eventedChannel === void 0 ? void 0 : eventedChannel.url)) {
453
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
454
+ bannedParticipantIds: [...state.bannedParticipantIds, bannedUser.userId]
455
+ });
456
+ }
457
+ return state;
458
+ }
459
+ case ON_USER_UNBANNED:
460
+ {
461
+ const eventedChannel = action.payload.channel;
462
+ const unbannedUser = action.payload.user;
463
+ const currentChannel = state.currentOpenChannel;
464
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (eventedChannel === null || eventedChannel === void 0 ? void 0 : eventedChannel.url)) {
465
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
466
+ bannedParticipantIds: state.bannedParticipantIds.filter(userId => userId !== unbannedUser.userId)
467
+ });
468
+ }
469
+ return state;
470
+ }
471
+ case ON_CHANNEL_FROZEN:
472
+ {
473
+ const frozenChannel = action.payload;
474
+ const currentChannel = state.currentOpenChannel;
475
+ if (!currentChannel || currentChannel.url && currentChannel.url !== frozenChannel.url) {
476
+ return state;
477
+ }
478
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
479
+ frozen: true
480
+ });
481
+ }
482
+ case ON_CHANNEL_UNFROZEN:
483
+ {
484
+ const unfrozenChannel = action.payload;
485
+ const currentChannel = state.currentOpenChannel;
486
+ if (!currentChannel || currentChannel.url && currentChannel.url !== unfrozenChannel.url) {
487
+ return state;
488
+ }
489
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
490
+ frozen: false
491
+ });
492
+ }
493
+ case ON_CHANNEL_CHANGED:
494
+ {
495
+ const changedChannel = action.payload;
496
+ const currentChannel = state.currentOpenChannel;
497
+ if (!currentChannel || currentChannel.url && currentChannel.url !== changedChannel.url) {
498
+ return state;
499
+ }
500
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
501
+ currentOpenChannel: changedChannel
502
+ });
503
+ }
504
+ case ON_CHANNEL_DELETED:
505
+ {
506
+ const deletedChannelUrl = action.payload;
507
+ const currentChannel = state === null || state === void 0 ? void 0 : state.currentOpenChannel;
508
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === deletedChannelUrl) {
509
+ return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, state), {}, {
510
+ currentOpenChannel: null
511
+ });
512
+ }
513
+ return state;
514
+ }
515
+ case ON_META_DATA_CREATED:
516
+ {
517
+ // const eventedChannel = action.payload.channel;
518
+ // const createdMetaData = action.payload.metaData;
519
+ // return {
520
+ // ...state
521
+ // };
522
+ return state;
523
+ }
524
+ case ON_META_DATA_UPDATED:
525
+ {
526
+ // const eventedChannel = action.payload.channel;
527
+ // const updatedMetaData = action.payload.metaData;
528
+ // return {
529
+ // ...state
530
+ // };
531
+ return state;
532
+ }
533
+ case ON_META_DATA_DELETED:
534
+ {
535
+ // const eventedChannel = action.payload.channel;
536
+ // const deletedMetaDataKeys = action.payload.metaDataKeys;
537
+ // return {
538
+ // ...state
539
+ // };
540
+ return state;
541
+ }
542
+ case ON_META_COUNTERS_CREATED:
543
+ {
544
+ // const eventedChannel = action.payload.channel;
545
+ // const createdMetaCounter = action.payload.metaCounter;
546
+ // return {
547
+ // ...state
548
+ // };
549
+ return state;
550
+ }
551
+ case ON_META_COUNTERS_UPDATED:
552
+ {
553
+ // const eventedChannel = action.payload.channel;
554
+ // const updatedMetaCounter = action.payload.metaCounter;
555
+ // return {
556
+ // ...state
557
+ // };
558
+ return state;
559
+ }
560
+ case ON_META_COUNTERS_DELETED:
561
+ {
562
+ // const eventedChannel = action.payload.channel;
563
+ // const deletedMetaCounterKeys = action.payload.metaCounterKeys;
564
+ // return {
565
+ // ...state
566
+ // };
567
+ return state;
568
+ }
569
+ case ON_MENTION_RECEIVED:
570
+ {
571
+ // const eventedChannel = action.payload.channel;
572
+ // const mentionedMessage = action.payload.message;
573
+ // return {
574
+ // ...state
575
+ // };
576
+ return state;
577
+ }
578
+ default:
579
+ return state;
580
+ }
581
+ }
582
+
583
+ const initialState = {
584
+ allMessages: [],
585
+ loading: false,
586
+ initialized: false,
587
+ currentOpenChannel: null,
588
+ isInvalid: false,
589
+ hasMore: false,
590
+ lastMessageTimestamp: 0,
591
+ frozen: false,
592
+ operators: [],
593
+ participants: [],
594
+ bannedParticipantIds: [],
595
+ mutedParticipantIds: []
596
+ };
597
+
598
+ function useSetChannel(_ref, _ref2) {
599
+ let {
600
+ channelUrl,
601
+ sdkInit,
602
+ fetchingParticipants,
603
+ userId,
604
+ currentOpenChannel
605
+ } = _ref;
606
+ let {
607
+ sdk,
608
+ logger,
609
+ messagesDispatcher
610
+ } = _ref2;
611
+ React.useEffect(() => {
612
+ if (channelUrl && sdkInit && sdk !== null && sdk !== void 0 && sdk.openChannel) {
613
+ if (currentOpenChannel && currentOpenChannel !== null && currentOpenChannel !== void 0 && currentOpenChannel.exit) {
614
+ var _currentOpenChannel$e;
615
+ (_currentOpenChannel$e = currentOpenChannel.exit) === null || _currentOpenChannel$e === void 0 ? void 0 : _currentOpenChannel$e.call(currentOpenChannel).then(() => {
616
+ logger.info('OpenChannel | useSetChannel: Exit from the previous open channel', currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.url);
617
+ messagesDispatcher({
618
+ type: EXIT_CURRENT_CHANNEL,
619
+ payload: currentOpenChannel
620
+ });
621
+ });
622
+ }
623
+ logger.info('OpenChannel | useSetChannel: Fetching channel', channelUrl);
624
+ sdk.openChannel.getChannel(channelUrl).then(openChannel => {
625
+ logger.info('OpenChannel | useSetChannel: Succeeded to fetch channel', openChannel);
626
+ messagesDispatcher({
627
+ type: SET_CURRENT_CHANNEL,
628
+ payload: openChannel
629
+ });
630
+ openChannel.enter().then(() => {
631
+ if (openChannel.isOperator(userId)) {
632
+ // only operator has a permission to fetch these list
633
+ const bannedParticipantListQuery = openChannel.createBannedUserListQuery();
634
+ const mutedParticipantListQuery = openChannel.createMutedUserListQuery();
635
+ fetchWithListQuery(bannedParticipantListQuery, logger, users => {
636
+ messagesDispatcher({
637
+ type: FETCH_BANNED_USER_LIST,
638
+ payload: {
639
+ channel: openChannel,
640
+ users
641
+ }
642
+ });
643
+ });
644
+ fetchWithListQuery(mutedParticipantListQuery, logger, users => {
645
+ messagesDispatcher({
646
+ type: FETCH_MUTED_USER_LIST,
647
+ payload: {
648
+ channel: openChannel,
649
+ users
650
+ }
651
+ });
652
+ });
653
+ } else {
654
+ openChannel.getMyMutedInfo().then(mutedInfo => {
655
+ if (mutedInfo !== null && mutedInfo !== void 0 && mutedInfo.isMuted) {
656
+ messagesDispatcher({
657
+ type: FETCH_MUTED_USER_LIST,
658
+ payload: {
659
+ channel: openChannel,
660
+ users: [sdk === null || sdk === void 0 ? void 0 : sdk.currentUser]
661
+ }
662
+ });
663
+ }
664
+ });
665
+ }
666
+ if (fetchingParticipants) {
667
+ // fetch participants list
668
+ const participantListQuery = openChannel.createParticipantListQuery({
669
+ limit: openChannel.participantCount
670
+ });
671
+ fetchWithListQuery(participantListQuery, logger, users => {
672
+ messagesDispatcher({
673
+ type: FETCH_PARTICIPANT_LIST,
674
+ payload: {
675
+ channel: openChannel,
676
+ users
677
+ }
678
+ });
679
+ });
680
+ }
681
+ }).catch(error => {
682
+ logger.warning('OpenChannel | useSetChannel: Failed to enter channel', {
683
+ channelUrl,
684
+ error
685
+ });
686
+ messagesDispatcher({
687
+ type: SET_CHANNEL_INVALID,
688
+ payload: null
689
+ });
690
+ });
691
+ }).catch(error => {
692
+ logger.warning('OpenChannel | useSetChannel: Failed to fetch channel', {
693
+ channelUrl,
694
+ error
695
+ });
696
+ messagesDispatcher({
697
+ type: SET_CHANNEL_INVALID,
698
+ payload: null
699
+ });
700
+ });
701
+ }
702
+ }, [channelUrl, sdkInit, fetchingParticipants]);
703
+ }
704
+
705
+ function useHandleChannelEvents(_ref, _ref2) {
706
+ let {
707
+ currentOpenChannel,
708
+ checkScrollBottom
709
+ } = _ref;
710
+ let {
711
+ sdk,
712
+ logger,
713
+ messagesDispatcher,
714
+ scrollRef
715
+ } = _ref2;
716
+ React.useEffect(() => {
717
+ var _sdk$openChannel;
718
+ const messageReceiverId = uuid.uuidv4();
719
+ if (currentOpenChannel && currentOpenChannel.url && sdk !== null && sdk !== void 0 && (_sdk$openChannel = sdk.openChannel) !== null && _sdk$openChannel !== void 0 && _sdk$openChannel.addOpenChannelHandler) {
720
+ var _sdk$openChannel2;
721
+ logger.info('OpenChannel | useHandleChannelEvents: Setup evnet handler', messageReceiverId);
722
+ const channelHandlerParams = {
723
+ onMessageReceived: (channel, message) => {
724
+ const scrollToEnd = checkScrollBottom();
725
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
726
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageReceived', {
727
+ channelUrl,
728
+ message
729
+ });
730
+ messagesDispatcher({
731
+ type: ON_MESSAGE_RECEIVED,
732
+ payload: {
733
+ channel,
734
+ message
735
+ }
736
+ });
737
+ if (scrollToEnd) {
738
+ try {
739
+ setTimeout(() => {
740
+ scrollIntoLast(0, scrollRef);
741
+ });
742
+ } catch (error) {
743
+ logger.warning('OpenChannel | onMessageReceived | scroll to end failed');
744
+ }
745
+ }
746
+ },
747
+ onMessageUpdated: (channel, message) => {
748
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
749
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageUpdated', {
750
+ channelUrl,
751
+ message
752
+ });
753
+ messagesDispatcher({
754
+ type: ON_MESSAGE_UPDATED,
755
+ payload: {
756
+ channel,
757
+ message
758
+ }
759
+ });
760
+ },
761
+ onMessageDeleted: (channel, messageId) => {
762
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
763
+ logger.info('OpenChannel | useHandleChannelEvents: onMessageDeleted', {
764
+ channelUrl,
765
+ messageId
766
+ });
767
+ messagesDispatcher({
768
+ type: ON_MESSAGE_DELETED,
769
+ payload: {
770
+ channel,
771
+ messageId
772
+ }
773
+ });
774
+ },
775
+ onOperatorUpdated: (channel, operators) => {
776
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
777
+ logger.info('OpenChannel | useHandleChannelEvents: onOperatorUpdated', {
778
+ channelUrl,
779
+ operators
780
+ });
781
+ messagesDispatcher({
782
+ type: ON_OPERATOR_UPDATED,
783
+ payload: {
784
+ channel,
785
+ operators
786
+ }
787
+ });
788
+ },
789
+ onUserEntered: (channel, user) => {
790
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
791
+ logger.info('OpenChannel | useHandleChannelEvents: onUserEntered', {
792
+ channelUrl,
793
+ user
794
+ });
795
+ messagesDispatcher({
796
+ type: ON_USER_ENTERED,
797
+ payload: {
798
+ channel,
799
+ user
800
+ }
801
+ });
802
+ },
803
+ onUserExited: (channel, user) => {
804
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
805
+ logger.info('OpenChannel | useHandleChannelEvents: onUserExited', {
806
+ channelUrl,
807
+ user
808
+ });
809
+ messagesDispatcher({
810
+ type: ON_USER_EXITED,
811
+ payload: {
812
+ channel,
813
+ user
814
+ }
815
+ });
816
+ },
817
+ onUserMuted: (channel, user) => {
818
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
819
+ logger.info('OpenChannel | useHandleChannelEvents: onUserMuted', {
820
+ channelUrl,
821
+ user
822
+ });
823
+ messagesDispatcher({
824
+ type: ON_USER_MUTED,
825
+ payload: {
826
+ channel,
827
+ user
828
+ }
829
+ });
830
+ },
831
+ onUserUnmuted: (channel, user) => {
832
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
833
+ logger.info('OpenChannel | useHandleChannelEvents: onUserUnmuted', {
834
+ channelUrl,
835
+ user
836
+ });
837
+ messagesDispatcher({
838
+ type: ON_USER_UNMUTED,
839
+ payload: {
840
+ channel,
841
+ user
842
+ }
843
+ });
844
+ },
845
+ onUserBanned: (channel, user) => {
846
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
847
+ logger.info('OpenChannel | useHandleChannelEvents: onUserBanned', {
848
+ channelUrl,
849
+ user
850
+ });
851
+ messagesDispatcher({
852
+ type: ON_USER_BANNED,
853
+ payload: {
854
+ channel,
855
+ user,
856
+ currentUser: sdk === null || sdk === void 0 ? void 0 : sdk.currentUser
857
+ }
858
+ });
859
+ },
860
+ onUserUnbanned: (channel, user) => {
861
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
862
+ logger.info('OpenChannel | useHandleChannelEvents: onUserUnbanned', {
863
+ channelUrl,
864
+ user
865
+ });
866
+ messagesDispatcher({
867
+ type: ON_USER_UNBANNED,
868
+ payload: {
869
+ channel,
870
+ user
871
+ }
872
+ });
873
+ },
874
+ onChannelFrozen: channel => {
875
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelFrozen', channel);
876
+ messagesDispatcher({
877
+ type: ON_CHANNEL_FROZEN,
878
+ payload: channel
879
+ });
880
+ },
881
+ onChannelUnfrozen: channel => {
882
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelUnfrozen', channel);
883
+ messagesDispatcher({
884
+ type: ON_CHANNEL_UNFROZEN,
885
+ payload: channel
886
+ });
887
+ },
888
+ onChannelChanged: channel => {
889
+ logger.info('OpenChannel | useHandleChannelEvents: onChannelChanged', channel);
890
+ messagesDispatcher({
891
+ type: ON_CHANNEL_CHANGED,
892
+ payload: channel
893
+ });
894
+ },
895
+ onMetaDataCreated: (channel, metaData) => {
896
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
897
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataCreated', {
898
+ channelUrl,
899
+ metaData
900
+ });
901
+ messagesDispatcher({
902
+ type: ON_META_DATA_CREATED,
903
+ payload: {
904
+ channel,
905
+ metaData
906
+ }
907
+ });
908
+ },
909
+ onMetaDataUpdated: (channel, metaData) => {
910
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
911
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataUpdated', {
912
+ channelUrl,
913
+ metaData
914
+ });
915
+ messagesDispatcher({
916
+ type: ON_META_DATA_UPDATED,
917
+ payload: {
918
+ channel,
919
+ metaData
920
+ }
921
+ });
922
+ },
923
+ onMetaDataDeleted: (channel, metaDataKeys) => {
924
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
925
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaDataDeleted', {
926
+ channelUrl,
927
+ metaDataKeys
928
+ });
929
+ messagesDispatcher({
930
+ type: ON_META_DATA_DELETED,
931
+ payload: {
932
+ channel,
933
+ metaDataKeys
934
+ }
935
+ });
936
+ },
937
+ onMetaCounterCreated: (channel, metaCounter) => {
938
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
939
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersCreated', {
940
+ channelUrl,
941
+ metaCounter
942
+ });
943
+ messagesDispatcher({
944
+ type: ON_META_COUNTERS_CREATED,
945
+ payload: {
946
+ channel,
947
+ metaCounter
948
+ }
949
+ });
950
+ },
951
+ onMetaCounterUpdated: (channel, metaCounter) => {
952
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
953
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersUpdated', {
954
+ channelUrl,
955
+ metaCounter
956
+ });
957
+ messagesDispatcher({
958
+ type: ON_META_COUNTERS_UPDATED,
959
+ payload: {
960
+ channel,
961
+ metaCounter
962
+ }
963
+ });
964
+ },
965
+ onMetaCounterDeleted: (channel, metaCounterKeys) => {
966
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
967
+ logger.info('OpenChannel | useHandleChannelEvents: onMetaCountersDeleted', {
968
+ channelUrl,
969
+ metaCounterKeys
970
+ });
971
+ messagesDispatcher({
972
+ type: ON_META_COUNTERS_DELETED,
973
+ payload: {
974
+ channel,
975
+ metaCounterKeys
976
+ }
977
+ });
978
+ },
979
+ onMentionReceived: (channel, message) => {
980
+ const channelUrl = channel === null || channel === void 0 ? void 0 : channel.url;
981
+ logger.info('OpenChannel | useHandleChannelEvents: onMentionReceived', {
982
+ channelUrl,
983
+ message
984
+ });
985
+ messagesDispatcher({
986
+ type: ON_MENTION_RECEIVED,
987
+ payload: {
988
+ channel,
989
+ message
990
+ }
991
+ });
992
+ },
993
+ onChannelDeleted: (channelUrl, channelType) => {
994
+ if (channelType === SendbirdChat.ChannelType.OPEN && (currentOpenChannel === null || currentOpenChannel === void 0 ? void 0 : currentOpenChannel.url) === channelUrl) {
995
+ messagesDispatcher({
996
+ type: ON_CHANNEL_DELETED,
997
+ payload: channelUrl
998
+ });
999
+ }
1000
+ }
1001
+ };
1002
+ const ChannelHandler = new openChannel.OpenChannelHandler(channelHandlerParams);
1003
+ sdk === null || sdk === void 0 ? void 0 : (_sdk$openChannel2 = sdk.openChannel) === null || _sdk$openChannel2 === void 0 ? void 0 : _sdk$openChannel2.addOpenChannelHandler(messageReceiverId, ChannelHandler);
1004
+ }
1005
+ return () => {
1006
+ var _sdk$openChannel3;
1007
+ if (sdk !== null && sdk !== void 0 && (_sdk$openChannel3 = sdk.openChannel) !== null && _sdk$openChannel3 !== void 0 && _sdk$openChannel3.removeOpenChannelHandler) {
1008
+ logger.info('OpenChannel | useHandleChannelEvents: Removing message receiver handler', messageReceiverId);
1009
+ sdk.openChannel.removeOpenChannelHandler(messageReceiverId);
1010
+ }
1011
+ };
1012
+ }, [currentOpenChannel]);
1013
+ }
1014
+
1015
+ function useInitialMessagesFetch(_ref, _ref2) {
1016
+ let {
1017
+ currentOpenChannel,
1018
+ userFilledMessageListParams
1019
+ } = _ref;
1020
+ let {
1021
+ logger,
1022
+ messagesDispatcher,
1023
+ scrollRef
1024
+ } = _ref2;
1025
+ React.useEffect(() => {
1026
+ logger.info('OpenChannel | useInitialMessagesFetch: Setup started', currentOpenChannel);
1027
+ messagesDispatcher({
1028
+ type: RESET_MESSAGES,
1029
+ payload: null
1030
+ });
1031
+ if (currentOpenChannel && currentOpenChannel.getMessagesByTimestamp) {
1032
+ const messageListParams = {
1033
+ nextResultSize: 0,
1034
+ prevResultSize: 30,
1035
+ isInclusive: true,
1036
+ includeReactions: false
1037
+ };
1038
+ if (userFilledMessageListParams) {
1039
+ Object.keys(userFilledMessageListParams).forEach(key => {
1040
+ messageListParams[key] = userFilledMessageListParams[key];
1041
+ });
1042
+ logger.info('OpenChannel | useInitialMessagesFetch: Used customizedMessageListParams');
1043
+ }
1044
+ logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages', {
1045
+ currentOpenChannel,
1046
+ messageListParams
1047
+ });
1048
+ messagesDispatcher({
1049
+ type: GET_PREV_MESSAGES_START,
1050
+ payload: null
1051
+ });
1052
+ currentOpenChannel.getMessagesByTimestamp(new Date().getTime(), messageListParams).then(messages => {
1053
+ logger.info('OpenChannel | useInitialMessagesFetch: Fetching messages succeeded', messages);
1054
+ const hasMore = messages && messages.length > 0;
1055
+ const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;
1056
+ messagesDispatcher({
1057
+ type: GET_PREV_MESSAGES_SUCESS,
1058
+ payload: {
1059
+ currentOpenChannel,
1060
+ messages,
1061
+ hasMore,
1062
+ lastMessageTimestamp
1063
+ }
1064
+ });
1065
+ setTimeout(() => {
1066
+ scrollIntoLast(0, scrollRef);
1067
+ });
1068
+ }).catch(error => {
1069
+ logger.error('OpenChannel | useInitialMessagesFetch: Fetching messages failed', error);
1070
+ messagesDispatcher({
1071
+ type: GET_PREV_MESSAGES_FAIL,
1072
+ payload: {
1073
+ currentOpenChannel,
1074
+ messages: [],
1075
+ hasMore: false,
1076
+ lastMessageTimestamp: 0
1077
+ }
1078
+ });
1079
+ });
1080
+ }
1081
+ }, [currentOpenChannel, userFilledMessageListParams]);
1082
+ }
1083
+
1084
+ function useScrollCallback(_ref, _ref2) {
1085
+ let {
1086
+ currentOpenChannel,
1087
+ lastMessageTimestamp,
1088
+ fetchMore
1089
+ } = _ref;
1090
+ let {
1091
+ sdk,
1092
+ logger,
1093
+ messagesDispatcher,
1094
+ hasMore,
1095
+ userFilledMessageListParams
1096
+ } = _ref2;
1097
+ return React.useCallback(callback => {
1098
+ if (fetchMore && hasMore) {
1099
+ logger.info('OpenChannel | useScrollCallback: start');
1100
+ const messageListParams = {
1101
+ prevResultSize: 30,
1102
+ includeReactions: false,
1103
+ nextResultSize: 0
1104
+ };
1105
+ if (userFilledMessageListParams) {
1106
+ Object.keys(userFilledMessageListParams).forEach(key => {
1107
+ messageListParams[key] = userFilledMessageListParams[key];
1108
+ });
1109
+ logger.info('OpenChannel | useScrollCallback: Used userFilledMessageListParams', userFilledMessageListParams);
1110
+ }
1111
+ logger.info('OpenChannel | useScrollCallback: Fetching messages', {
1112
+ currentOpenChannel,
1113
+ messageListParams
1114
+ });
1115
+ currentOpenChannel.getMessagesByTimestamp(lastMessageTimestamp || new Date().getTime(), messageListParams).then(messages => {
1116
+ logger.info('OpenChannel | useScrollCallback: Fetching messages succeeded', messages);
1117
+ const hasMore = messages && messages.length > 0;
1118
+ const lastMessageTimestamp = hasMore ? messages[0].createdAt : null;
1119
+ messagesDispatcher({
1120
+ type: GET_PREV_MESSAGES_SUCESS,
1121
+ payload: {
1122
+ currentOpenChannel,
1123
+ messages,
1124
+ hasMore,
1125
+ lastMessageTimestamp
1126
+ }
1127
+ });
1128
+ setTimeout(() => {
1129
+ callback();
1130
+ });
1131
+ }).catch(error => {
1132
+ logger.error('OpenChannel | useScrollCallback: Fetching messages failed', error);
1133
+ messagesDispatcher({
1134
+ type: GET_PREV_MESSAGES_FAIL,
1135
+ payload: {
1136
+ currentOpenChannel,
1137
+ messages: [],
1138
+ hasMore: false,
1139
+ lastMessageTimestamp: 0
1140
+ }
1141
+ });
1142
+ });
1143
+ }
1144
+ }, [currentOpenChannel, lastMessageTimestamp, fetchMore, sdk]);
1145
+ }
1146
+
1147
+ function useCheckScrollBottom(_ref, _ref2) {
1148
+ let {
1149
+ conversationScrollRef
1150
+ } = _ref;
1151
+ let {
1152
+ logger
1153
+ } = _ref2;
1154
+ return React.useCallback(() => {
1155
+ let isBottom = true;
1156
+ if (conversationScrollRef && conversationScrollRef !== null && conversationScrollRef !== void 0 && conversationScrollRef.current) {
1157
+ try {
1158
+ const conversationScroll = conversationScrollRef.current;
1159
+ isBottom = conversationScroll.scrollHeight <= conversationScroll.scrollTop + conversationScroll.clientHeight;
1160
+ } catch (error) {
1161
+ logger.error('OpenChannel | useCheckScrollBottom', error);
1162
+ }
1163
+ }
1164
+ return isBottom;
1165
+ }, [conversationScrollRef]);
1166
+ }
1167
+
1168
+ function useSendMessageCallback(_ref, _ref2) {
1169
+ let {
1170
+ currentOpenChannel,
1171
+ onBeforeSendUserMessage,
1172
+ checkScrollBottom,
1173
+ messageInputRef
1174
+ } = _ref;
1175
+ let {
1176
+ sdk,
1177
+ logger,
1178
+ messagesDispatcher,
1179
+ scrollRef
1180
+ } = _ref2;
1181
+ return React.useCallback(() => {
1182
+ if (sdk) {
1183
+ const text = messageInputRef.current.innerText;
1184
+ const createParamsDefault = txt => {
1185
+ const message = txt;
1186
+ const params = {
1187
+ message: message
1188
+ };
1189
+ return params;
1190
+ };
1191
+ const createCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
1192
+ if (createCustomParams) {
1193
+ logger.info('OpenChannel | useSendMessageCallback: Creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
1194
+ }
1195
+ const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);
1196
+ logger.info('OpenChannel | useSendMessageCallback: Sending message has started', params);
1197
+ const isBottom = checkScrollBottom();
1198
+ let pendingMsg = null;
1199
+ currentOpenChannel.sendUserMessage(params).onPending(pendingMessage => {
1200
+ messagesDispatcher({
1201
+ type: SENDING_MESSAGE_START,
1202
+ payload: {
1203
+ message: pendingMessage,
1204
+ channel: currentOpenChannel
1205
+ }
1206
+ });
1207
+ pendingMsg = pendingMessage;
1208
+ }).onSucceeded(message => {
1209
+ logger.info('OpenChannel | useSendMessageCallback: Sending message succeeded', message);
1210
+ messagesDispatcher({
1211
+ type: SENDING_MESSAGE_SUCCEEDED,
1212
+ payload: message
1213
+ });
1214
+ if (isBottom) {
1215
+ setTimeout(() => {
1216
+ scrollIntoLast(0, scrollRef);
1217
+ });
1218
+ }
1219
+ }).onFailed(error => {
1220
+ logger.warning('OpenChannel | useSendMessageCallback: Sending message failed', error);
1221
+ messagesDispatcher({
1222
+ type: SENDING_MESSAGE_FAILED,
1223
+ payload: pendingMsg
1224
+ });
1225
+ // https://sendbird.com/docs/chat/v3/javascript/guides/error-codes#2-server-error-codes
1226
+ // TODO: Do we need to handle the error cases?
1227
+ // @ts-ignore
1228
+ if ((error === null || error === void 0 ? void 0 : error.code) === 900041) {
1229
+ messagesDispatcher({
1230
+ type: ON_USER_MUTED,
1231
+ payload: {
1232
+ channel: currentOpenChannel,
1233
+ user: sdk.currentUser
1234
+ }
1235
+ });
1236
+ }
1237
+ });
1238
+ }
1239
+ }, [currentOpenChannel, onBeforeSendUserMessage, checkScrollBottom, messageInputRef]);
1240
+ }
1241
+
1242
+ function useFileUploadCallback(_ref, _ref2) {
1243
+ let {
1244
+ currentOpenChannel,
1245
+ checkScrollBottom,
1246
+ imageCompression = {},
1247
+ onBeforeSendFileMessage
1248
+ } = _ref;
1249
+ let {
1250
+ sdk,
1251
+ logger,
1252
+ messagesDispatcher,
1253
+ scrollRef
1254
+ } = _ref2;
1255
+ return React.useCallback(file => {
1256
+ if (sdk) {
1257
+ const {
1258
+ compressionRate,
1259
+ resizingWidth,
1260
+ resizingHeight
1261
+ } = imageCompression;
1262
+ const createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
1263
+ const compressibleFileType = file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg';
1264
+ const compressibleRatio = compressionRate > 0 && compressionRate < 1;
1265
+ // pxToNumber returns null if values are invalid
1266
+ const compressibleDiamensions = pxToNumber(resizingWidth) || pxToNumber(resizingHeight);
1267
+ const canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);
1268
+ const createParamsDefault = file_ => {
1269
+ const params = {};
1270
+ params.file = file_;
1271
+ return params;
1272
+ };
1273
+ if (canCompressImage) {
1274
+ // Using image compression
1275
+ try {
1276
+ const image = document.createElement('img');
1277
+ image.src = URL.createObjectURL(file);
1278
+ image.onload = () => {
1279
+ URL.revokeObjectURL(image.src);
1280
+ const canvas = document.createElement('canvas');
1281
+ const imageWidth = image.naturalWidth || image.width;
1282
+ const imageHeight = image.naturalHeight || image.height;
1283
+ let targetWidth = pxToNumber(resizingWidth) || imageWidth;
1284
+ let targetHeight = pxToNumber(resizingHeight) || imageHeight;
1285
+
1286
+ // In canvas.toBlob(callback, mimeType, qualityArgument)
1287
+ // qualityArgument doesnt work
1288
+ // so in case compressibleDiamensions are not present, we use ratio
1289
+ if (file.type === 'image/png' && !compressibleDiamensions) {
1290
+ targetWidth *= compressionRate;
1291
+ targetHeight *= compressionRate;
1292
+ }
1293
+ canvas.width = targetWidth;
1294
+ canvas.height = targetHeight;
1295
+ const context = canvas.getContext('2d');
1296
+ context.drawImage(image, 0, 0, targetWidth, targetHeight);
1297
+ context.canvas.toBlob(newImageBlob => {
1298
+ const compressedFile = new File([newImageBlob], file.name, {
1299
+ type: file.type
1300
+ });
1301
+ if (createCustomParams) {
1302
+ logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1303
+ }
1304
+ const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(compressedFile) : createParamsDefault(compressedFile);
1305
+ logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);
1306
+ const isBottom = checkScrollBottom();
1307
+ currentOpenChannel.sendFileMessage(params).onPending(pendingMessage => {
1308
+ messagesDispatcher({
1309
+ type: SENDING_MESSAGE_START,
1310
+ payload: {
1311
+ message: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, pendingMessage), {}, {
1312
+ url: URL.createObjectURL(file),
1313
+ // pending thumbnail message seems to be failed
1314
+ requestState: 'pending'
1315
+ }),
1316
+ channel: currentOpenChannel
1317
+ }
1318
+ });
1319
+ }).onSucceeded(message => {
1320
+ logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);
1321
+ messagesDispatcher({
1322
+ type: SENDING_MESSAGE_SUCCEEDED,
1323
+ payload: message
1324
+ });
1325
+ if (isBottom) {
1326
+ setTimeout(() => {
1327
+ scrollIntoLast(0, scrollRef);
1328
+ });
1329
+ }
1330
+ }).onFailed((error, message) => {
1331
+ logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', {
1332
+ message,
1333
+ error
1334
+ });
1335
+ // @ts-ignore
1336
+ message.localUrl = URL.createObjectURL(file);
1337
+ // @ts-ignore
1338
+ message.file = file;
1339
+ messagesDispatcher({
1340
+ type: SENDING_MESSAGE_FAILED,
1341
+ payload: message
1342
+ });
1343
+ });
1344
+ }, file.type, compressionRate);
1345
+ };
1346
+ } catch (error) {
1347
+ logger.warning('OpenChannel | useFileUploadCallback: Sending file message with image compression failed', error);
1348
+ }
1349
+ } else {
1350
+ // Not using image compression
1351
+ if (createCustomParams) {
1352
+ logger.info('OpenChannel | useFileUploadCallback: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1353
+ }
1354
+ const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file) : createParamsDefault(file);
1355
+ logger.info('OpenChannel | useFileUploadCallback: Uploading file message start', params);
1356
+ const isBottom = checkScrollBottom();
1357
+ currentOpenChannel.sendFileMessage(params).onPending(pendingMessage => {
1358
+ messagesDispatcher({
1359
+ type: SENDING_MESSAGE_START,
1360
+ payload: {
1361
+ message: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, pendingMessage), {}, {
1362
+ url: URL.createObjectURL(file),
1363
+ // pending thumbnail message seems to be failed
1364
+ requestState: 'pending'
1365
+ }),
1366
+ channel: currentOpenChannel
1367
+ }
1368
+ });
1369
+ }).onSucceeded(message => {
1370
+ logger.info('OpenChannel | useFileUploadCallback: Sending message succeeded', message);
1371
+ messagesDispatcher({
1372
+ type: SENDING_MESSAGE_SUCCEEDED,
1373
+ payload: message
1374
+ });
1375
+ if (isBottom) {
1376
+ setTimeout(() => {
1377
+ scrollIntoLast(0, scrollRef);
1378
+ });
1379
+ }
1380
+ }).onFailed((error, message) => {
1381
+ logger.error('OpenChannel | useFileUploadCallback: Sending file message failed', {
1382
+ message,
1383
+ error
1384
+ });
1385
+ // @ts-ignore
1386
+ message.localUrl = URL.createObjectURL(file);
1387
+ // @ts-ignore
1388
+ message.file = file;
1389
+ messagesDispatcher({
1390
+ type: SENDING_MESSAGE_FAILED,
1391
+ payload: message
1392
+ });
1393
+ });
1394
+ }
1395
+ }
1396
+ }, [currentOpenChannel, onBeforeSendFileMessage, checkScrollBottom, imageCompression]);
1397
+ }
1398
+
1399
+ function useUpdateMessageCallback(_ref, _ref2) {
1400
+ let {
1401
+ currentOpenChannel,
1402
+ onBeforeSendUserMessage
1403
+ } = _ref;
1404
+ let {
1405
+ logger,
1406
+ messagesDispatcher
1407
+ } = _ref2;
1408
+ return React.useCallback((messageId, text, callback) => {
1409
+ const createParamsDefault = txt => {
1410
+ const params = {
1411
+ message: txt
1412
+ };
1413
+ return params;
1414
+ };
1415
+ if (onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function') {
1416
+ logger.info('OpenChannel | useUpdateMessageCallback: Creating params using onBeforeUpdateUserMessage');
1417
+ }
1418
+ const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(text) : createParamsDefault(text);
1419
+ currentOpenChannel.updateUserMessage(messageId, params).then(message => {
1420
+ if (callback) {
1421
+ callback();
1422
+ }
1423
+ logger.info('OpenChannel | useUpdateMessageCallback: Updating message succeeded', {
1424
+ message,
1425
+ params
1426
+ });
1427
+ messagesDispatcher({
1428
+ type: ON_MESSAGE_UPDATED,
1429
+ payload: {
1430
+ channel: currentOpenChannel,
1431
+ message
1432
+ }
1433
+ });
1434
+ });
1435
+ }, [currentOpenChannel, onBeforeSendUserMessage]);
1436
+ }
1437
+
1438
+ function useDeleteMessageCallback(_ref, _ref2) {
1439
+ let {
1440
+ currentOpenChannel
1441
+ } = _ref;
1442
+ let {
1443
+ logger,
1444
+ messagesDispatcher
1445
+ } = _ref2;
1446
+ return React.useCallback((message, callback) => {
1447
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message', message);
1448
+ const {
1449
+ sendingStatus
1450
+ } = message;
1451
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message requestState', sendingStatus);
1452
+ if (sendingStatus === 'failed' || sendingStatus === 'pending') {
1453
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleted message from local', message);
1454
+ messagesDispatcher({
1455
+ type: ON_MESSAGE_DELETED_BY_REQ_ID,
1456
+ payload: message.reqId
1457
+ });
1458
+ if (callback) {
1459
+ callback();
1460
+ }
1461
+ } else {
1462
+ if (!(message.messageType === 'file' || message.messageType === 'user')) {
1463
+ return;
1464
+ }
1465
+ const messageToDelete = message;
1466
+ currentOpenChannel.deleteMessage(messageToDelete).then(() => {
1467
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message on server', sendingStatus);
1468
+ if (callback) {
1469
+ callback();
1470
+ }
1471
+ logger.info('OpenChannel | useDeleteMessageCallback: Deleting message succeeded', message);
1472
+ messagesDispatcher({
1473
+ type: ON_MESSAGE_DELETED,
1474
+ payload: {
1475
+ channel: currentOpenChannel,
1476
+ messageId: message.messageId
1477
+ }
1478
+ });
1479
+ }).catch(error => {
1480
+ logger.warning('OpenChannel | useDeleteMessageCallback: Deleting message failed', error);
1481
+ });
1482
+ }
1483
+ }, [currentOpenChannel]);
1484
+ }
1485
+
1486
+ function useResendMessageCallback(_ref, _ref2) {
1487
+ let {
1488
+ currentOpenChannel
1489
+ } = _ref;
1490
+ let {
1491
+ logger,
1492
+ messagesDispatcher
1493
+ } = _ref2;
1494
+ return React.useCallback(failedMessage => {
1495
+ logger.info('OpenChannel | useResendMessageCallback: Resending message has started', failedMessage);
1496
+ // eslint-disable-next-line no-param-reassign
1497
+ const {
1498
+ messageType,
1499
+ file
1500
+ } = failedMessage;
1501
+ if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable) {
1502
+ // eslint-disable-next-line no-param-reassign
1503
+ failedMessage.requestState = 'pending';
1504
+ messagesDispatcher({
1505
+ type: RESENDING_MESSAGE_START,
1506
+ payload: {
1507
+ channel: currentOpenChannel,
1508
+ message: failedMessage
1509
+ }
1510
+ });
1511
+
1512
+ // userMessage
1513
+ if (messageType === 'user' && failedMessage.messageType === 'user') {
1514
+ currentOpenChannel.resendUserMessage(failedMessage).then(message => {
1515
+ logger.info('OpenChannel | useResendMessageCallback: Reseding message succeeded', message);
1516
+ messagesDispatcher({
1517
+ type: SENDING_MESSAGE_SUCCEEDED,
1518
+ payload: message
1519
+ });
1520
+ }).catch(error => {
1521
+ logger.warning('OpenChannel | useResendMessageCallback: Resending message failed', error);
1522
+ // eslint-disable-next-line no-param-reassign
1523
+ failedMessage.requestState = 'failed';
1524
+ messagesDispatcher({
1525
+ type: SENDING_MESSAGE_FAILED,
1526
+ payload: failedMessage
1527
+ });
1528
+ });
1529
+ }
1530
+
1531
+ // fileMessage
1532
+ if (messageType === 'file' && failedMessage.messageType === 'file') {
1533
+ currentOpenChannel.resendFileMessage(failedMessage, file).then(message => {
1534
+ logger.info('OpenChannel | useResendMessageCallback: Resending file message succeeded', message);
1535
+ messagesDispatcher({
1536
+ type: SENDING_MESSAGE_SUCCEEDED,
1537
+ payload: message
1538
+ });
1539
+ }).catch(error => {
1540
+ logger.warning('OpenChannel | useResendMessageCallback: Resending file message failed', error);
1541
+ // eslint-disable-next-line no-param-reassign
1542
+ failedMessage.requestState = 'failed';
1543
+ messagesDispatcher({
1544
+ type: SENDING_MESSAGE_FAILED,
1545
+ payload: failedMessage
1546
+ });
1547
+ });
1548
+ }
1549
+ } else {
1550
+ // to alert user on console
1551
+ // eslint-disable-next-line no-console
1552
+ console.error('OpenChannel | useResendMessageCallback: Message is not resendable');
1553
+ logger.warning('OpenChannel | useResendMessageCallback: Message is not resendable', failedMessage);
1554
+ }
1555
+ }, [currentOpenChannel]);
1556
+ }
1557
+
1558
+ const THROTTLE_TIMER = 5000;
1559
+
1560
+ // to trim message list so that we wont keep thousands of messages in memory
1561
+ // We are throttling here; not debouncing
1562
+ // it will be called once very 5 sec if messagesLength, messageLimit changes
1563
+ // we check if messagesLength > messageLimit before dispatching action
1564
+ function useTrimMessageList(_ref, _ref2) {
1565
+ let {
1566
+ messagesLength,
1567
+ messageLimit
1568
+ } = _ref;
1569
+ let {
1570
+ messagesDispatcher,
1571
+ logger
1572
+ } = _ref2;
1573
+ const [inProgress, setInProgress] = React.useState(false);
1574
+ React.useEffect(() => {
1575
+ if (inProgress) {
1576
+ return;
1577
+ }
1578
+ if (typeof messagesLength === 'number' && messagesLength > messageLimit) {
1579
+ logger.info('Trimming MessageList');
1580
+ messagesDispatcher({
1581
+ type: TRIM_MESSAGE_LIST,
1582
+ payload: {
1583
+ messageLimit
1584
+ }
1585
+ });
1586
+ }
1587
+ setInProgress(true);
1588
+ setTimeout(() => {
1589
+ setInProgress(false);
1590
+ }, THROTTLE_TIMER);
1591
+ }, [messagesLength, messageLimit]);
1592
+ }
1593
+
1594
+ const OpenChannelContext = /*#__PURE__*/React__default["default"].createContext(undefined);
1595
+ const OpenChannelProvider = props => {
1596
+ var _globalStore$stores, _globalStore$stores$s, _globalStore$stores2, _globalStore$stores2$, _globalStore$stores3, _globalStore$stores3$;
1597
+ const {
1598
+ channelUrl,
1599
+ children,
1600
+ isMessageGroupingEnabled = true,
1601
+ queries,
1602
+ onBeforeSendUserMessage,
1603
+ messageLimit,
1604
+ onBeforeSendFileMessage,
1605
+ onChatHeaderActionClick,
1606
+ onBackClick
1607
+ } = props;
1608
+
1609
+ // We didn't decide to support fetching participant list
1610
+ const fetchingParticipants = false;
1611
+ const globalStore = useSendbirdStateContext();
1612
+ const sdk = globalStore === null || globalStore === void 0 ? void 0 : (_globalStore$stores = globalStore.stores) === null || _globalStore$stores === void 0 ? void 0 : (_globalStore$stores$s = _globalStore$stores.sdkStore) === null || _globalStore$stores$s === void 0 ? void 0 : _globalStore$stores$s.sdk;
1613
+ const sdkInit = globalStore === null || globalStore === void 0 ? void 0 : (_globalStore$stores2 = globalStore.stores) === null || _globalStore$stores2 === void 0 ? void 0 : (_globalStore$stores2$ = _globalStore$stores2.sdkStore) === null || _globalStore$stores2$ === void 0 ? void 0 : _globalStore$stores2$.initialized;
1614
+ const user = globalStore === null || globalStore === void 0 ? void 0 : (_globalStore$stores3 = globalStore.stores) === null || _globalStore$stores3 === void 0 ? void 0 : (_globalStore$stores3$ = _globalStore$stores3.userStore) === null || _globalStore$stores3$ === void 0 ? void 0 : _globalStore$stores3$.user;
1615
+ const config = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config;
1616
+ const {
1617
+ userId,
1618
+ isOnline,
1619
+ logger,
1620
+ pubSub,
1621
+ imageCompression
1622
+ } = config;
1623
+
1624
+ // hook variables
1625
+ const [messagesStore, messagesDispatcher] = React.useReducer(reducer, initialState);
1626
+ const {
1627
+ allMessages,
1628
+ loading,
1629
+ initialized,
1630
+ currentOpenChannel,
1631
+ isInvalid,
1632
+ hasMore,
1633
+ lastMessageTimestamp,
1634
+ operators,
1635
+ bannedParticipantIds,
1636
+ mutedParticipantIds
1637
+ } = messagesStore;
1638
+ // ref
1639
+ const messageInputRef = React.useRef(null); // useSendMessageCallback
1640
+ const conversationScrollRef = React.useRef(null); // useScrollAfterSendMessageCallback
1641
+
1642
+ // const
1643
+ const userFilledMessageListParams = queries === null || queries === void 0 ? void 0 : queries.messageListParams;
1644
+ const disabled = !initialized || !isOnline || isDisabledBecauseFrozen(currentOpenChannel, userId) || isDisabledBecauseMuted(mutedParticipantIds, userId);
1645
+
1646
+ // useMemo
1647
+ const amIBanned = React.useMemo(() => {
1648
+ return bannedParticipantIds.indexOf(user.userId) >= 0;
1649
+ }, [channelUrl, bannedParticipantIds, user]);
1650
+ const amIMuted = React.useMemo(() => {
1651
+ return mutedParticipantIds.indexOf(user.userId) >= 0;
1652
+ }, [channelUrl, mutedParticipantIds, user]);
1653
+ const amIOperator = React.useMemo(() => {
1654
+ return operators.map(operator => operator.userId).indexOf(user.userId) >= 0;
1655
+ }, [channelUrl, operators, user]);
1656
+
1657
+ // use hooks
1658
+ useSetChannel({
1659
+ channelUrl,
1660
+ sdkInit,
1661
+ fetchingParticipants,
1662
+ userId,
1663
+ currentOpenChannel
1664
+ }, {
1665
+ sdk,
1666
+ logger,
1667
+ messagesDispatcher
1668
+ });
1669
+ const checkScrollBottom = useCheckScrollBottom({
1670
+ conversationScrollRef
1671
+ }, {
1672
+ logger
1673
+ });
1674
+ useHandleChannelEvents({
1675
+ currentOpenChannel,
1676
+ checkScrollBottom
1677
+ }, {
1678
+ sdk,
1679
+ logger,
1680
+ messagesDispatcher,
1681
+ scrollRef: conversationScrollRef
1682
+ });
1683
+ useInitialMessagesFetch({
1684
+ currentOpenChannel,
1685
+ userFilledMessageListParams
1686
+ }, {
1687
+ logger,
1688
+ messagesDispatcher,
1689
+ scrollRef: conversationScrollRef
1690
+ });
1691
+ const fetchMore = shouldFetchMore(allMessages === null || allMessages === void 0 ? void 0 : allMessages.length, messageLimit);
1692
+ // donot fetch more for streaming
1693
+ const onScroll = useScrollCallback({
1694
+ currentOpenChannel,
1695
+ lastMessageTimestamp,
1696
+ fetchMore
1697
+ }, {
1698
+ sdk,
1699
+ logger,
1700
+ messagesDispatcher,
1701
+ hasMore,
1702
+ userFilledMessageListParams
1703
+ });
1704
+ const handleSendMessage = useSendMessageCallback({
1705
+ currentOpenChannel,
1706
+ onBeforeSendUserMessage,
1707
+ checkScrollBottom,
1708
+ messageInputRef
1709
+ }, {
1710
+ sdk,
1711
+ logger,
1712
+ messagesDispatcher,
1713
+ scrollRef: conversationScrollRef
1714
+ });
1715
+ const handleFileUpload = useFileUploadCallback({
1716
+ currentOpenChannel,
1717
+ onBeforeSendFileMessage,
1718
+ checkScrollBottom,
1719
+ imageCompression
1720
+ }, {
1721
+ sdk,
1722
+ logger,
1723
+ messagesDispatcher,
1724
+ scrollRef: conversationScrollRef
1725
+ });
1726
+ const updateMessage = useUpdateMessageCallback({
1727
+ currentOpenChannel,
1728
+ onBeforeSendUserMessage
1729
+ }, {
1730
+ logger,
1731
+ messagesDispatcher
1732
+ });
1733
+ const deleteMessage = useDeleteMessageCallback({
1734
+ currentOpenChannel
1735
+ }, {
1736
+ logger,
1737
+ messagesDispatcher
1738
+ });
1739
+ const resendMessage = useResendMessageCallback({
1740
+ currentOpenChannel
1741
+ }, {
1742
+ logger,
1743
+ messagesDispatcher
1744
+ });
1745
+ useTrimMessageList({
1746
+ messagesLength: allMessages === null || allMessages === void 0 ? void 0 : allMessages.length,
1747
+ messageLimit
1748
+ }, {
1749
+ messagesDispatcher,
1750
+ logger
1751
+ });
1752
+
1753
+ // handle API calls from withSendbird
1754
+ React.useEffect(() => {
1755
+ const subscriber = new Map();
1756
+ if (!pubSub || !pubSub.subscribe) {
1757
+ return;
1758
+ }
1759
+ subscriber.set(topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, msg => {
1760
+ const {
1761
+ channel,
1762
+ message
1763
+ } = msg;
1764
+ scrollIntoLast(0, conversationScrollRef);
1765
+ if (channel && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1766
+ messagesDispatcher({
1767
+ type: SENDING_MESSAGE_SUCCEEDED,
1768
+ payload: message
1769
+ });
1770
+ }
1771
+ }));
1772
+ subscriber.set(topics.PUBSUB_TOPICS.SEND_MESSAGE_START, pubSub.subscribe(topics.PUBSUB_TOPICS.SEND_MESSAGE_START, msg => {
1773
+ const {
1774
+ channel,
1775
+ message
1776
+ } = msg;
1777
+ if (channel && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1778
+ messagesDispatcher({
1779
+ type: SENDING_MESSAGE_START,
1780
+ payload: {
1781
+ message,
1782
+ channel
1783
+ }
1784
+ });
1785
+ }
1786
+ }));
1787
+ subscriber.set(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, msg => {
1788
+ const {
1789
+ channel,
1790
+ message
1791
+ } = msg;
1792
+ scrollIntoLast(0, conversationScrollRef);
1793
+ if (channel && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1794
+ messagesDispatcher({
1795
+ type: SENDING_MESSAGE_SUCCEEDED,
1796
+ payload: {
1797
+ message,
1798
+ channel
1799
+ }
1800
+ });
1801
+ }
1802
+ }));
1803
+ subscriber.set(topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, msg => {
1804
+ const {
1805
+ channel,
1806
+ message,
1807
+ fromSelector
1808
+ } = msg;
1809
+ if (fromSelector && channel && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1810
+ messagesDispatcher({
1811
+ type: ON_MESSAGE_UPDATED,
1812
+ payload: {
1813
+ channel,
1814
+ message
1815
+ }
1816
+ });
1817
+ }
1818
+ }));
1819
+ subscriber.set(topics.PUBSUB_TOPICS.DELETE_MESSAGE, pubSub.subscribe(topics.PUBSUB_TOPICS.DELETE_MESSAGE, msg => {
1820
+ const {
1821
+ channel,
1822
+ messageId
1823
+ } = msg;
1824
+ if (channel && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1825
+ messagesDispatcher({
1826
+ type: ON_MESSAGE_DELETED,
1827
+ payload: messageId
1828
+ });
1829
+ }
1830
+ }));
1831
+ return () => {
1832
+ if (subscriber) {
1833
+ subscriber.forEach(s => {
1834
+ try {
1835
+ s.remove();
1836
+ } catch (_unused) {
1837
+ //
1838
+ }
1839
+ });
1840
+ }
1841
+ };
1842
+ }, [channelUrl, sdkInit]);
1843
+ return /*#__PURE__*/React__default["default"].createElement(OpenChannelContext.Provider, {
1844
+ value: {
1845
+ // props
1846
+ channelUrl,
1847
+ children,
1848
+ isMessageGroupingEnabled,
1849
+ queries,
1850
+ onBeforeSendUserMessage,
1851
+ messageLimit,
1852
+ onBeforeSendFileMessage,
1853
+ onChatHeaderActionClick,
1854
+ onBackClick,
1855
+ // store
1856
+ allMessages,
1857
+ loading,
1858
+ initialized,
1859
+ currentOpenChannel,
1860
+ isInvalid,
1861
+ hasMore,
1862
+ lastMessageTimestamp,
1863
+ operators,
1864
+ bannedParticipantIds,
1865
+ mutedParticipantIds,
1866
+ // derived/utils
1867
+ messageInputRef,
1868
+ conversationScrollRef,
1869
+ disabled,
1870
+ amIBanned,
1871
+ amIMuted,
1872
+ amIOperator,
1873
+ checkScrollBottom,
1874
+ fetchMore,
1875
+ onScroll,
1876
+ handleSendMessage,
1877
+ handleFileUpload,
1878
+ updateMessage,
1879
+ deleteMessage,
1880
+ resendMessage
1881
+ }
1882
+ }, /*#__PURE__*/React__default["default"].createElement(UserProfileContext.UserProfileProvider, {
1883
+ isOpenChannel: true,
1884
+ renderUserProfile: props === null || props === void 0 ? void 0 : props.renderUserProfile,
1885
+ disableUserProfile: props === null || props === void 0 ? void 0 : props.disableUserProfile
1886
+ }, children));
1887
+ };
1888
+ const useOpenChannelContext = () => React__default["default"].useContext(OpenChannelContext);
1889
+
1890
+ exports.OpenChannelProvider = OpenChannelProvider;
1891
+ exports.compareMessagesForGrouping = compareMessagesForGrouping;
1892
+ exports.kFormatter = kFormatter;
1893
+ exports.useOpenChannelContext = useOpenChannelContext;
1894
+ //# sourceMappingURL=OpenChannelProvider-217a8ac2.js.map