@sendbird/uikit-react 3.6.11-beta.2 → 3.7.0-rc.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 (994) hide show
  1. package/App.js +272 -345
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +134 -0
  4. package/Channel/components/ChannelHeader.js +45 -50
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +76 -77
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +53 -58
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +9 -12
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +198 -176
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +137 -130
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +171 -161
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +40 -41
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +156 -136
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +47 -48
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +17 -18
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +17 -17
  27. package/Channel/utils/compareMessagesForGrouping.js +11 -11
  28. package/Channel/utils/compareMessagesForGrouping.js.map +1 -1
  29. package/Channel/utils/getMessagePartsInfo.js +32 -26
  30. package/Channel/utils/getMessagePartsInfo.js.map +1 -1
  31. package/Channel.js +54 -51
  32. package/Channel.js.map +1 -1
  33. package/ChannelList/components/AddChannel.js +32 -30
  34. package/ChannelList/components/AddChannel.js.map +1 -1
  35. package/ChannelList/components/ChannelListHeader.js +22 -31
  36. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  37. package/ChannelList/components/ChannelListUI.js +93 -88
  38. package/ChannelList/components/ChannelListUI.js.map +1 -1
  39. package/ChannelList/components/ChannelPreview.js +79 -75
  40. package/ChannelList/components/ChannelPreview.js.map +1 -1
  41. package/ChannelList/components/ChannelPreviewAction.js +85 -91
  42. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  43. package/ChannelList/context.js +9 -10
  44. package/ChannelList/context.js.map +1 -1
  45. package/ChannelList.js +38 -35
  46. package/ChannelList.js.map +1 -1
  47. package/ChannelListProvider-f520f5b3.js +1051 -0
  48. package/ChannelListProvider-f520f5b3.js.map +1 -0
  49. package/ChannelProvider-7f6fd1f8.js +2080 -0
  50. package/ChannelProvider-7f6fd1f8.js.map +1 -0
  51. package/ChannelSettings/components/ChannelProfile.js +42 -37
  52. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  53. package/ChannelSettings/components/ChannelSettingsUI.js +44 -47
  54. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  55. package/ChannelSettings/components/EditDetailsModal.js +54 -52
  56. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  57. package/ChannelSettings/components/LeaveChannel.js +39 -41
  58. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  59. package/ChannelSettings/components/ModerationPanel.js +552 -509
  60. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  61. package/ChannelSettings/components/UserListItem.js +66 -66
  62. package/ChannelSettings/components/UserListItem.js.map +1 -1
  63. package/ChannelSettings/components/UserPanel.js +29 -26
  64. package/ChannelSettings/components/UserPanel.js.map +1 -1
  65. package/ChannelSettings/context.js +52 -57
  66. package/ChannelSettings/context.js.map +1 -1
  67. package/ChannelSettings.js +20 -19
  68. package/ChannelSettings.js.map +1 -1
  69. package/CreateChannel/components/CreateChannelUI.js +23 -25
  70. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  71. package/CreateChannel/components/InviteUsers.js +106 -102
  72. package/CreateChannel/components/InviteUsers.js.map +1 -1
  73. package/CreateChannel/components/SelectChannelType.js +38 -43
  74. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  75. package/CreateChannel/context.js +4 -4
  76. package/CreateChannel.js +22 -23
  77. package/CreateChannel.js.map +1 -1
  78. package/CreateChannelProvider-c25dd81b.js +48 -0
  79. package/{CreateChannelProvider-a2fad282.js.map → CreateChannelProvider-c25dd81b.js.map} +1 -1
  80. package/CreateOpenChannel/components/CreateOpenChannelUI.js +38 -36
  81. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  82. package/CreateOpenChannel/context.js +29 -34
  83. package/CreateOpenChannel/context.js.map +1 -1
  84. package/CreateOpenChannel.js +20 -21
  85. package/CreateOpenChannel.js.map +1 -1
  86. package/EditUserProfile/components/EditUserProfileUI.js +152 -21
  87. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  88. package/EditUserProfile/context.js +13 -13
  89. package/EditUserProfile/context.js.map +1 -1
  90. package/EditUserProfile.js +19 -19
  91. package/EditUserProfile.js.map +1 -1
  92. package/LocalizationContext-d18a86d8.js +20 -0
  93. package/{LocalizationContext-2463058b.js.map → LocalizationContext-d18a86d8.js.map} +1 -1
  94. package/MediaQueryContext-3eeeec4f.js +85 -0
  95. package/MediaQueryContext-3eeeec4f.js.map +1 -0
  96. package/MemberList-469dae9b.js +422 -0
  97. package/{MemberList-593867cb.js.map → MemberList-469dae9b.js.map} +1 -1
  98. package/Message/context.js +11 -12
  99. package/Message/context.js.map +1 -1
  100. package/Message/hooks/useDirtyGetMentions.js +21 -26
  101. package/Message/hooks/useDirtyGetMentions.js.map +1 -1
  102. package/MessageSearch/components/MessageSearchUI.js +56 -61
  103. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  104. package/MessageSearch/context.js +166 -177
  105. package/MessageSearch/context.js.map +1 -1
  106. package/MessageSearch.js +49 -47
  107. package/MessageSearch.js.map +1 -1
  108. package/OpenChannel/components/FrozenChannelNotification.js +6 -8
  109. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  110. package/OpenChannel/components/OpenChannelHeader.js +22 -27
  111. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  112. package/OpenChannel/components/OpenChannelInput.js +32 -35
  113. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  114. package/OpenChannel/components/OpenChannelMessage.js +170 -171
  115. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  116. package/OpenChannel/components/OpenChannelMessageList.js +70 -64
  117. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  118. package/OpenChannel/components/OpenChannelUI.js +53 -54
  119. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  120. package/OpenChannel/context.js +8 -9
  121. package/OpenChannel/context.js.map +1 -1
  122. package/OpenChannel.js +37 -35
  123. package/OpenChannel.js.map +1 -1
  124. package/OpenChannelList/components/OpenChannelListUI.js +63 -61
  125. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  126. package/OpenChannelList/components/OpenChannelPreview.js +22 -21
  127. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  128. package/OpenChannelList/context.js +3 -3
  129. package/OpenChannelList.js +27 -27
  130. package/OpenChannelList.js.map +1 -1
  131. package/{OpenChannelListProvider-a0a09f0b.js → OpenChannelListProvider-24e735a1.js} +156 -178
  132. package/{OpenChannelListProvider-a0a09f0b.js.map → OpenChannelListProvider-24e735a1.js.map} +1 -1
  133. package/OpenChannelProvider-e9cb0f98.js +1850 -0
  134. package/{OpenChannelProvider-3e4b8c8e.js.map → OpenChannelProvider-e9cb0f98.js.map} +1 -1
  135. package/OpenChannelSettings/components/EditDetailsModal.js +52 -51
  136. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  137. package/OpenChannelSettings/components/OpenChannelProfile.js +30 -29
  138. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  139. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +39 -47
  140. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  141. package/OpenChannelSettings/components/OperatorUI.js +550 -518
  142. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  143. package/OpenChannelSettings/components/ParticipantUI.js +16 -15
  144. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  145. package/OpenChannelSettings/context.js +58 -57
  146. package/OpenChannelSettings/context.js.map +1 -1
  147. package/OpenChannelSettings.js +20 -19
  148. package/OpenChannelSettings.js.map +1 -1
  149. package/README.md +4 -4
  150. package/RemoveMessageModal-f0cd37a5.js +33 -0
  151. package/RemoveMessageModal-f0cd37a5.js.map +1 -0
  152. package/SendbirdProvider.js +726 -690
  153. package/SendbirdProvider.js.map +1 -1
  154. package/Thread/components/ParentMessageInfo.js +194 -181
  155. package/Thread/components/ParentMessageInfo.js.map +1 -1
  156. package/Thread/components/ParentMessageInfoItem.js +86 -79
  157. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  158. package/Thread/components/ThreadHeader.js +22 -22
  159. package/Thread/components/ThreadHeader.js.map +1 -1
  160. package/Thread/components/ThreadList.js +126 -94
  161. package/Thread/components/ThreadList.js.map +1 -1
  162. package/Thread/components/ThreadListItem.js +260 -241
  163. package/Thread/components/ThreadListItem.js.map +1 -1
  164. package/Thread/components/ThreadMessageInput.js +121 -120
  165. package/Thread/components/ThreadMessageInput.js.map +1 -1
  166. package/Thread/components/ThreadUI.js +128 -144
  167. package/Thread/components/ThreadUI.js.map +1 -1
  168. package/Thread/context/types.js +9 -9
  169. package/Thread/context/types.js.map +1 -1
  170. package/Thread/context.js +1678 -19
  171. package/Thread/context.js.map +1 -1
  172. package/Thread.js +76 -73
  173. package/Thread.js.map +1 -1
  174. package/UserProfileContext-26e71f9a.js +34 -0
  175. package/UserProfileContext-26e71f9a.js.map +1 -0
  176. package/VoicePlayer/context.js +3 -3
  177. package/VoicePlayer/useVoicePlayer.js +52 -46
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -1
  179. package/VoiceRecorder/context.js +68 -64
  180. package/VoiceRecorder/context.js.map +1 -1
  181. package/VoiceRecorder/useVoiceRecorder.js +50 -52
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  183. package/{WebAudioUtils-f9386235.js → WebAudioUtils-dbb010a5.js} +38 -38
  184. package/{WebAudioUtils-f9386235.js.map → WebAudioUtils-dbb010a5.js.map} +1 -1
  185. package/{_rollupPluginBabelHelpers-50c9576f.js → _rollupPluginBabelHelpers-07dcbc2b.js} +17 -17
  186. package/_rollupPluginBabelHelpers-07dcbc2b.js.map +1 -0
  187. package/{actionTypes-501b8c11.js → actionTypes-3cd49b5c.js} +2 -2
  188. package/{actionTypes-501b8c11.js.map → actionTypes-3cd49b5c.js.map} +1 -1
  189. package/cjs/App.js +270 -344
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +44 -49
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +79 -80
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +52 -57
  196. package/cjs/Channel/components/FileViewer.js.map +1 -1
  197. package/cjs/Channel/components/FrozenNotification.js +9 -12
  198. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  199. package/cjs/Channel/components/Message.js +197 -175
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +136 -129
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +173 -163
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +41 -42
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +155 -135
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +46 -47
  210. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  211. package/cjs/Channel/components/UnreadCount.js +17 -18
  212. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  213. package/cjs/Channel/context.js +17 -17
  214. package/cjs/Channel/utils/compareMessagesForGrouping.js +11 -11
  215. package/cjs/Channel/utils/compareMessagesForGrouping.js.map +1 -1
  216. package/cjs/Channel/utils/getMessagePartsInfo.js +32 -26
  217. package/cjs/Channel/utils/getMessagePartsInfo.js.map +1 -1
  218. package/cjs/Channel.js +54 -51
  219. package/cjs/Channel.js.map +1 -1
  220. package/cjs/ChannelList/components/AddChannel.js +31 -29
  221. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  222. package/cjs/ChannelList/components/ChannelListHeader.js +21 -30
  223. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  224. package/cjs/ChannelList/components/ChannelListUI.js +96 -91
  225. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  226. package/cjs/ChannelList/components/ChannelPreview.js +78 -74
  227. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  228. package/cjs/ChannelList/components/ChannelPreviewAction.js +84 -91
  229. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  230. package/cjs/ChannelList/context.js +9 -10
  231. package/cjs/ChannelList/context.js.map +1 -1
  232. package/cjs/ChannelList.js +38 -35
  233. package/cjs/ChannelList.js.map +1 -1
  234. package/cjs/ChannelListProvider-a418de2e.js +1060 -0
  235. package/cjs/ChannelListProvider-a418de2e.js.map +1 -0
  236. package/cjs/ChannelProvider-7fa98120.js +2088 -0
  237. package/cjs/ChannelProvider-7fa98120.js.map +1 -0
  238. package/cjs/ChannelSettings/components/ChannelProfile.js +41 -36
  239. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  240. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +44 -47
  241. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  242. package/cjs/ChannelSettings/components/EditDetailsModal.js +54 -52
  243. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  244. package/cjs/ChannelSettings/components/LeaveChannel.js +38 -40
  245. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  246. package/cjs/ChannelSettings/components/ModerationPanel.js +559 -516
  247. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  248. package/cjs/ChannelSettings/components/UserListItem.js +66 -66
  249. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  250. package/cjs/ChannelSettings/components/UserPanel.js +29 -26
  251. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  252. package/cjs/ChannelSettings/context.js +51 -56
  253. package/cjs/ChannelSettings/context.js.map +1 -1
  254. package/cjs/ChannelSettings.js +20 -19
  255. package/cjs/ChannelSettings.js.map +1 -1
  256. package/cjs/CreateChannel/components/CreateChannelUI.js +23 -25
  257. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  258. package/cjs/CreateChannel/components/InviteUsers.js +106 -102
  259. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  260. package/cjs/CreateChannel/components/SelectChannelType.js +37 -42
  261. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  262. package/cjs/CreateChannel/context.js +4 -4
  263. package/cjs/CreateChannel.js +22 -23
  264. package/cjs/CreateChannel.js.map +1 -1
  265. package/cjs/CreateChannelProvider-70c9cb7c.js +55 -0
  266. package/cjs/{CreateChannelProvider-8b8a557c.js.map → CreateChannelProvider-70c9cb7c.js.map} +1 -1
  267. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +39 -37
  268. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  269. package/cjs/CreateOpenChannel/context.js +28 -33
  270. package/cjs/CreateOpenChannel/context.js.map +1 -1
  271. package/cjs/CreateOpenChannel.js +20 -21
  272. package/cjs/CreateOpenChannel.js.map +1 -1
  273. package/cjs/EditUserProfile/components/EditUserProfileUI.js +153 -22
  274. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  275. package/cjs/EditUserProfile/context.js +13 -13
  276. package/cjs/EditUserProfile/context.js.map +1 -1
  277. package/cjs/EditUserProfile.js +21 -21
  278. package/cjs/EditUserProfile.js.map +1 -1
  279. package/cjs/{LocalizationContext-482c1343.js → LocalizationContext-5009012e.js} +9 -9
  280. package/cjs/{LocalizationContext-482c1343.js.map → LocalizationContext-5009012e.js.map} +1 -1
  281. package/cjs/MediaQueryContext-d6fdbe43.js +92 -0
  282. package/cjs/MediaQueryContext-d6fdbe43.js.map +1 -0
  283. package/cjs/MemberList-529a0086.js +428 -0
  284. package/cjs/{MemberList-26b8de48.js.map → MemberList-529a0086.js.map} +1 -1
  285. package/cjs/Message/context.js +11 -12
  286. package/cjs/Message/context.js.map +1 -1
  287. package/cjs/Message/hooks/useDirtyGetMentions.js +21 -26
  288. package/cjs/Message/hooks/useDirtyGetMentions.js.map +1 -1
  289. package/cjs/MessageSearch/components/MessageSearchUI.js +60 -65
  290. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  291. package/cjs/MessageSearch/context.js +165 -176
  292. package/cjs/MessageSearch/context.js.map +1 -1
  293. package/cjs/MessageSearch.js +49 -47
  294. package/cjs/MessageSearch.js.map +1 -1
  295. package/cjs/OpenChannel/components/FrozenChannelNotification.js +6 -8
  296. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  297. package/cjs/OpenChannel/components/OpenChannelHeader.js +22 -27
  298. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  299. package/cjs/OpenChannel/components/OpenChannelInput.js +32 -35
  300. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  301. package/cjs/OpenChannel/components/OpenChannelMessage.js +169 -170
  302. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  303. package/cjs/OpenChannel/components/OpenChannelMessageList.js +69 -63
  304. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  305. package/cjs/OpenChannel/components/OpenChannelUI.js +56 -57
  306. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  307. package/cjs/OpenChannel/context.js +8 -9
  308. package/cjs/OpenChannel/context.js.map +1 -1
  309. package/cjs/OpenChannel.js +37 -35
  310. package/cjs/OpenChannel.js.map +1 -1
  311. package/cjs/OpenChannelList/components/OpenChannelListUI.js +66 -64
  312. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  313. package/cjs/OpenChannelList/components/OpenChannelPreview.js +22 -21
  314. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  315. package/cjs/OpenChannelList/context.js +3 -3
  316. package/cjs/OpenChannelList.js +27 -27
  317. package/cjs/OpenChannelList.js.map +1 -1
  318. package/cjs/OpenChannelListProvider-0b8cd3bf.js +416 -0
  319. package/cjs/{OpenChannelListProvider-2e3ee48d.js.map → OpenChannelListProvider-0b8cd3bf.js.map} +1 -1
  320. package/cjs/OpenChannelProvider-d8cc11fe.js +1859 -0
  321. package/cjs/{OpenChannelProvider-8577ea58.js.map → OpenChannelProvider-d8cc11fe.js.map} +1 -1
  322. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +53 -52
  323. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  324. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +29 -28
  325. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  326. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +40 -48
  327. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  328. package/cjs/OpenChannelSettings/components/OperatorUI.js +557 -525
  329. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  330. package/cjs/OpenChannelSettings/components/ParticipantUI.js +16 -15
  331. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  332. package/cjs/OpenChannelSettings/context.js +57 -56
  333. package/cjs/OpenChannelSettings/context.js.map +1 -1
  334. package/cjs/OpenChannelSettings.js +20 -19
  335. package/cjs/OpenChannelSettings.js.map +1 -1
  336. package/cjs/RemoveMessageModal-f029d40e.js +39 -0
  337. package/cjs/RemoveMessageModal-f029d40e.js.map +1 -0
  338. package/cjs/SendbirdProvider.js +733 -693
  339. package/cjs/SendbirdProvider.js.map +1 -1
  340. package/cjs/Thread/components/ParentMessageInfo.js +193 -180
  341. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  342. package/cjs/Thread/components/ParentMessageInfoItem.js +86 -79
  343. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  344. package/cjs/Thread/components/ThreadHeader.js +22 -22
  345. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  346. package/cjs/Thread/components/ThreadList.js +125 -93
  347. package/cjs/Thread/components/ThreadList.js.map +1 -1
  348. package/cjs/Thread/components/ThreadListItem.js +263 -244
  349. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  350. package/cjs/Thread/components/ThreadMessageInput.js +120 -119
  351. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  352. package/cjs/Thread/components/ThreadUI.js +134 -150
  353. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  354. package/cjs/Thread/context/types.js +9 -13
  355. package/cjs/Thread/context/types.js.map +1 -1
  356. package/cjs/Thread/context.js +1680 -21
  357. package/cjs/Thread/context.js.map +1 -1
  358. package/cjs/Thread.js +76 -73
  359. package/cjs/Thread.js.map +1 -1
  360. package/cjs/UserProfileContext-922a43ec.js +41 -0
  361. package/cjs/UserProfileContext-922a43ec.js.map +1 -0
  362. package/cjs/VoicePlayer/context.js +3 -3
  363. package/cjs/VoicePlayer/useVoicePlayer.js +52 -46
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -1
  365. package/cjs/VoiceRecorder/context.js +67 -63
  366. package/cjs/VoiceRecorder/context.js.map +1 -1
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +49 -51
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  369. package/cjs/{WebAudioUtils-142344fd.js → WebAudioUtils-29717597.js} +38 -38
  370. package/cjs/{WebAudioUtils-142344fd.js.map → WebAudioUtils-29717597.js.map} +1 -1
  371. package/cjs/{_rollupPluginBabelHelpers-83d7e84b.js → _rollupPluginBabelHelpers-94c18dc1.js} +16 -17
  372. package/cjs/_rollupPluginBabelHelpers-94c18dc1.js.map +1 -0
  373. package/cjs/{actionTypes-1d118952.js → actionTypes-7fa02f94.js} +2 -2
  374. package/cjs/{actionTypes-1d118952.js.map → actionTypes-7fa02f94.js.map} +1 -1
  375. package/cjs/{color-d83b77ac.js → color-477ddbd4.js} +12 -13
  376. package/cjs/color-477ddbd4.js.map +1 -0
  377. package/cjs/{compareIds-bef997cb.js → compareIds-de541666.js} +7 -6
  378. package/cjs/compareIds-de541666.js.map +1 -0
  379. package/cjs/{const-1726bde0.js → const-640252c1.js} +4 -4
  380. package/cjs/{const-1726bde0.js.map → const-640252c1.js.map} +1 -1
  381. package/cjs/const-9def5c09.js +19 -0
  382. package/cjs/{const-67ff9e34.js.map → const-9def5c09.js.map} +1 -1
  383. package/cjs/consts-54f5c12d.js +6 -0
  384. package/cjs/consts-54f5c12d.js.map +1 -0
  385. package/cjs/consts-85cd42fa.js +6 -0
  386. package/cjs/{consts-bf228385.js.map → consts-85cd42fa.js.map} +1 -1
  387. package/cjs/{consts-fb07c671.js → consts-95462b21.js} +18 -25
  388. package/cjs/{consts-fb07c671.js.map → consts-95462b21.js.map} +1 -1
  389. package/cjs/consts-a3b7ae99.js +6 -0
  390. package/cjs/{consts-d3b53f23.js.map → consts-a3b7ae99.js.map} +1 -1
  391. package/cjs/{context-bd2878ff.js → context-9814fafe.js} +5 -6
  392. package/cjs/{context-bd2878ff.js.map → context-9814fafe.js.map} +1 -1
  393. package/cjs/dist/index.css +110 -95
  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/hooks/useModal.js +84 -0
  398. package/cjs/hooks/useModal.js.map +1 -0
  399. package/cjs/{index-81baccd0.js → index-0a25b9b2.js} +166 -154
  400. package/cjs/index-0a25b9b2.js.map +1 -0
  401. package/cjs/index-0ec5a831.js +308 -0
  402. package/cjs/{index-1f6b30ea.js.map → index-0ec5a831.js.map} +1 -1
  403. package/cjs/{index-18720f0d.js → index-35820a94.js} +2 -2
  404. package/cjs/{index-18720f0d.js.map → index-35820a94.js.map} +1 -1
  405. package/cjs/index-609b07a2.js +7 -0
  406. package/cjs/index-609b07a2.js.map +1 -0
  407. package/cjs/index-6b0644d7.js +369 -0
  408. package/cjs/index-6b0644d7.js.map +1 -0
  409. package/cjs/{index-857630c5.js → index-7b0c6630.js} +104 -114
  410. package/cjs/index-7b0c6630.js.map +1 -0
  411. package/cjs/index-80a11b6a.js +197 -0
  412. package/cjs/{index-6ab9a40d.js.map → index-80a11b6a.js.map} +1 -1
  413. package/cjs/{index-4eb7e2b5.js → index-826b76d5.js} +2 -4
  414. package/cjs/index-826b76d5.js.map +1 -0
  415. package/cjs/{index-11f9cc0f.js → index-83d2aed9.js} +3 -12
  416. package/cjs/index-83d2aed9.js.map +1 -0
  417. package/cjs/index-aeb36f01.js +173 -0
  418. package/cjs/index-aeb36f01.js.map +1 -0
  419. package/cjs/{index-c9b003b3.js → index-b6d51e74.js} +56 -193
  420. package/cjs/index-b6d51e74.js.map +1 -0
  421. package/cjs/index-b995f638.js +741 -0
  422. package/cjs/index-b995f638.js.map +1 -0
  423. package/cjs/{index-759f2a26.js → index-bdf7089c.js} +72 -80
  424. package/cjs/{index-759f2a26.js.map → index-bdf7089c.js.map} +1 -1
  425. package/cjs/{index-7c374c20.js → index-c22e0cbf.js} +25 -28
  426. package/cjs/{index-7c374c20.js.map → index-c22e0cbf.js.map} +1 -1
  427. package/cjs/index-daf80c58.js +20 -0
  428. package/cjs/index-daf80c58.js.map +1 -0
  429. package/cjs/index-e81e2882.js +59 -0
  430. package/cjs/{index-2ab19f9b.js.map → index-e81e2882.js.map} +1 -1
  431. package/cjs/{index-91b4af96.js → index-ee3bf381.js} +39 -37
  432. package/cjs/{index-91b4af96.js.map → index-ee3bf381.js.map} +1 -1
  433. package/cjs/{index-d04f312e.js → index-fd8a0abb.js} +10 -30
  434. package/cjs/index-fd8a0abb.js.map +1 -0
  435. package/cjs/index.js +66 -63
  436. package/cjs/index.js.map +1 -1
  437. package/cjs/lame.all.js.map +1 -1
  438. package/cjs/package.json +2 -49
  439. package/cjs/{topics-adde627b.js → pubSub/topics.js} +6 -2
  440. package/cjs/pubSub/topics.js.map +1 -0
  441. package/cjs/{resolvedReplyType-85b4bd7c.js → resolvedReplyType-c20ef661.js} +1 -1
  442. package/cjs/{resolvedReplyType-85b4bd7c.js.map → resolvedReplyType-c20ef661.js.map} +1 -1
  443. package/cjs/sendbirdSelectors.js +381 -332
  444. package/cjs/sendbirdSelectors.js.map +1 -1
  445. package/cjs/stringFormatterUtils-e324636c.js +16 -0
  446. package/cjs/{stringFormatterUtils-8d6592ca.js.map → stringFormatterUtils-e324636c.js.map} +1 -1
  447. package/cjs/{stringSet-d00535a5.js → stringSet-98b52c49.js} +9 -2
  448. package/cjs/stringSet-98b52c49.js.map +1 -0
  449. package/cjs/{tokenize-9296fc47.js → tokenize-91bdbeb0.js} +56 -61
  450. package/cjs/{tokenize-9296fc47.js.map → tokenize-91bdbeb0.js.map} +1 -1
  451. package/cjs/tslib.es6-2f2b0bca.js +102 -0
  452. package/cjs/tslib.es6-2f2b0bca.js.map +1 -0
  453. package/cjs/types-31ed2276.js +11 -0
  454. package/cjs/types-31ed2276.js.map +1 -0
  455. package/cjs/types-66554668.js +15 -0
  456. package/cjs/types-66554668.js.map +1 -0
  457. package/cjs/ui/Accordion.js +18 -19
  458. package/cjs/ui/Accordion.js.map +1 -1
  459. package/cjs/ui/AccordionGroup.js +11 -10
  460. package/cjs/ui/AccordionGroup.js.map +1 -1
  461. package/cjs/ui/AdminMessage.js +10 -10
  462. package/cjs/ui/AdminMessage.js.map +1 -1
  463. package/cjs/ui/Avatar.js +59 -55
  464. package/cjs/ui/Avatar.js.map +1 -1
  465. package/cjs/ui/Badge.js +15 -16
  466. package/cjs/ui/Badge.js.map +1 -1
  467. package/cjs/ui/BottomSheet.js +15 -17
  468. package/cjs/ui/BottomSheet.js.map +1 -1
  469. package/cjs/ui/Button.js +31 -33
  470. package/cjs/ui/Button.js.map +1 -1
  471. package/cjs/ui/ChannelAvatar.js +41 -38
  472. package/cjs/ui/ChannelAvatar.js.map +1 -1
  473. package/cjs/ui/Checkbox.js +10 -9
  474. package/cjs/ui/Checkbox.js.map +1 -1
  475. package/cjs/ui/ConnectionStatus.js +5 -7
  476. package/cjs/ui/ConnectionStatus.js.map +1 -1
  477. package/cjs/ui/ContextMenu.js +143 -144
  478. package/cjs/ui/ContextMenu.js.map +1 -1
  479. package/cjs/ui/DateSeparator.js +14 -12
  480. package/cjs/ui/DateSeparator.js.map +1 -1
  481. package/cjs/ui/EmojiReactions.js +206 -176
  482. package/cjs/ui/EmojiReactions.js.map +1 -1
  483. package/cjs/ui/FileMessageItemBody.js +23 -23
  484. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  485. package/cjs/ui/FileViewer.js +14 -12
  486. package/cjs/ui/FileViewer.js.map +1 -1
  487. package/cjs/ui/Icon.js +16 -16
  488. package/cjs/ui/Icon.js.map +1 -1
  489. package/cjs/ui/IconButton.js +28 -20
  490. package/cjs/ui/IconButton.js.map +1 -1
  491. package/cjs/ui/ImageRenderer.js +84 -64
  492. package/cjs/ui/ImageRenderer.js.map +1 -1
  493. package/cjs/ui/Input.js +14 -16
  494. package/cjs/ui/Input.js.map +1 -1
  495. package/cjs/ui/Label.js +2 -2
  496. package/cjs/ui/LinkLabel.js +2 -2
  497. package/cjs/ui/LinkLabel.js.map +1 -1
  498. package/cjs/ui/Loader.js +12 -10
  499. package/cjs/ui/Loader.js.map +1 -1
  500. package/cjs/ui/MentionLabel.js +63 -59
  501. package/cjs/ui/MentionLabel.js.map +1 -1
  502. package/cjs/ui/MentionUserLabel.js +10 -10
  503. package/cjs/ui/MentionUserLabel.js.map +1 -1
  504. package/cjs/ui/MessageContent.js +187 -171
  505. package/cjs/ui/MessageContent.js.map +1 -1
  506. package/cjs/ui/MessageInput/hooks/usePaste.js +5 -4
  507. package/cjs/ui/MessageInput/hooks/usePaste.js.map +1 -1
  508. package/cjs/ui/MessageInput.js +55 -57
  509. package/cjs/ui/MessageInput.js.map +1 -1
  510. package/cjs/ui/MessageItemMenu.js +93 -72
  511. package/cjs/ui/MessageItemMenu.js.map +1 -1
  512. package/cjs/ui/MessageItemReactionMenu.js +64 -56
  513. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  514. package/cjs/ui/MessageSearchFileItem.js +40 -49
  515. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  516. package/cjs/ui/MessageSearchItem.js +32 -40
  517. package/cjs/ui/MessageSearchItem.js.map +1 -1
  518. package/cjs/ui/MessageStatus.js +11 -11
  519. package/cjs/ui/Modal.js +57 -59
  520. package/cjs/ui/Modal.js.map +1 -1
  521. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  522. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  523. package/cjs/ui/OGMessageItemBody.js +47 -47
  524. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  525. package/cjs/ui/OpenChannelAdminMessage.js +7 -8
  526. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  527. package/cjs/ui/OpenChannelAvatar.js +17 -18
  528. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  529. package/cjs/ui/OpenchannelConversationHeader.js +13 -17
  530. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  531. package/cjs/ui/OpenchannelFileMessage.js +147 -139
  532. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  533. package/cjs/ui/OpenchannelOGMessage.js +185 -178
  534. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  535. package/cjs/ui/OpenchannelThumbnailMessage.js +220 -213
  536. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  537. package/cjs/ui/OpenchannelUserMessage.js +172 -164
  538. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  539. package/cjs/ui/PlaceHolder.js +108 -10
  540. package/cjs/ui/PlaceHolder.js.map +1 -1
  541. package/cjs/ui/PlaybackTime.js +16 -15
  542. package/cjs/ui/PlaybackTime.js.map +1 -1
  543. package/cjs/ui/ProgressBar.js +15 -13
  544. package/cjs/ui/ProgressBar.js.map +1 -1
  545. package/cjs/ui/QuoteMessage.js +41 -44
  546. package/cjs/ui/QuoteMessage.js.map +1 -1
  547. package/cjs/ui/QuoteMessageInput.js +45 -31
  548. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  549. package/cjs/ui/ReactionBadge.js +17 -13
  550. package/cjs/ui/ReactionBadge.js.map +1 -1
  551. package/cjs/ui/ReactionButton.js +19 -19
  552. package/cjs/ui/ReactionButton.js.map +1 -1
  553. package/cjs/ui/SortByRow.js +14 -14
  554. package/cjs/ui/SortByRow.js.map +1 -1
  555. package/cjs/ui/TextButton.js +21 -13
  556. package/cjs/ui/TextButton.js.map +1 -1
  557. package/cjs/ui/TextMessageItemBody.js +33 -31
  558. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  559. package/cjs/ui/ThreadReplies.js +21 -25
  560. package/cjs/ui/ThreadReplies.js.map +1 -1
  561. package/cjs/ui/ThumbnailMessageItemBody.js +37 -28
  562. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  563. package/cjs/ui/Toggle.js +85 -77
  564. package/cjs/ui/Toggle.js.map +1 -1
  565. package/cjs/ui/Tooltip.js +9 -8
  566. package/cjs/ui/Tooltip.js.map +1 -1
  567. package/cjs/ui/TooltipWrapper.js +18 -17
  568. package/cjs/ui/TooltipWrapper.js.map +1 -1
  569. package/cjs/ui/UnknownMessageItemBody.js +19 -20
  570. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  571. package/cjs/ui/UserListItem.js +80 -75
  572. package/cjs/ui/UserListItem.js.map +1 -1
  573. package/cjs/ui/UserProfile.js +28 -33
  574. package/cjs/ui/UserProfile.js.map +1 -1
  575. package/cjs/ui/VoiceMessageItemBody.js +49 -43
  576. package/cjs/ui/VoiceMessageItemBody.js.map +1 -1
  577. package/cjs/ui/VoiceMessgeInput.js +8 -7
  578. package/cjs/ui/VoiceMessgeInput.js.map +1 -1
  579. package/cjs/ui/Word.js +29 -27
  580. package/cjs/ui/Word.js.map +1 -1
  581. package/cjs/{useHandleUploadFiles-b2fc56e5.js → useHandleUploadFiles-fbe6ad64.js} +114 -127
  582. package/cjs/useHandleUploadFiles-fbe6ad64.js.map +1 -0
  583. package/cjs/useLongPress-c1da8ba7.js +105 -0
  584. package/cjs/useLongPress-c1da8ba7.js.map +1 -0
  585. package/cjs/useSendMultipleFilesMessage-87e0ffa3.js +316 -0
  586. package/cjs/useSendMultipleFilesMessage-87e0ffa3.js.map +1 -0
  587. package/cjs/useSendbirdStateContext.js +8 -3
  588. package/cjs/useSendbirdStateContext.js.map +1 -1
  589. package/cjs/useStatefulFileInfoList-aa70b6b9.js +228 -0
  590. package/cjs/useStatefulFileInfoList-aa70b6b9.js.map +1 -0
  591. package/cjs/utils/message/getOutgoingMessageState.js +14 -16
  592. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  593. package/cjs/utils/message/isVoiceMessage.js +4 -4
  594. package/cjs/utils/message/isVoiceMessage.js.map +1 -1
  595. package/cjs/utils-0fac6ad1.js +27 -0
  596. package/cjs/utils-0fac6ad1.js.map +1 -0
  597. package/cjs/utils-180c6bc8.js +10 -0
  598. package/cjs/utils-180c6bc8.js.map +1 -0
  599. package/cjs/{utils-991911af.js → utils-46483130.js} +3 -3
  600. package/cjs/{utils-991911af.js.map → utils-46483130.js.map} +1 -1
  601. package/cjs/utils-55fc6797.js +170 -0
  602. package/cjs/utils-55fc6797.js.map +1 -0
  603. package/cjs/utils-851724e0.js +62 -0
  604. package/cjs/utils-851724e0.js.map +1 -0
  605. package/cjs/utils-e313131f.js +35 -0
  606. package/cjs/utils-e313131f.js.map +1 -0
  607. package/cjs/uuid-c74bbbb6.js +17 -0
  608. package/cjs/{uuid-b2806cf5.js.map → uuid-c74bbbb6.js.map} +1 -1
  609. package/cjs/withSendbird.js +16 -22
  610. package/cjs/withSendbird.js.map +1 -1
  611. package/{color-b7f211a8.js → color-1383d4ab.js} +5 -5
  612. package/{color-b7f211a8.js.map → color-1383d4ab.js.map} +1 -1
  613. package/compareIds-b56b02f1.js +16 -0
  614. package/compareIds-b56b02f1.js.map +1 -0
  615. package/{const-74ec9eb4.js → const-4bc3721f.js} +4 -4
  616. package/{const-74ec9eb4.js.map → const-4bc3721f.js.map} +1 -1
  617. package/const-e3326913.js +13 -0
  618. package/{const-711048c3.js.map → const-e3326913.js.map} +1 -1
  619. package/consts-7f4d53a3.js +4 -0
  620. package/consts-7f4d53a3.js.map +1 -0
  621. package/consts-833420ed.js +4 -0
  622. package/{consts-6ee24012.js.map → consts-833420ed.js.map} +1 -1
  623. package/consts-aa64aca8.js +30 -0
  624. package/{consts-691a3935.js.map → consts-aa64aca8.js.map} +1 -1
  625. package/consts-f0ba9b80.js +4 -0
  626. package/consts-f0ba9b80.js.map +1 -0
  627. package/context-ae47ac54.js +12 -0
  628. package/{context-b4c70964.js.map → context-ae47ac54.js.map} +1 -1
  629. package/dist/index.css +110 -95
  630. package/dist/index.css.map +1 -1
  631. package/handlers/OpenChannelHandler.js.map +1 -1
  632. package/handlers/SessionHandler.js.map +1 -1
  633. package/hooks/useModal.js +73 -0
  634. package/hooks/useModal.js.map +1 -0
  635. package/{index-aa520474.js → index-12103973.js} +2 -2
  636. package/{index-aa520474.js.map → index-12103973.js.map} +1 -1
  637. package/index-124a5766.js +298 -0
  638. package/{index-e15f6b6a.js.map → index-124a5766.js.map} +1 -1
  639. package/{index-13401b87.js → index-1432c287.js} +2 -4
  640. package/index-1432c287.js.map +1 -0
  641. package/{index-b22c4150.js → index-1969ccd8.js} +25 -28
  642. package/{index-b22c4150.js.map → index-1969ccd8.js.map} +1 -1
  643. package/index-3d508585.js +53 -0
  644. package/{index-ae7ef8cf.js.map → index-3d508585.js.map} +1 -1
  645. package/{index-8a01c364.js → index-40447645.js} +73 -81
  646. package/{index-8a01c364.js.map → index-40447645.js.map} +1 -1
  647. package/{index-c421b228.js → index-7a1085b6.js} +99 -109
  648. package/index-7a1085b6.js.map +1 -0
  649. package/index-89b3b8ba.js +362 -0
  650. package/index-89b3b8ba.js.map +1 -0
  651. package/index-8c72f0bd.js +182 -0
  652. package/{index-98138798.js.map → index-8c72f0bd.js.map} +1 -1
  653. package/index-942c5fa2.js +161 -0
  654. package/index-942c5fa2.js.map +1 -0
  655. package/index-c6095960.js +4 -0
  656. package/index-c6095960.js.map +1 -0
  657. package/index-c7ed4aef.js +13 -0
  658. package/index-c7ed4aef.js.map +1 -0
  659. package/{index-daa3ae67.js → index-c81fd6ec.js} +56 -193
  660. package/index-c81fd6ec.js.map +1 -0
  661. package/{index-7700a436.js → index-d3f61405.js} +10 -30
  662. package/index-d3f61405.js.map +1 -0
  663. package/{index-5cb32ab5.js → index-dc1827ea.js} +3 -12
  664. package/index-dc1827ea.js.map +1 -0
  665. package/{index-3530f4f6.js → index-ec0c048b.js} +39 -37
  666. package/{index-3530f4f6.js.map → index-ec0c048b.js.map} +1 -1
  667. package/{index-b25ffa7e.js → index-eec0ce47.js} +166 -154
  668. package/index-eec0ce47.js.map +1 -0
  669. package/index-fc1642cb.js +692 -0
  670. package/index-fc1642cb.js.map +1 -0
  671. package/index.d.ts +143 -79
  672. package/index.js +66 -63
  673. package/index.js.map +1 -1
  674. package/lame.all.js.map +1 -1
  675. package/package.json +3 -3
  676. package/{topics-5659403d.js → pubSub/topics.js} +4 -3
  677. package/pubSub/topics.js.map +1 -0
  678. package/{resolvedReplyType-1a128514.js → resolvedReplyType-0532593c.js} +1 -1
  679. package/{resolvedReplyType-1a128514.js.map → resolvedReplyType-0532593c.js.map} +1 -1
  680. package/sendbirdSelectors.js +381 -332
  681. package/sendbirdSelectors.js.map +1 -1
  682. package/stringFormatterUtils-444f6f4c.js +14 -0
  683. package/{stringFormatterUtils-dbad592d.js.map → stringFormatterUtils-444f6f4c.js.map} +1 -1
  684. package/{stringSet-2814bf17.js → stringSet-1106c8ec.js} +9 -2
  685. package/stringSet-1106c8ec.js.map +1 -0
  686. package/{tokenize-4b153552.js → tokenize-d17bf862.js} +56 -61
  687. package/{tokenize-4b153552.js.map → tokenize-d17bf862.js.map} +1 -1
  688. package/tslib.es6-0c779aab.js +97 -0
  689. package/tslib.es6-0c779aab.js.map +1 -0
  690. package/types-4ffc52f6.js +15 -0
  691. package/types-4ffc52f6.js.map +1 -0
  692. package/types-50e412d8.js +9 -0
  693. package/types-50e412d8.js.map +1 -0
  694. package/ui/Accordion.js +18 -19
  695. package/ui/Accordion.js.map +1 -1
  696. package/ui/AccordionGroup.js +11 -10
  697. package/ui/AccordionGroup.js.map +1 -1
  698. package/ui/AdminMessage.js +10 -10
  699. package/ui/AdminMessage.js.map +1 -1
  700. package/ui/Avatar.js +59 -55
  701. package/ui/Avatar.js.map +1 -1
  702. package/ui/Badge.js +15 -16
  703. package/ui/Badge.js.map +1 -1
  704. package/ui/BottomSheet.js +15 -17
  705. package/ui/BottomSheet.js.map +1 -1
  706. package/ui/Button.js +19 -26
  707. package/ui/Button.js.map +1 -1
  708. package/ui/ChannelAvatar.js +41 -38
  709. package/ui/ChannelAvatar.js.map +1 -1
  710. package/ui/Checkbox.js +10 -9
  711. package/ui/Checkbox.js.map +1 -1
  712. package/ui/ConnectionStatus.js +5 -7
  713. package/ui/ConnectionStatus.js.map +1 -1
  714. package/ui/ContextMenu.js +143 -144
  715. package/ui/ContextMenu.js.map +1 -1
  716. package/ui/DateSeparator.js +14 -12
  717. package/ui/DateSeparator.js.map +1 -1
  718. package/ui/EmojiReactions.js +207 -177
  719. package/ui/EmojiReactions.js.map +1 -1
  720. package/ui/FileMessageItemBody.js +23 -23
  721. package/ui/FileMessageItemBody.js.map +1 -1
  722. package/ui/FileViewer.js +14 -12
  723. package/ui/FileViewer.js.map +1 -1
  724. package/ui/Icon.js +2 -2
  725. package/ui/Icon.js.map +1 -1
  726. package/ui/IconButton.js +28 -20
  727. package/ui/IconButton.js.map +1 -1
  728. package/ui/ImageRenderer.js +84 -65
  729. package/ui/ImageRenderer.js.map +1 -1
  730. package/ui/Input.js +14 -16
  731. package/ui/Input.js.map +1 -1
  732. package/ui/Label.js +2 -2
  733. package/ui/LinkLabel.js +2 -2
  734. package/ui/LinkLabel.js.map +1 -1
  735. package/ui/Loader.js +12 -10
  736. package/ui/Loader.js.map +1 -1
  737. package/ui/MentionLabel.js +64 -60
  738. package/ui/MentionLabel.js.map +1 -1
  739. package/ui/MentionUserLabel.js +10 -10
  740. package/ui/MentionUserLabel.js.map +1 -1
  741. package/ui/MessageContent.js +186 -170
  742. package/ui/MessageContent.js.map +1 -1
  743. package/ui/MessageInput/hooks/usePaste.js +5 -4
  744. package/ui/MessageInput/hooks/usePaste.js.map +1 -1
  745. package/ui/MessageInput.js +48 -50
  746. package/ui/MessageInput.js.map +1 -1
  747. package/ui/MessageItemMenu.js +93 -72
  748. package/ui/MessageItemMenu.js.map +1 -1
  749. package/ui/MessageItemReactionMenu.js +64 -56
  750. package/ui/MessageItemReactionMenu.js.map +1 -1
  751. package/ui/MessageSearchFileItem.js +40 -49
  752. package/ui/MessageSearchFileItem.js.map +1 -1
  753. package/ui/MessageSearchItem.js +32 -40
  754. package/ui/MessageSearchItem.js.map +1 -1
  755. package/ui/MessageStatus.js +11 -11
  756. package/ui/Modal.js +57 -59
  757. package/ui/Modal.js.map +1 -1
  758. package/ui/MutedAvatarOverlay.js +10 -10
  759. package/ui/MutedAvatarOverlay.js.map +1 -1
  760. package/ui/OGMessageItemBody.js +47 -47
  761. package/ui/OGMessageItemBody.js.map +1 -1
  762. package/ui/OpenChannelAdminMessage.js +7 -8
  763. package/ui/OpenChannelAdminMessage.js.map +1 -1
  764. package/ui/OpenChannelAvatar.js +17 -18
  765. package/ui/OpenChannelAvatar.js.map +1 -1
  766. package/ui/OpenchannelConversationHeader.js +13 -17
  767. package/ui/OpenchannelConversationHeader.js.map +1 -1
  768. package/ui/OpenchannelFileMessage.js +147 -139
  769. package/ui/OpenchannelFileMessage.js.map +1 -1
  770. package/ui/OpenchannelOGMessage.js +185 -178
  771. package/ui/OpenchannelOGMessage.js.map +1 -1
  772. package/ui/OpenchannelThumbnailMessage.js +220 -213
  773. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  774. package/ui/OpenchannelUserMessage.js +172 -164
  775. package/ui/OpenchannelUserMessage.js.map +1 -1
  776. package/ui/PlaceHolder.js +106 -8
  777. package/ui/PlaceHolder.js.map +1 -1
  778. package/ui/PlaybackTime.js +16 -15
  779. package/ui/PlaybackTime.js.map +1 -1
  780. package/ui/ProgressBar.js +15 -13
  781. package/ui/ProgressBar.js.map +1 -1
  782. package/ui/QuoteMessage.js +41 -44
  783. package/ui/QuoteMessage.js.map +1 -1
  784. package/ui/QuoteMessageInput.js +45 -31
  785. package/ui/QuoteMessageInput.js.map +1 -1
  786. package/ui/ReactionBadge.js +17 -13
  787. package/ui/ReactionBadge.js.map +1 -1
  788. package/ui/ReactionButton.js +19 -19
  789. package/ui/ReactionButton.js.map +1 -1
  790. package/ui/SortByRow.js +14 -14
  791. package/ui/SortByRow.js.map +1 -1
  792. package/ui/TextButton.js +21 -13
  793. package/ui/TextButton.js.map +1 -1
  794. package/ui/TextMessageItemBody.js +33 -31
  795. package/ui/TextMessageItemBody.js.map +1 -1
  796. package/ui/ThreadReplies.js +21 -25
  797. package/ui/ThreadReplies.js.map +1 -1
  798. package/ui/ThumbnailMessageItemBody.js +37 -28
  799. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  800. package/ui/Toggle.js +86 -78
  801. package/ui/Toggle.js.map +1 -1
  802. package/ui/Tooltip.js +9 -8
  803. package/ui/Tooltip.js.map +1 -1
  804. package/ui/TooltipWrapper.js +18 -17
  805. package/ui/TooltipWrapper.js.map +1 -1
  806. package/ui/UnknownMessageItemBody.js +19 -20
  807. package/ui/UnknownMessageItemBody.js.map +1 -1
  808. package/ui/UserListItem.js +80 -75
  809. package/ui/UserListItem.js.map +1 -1
  810. package/ui/UserProfile.js +29 -34
  811. package/ui/UserProfile.js.map +1 -1
  812. package/ui/VoiceMessageItemBody.js +49 -43
  813. package/ui/VoiceMessageItemBody.js.map +1 -1
  814. package/ui/VoiceMessgeInput.js +8 -7
  815. package/ui/VoiceMessgeInput.js.map +1 -1
  816. package/ui/Word.js +29 -27
  817. package/ui/Word.js.map +1 -1
  818. package/{useHandleUploadFiles-406a6c9c.js → useHandleUploadFiles-33aff88e.js} +111 -124
  819. package/useHandleUploadFiles-33aff88e.js.map +1 -0
  820. package/useLongPress-322bb6a3.js +103 -0
  821. package/useLongPress-322bb6a3.js.map +1 -0
  822. package/useSendMultipleFilesMessage-4489a0f6.js +283 -0
  823. package/useSendMultipleFilesMessage-4489a0f6.js.map +1 -0
  824. package/useSendbirdStateContext.js +5 -3
  825. package/useSendbirdStateContext.js.map +1 -1
  826. package/useStatefulFileInfoList-dd95f949.js +219 -0
  827. package/useStatefulFileInfoList-dd95f949.js.map +1 -0
  828. package/utils/message/getOutgoingMessageState.js +8 -9
  829. package/utils/message/getOutgoingMessageState.js.map +1 -1
  830. package/utils/message/isVoiceMessage.js +4 -4
  831. package/utils/message/isVoiceMessage.js.map +1 -1
  832. package/{utils-7cc92ac2.js → utils-158c1683.js} +3 -3
  833. package/{utils-7cc92ac2.js.map → utils-158c1683.js.map} +1 -1
  834. package/utils-3660243c.js +25 -0
  835. package/utils-3660243c.js.map +1 -0
  836. package/utils-40040f8e.js +157 -0
  837. package/utils-40040f8e.js.map +1 -0
  838. package/utils-48a3ef27.js +31 -0
  839. package/utils-48a3ef27.js.map +1 -0
  840. package/utils-74c161a0.js +7 -0
  841. package/utils-74c161a0.js.map +1 -0
  842. package/utils-e98a7f8c.js +57 -0
  843. package/utils-e98a7f8c.js.map +1 -0
  844. package/uuid-3c77ef7b.js +15 -0
  845. package/{uuid-16373bba.js.map → uuid-3c77ef7b.js.map} +1 -1
  846. package/withSendbird.js +16 -22
  847. package/withSendbird.js.map +1 -1
  848. package/ChannelListProvider-1188e373.js +0 -1028
  849. package/ChannelListProvider-1188e373.js.map +0 -1
  850. package/ChannelProvider-9de00431.js +0 -1933
  851. package/ChannelProvider-9de00431.js.map +0 -1
  852. package/CreateChannelProvider-a2fad282.js +0 -44
  853. package/LocalizationContext-2463058b.js +0 -20
  854. package/MediaQueryContext-e3429d12.js +0 -87
  855. package/MediaQueryContext-e3429d12.js.map +0 -1
  856. package/MemberList-593867cb.js +0 -404
  857. package/OpenChannelProvider-3e4b8c8e.js +0 -1890
  858. package/RemoveMessageModal-9162aebe.js +0 -38
  859. package/RemoveMessageModal-9162aebe.js.map +0 -1
  860. package/ThreadProvider-9a3b145f.js +0 -1778
  861. package/ThreadProvider-9a3b145f.js.map +0 -1
  862. package/UserProfileContext-4ae968eb.js +0 -41
  863. package/UserProfileContext-4ae968eb.js.map +0 -1
  864. package/_rollupPluginBabelHelpers-50c9576f.js.map +0 -1
  865. package/cjs/ChannelListProvider-e55e6242.js +0 -1037
  866. package/cjs/ChannelListProvider-e55e6242.js.map +0 -1
  867. package/cjs/ChannelProvider-6fa73019.js +0 -1941
  868. package/cjs/ChannelProvider-6fa73019.js.map +0 -1
  869. package/cjs/CreateChannelProvider-8b8a557c.js +0 -52
  870. package/cjs/MediaQueryContext-73aac8cf.js +0 -94
  871. package/cjs/MediaQueryContext-73aac8cf.js.map +0 -1
  872. package/cjs/MemberList-26b8de48.js +0 -410
  873. package/cjs/OpenChannelListProvider-2e3ee48d.js +0 -439
  874. package/cjs/OpenChannelProvider-8577ea58.js +0 -1899
  875. package/cjs/RemoveMessageModal-dfeeb36a.js +0 -44
  876. package/cjs/RemoveMessageModal-dfeeb36a.js.map +0 -1
  877. package/cjs/ThreadProvider-8b0cf491.js +0 -1787
  878. package/cjs/ThreadProvider-8b0cf491.js.map +0 -1
  879. package/cjs/UserProfileContext-fa8d0383.js +0 -49
  880. package/cjs/UserProfileContext-fa8d0383.js.map +0 -1
  881. package/cjs/_rollupPluginBabelHelpers-83d7e84b.js.map +0 -1
  882. package/cjs/color-d83b77ac.js.map +0 -1
  883. package/cjs/compareIds-bef997cb.js.map +0 -1
  884. package/cjs/const-67ff9e34.js +0 -20
  885. package/cjs/consts-b018b1ed.js +0 -6
  886. package/cjs/consts-b018b1ed.js.map +0 -1
  887. package/cjs/consts-bf228385.js +0 -6
  888. package/cjs/consts-d3b53f23.js +0 -6
  889. package/cjs/index-11f9cc0f.js.map +0 -1
  890. package/cjs/index-1a9fdbb4.js +0 -368
  891. package/cjs/index-1a9fdbb4.js.map +0 -1
  892. package/cjs/index-1f6b30ea.js +0 -330
  893. package/cjs/index-2ab19f9b.js +0 -57
  894. package/cjs/index-4b5a006d.js +0 -139
  895. package/cjs/index-4b5a006d.js.map +0 -1
  896. package/cjs/index-4eb7e2b5.js.map +0 -1
  897. package/cjs/index-56a25735.js +0 -171
  898. package/cjs/index-56a25735.js.map +0 -1
  899. package/cjs/index-6ab9a40d.js +0 -202
  900. package/cjs/index-7f41c4b6.js +0 -118
  901. package/cjs/index-7f41c4b6.js.map +0 -1
  902. package/cjs/index-81baccd0.js.map +0 -1
  903. package/cjs/index-857630c5.js.map +0 -1
  904. package/cjs/index-8ec12d1d.js +0 -164
  905. package/cjs/index-8ec12d1d.js.map +0 -1
  906. package/cjs/index-c9b003b3.js.map +0 -1
  907. package/cjs/index-cbcacbee.js +0 -9
  908. package/cjs/index-cbcacbee.js.map +0 -1
  909. package/cjs/index-d04f312e.js.map +0 -1
  910. package/cjs/index-e9ac5ae1.js +0 -58
  911. package/cjs/index-e9ac5ae1.js.map +0 -1
  912. package/cjs/index-fbe9cc73.js +0 -647
  913. package/cjs/index-fbe9cc73.js.map +0 -1
  914. package/cjs/index.module-a24e9cd7.js +0 -6
  915. package/cjs/index.module-a24e9cd7.js.map +0 -1
  916. package/cjs/stringFormatterUtils-8d6592ca.js +0 -16
  917. package/cjs/stringSet-d00535a5.js.map +0 -1
  918. package/cjs/topics-adde627b.js.map +0 -1
  919. package/cjs/types-0b5148cb.js +0 -17
  920. package/cjs/types-0b5148cb.js.map +0 -1
  921. package/cjs/useHandleUploadFiles-b2fc56e5.js.map +0 -1
  922. package/cjs/useLongPress-1c0f4696.js +0 -87
  923. package/cjs/useLongPress-1c0f4696.js.map +0 -1
  924. package/cjs/useSendMultipleFilesMessage-81cdc9d0.js +0 -109
  925. package/cjs/useSendMultipleFilesMessage-81cdc9d0.js.map +0 -1
  926. package/cjs/utils-418b4438.js +0 -62
  927. package/cjs/utils-418b4438.js.map +0 -1
  928. package/cjs/utils-5bfb4516.js +0 -35
  929. package/cjs/utils-5bfb4516.js.map +0 -1
  930. package/cjs/utils-68aa6bf6.js +0 -345
  931. package/cjs/utils-68aa6bf6.js.map +0 -1
  932. package/cjs/utils-b34d4e2c.js +0 -31
  933. package/cjs/utils-b34d4e2c.js.map +0 -1
  934. package/cjs/utils-c47c68b1.js +0 -6
  935. package/cjs/utils-c47c68b1.js.map +0 -1
  936. package/cjs/uuid-b2806cf5.js +0 -15
  937. package/compareIds-8ed6e36a.js +0 -15
  938. package/compareIds-8ed6e36a.js.map +0 -1
  939. package/const-711048c3.js +0 -13
  940. package/consts-675764c9.js +0 -4
  941. package/consts-675764c9.js.map +0 -1
  942. package/consts-691a3935.js +0 -37
  943. package/consts-6ee24012.js +0 -4
  944. package/consts-eb77e905.js +0 -4
  945. package/consts-eb77e905.js.map +0 -1
  946. package/context-b4c70964.js +0 -13
  947. package/index-128523eb.js +0 -110
  948. package/index-128523eb.js.map +0 -1
  949. package/index-13401b87.js.map +0 -1
  950. package/index-5cb32ab5.js.map +0 -1
  951. package/index-5d6a0f12.js +0 -598
  952. package/index-5d6a0f12.js.map +0 -1
  953. package/index-60a7bf91.js +0 -164
  954. package/index-60a7bf91.js.map +0 -1
  955. package/index-7700a436.js.map +0 -1
  956. package/index-7946293f.js +0 -152
  957. package/index-7946293f.js.map +0 -1
  958. package/index-7b7478f5.js +0 -132
  959. package/index-7b7478f5.js.map +0 -1
  960. package/index-82178c6a.js +0 -361
  961. package/index-82178c6a.js.map +0 -1
  962. package/index-98138798.js +0 -187
  963. package/index-98887e8d.js +0 -7
  964. package/index-98887e8d.js.map +0 -1
  965. package/index-ae7ef8cf.js +0 -51
  966. package/index-b25ffa7e.js.map +0 -1
  967. package/index-c421b228.js.map +0 -1
  968. package/index-d99155f7.js +0 -51
  969. package/index-d99155f7.js.map +0 -1
  970. package/index-daa3ae67.js.map +0 -1
  971. package/index-e15f6b6a.js +0 -320
  972. package/index.module-60af77d3.js +0 -4
  973. package/index.module-60af77d3.js.map +0 -1
  974. package/stringFormatterUtils-dbad592d.js +0 -14
  975. package/stringSet-2814bf17.js.map +0 -1
  976. package/topics-5659403d.js.map +0 -1
  977. package/types-89092633.js +0 -15
  978. package/types-89092633.js.map +0 -1
  979. package/useHandleUploadFiles-406a6c9c.js.map +0 -1
  980. package/useLongPress-5e1ad951.js +0 -85
  981. package/useLongPress-5e1ad951.js.map +0 -1
  982. package/useSendMultipleFilesMessage-a3a2c84b.js +0 -107
  983. package/useSendMultipleFilesMessage-a3a2c84b.js.map +0 -1
  984. package/utils-0c22998a.js +0 -306
  985. package/utils-0c22998a.js.map +0 -1
  986. package/utils-407da489.js +0 -4
  987. package/utils-407da489.js.map +0 -1
  988. package/utils-b97d5113.js +0 -57
  989. package/utils-b97d5113.js.map +0 -1
  990. package/utils-cae84d8a.js +0 -29
  991. package/utils-cae84d8a.js.map +0 -1
  992. package/utils-ebf008e2.js +0 -31
  993. package/utils-ebf008e2.js.map +0 -1
  994. package/uuid-16373bba.js +0 -13
@@ -0,0 +1,2088 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var UserProfileContext = require('./UserProfileContext-922a43ec.js');
5
+ var useSendbirdStateContext = require('./useSendbirdStateContext.js');
6
+ var _const = require('./const-9def5c09.js');
7
+ var utils = require('./utils-55fc6797.js');
8
+ var tslib_es6 = require('./tslib.es6-2f2b0bca.js');
9
+ var index$2 = require('./index-b6d51e74.js');
10
+ var message = require('@sendbird/chat/message');
11
+ var index = require('./index-609b07a2.js');
12
+ var useSendMultipleFilesMessage = require('./useSendMultipleFilesMessage-87e0ffa3.js');
13
+ var compareIds = require('./compareIds-de541666.js');
14
+ var index$1 = require('./index-b995f638.js');
15
+ var groupChannel = require('@sendbird/chat/groupChannel');
16
+ var uuid = require('./uuid-c74bbbb6.js');
17
+ var pubSub_topics = require('./pubSub/topics.js');
18
+ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-94c18dc1.js');
19
+ var consts = require('./consts-95462b21.js');
20
+ var resolvedReplyType = require('./resolvedReplyType-c20ef661.js');
21
+
22
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
+
24
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
+
26
+ /**
27
+ * This function helps consider the every condition
28
+ * related to enabling emoji reaction feature.
29
+ */
30
+ function getIsReactionEnabled(_a) {
31
+ var _b = _a.isBroadcast,
32
+ isBroadcast = _b === void 0 ? false : _b,
33
+ _c = _a.isSuper,
34
+ isSuper = _c === void 0 ? false : _c,
35
+ _d = _a.globalLevel,
36
+ globalLevel = _d === void 0 ? true : _d,
37
+ moduleLevel = _a.moduleLevel;
38
+ return !(isBroadcast || isSuper) && (moduleLevel !== null && moduleLevel !== void 0 ? moduleLevel : globalLevel);
39
+ }
40
+
41
+ var initialState = {
42
+ initialized: false,
43
+ loading: true,
44
+ allMessages: [],
45
+ /**
46
+ * localMessages: pending & failed messages
47
+ */
48
+ localMessages: [],
49
+ currentGroupChannel: null,
50
+ // for scrollup
51
+ hasMorePrev: false,
52
+ oldestMessageTimeStamp: 0,
53
+ // for scroll down
54
+ // onScrollDownCallback is added for navigation to different timestamps on messageSearch
55
+ // hasMorePrev, onScrollCallback -> scroll up(default behavior)
56
+ // hasMoreNext, onScrollDownCallback -> scroll down
57
+ hasMoreNext: false,
58
+ latestMessageTimeStamp: 0,
59
+ emojiContainer: {
60
+ emojiCategories: [],
61
+ emojiHash: ''
62
+ },
63
+ unreadSince: null,
64
+ /**
65
+ * unreadSince is a formatted date information string
66
+ * It's used only for the {unreadSince && <UnreadCount time={unreadSince} />}
67
+ */
68
+ isInvalid: false,
69
+ readStatus: null,
70
+ messageListParams: null
71
+ };
72
+
73
+ var getOldestMessageTimeStamp = function (messages) {
74
+ if (messages === void 0) {
75
+ messages = [];
76
+ }
77
+ var oldestMessage = messages[0];
78
+ return oldestMessage && oldestMessage.createdAt || null;
79
+ };
80
+ var getLatestMessageTimeStamp = function (messages) {
81
+ if (messages === void 0) {
82
+ messages = [];
83
+ }
84
+ var latestMessage = messages[messages.length - 1];
85
+ return latestMessage && latestMessage.createdAt || null;
86
+ };
87
+ function hasReqId(message) {
88
+ return 'reqId' in message;
89
+ }
90
+ function channelReducer(state, action) {
91
+ return index.K(action).with({
92
+ type: useSendMultipleFilesMessage.RESET_MESSAGES
93
+ }, function () {
94
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
95
+ // when user switches channel, if the previous channel `hasMorePrev`
96
+ // the onScroll gets called twice, setting hasMorePrev false prevents this
97
+ hasMorePrev: false,
98
+ hasMoreNext: false,
99
+ allMessages: []
100
+ });
101
+ }).with({
102
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_START
103
+ }, function () {
104
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
105
+ loading: true,
106
+ allMessages: state.allMessages.filter(function (m) {
107
+ return index$1.isSendableMessage(m) ? m.sendingStatus !== message.SendingStatus.SUCCEEDED : true;
108
+ })
109
+ });
110
+ }).with({
111
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_SUCCESS
112
+ }, function (action) {
113
+ var _a;
114
+ var _b = action.payload,
115
+ currentGroupChannel = _b.currentGroupChannel,
116
+ messages = _b.messages;
117
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
118
+ return state;
119
+ }
120
+ var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
121
+ var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
122
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
123
+ loading: false,
124
+ initialized: true,
125
+ hasMorePrev: true,
126
+ hasMoreNext: true,
127
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
128
+ latestMessageTimeStamp: latestMessageTimeStamp,
129
+ allMessages: tslib_es6.__spreadArray([], messages, true)
130
+ });
131
+ }).with({
132
+ type: useSendMultipleFilesMessage.FETCH_PREV_MESSAGES_SUCCESS
133
+ }, function (action) {
134
+ var _a, _b, _c, _d;
135
+ var _e = action.payload,
136
+ currentGroupChannel = _e.currentGroupChannel,
137
+ messages = _e.messages;
138
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
139
+ return state;
140
+ }
141
+ var hasMorePrev = ((_b = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _b !== void 0 ? _b : 0) >= ((_d = (_c = state === null || state === void 0 ? void 0 : state.messageListParams) === null || _c === void 0 ? void 0 : _c.prevResultSize) !== null && _d !== void 0 ? _d : _const.PREV_RESULT_SIZE) + 1;
142
+ var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
143
+ // Remove duplicated messages
144
+ var duplicatedMessageIds = [];
145
+ var updatedOldMessages = state.allMessages.map(function (msg) {
146
+ var duplicatedMessage = messages.find(function (_a) {
147
+ var messageId = _a.messageId;
148
+ return compareIds.compareIds(messageId, msg.messageId);
149
+ });
150
+ if (!duplicatedMessage) {
151
+ return msg;
152
+ }
153
+ duplicatedMessageIds.push(duplicatedMessage.messageId);
154
+ return duplicatedMessage.updatedAt > msg.updatedAt ? duplicatedMessage : msg;
155
+ });
156
+ var filteredNewMessages = duplicatedMessageIds.length > 0 ? messages.filter(function (msg) {
157
+ return !duplicatedMessageIds.find(function (messageId) {
158
+ return compareIds.compareIds(messageId, msg.messageId);
159
+ });
160
+ }) : messages;
161
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
162
+ hasMorePrev: hasMorePrev,
163
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
164
+ allMessages: tslib_es6.__spreadArray(tslib_es6.__spreadArray([], filteredNewMessages, true), updatedOldMessages, true)
165
+ });
166
+ }).with({
167
+ type: useSendMultipleFilesMessage.FETCH_NEXT_MESSAGES_SUCCESS
168
+ }, function (action) {
169
+ var _a, _b, _c, _d;
170
+ var _e = action.payload,
171
+ currentGroupChannel = _e.currentGroupChannel,
172
+ messages = _e.messages;
173
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
174
+ return state;
175
+ }
176
+ var hasMoreNext = ((_b = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _b !== void 0 ? _b : 0) === ((_d = (_c = state === null || state === void 0 ? void 0 : state.messageListParams) === null || _c === void 0 ? void 0 : _c.nextResultSize) !== null && _d !== void 0 ? _d : _const.NEXT_RESULT_SIZE) + 1;
177
+ var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
178
+ // sort ~
179
+ var sortedMessages = utils.mergeAndSortMessages(state.allMessages, messages);
180
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
181
+ hasMoreNext: hasMoreNext,
182
+ latestMessageTimeStamp: latestMessageTimeStamp,
183
+ allMessages: sortedMessages
184
+ });
185
+ }).with({
186
+ type: index.S.union(useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_FAILURE, useSendMultipleFilesMessage.FETCH_PREV_MESSAGES_FAILURE, useSendMultipleFilesMessage.FETCH_NEXT_MESSAGES_FAILURE)
187
+ }, function (action) {
188
+ var _a;
189
+ var currentGroupChannel = action.payload.currentGroupChannel;
190
+ if ((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) !== ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url)) {
191
+ return state;
192
+ }
193
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
194
+ loading: false,
195
+ initialized: false,
196
+ allMessages: [],
197
+ hasMorePrev: false,
198
+ hasMoreNext: false,
199
+ oldestMessageTimeStamp: null,
200
+ latestMessageTimeStamp: null
201
+ });
202
+ }).with({
203
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_START
204
+ }, function (action) {
205
+ // Message should not be spread here
206
+ // it will loose some methods like `isUserMessage`
207
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
208
+ localMessages: tslib_es6.__spreadArray(tslib_es6.__spreadArray([], state.localMessages, true), [action.payload], false)
209
+ });
210
+ }).with({
211
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS
212
+ }, function (action) {
213
+ var message = action.payload;
214
+ var filteredMessages = state.allMessages.filter(function (m) {
215
+ return hasReqId(m) && (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId);
216
+ });
217
+ // [Policy] Pending messages and failed messages
218
+ // must always be at the end of the message list
219
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
220
+ allMessages: tslib_es6.__spreadArray(tslib_es6.__spreadArray([], filteredMessages, true), [message], false),
221
+ localMessages: state.localMessages.filter(function (m) {
222
+ return hasReqId(m) && (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId);
223
+ })
224
+ });
225
+ }).with({
226
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE
227
+ }, function (action) {
228
+ // @ts-ignore
229
+ action.payload.failed = true;
230
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
231
+ localMessages: state.localMessages.map(function (m) {
232
+ return compareIds.compareIds(hasReqId(m) && m.reqId, action.payload.reqId) ? action.payload : m;
233
+ })
234
+ });
235
+ }).with({
236
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL
237
+ }, function (action) {
238
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
239
+ currentGroupChannel: action.payload,
240
+ isInvalid: false
241
+ });
242
+ }).with({
243
+ type: useSendMultipleFilesMessage.SET_CHANNEL_INVALID
244
+ }, function () {
245
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
246
+ currentGroupChannel: null,
247
+ isInvalid: true
248
+ });
249
+ }).with({
250
+ type: useSendMultipleFilesMessage.ON_MESSAGE_RECEIVED
251
+ }, function (action) {
252
+ var _a = action.payload,
253
+ channel = _a.channel,
254
+ message = _a.message;
255
+ var members = channel.members;
256
+ var sender = message.sender;
257
+ var currentGroupChannel = state.currentGroupChannel,
258
+ unreadSince = state.unreadSince;
259
+ var currentGroupChannelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
260
+ if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
261
+ return state;
262
+ }
263
+ // Excluded overlapping messages
264
+ if (state.allMessages.some(function (msg) {
265
+ return msg.messageId === message.messageId;
266
+ })) {
267
+ return state;
268
+ }
269
+ // Filter by userFilledQuery
270
+ if (state.messageListParams && !index$1.filterMessageListParams(state.messageListParams, message)) {
271
+ return state;
272
+ }
273
+ if (message.isAdminMessage && message.isAdminMessage()) {
274
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
275
+ allMessages: utils.passUnsuccessfullMessages(state.allMessages, message)
276
+ });
277
+ }
278
+ // Update members when sender profileUrl, nickname, friendName has been changed
279
+ var senderMember = members === null || members === void 0 ? void 0 : members.find(function (m) {
280
+ return (m === null || m === void 0 ? void 0 : m.userId) === (sender === null || sender === void 0 ? void 0 : sender.userId);
281
+ });
282
+ if ((senderMember === null || senderMember === void 0 ? void 0 : senderMember.profileUrl) !== (sender === null || sender === void 0 ? void 0 : sender.profileUrl) || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.friendName) !== (sender === null || sender === void 0 ? void 0 : sender.friendName) || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.nickname) !== (sender === null || sender === void 0 ? void 0 : sender.nickname)) {
283
+ // @ts-ignore
284
+ channel.members = members.map(function (member) {
285
+ if (member.userId === sender.userId) {
286
+ return sender;
287
+ }
288
+ return member;
289
+ });
290
+ }
291
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
292
+ currentGroupChannel: channel,
293
+ unreadSince: (state === null || state === void 0 ? void 0 : state.unreadSince) ? unreadSince : index$2.format(new Date(), 'p MMM dd'),
294
+ allMessages: utils.passUnsuccessfullMessages(state.allMessages, message)
295
+ });
296
+ }).with({
297
+ type: useSendMultipleFilesMessage.ON_MESSAGE_UPDATED
298
+ }, function (action) {
299
+ var _a;
300
+ var _b = action.payload,
301
+ channel = _b.channel,
302
+ message = _b.message;
303
+ var currentGroupChannelUrl = ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) || '';
304
+ if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
305
+ return state; // Ignore event when it is not for the current channel
306
+ }
307
+
308
+ if (state.messageListParams && !index$1.filterMessageListParams(state.messageListParams, message)) {
309
+ // Delete the message if it doesn't match to the params anymore
310
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
311
+ allMessages: state.allMessages.filter(function (m) {
312
+ return !compareIds.compareIds(m.messageId, message === null || message === void 0 ? void 0 : message.messageId);
313
+ })
314
+ });
315
+ }
316
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
317
+ allMessages: state.allMessages.map(function (m) {
318
+ if (compareIds.compareIds(m.messageId, message.messageId)) {
319
+ return message;
320
+ }
321
+ if (compareIds.compareIds(m.parentMessageId, message.messageId)) {
322
+ m.parentMessage = message; // eslint-disable-line no-param-reassign
323
+ }
324
+
325
+ return m;
326
+ })
327
+ });
328
+ }).with({
329
+ type: useSendMultipleFilesMessage.ON_MESSAGE_THREAD_INFO_UPDATED
330
+ }, function (action) {
331
+ var _a;
332
+ var _b = action.payload,
333
+ channel = _b.channel,
334
+ event = _b.event;
335
+ var channelUrl = event.channelUrl,
336
+ threadInfo = event.threadInfo,
337
+ targetMessageId = event.targetMessageId;
338
+ var currentGroupChannelUrl = ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) || '';
339
+ if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl) || !compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
340
+ return state; // Ignore event when it is not for the current channel
341
+ }
342
+
343
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
344
+ allMessages: state.allMessages.map(function (m) {
345
+ if (compareIds.compareIds(m.messageId, targetMessageId)) {
346
+ // eslint-disable-next-line no-param-reassign
347
+ m.threadInfo = threadInfo; // Upsert threadInfo to the target message
348
+ }
349
+
350
+ return m;
351
+ })
352
+ });
353
+ }).with({
354
+ type: useSendMultipleFilesMessage.RESEND_MESSAGE_START
355
+ }, function (action) {
356
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
357
+ allMessages: state.allMessages.map(function (m) {
358
+ return compareIds.compareIds(hasReqId(m) && m.reqId, action.payload.reqId) ? action.payload : m;
359
+ })
360
+ });
361
+ }).with({
362
+ type: useSendMultipleFilesMessage.MARK_AS_READ
363
+ }, function (action) {
364
+ var _a, _b, _c;
365
+ if (((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) !== ((_c = (_b = action.payload) === null || _b === void 0 ? void 0 : _b.channel) === null || _c === void 0 ? void 0 : _c.url)) {
366
+ return state;
367
+ }
368
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
369
+ unreadSince: null
370
+ });
371
+ }).with({
372
+ type: useSendMultipleFilesMessage.ON_MESSAGE_DELETED
373
+ }, function (action) {
374
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
375
+ allMessages: state.allMessages.filter(function (m) {
376
+ return !compareIds.compareIds(m.messageId, action.payload);
377
+ })
378
+ });
379
+ }).with({
380
+ type: useSendMultipleFilesMessage.ON_MESSAGE_DELETED_BY_REQ_ID
381
+ }, function (action) {
382
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
383
+ localMessages: state.localMessages.filter(function (m) {
384
+ return !compareIds.compareIds(hasReqId(m) && m.reqId, action.payload);
385
+ })
386
+ });
387
+ }).with({
388
+ type: useSendMultipleFilesMessage.SET_EMOJI_CONTAINER
389
+ }, function (action) {
390
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
391
+ emojiContainer: action.payload
392
+ });
393
+ }).with({
394
+ type: useSendMultipleFilesMessage.ON_REACTION_UPDATED
395
+ }, function (action) {
396
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
397
+ allMessages: state.allMessages.map(function (m) {
398
+ if (compareIds.compareIds(m.messageId, action.payload.messageId)) {
399
+ if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
400
+ m.applyReactionEvent(action.payload);
401
+ }
402
+ return m;
403
+ }
404
+ return m;
405
+ })
406
+ });
407
+ }).with({
408
+ type: useSendMultipleFilesMessage.MESSAGE_LIST_PARAMS_CHANGED
409
+ }, function (action) {
410
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
411
+ messageListParams: action.payload
412
+ });
413
+ }).with({
414
+ type: useSendMultipleFilesMessage.ON_FILE_INFO_UPLOADED
415
+ }, function (action) {
416
+ var _a, _b;
417
+ var _c = action.payload,
418
+ channelUrl = _c.channelUrl,
419
+ requestId = _c.requestId,
420
+ index = _c.index,
421
+ uploadableFileInfo = _c.uploadableFileInfo,
422
+ error = _c.error;
423
+ if (!compareIds.compareIds(channelUrl, (_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url)) {
424
+ return state;
425
+ }
426
+ /**
427
+ * We don't have to do anything here because
428
+ * onFailed() will be called so handle error there instead.
429
+ */
430
+ if (error) return state;
431
+ var localMessages = state.localMessages;
432
+ var messageToUpdate = localMessages.find(function (message) {
433
+ return compareIds.compareIds(hasReqId(message) && message.reqId, requestId);
434
+ });
435
+ var fileInfoList = (_b = messageToUpdate.messageParams) === null || _b === void 0 ? void 0 : _b.fileInfoList;
436
+ if (Array.isArray(fileInfoList)) {
437
+ fileInfoList[index] = uploadableFileInfo;
438
+ }
439
+ return tslib_es6.__assign(tslib_es6.__assign({}, state), {
440
+ localMessages: localMessages
441
+ });
442
+ }).otherwise(function () {
443
+ return state;
444
+ });
445
+ }
446
+
447
+ var DELIVERY_RECIPT = 'delivery_receipt';
448
+ function useHandleChannelEvents(_a, _b) {
449
+ var _c, _d, _e;
450
+ var sdkInit = _a.sdkInit,
451
+ currentUserId = _a.currentUserId,
452
+ currentGroupChannel = _a.currentGroupChannel,
453
+ disableMarkAsRead = _a.disableMarkAsRead;
454
+ var sdk = _b.sdk,
455
+ logger = _b.logger,
456
+ scrollRef = _b.scrollRef,
457
+ setQuoteMessage = _b.setQuoteMessage,
458
+ messagesDispatcher = _b.messagesDispatcher;
459
+ var store = useSendbirdStateContext.useSendbirdStateContext();
460
+ var _f = store.config,
461
+ markAsReadScheduler = _f.markAsReadScheduler,
462
+ markAsDeliveredScheduler = _f.markAsDeliveredScheduler,
463
+ disableMarkAsDelivered = _f.disableMarkAsDelivered;
464
+ var canSetMarkAsDelivered = (_e = (_d = (_c = store.stores.sdkStore.sdk) === null || _c === void 0 ? void 0 : _c.appInfo) === null || _d === void 0 ? void 0 : _d.premiumFeatureList) === null || _e === void 0 ? void 0 : _e.find(function (feature) {
465
+ return feature === DELIVERY_RECIPT;
466
+ });
467
+ React.useEffect(function () {
468
+ var _a;
469
+ var channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
470
+ var channelHandlerId = uuid.uuidv4();
471
+ if (channelUrl && sdkInit) {
472
+ var channelHandler = {
473
+ onMessageReceived: function (channel, message) {
474
+ var _a, _b;
475
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
476
+ var scrollToEnd = false;
477
+ try {
478
+ var current = scrollRef.current;
479
+ scrollToEnd = current.offsetHeight + current.scrollTop >= current.scrollHeight - 10;
480
+ // 10 is a buffer
481
+ } catch (error) {
482
+ //
483
+ }
484
+ logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
485
+ messagesDispatcher({
486
+ type: useSendMultipleFilesMessage.ON_MESSAGE_RECEIVED,
487
+ payload: {
488
+ channel: channel,
489
+ message: message
490
+ }
491
+ });
492
+ if (scrollToEnd && ((_a = document.getElementById('sendbird-dropdown-portal')) === null || _a === void 0 ? void 0 : _a.childElementCount) === 0 && ((_b = document.getElementById('sendbird-emoji-list-portal')) === null || _b === void 0 ? void 0 : _b.childElementCount) === 0) {
493
+ // and !openContextMenu
494
+ try {
495
+ setTimeout(function () {
496
+ utils.scrollIntoLast(0, scrollRef);
497
+ });
498
+ if (!disableMarkAsRead) {
499
+ markAsReadScheduler.push(currentGroupChannel);
500
+ }
501
+ if (canSetMarkAsDelivered && !disableMarkAsDelivered) {
502
+ markAsDeliveredScheduler.push(currentGroupChannel);
503
+ }
504
+ } catch (error) {
505
+ logger.warning('Channel | onMessageReceived | scroll to end failed');
506
+ }
507
+ }
508
+ }
509
+ },
510
+ onUnreadMemberStatusUpdated: function (channel) {
511
+ logger.info('Channel | useHandleChannelEvents: onUnreadMemberStatusUpdated', channel);
512
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
513
+ messagesDispatcher({
514
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
515
+ payload: channel
516
+ });
517
+ }
518
+ },
519
+ // before(onDeliveryReceiptUpdated)
520
+ onUndeliveredMemberStatusUpdated: function (channel) {
521
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
522
+ logger.info('Channel | useHandleChannelEvents: onDeliveryReceiptUpdated', channel);
523
+ messagesDispatcher({
524
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
525
+ payload: channel
526
+ });
527
+ }
528
+ },
529
+ onMessageUpdated: function (channel, message) {
530
+ logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
531
+ messagesDispatcher({
532
+ type: useSendMultipleFilesMessage.ON_MESSAGE_UPDATED,
533
+ payload: {
534
+ channel: channel,
535
+ message: message
536
+ }
537
+ });
538
+ },
539
+ onThreadInfoUpdated: function (channel, threadInfoUpdateEvent) {
540
+ logger.info('Channel | useHandleChannelEvents: onThreadInfoUpdated', {
541
+ channel: channel,
542
+ threadInfoUpdateEvent: threadInfoUpdateEvent
543
+ });
544
+ messagesDispatcher({
545
+ type: useSendMultipleFilesMessage.ON_MESSAGE_THREAD_INFO_UPDATED,
546
+ payload: {
547
+ channel: channel,
548
+ event: threadInfoUpdateEvent
549
+ }
550
+ });
551
+ },
552
+ onMessageDeleted: function (channel, messageId) {
553
+ logger.info('Channel | useHandleChannelEvents: onMessageDeleted', {
554
+ channel: channel,
555
+ messageId: messageId
556
+ });
557
+ setQuoteMessage(null);
558
+ messagesDispatcher({
559
+ type: useSendMultipleFilesMessage.ON_MESSAGE_DELETED,
560
+ payload: messageId
561
+ });
562
+ },
563
+ onReactionUpdated: function (channel, reactionEvent) {
564
+ logger.info('Channel | useHandleChannelEvents: onReactionUpdated', {
565
+ channel: channel,
566
+ reactionEvent: reactionEvent
567
+ });
568
+ messagesDispatcher({
569
+ type: useSendMultipleFilesMessage.ON_REACTION_UPDATED,
570
+ payload: reactionEvent
571
+ });
572
+ },
573
+ onChannelChanged: function (channel) {
574
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
575
+ logger.info('Channel | useHandleChannelEvents: onChannelChanged', channel);
576
+ messagesDispatcher({
577
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
578
+ payload: channel
579
+ });
580
+ }
581
+ },
582
+ onChannelFrozen: function (channel) {
583
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
584
+ logger.info('Channel | useHandleChannelEvents: onChannelFrozen', channel);
585
+ messagesDispatcher({
586
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
587
+ payload: channel
588
+ });
589
+ }
590
+ },
591
+ onChannelUnfrozen: function (channel) {
592
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
593
+ logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', channel);
594
+ messagesDispatcher({
595
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
596
+ payload: channel
597
+ });
598
+ }
599
+ },
600
+ onUserMuted: function (channel, user) {
601
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
602
+ logger.info('Channel | useHandleChannelEvents: onUserMuted', {
603
+ channel: channel,
604
+ user: user
605
+ });
606
+ messagesDispatcher({
607
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
608
+ payload: channel
609
+ });
610
+ }
611
+ },
612
+ onUserUnmuted: function (channel, user) {
613
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
614
+ logger.info('Channel | useHandleChannelEvents: onUserUnmuted', {
615
+ channel: channel,
616
+ user: user
617
+ });
618
+ messagesDispatcher({
619
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
620
+ payload: channel
621
+ });
622
+ }
623
+ },
624
+ onUserBanned: function (channel, user) {
625
+ var _a;
626
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl) && (user === null || user === void 0 ? void 0 : user.userId) === ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.currentUser) === null || _a === void 0 ? void 0 : _a.userId)) {
627
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', {
628
+ channel: channel,
629
+ user: user
630
+ });
631
+ messagesDispatcher({
632
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
633
+ payload: null
634
+ });
635
+ }
636
+ },
637
+ onOperatorUpdated: function (channel, users) {
638
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
639
+ logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', {
640
+ channel: channel,
641
+ users: users
642
+ });
643
+ messagesDispatcher({
644
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
645
+ payload: channel
646
+ });
647
+ }
648
+ },
649
+ onUserLeft: function (channel, user) {
650
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
651
+ logger.info('Channel | useHandleChannelEvents: onUserLeft', {
652
+ channel: channel,
653
+ user: user
654
+ });
655
+ if ((user === null || user === void 0 ? void 0 : user.userId) === currentUserId) {
656
+ messagesDispatcher({
657
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
658
+ payload: null
659
+ });
660
+ }
661
+ }
662
+ }
663
+ };
664
+ logger.info('Channel | useHandleChannelEvents: Setup event handler', {
665
+ channelHandlerId: channelHandlerId,
666
+ channelHandler: channelHandler
667
+ });
668
+ // Add this group channel handler to the Sendbird chat instance
669
+ (_a = sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.addGroupChannelHandler(channelHandlerId, new groupChannel.GroupChannelHandler(channelHandler));
670
+ }
671
+ return function () {
672
+ var _a;
673
+ if ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.removeGroupChannelHandler) {
674
+ logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', channelHandlerId);
675
+ sdk.groupChannel.removeGroupChannelHandler(channelHandlerId);
676
+ } else if (sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) {
677
+ logger.error('Channel | useHandleChannelEvents: Not found the removeGroupChannelHandler');
678
+ }
679
+ };
680
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, sdkInit]);
681
+ }
682
+
683
+ function useSetChannel(_ref, _ref2) {
684
+ let {
685
+ channelUrl,
686
+ sdkInit,
687
+ disableMarkAsRead
688
+ } = _ref;
689
+ let {
690
+ messagesDispatcher,
691
+ sdk,
692
+ logger,
693
+ markAsReadScheduler
694
+ } = _ref2;
695
+ React.useEffect(() => {
696
+ if (channelUrl && sdkInit && sdk && sdk.groupChannel) {
697
+ logger.info('Channel | useSetChannel fetching channel', channelUrl);
698
+ sdk.groupChannel.getChannel(channelUrl).then(groupChannel => {
699
+ logger.info('Channel | useSetChannel fetched channel', groupChannel);
700
+ messagesDispatcher({
701
+ type: useSendMultipleFilesMessage.SET_CURRENT_CHANNEL,
702
+ payload: groupChannel
703
+ });
704
+ logger.info('Channel: Mark as read', groupChannel);
705
+ if (!disableMarkAsRead) {
706
+ markAsReadScheduler.push(groupChannel);
707
+ }
708
+ }).catch(e => {
709
+ logger.warning('Channel | useSetChannel fetch channel failed', {
710
+ channelUrl,
711
+ e
712
+ });
713
+ messagesDispatcher({
714
+ type: useSendMultipleFilesMessage.SET_CHANNEL_INVALID
715
+ });
716
+ });
717
+ sdk.getAllEmoji().then(emojiContainer_ => {
718
+ logger.info('Channel: Getting emojis success', emojiContainer_);
719
+ messagesDispatcher({
720
+ type: useSendMultipleFilesMessage.SET_EMOJI_CONTAINER,
721
+ payload: emojiContainer_
722
+ });
723
+ }).catch(err => {
724
+ logger.error('Channel: Getting emojis failed', err);
725
+ });
726
+ }
727
+ }, [channelUrl, sdkInit]);
728
+ }
729
+
730
+ function useInitialMessagesFetch(_a, _b) {
731
+ var currentGroupChannel = _a.currentGroupChannel,
732
+ initialTimeStamp = _a.initialTimeStamp,
733
+ userFilledMessageListQuery = _a.userFilledMessageListQuery,
734
+ replyType = _a.replyType,
735
+ setIsScrolled = _a.setIsScrolled;
736
+ var logger = _b.logger,
737
+ scrollRef = _b.scrollRef,
738
+ messagesDispatcher = _b.messagesDispatcher;
739
+ var channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
740
+ React.useEffect(function () {
741
+ logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
742
+ setIsScrolled(false);
743
+ messagesDispatcher({
744
+ type: useSendMultipleFilesMessage.RESET_MESSAGES,
745
+ payload: null
746
+ });
747
+ if (currentGroupChannel && (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.getMessagesByTimestamp)) {
748
+ var messageListParams_1 = {
749
+ prevResultSize: _const.PREV_RESULT_SIZE,
750
+ isInclusive: true,
751
+ includeReactions: true,
752
+ includeMetaArray: true
753
+ };
754
+ if (initialTimeStamp) {
755
+ messageListParams_1.nextResultSize = _const.NEXT_RESULT_SIZE;
756
+ }
757
+ if (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') {
758
+ messageListParams_1.includeThreadInfo = true;
759
+ messageListParams_1.includeParentMessageInfo = true;
760
+ messageListParams_1.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
761
+ }
762
+ if (userFilledMessageListQuery) {
763
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
764
+ messageListParams_1[key] = userFilledMessageListQuery[key];
765
+ });
766
+ }
767
+ if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') || userFilledMessageListQuery) {
768
+ logger.info('Channel useInitialMessagesFetch: Setup messageListParams', messageListParams_1);
769
+ messagesDispatcher({
770
+ type: useSendMultipleFilesMessage.MESSAGE_LIST_PARAMS_CHANGED,
771
+ payload: messageListParams_1
772
+ });
773
+ }
774
+ logger.info('Channel: Fetching messages', {
775
+ currentGroupChannel: currentGroupChannel,
776
+ userFilledMessageListQuery: userFilledMessageListQuery
777
+ });
778
+ messagesDispatcher({
779
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_START,
780
+ payload: null
781
+ });
782
+ var multipleFilesMessageCount_1 = 0;
783
+ currentGroupChannel.getMessagesByTimestamp(initialTimeStamp || new Date().getTime(), messageListParams_1).then(function (messages) {
784
+ messagesDispatcher({
785
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_SUCCESS,
786
+ payload: {
787
+ currentGroupChannel: currentGroupChannel,
788
+ messages: messages
789
+ }
790
+ });
791
+ multipleFilesMessageCount_1 = messages.filter(function (message) {
792
+ return index$1.isMultipleFilesMessage(message);
793
+ }).length;
794
+ }).catch(function (error) {
795
+ logger.error('Channel: Fetching messages failed', error);
796
+ messagesDispatcher({
797
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_FAILURE,
798
+ payload: {
799
+ currentGroupChannel: currentGroupChannel
800
+ }
801
+ });
802
+ }).finally(function () {
803
+ if (!initialTimeStamp) {
804
+ setTimeout(function () {
805
+ return utils.scrollIntoLast(0, scrollRef, setIsScrolled);
806
+ },
807
+ /**
808
+ * Rendering MFM takes long time so we need this.
809
+ * But later we should find better solution.
810
+ */
811
+ Math.min(multipleFilesMessageCount_1 * 100, 1000));
812
+ } else {
813
+ setTimeout(function () {
814
+ utils.scrollToRenderedMessage(scrollRef, initialTimeStamp, setIsScrolled);
815
+ }, 500);
816
+ }
817
+ });
818
+ }
819
+ }, [channelUrl, userFilledMessageListQuery, initialTimeStamp]);
820
+ /**
821
+ * Note - useEffect(() => {}, [currentGroupChannel])
822
+ * was buggy, that is why we did
823
+ * const channelUrl = currentGroupChannel && currentGroupChannel.url;
824
+ * useEffect(() => {}, [channelUrl])
825
+ * Again, this hook is supposed to execute when currentGroupChannel changes
826
+ * The 'channelUrl' here is not the same memory reference from Conversation.props
827
+ */
828
+ }
829
+
830
+ function useReconnectOnIdle(isOnline, currentGroupChannel, reconnectOnIdle) {
831
+ if (reconnectOnIdle === void 0) {
832
+ reconnectOnIdle = true;
833
+ }
834
+ var _a = React.useState(false),
835
+ isTabHidden = _a[0],
836
+ setIsTabHidden = _a[1];
837
+ var wasOffline = !isOnline;
838
+ React.useEffect(function () {
839
+ var handleVisibilityChange = function () {
840
+ if (reconnectOnIdle) {
841
+ setIsTabHidden(document.hidden);
842
+ }
843
+ };
844
+ document.addEventListener('visibilitychange', handleVisibilityChange);
845
+ return function () {
846
+ document.removeEventListener('visibilitychange', handleVisibilityChange);
847
+ };
848
+ }, [reconnectOnIdle, document.hidden]);
849
+ var shouldReconnect = wasOffline && (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) != null && !isTabHidden;
850
+ return {
851
+ shouldReconnect: shouldReconnect
852
+ };
853
+ }
854
+
855
+ function useHandleReconnect(_a, _b) {
856
+ var isOnline = _a.isOnline,
857
+ replyType = _a.replyType,
858
+ disableMarkAsRead = _a.disableMarkAsRead,
859
+ reconnectOnIdle = _a.reconnectOnIdle;
860
+ var logger = _b.logger,
861
+ sdk = _b.sdk,
862
+ scrollRef = _b.scrollRef,
863
+ currentGroupChannel = _b.currentGroupChannel,
864
+ messagesDispatcher = _b.messagesDispatcher,
865
+ markAsReadScheduler = _b.markAsReadScheduler,
866
+ userFilledMessageListQuery = _b.userFilledMessageListQuery;
867
+ var shouldReconnect = useReconnectOnIdle(isOnline, currentGroupChannel, reconnectOnIdle).shouldReconnect;
868
+ React.useEffect(function () {
869
+ return function () {
870
+ var _a, _b;
871
+ // state changed from offline to online AND tab is visible
872
+ if (shouldReconnect) {
873
+ logger.info('Refreshing conversation state');
874
+ var isReactionEnabled = ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) || false;
875
+ var messageListParams_1 = {
876
+ prevResultSize: _const.PREV_RESULT_SIZE,
877
+ isInclusive: true,
878
+ includeReactions: isReactionEnabled,
879
+ nextResultSize: _const.NEXT_RESULT_SIZE
880
+ };
881
+ if (replyType && replyType === 'QUOTE_REPLY') {
882
+ messageListParams_1.includeThreadInfo = true;
883
+ messageListParams_1.includeParentMessageInfo = true;
884
+ messageListParams_1.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
885
+ }
886
+ if (userFilledMessageListQuery) {
887
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
888
+ messageListParams_1[key] = userFilledMessageListQuery[key];
889
+ });
890
+ }
891
+ logger.info('Channel: Fetching messages', {
892
+ currentGroupChannel: currentGroupChannel,
893
+ userFilledMessageListQuery: userFilledMessageListQuery
894
+ });
895
+ messagesDispatcher({
896
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_START,
897
+ payload: null
898
+ });
899
+ (_b = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _b === void 0 ? void 0 : _b.getChannel(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url).then(function (groupChannel) {
900
+ var lastMessageTime = new Date().getTime();
901
+ groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams_1).then(function (messages) {
902
+ messagesDispatcher({
903
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_SUCCESS,
904
+ payload: {
905
+ currentGroupChannel: currentGroupChannel,
906
+ messages: messages
907
+ }
908
+ });
909
+ setTimeout(function () {
910
+ return utils.scrollIntoLast(0, scrollRef);
911
+ });
912
+ }).catch(function (error) {
913
+ logger.error('Channel: Fetching messages failed', error);
914
+ messagesDispatcher({
915
+ type: useSendMultipleFilesMessage.FETCH_INITIAL_MESSAGES_FAILURE,
916
+ payload: {
917
+ currentGroupChannel: currentGroupChannel
918
+ }
919
+ });
920
+ });
921
+ if (!disableMarkAsRead) {
922
+ markAsReadScheduler.push(currentGroupChannel);
923
+ }
924
+ });
925
+ }
926
+ };
927
+ }, [shouldReconnect, replyType]);
928
+ }
929
+
930
+ function useScrollCallback(_a, _b) {
931
+ var currentGroupChannel = _a.currentGroupChannel,
932
+ oldestMessageTimeStamp = _a.oldestMessageTimeStamp,
933
+ userFilledMessageListQuery = _a.userFilledMessageListQuery,
934
+ replyType = _a.replyType;
935
+ var hasMorePrev = _b.hasMorePrev,
936
+ logger = _b.logger,
937
+ messagesDispatcher = _b.messagesDispatcher,
938
+ sdk = _b.sdk;
939
+ return React.useCallback(function () {
940
+ var _a, _b;
941
+ if (!hasMorePrev) {
942
+ return;
943
+ }
944
+ var messageListParams = {
945
+ prevResultSize: _const.PREV_RESULT_SIZE,
946
+ isInclusive: true,
947
+ includeMetaArray: true,
948
+ includeReactions: (_b = (_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) !== null && _b !== void 0 ? _b : false
949
+ };
950
+ if (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') {
951
+ messageListParams.includeThreadInfo = true;
952
+ messageListParams.includeParentMessageInfo = true;
953
+ messageListParams.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
954
+ }
955
+ if (userFilledMessageListQuery) {
956
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
957
+ messageListParams[key] = userFilledMessageListQuery[key];
958
+ });
959
+ }
960
+ logger.info('Channel: Fetching messages', {
961
+ currentGroupChannel: currentGroupChannel,
962
+ userFilledMessageListQuery: userFilledMessageListQuery
963
+ });
964
+ currentGroupChannel.getMessagesByTimestamp(oldestMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
965
+ messagesDispatcher({
966
+ type: useSendMultipleFilesMessage.FETCH_PREV_MESSAGES_SUCCESS,
967
+ payload: {
968
+ currentGroupChannel: currentGroupChannel,
969
+ messages: messages
970
+ }
971
+ });
972
+ }).catch(function () {
973
+ messagesDispatcher({
974
+ type: useSendMultipleFilesMessage.FETCH_PREV_MESSAGES_FAILURE,
975
+ payload: {
976
+ currentGroupChannel: currentGroupChannel
977
+ }
978
+ });
979
+ });
980
+ }, [currentGroupChannel, oldestMessageTimeStamp, replyType]);
981
+ }
982
+
983
+ function useScrollDownCallback(_ref, _ref2) {
984
+ let {
985
+ currentGroupChannel,
986
+ latestMessageTimeStamp,
987
+ userFilledMessageListQuery,
988
+ hasMoreNext,
989
+ replyType
990
+ } = _ref;
991
+ let {
992
+ logger,
993
+ messagesDispatcher,
994
+ sdk
995
+ } = _ref2;
996
+ return React.useCallback(cb => {
997
+ if (!hasMoreNext) {
998
+ return;
999
+ }
1000
+ const {
1001
+ appInfo = {}
1002
+ } = sdk;
1003
+ const isReactionEnabled = appInfo.useReaction || false;
1004
+ const messageListParams = {
1005
+ nextResultSize: _const.NEXT_RESULT_SIZE,
1006
+ isInclusive: true,
1007
+ includeReactions: isReactionEnabled
1008
+ };
1009
+ messageListParams.includeMetaArray = true;
1010
+ if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD')) {
1011
+ messageListParams.includeThreadInfo = true;
1012
+ messageListParams.includeParentMessageInfo = true;
1013
+ messageListParams.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
1014
+ }
1015
+ if (userFilledMessageListQuery) {
1016
+ Object.keys(userFilledMessageListQuery).forEach(key => {
1017
+ messageListParams[key] = userFilledMessageListQuery[key];
1018
+ });
1019
+ }
1020
+ logger.info('Channel: Fetching later messages', {
1021
+ currentGroupChannel,
1022
+ userFilledMessageListQuery
1023
+ });
1024
+ currentGroupChannel.getMessagesByTimestamp(latestMessageTimeStamp || new Date().getTime(), messageListParams).then(messages => {
1025
+ messagesDispatcher({
1026
+ type: useSendMultipleFilesMessage.FETCH_NEXT_MESSAGES_SUCCESS,
1027
+ payload: {
1028
+ currentGroupChannel,
1029
+ messages
1030
+ }
1031
+ });
1032
+ cb([messages, null]);
1033
+ }).catch(error => {
1034
+ logger.error('Channel: Fetching later messages failed', error);
1035
+ messagesDispatcher({
1036
+ type: useSendMultipleFilesMessage.FETCH_NEXT_MESSAGES_FAILURE,
1037
+ payload: {
1038
+ currentGroupChannel
1039
+ }
1040
+ });
1041
+ cb([null, error]);
1042
+ });
1043
+ }, [currentGroupChannel, latestMessageTimeStamp, hasMoreNext, replyType]);
1044
+ }
1045
+
1046
+ function useDeleteMessageCallback(_ref, _ref2) {
1047
+ let {
1048
+ currentGroupChannel,
1049
+ messagesDispatcher
1050
+ } = _ref;
1051
+ let {
1052
+ logger
1053
+ } = _ref2;
1054
+ return React.useCallback(message => {
1055
+ logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
1056
+ const {
1057
+ sendingStatus
1058
+ } = message;
1059
+ return new Promise((resolve, reject) => {
1060
+ logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', sendingStatus);
1061
+ // Message is only on local
1062
+ if (sendingStatus === 'failed' || sendingStatus === 'pending') {
1063
+ logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
1064
+ messagesDispatcher({
1065
+ type: useSendMultipleFilesMessage.ON_MESSAGE_DELETED_BY_REQ_ID,
1066
+ payload: message.reqId
1067
+ });
1068
+ resolve(message);
1069
+ } else {
1070
+ logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', sendingStatus);
1071
+ currentGroupChannel.deleteMessage(message).then(() => {
1072
+ logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
1073
+ messagesDispatcher({
1074
+ type: useSendMultipleFilesMessage.ON_MESSAGE_DELETED,
1075
+ payload: message.messageId
1076
+ });
1077
+ resolve(message);
1078
+ }).catch(err => {
1079
+ logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
1080
+ reject(err);
1081
+ });
1082
+ }
1083
+ });
1084
+ }, [currentGroupChannel, messagesDispatcher]);
1085
+ }
1086
+
1087
+ function useUpdateMessageCallback(_ref, _ref2) {
1088
+ let {
1089
+ currentGroupChannel,
1090
+ messagesDispatcher,
1091
+ onBeforeUpdateUserMessage,
1092
+ isMentionEnabled
1093
+ } = _ref;
1094
+ let {
1095
+ logger,
1096
+ pubSub
1097
+ } = _ref2;
1098
+ return React.useCallback((props, callback) => {
1099
+ const {
1100
+ messageId,
1101
+ message,
1102
+ mentionedUsers,
1103
+ mentionTemplate
1104
+ } = props;
1105
+ const createParamsDefault = () => {
1106
+ const params = {};
1107
+ params.message = message;
1108
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1109
+ params.mentionedUsers = mentionedUsers;
1110
+ }
1111
+ if (isMentionEnabled && mentionTemplate) {
1112
+ params.mentionedMessageTemplate = mentionTemplate;
1113
+ } else {
1114
+ params.mentionedMessageTemplate = message;
1115
+ }
1116
+ return params;
1117
+ };
1118
+ const createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
1119
+ if (createCustomPrams) {
1120
+ logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
1121
+ }
1122
+ const params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(message) : createParamsDefault();
1123
+ logger.info('Channel: Updating message!', params);
1124
+ currentGroupChannel.updateUserMessage(messageId, params).then((msg, err) => {
1125
+ if (callback) {
1126
+ callback(err, msg);
1127
+ }
1128
+ logger.info('Channel: Updating message success!', msg);
1129
+ messagesDispatcher({
1130
+ type: useSendMultipleFilesMessage.ON_MESSAGE_UPDATED,
1131
+ payload: {
1132
+ channel: currentGroupChannel,
1133
+ message: msg
1134
+ }
1135
+ });
1136
+ pubSub.publish(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, {
1137
+ message: msg,
1138
+ channel: currentGroupChannel,
1139
+ publishingModules: [useSendMultipleFilesMessage.PublishingModuleType.CHANNEL]
1140
+ });
1141
+ });
1142
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
1143
+ }
1144
+
1145
+ function useResendMessageCallback(_ref, _ref2) {
1146
+ let {
1147
+ currentGroupChannel,
1148
+ messagesDispatcher
1149
+ } = _ref;
1150
+ let {
1151
+ logger
1152
+ } = _ref2;
1153
+ return React.useCallback(failedMessage => {
1154
+ logger.info('Channel: Resending message has started', failedMessage);
1155
+ const {
1156
+ messageType,
1157
+ file
1158
+ } = failedMessage;
1159
+ if (failedMessage !== null && failedMessage !== void 0 && failedMessage.isResendable) {
1160
+ // Move the logic setting sendingStatus to pending into the reducer
1161
+ // eslint-disable-next-line no-param-reassign
1162
+ failedMessage.requestState = 'pending';
1163
+ // eslint-disable-next-line no-param-reassign
1164
+ failedMessage.sendingStatus = 'pending';
1165
+ messagesDispatcher({
1166
+ type: useSendMultipleFilesMessage.RESEND_MESSAGE_START,
1167
+ payload: failedMessage
1168
+ });
1169
+
1170
+ // userMessage
1171
+ if (messageType === 'user') {
1172
+ currentGroupChannel.resendUserMessage(failedMessage).then(message => {
1173
+ logger.info('Channel: Resending message success!', message);
1174
+ messagesDispatcher({
1175
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1176
+ payload: message
1177
+ });
1178
+ }).catch(e => {
1179
+ logger.warning('Channel: Resending message failed!', e);
1180
+ // eslint-disable-next-line no-param-reassign
1181
+ failedMessage.requestState = 'failed';
1182
+ // eslint-disable-next-line no-param-reassign
1183
+ failedMessage.sendingStatus = 'failed';
1184
+ messagesDispatcher({
1185
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1186
+ payload: failedMessage
1187
+ });
1188
+ });
1189
+
1190
+ // eslint-disable-next-line no-param-reassign
1191
+ failedMessage.requestState = 'pending';
1192
+ // eslint-disable-next-line no-param-reassign
1193
+ failedMessage.sendingStatus = 'pending';
1194
+ messagesDispatcher({
1195
+ type: useSendMultipleFilesMessage.RESEND_MESSAGE_START,
1196
+ payload: failedMessage
1197
+ });
1198
+ return;
1199
+ }
1200
+ if (messageType === 'file') {
1201
+ currentGroupChannel.resendFileMessage(failedMessage, file).then(message => {
1202
+ logger.info('Channel: Resending file message success!', message);
1203
+ messagesDispatcher({
1204
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1205
+ payload: message
1206
+ });
1207
+ }).catch(e => {
1208
+ logger.warning('Channel: Resending file message failed!', e);
1209
+ // eslint-disable-next-line no-param-reassign
1210
+ failedMessage.requestState = 'failed';
1211
+ // eslint-disable-next-line no-param-reassign
1212
+ failedMessage.sendingStatus = 'failed';
1213
+ messagesDispatcher({
1214
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1215
+ payload: failedMessage
1216
+ });
1217
+ });
1218
+
1219
+ // eslint-disable-next-line no-param-reassign
1220
+ failedMessage.requestState = 'pending';
1221
+ // eslint-disable-next-line no-param-reassign
1222
+ failedMessage.sendingStatus = 'pending';
1223
+ messagesDispatcher({
1224
+ type: useSendMultipleFilesMessage.RESEND_MESSAGE_START,
1225
+ payload: failedMessage
1226
+ });
1227
+ }
1228
+ if (index$1.isMultipleFilesMessage(failedMessage)) {
1229
+ currentGroupChannel.resendMessage(failedMessage).onPending(message => {
1230
+ messagesDispatcher({
1231
+ type: useSendMultipleFilesMessage.RESEND_MESSAGE_START,
1232
+ payload: message
1233
+ });
1234
+ })
1235
+ // TODO: Handle on file info upload event.
1236
+ .onSucceeded(message => {
1237
+ logger.info('Channel: Resending multiple files message success!', message);
1238
+ messagesDispatcher({
1239
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1240
+ payload: message
1241
+ });
1242
+ }).onFailed((e, message) => {
1243
+ logger.warning('Channel: Resending multiple files message failed!', e);
1244
+ messagesDispatcher({
1245
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1246
+ payload: message
1247
+ });
1248
+ });
1249
+ }
1250
+ } else {
1251
+ // to alert user on console
1252
+ // eslint-disable-next-line no-console
1253
+ console.error('Message is not resendable');
1254
+ logger.warning('Message is not resendable', failedMessage);
1255
+ }
1256
+ }, [currentGroupChannel, messagesDispatcher]);
1257
+ }
1258
+
1259
+ function useSendMessageCallback(_ref, _ref2) {
1260
+ let {
1261
+ isMentionEnabled,
1262
+ currentGroupChannel,
1263
+ onBeforeSendUserMessage
1264
+ } = _ref;
1265
+ let {
1266
+ logger,
1267
+ pubSub,
1268
+ scrollRef,
1269
+ messagesDispatcher
1270
+ } = _ref2;
1271
+ const messageInputRef = React.useRef(null);
1272
+ const sendMessage = React.useCallback(props => {
1273
+ const {
1274
+ quoteMessage = null,
1275
+ message,
1276
+ mentionTemplate,
1277
+ // mentionedUserIds,
1278
+ mentionedUsers
1279
+ } = props;
1280
+ const createParamsDefault = () => {
1281
+ const params = {};
1282
+ params.message = message;
1283
+ // if (isMentionEnabled && mentionedUserIds?.length > 0) {
1284
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1285
+ // params.mentionedUserIds = mentionedUserIds;
1286
+ params.mentionedUsers = mentionedUsers;
1287
+ }
1288
+ // if (isMentionEnabled && mentionTemplate && mentionedUserIds?.length > 0) {
1289
+ if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1290
+ params.mentionedMessageTemplate = mentionTemplate;
1291
+ }
1292
+ if (quoteMessage) {
1293
+ params.isReplyToChannel = true;
1294
+ params.parentMessageId = quoteMessage.messageId;
1295
+ }
1296
+ return params;
1297
+ };
1298
+ const createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
1299
+ if (createCustomPrams) {
1300
+ logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
1301
+ }
1302
+ const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(message, quoteMessage) : createParamsDefault();
1303
+ logger.info('Channel: Sending message has started', params);
1304
+ currentGroupChannel.sendUserMessage(params).onPending(pendingMsg => {
1305
+ pubSub.publish(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, {
1306
+ /* pubSub is used instead of messagesDispatcher
1307
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1308
+ message: pendingMsg,
1309
+ channel: currentGroupChannel,
1310
+ publishingModules: [useSendMultipleFilesMessage.PublishingModuleType.CHANNEL]
1311
+ });
1312
+ setTimeout(() => utils.scrollIntoLast(0, scrollRef));
1313
+ }).onFailed((err, msg) => {
1314
+ logger.warning('Channel: Sending message failed!', {
1315
+ message: msg,
1316
+ error: err
1317
+ });
1318
+ messagesDispatcher({
1319
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1320
+ payload: msg
1321
+ });
1322
+ }).onSucceeded(msg => {
1323
+ logger.info('Channel: Sending message success!', msg);
1324
+ messagesDispatcher({
1325
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1326
+ payload: msg
1327
+ });
1328
+ });
1329
+ }, [currentGroupChannel, onBeforeSendUserMessage]);
1330
+ return [messageInputRef, sendMessage];
1331
+ }
1332
+
1333
+ function useSendFileMessageCallback(_ref, _ref2) {
1334
+ let {
1335
+ currentGroupChannel,
1336
+ onBeforeSendFileMessage,
1337
+ imageCompression = {}
1338
+ } = _ref;
1339
+ let {
1340
+ logger,
1341
+ pubSub,
1342
+ scrollRef,
1343
+ messagesDispatcher
1344
+ } = _ref2;
1345
+ const sendMessage = React.useCallback(function (file) {
1346
+ let quoteMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1347
+ return new Promise((resolve, reject) => {
1348
+ const {
1349
+ compressionRate,
1350
+ resizingWidth,
1351
+ resizingHeight
1352
+ } = imageCompression;
1353
+ const createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
1354
+ const compressibleFileType = file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg';
1355
+ const compressibleRatio = compressionRate > 0 && compressionRate < 1;
1356
+ // pxToNumber returns null if values are invalid
1357
+ const compressibleDiamensions = utils.pxToNumber(resizingWidth) || utils.pxToNumber(resizingHeight);
1358
+ const canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);
1359
+ const createParamsDefault = file_ => {
1360
+ const params = {};
1361
+ params.file = file_;
1362
+ if (quoteMessage) {
1363
+ params.isReplyToChannel = true;
1364
+ params.parentMessageId = quoteMessage.messageId;
1365
+ }
1366
+ return params;
1367
+ };
1368
+ if (canCompressImage) {
1369
+ // Using image compression
1370
+ try {
1371
+ const image = document.createElement('img');
1372
+ image.src = URL.createObjectURL(file);
1373
+ image.onload = () => {
1374
+ URL.revokeObjectURL(image.src);
1375
+ const canvas = document.createElement('canvas');
1376
+ const imageWdith = image.naturalWidth || image.width;
1377
+ const imageHeight = image.naturalHeight || image.height;
1378
+ let targetWidth = utils.pxToNumber(resizingWidth) || imageWdith;
1379
+ let targetHeight = utils.pxToNumber(resizingHeight) || imageHeight;
1380
+
1381
+ // In canvas.toBlob(callback, mimeType, qualityArgument)
1382
+ // qualityArgument doesnt work
1383
+ // so in case compressibleDiamensions are not present, we use ratio
1384
+ if (file.type === 'image/png' && !compressibleDiamensions) {
1385
+ targetWidth *= compressionRate;
1386
+ targetHeight *= compressionRate;
1387
+ }
1388
+ canvas.width = targetWidth;
1389
+ canvas.height = targetHeight;
1390
+ const context = canvas.getContext('2d');
1391
+ context.drawImage(image, 0, 0, targetWidth, targetHeight);
1392
+ context.canvas.toBlob(newImageBlob => {
1393
+ const compressedFile = new File([newImageBlob], file.name, {
1394
+ type: file.type
1395
+ });
1396
+ if (createCustomParams) {
1397
+ logger.info('Channel: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1398
+ }
1399
+ const params = createCustomParams ? onBeforeSendFileMessage(compressedFile, quoteMessage) : createParamsDefault(compressedFile);
1400
+ logger.info('Channel: Uploading file message start!', params);
1401
+ currentGroupChannel.sendFileMessage(params).onPending(pendingMessage => {
1402
+ pubSub.publish(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, {
1403
+ /* pubSub is used instead of messagesDispatcher
1404
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1405
+ message: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, pendingMessage), {}, {
1406
+ url: URL.createObjectURL(compressedFile),
1407
+ // pending thumbnail message seems to be failed
1408
+ requestState: 'pending'
1409
+ }),
1410
+ channel: currentGroupChannel,
1411
+ publishingModules: [useSendMultipleFilesMessage.PublishingModuleType.CHANNEL]
1412
+ });
1413
+ setTimeout(() => utils.scrollIntoLast(0, scrollRef), 1000);
1414
+ }).onFailed((err, failedMessage) => {
1415
+ logger.error('Channel: Sending file message failed!', {
1416
+ failedMessage,
1417
+ err
1418
+ });
1419
+ // eslint-disable-next-line no-param-reassign
1420
+ failedMessage.localUrl = URL.createObjectURL(compressedFile);
1421
+ // eslint-disable-next-line no-param-reassign
1422
+ failedMessage.file = compressedFile;
1423
+ messagesDispatcher({
1424
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1425
+ payload: failedMessage
1426
+ });
1427
+ reject(err);
1428
+ }).onSucceeded(succeededMessage => {
1429
+ logger.info('Channel: Sending file message success!', succeededMessage);
1430
+ messagesDispatcher({
1431
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1432
+ payload: succeededMessage
1433
+ });
1434
+ resolve(succeededMessage);
1435
+ });
1436
+ }, file.type, compressionRate);
1437
+ };
1438
+ } catch (error) {
1439
+ logger.error('Channel: Sending file message failed!', error);
1440
+ reject(error);
1441
+ }
1442
+ } else {
1443
+ // Not using image compression
1444
+ if (createCustomParams) {
1445
+ logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1446
+ }
1447
+ const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file, quoteMessage) : createParamsDefault(file);
1448
+ logger.info('Channel: Uploading file message start!', params);
1449
+ currentGroupChannel.sendFileMessage(params).onPending(pendingMsg => {
1450
+ pubSub.publish(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, {
1451
+ /* pubSub is used instead of messagesDispatcher
1452
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1453
+ message: _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, pendingMsg), {}, {
1454
+ url: URL.createObjectURL(file),
1455
+ // pending thumbnail message seems to be failed
1456
+ requestState: 'pending'
1457
+ }),
1458
+ channel: currentGroupChannel,
1459
+ publishingModules: [useSendMultipleFilesMessage.PublishingModuleType.CHANNEL]
1460
+ });
1461
+ setTimeout(() => utils.scrollIntoLast(0, scrollRef), 1000);
1462
+ }).onFailed((error, message) => {
1463
+ logger.error('Channel: Sending file message failed!', {
1464
+ message,
1465
+ error
1466
+ });
1467
+ // eslint-disable-next-line no-param-reassign
1468
+ message.localUrl = URL.createObjectURL(file);
1469
+ // eslint-disable-next-line no-param-reassign
1470
+ message.file = file;
1471
+ messagesDispatcher({
1472
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1473
+ payload: message
1474
+ });
1475
+ reject(error);
1476
+ }).onSucceeded(message => {
1477
+ logger.info('Channel: Sending message success!', message);
1478
+ messagesDispatcher({
1479
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1480
+ payload: message
1481
+ });
1482
+ resolve(message);
1483
+ });
1484
+ }
1485
+ });
1486
+ }, [currentGroupChannel, onBeforeSendFileMessage, imageCompression]);
1487
+ return [sendMessage];
1488
+ }
1489
+
1490
+ function useToggleReactionCallback(_ref, _ref2) {
1491
+ let {
1492
+ currentGroupChannel
1493
+ } = _ref;
1494
+ let {
1495
+ logger
1496
+ } = _ref2;
1497
+ return React.useCallback((message, key, isReacted) => {
1498
+ if (isReacted) {
1499
+ currentGroupChannel.deleteReaction(message, key).then(res => {
1500
+ logger.info('Delete reaction success', res);
1501
+ }).catch(err => {
1502
+ logger.warning('Delete reaction failed', err);
1503
+ });
1504
+ return;
1505
+ }
1506
+ currentGroupChannel.addReaction(message, key).then(res => {
1507
+ logger.info('Add reaction success', res);
1508
+ }).catch(err => {
1509
+ logger.warning('Add reaction failed', err);
1510
+ });
1511
+ }, [currentGroupChannel]);
1512
+ }
1513
+
1514
+ // To prevent multiple clicks on the message in the channel while scrolling
1515
+ function deactivateClick(scrollRef) {
1516
+ var element = scrollRef.current;
1517
+ var parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1518
+ if (element && parentNode) {
1519
+ element.style.pointerEvents = 'none';
1520
+ parentNode.style.cursor = 'wait';
1521
+ }
1522
+ }
1523
+ function activateClick(scrollRef) {
1524
+ var element = scrollRef.current;
1525
+ var parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1526
+ if (element && parentNode) {
1527
+ element.style.pointerEvents = 'auto';
1528
+ parentNode.style.cursor = 'auto';
1529
+ }
1530
+ }
1531
+ function useScrollToMessage(_a, _b) {
1532
+ var setInitialTimeStamp = _a.setInitialTimeStamp,
1533
+ setAnimatedMessageId = _a.setAnimatedMessageId,
1534
+ allMessages = _a.allMessages,
1535
+ scrollRef = _a.scrollRef;
1536
+ var logger = _b.logger;
1537
+ return React.useCallback(function (createdAt, messageId) {
1538
+ var isPresent = allMessages.find(function (m) {
1539
+ return m.messageId === messageId;
1540
+ });
1541
+ setAnimatedMessageId(null);
1542
+ setTimeout(function () {
1543
+ try {
1544
+ logger.info('Channel: scroll to message - disabling mouse events');
1545
+ deactivateClick(scrollRef);
1546
+ if (isPresent) {
1547
+ logger.info('Channel: scroll to message - message is present');
1548
+ setAnimatedMessageId(messageId);
1549
+ utils.scrollToRenderedMessage(scrollRef, createdAt);
1550
+ } else {
1551
+ logger.info('Channel: scroll to message - fetching older messages');
1552
+ setInitialTimeStamp(null);
1553
+ setInitialTimeStamp(createdAt);
1554
+ setAnimatedMessageId(messageId);
1555
+ }
1556
+ } finally {
1557
+ logger.info('Channel: scroll to message - enabled mouse events');
1558
+ activateClick(scrollRef);
1559
+ }
1560
+ });
1561
+ }, [setInitialTimeStamp, setAnimatedMessageId, allMessages]);
1562
+ }
1563
+
1564
+ var useSendVoiceMessageCallback = function (_a, _b) {
1565
+ var currentGroupChannel = _a.currentGroupChannel,
1566
+ onBeforeSendVoiceMessage = _a.onBeforeSendVoiceMessage;
1567
+ var logger = _b.logger,
1568
+ pubSub = _b.pubSub,
1569
+ scrollRef = _b.scrollRef,
1570
+ messagesDispatcher = _b.messagesDispatcher;
1571
+ var sendMessage = React.useCallback(function (file, duration, quoteMessage) {
1572
+ if (!currentGroupChannel) {
1573
+ return;
1574
+ }
1575
+ var messageParams = onBeforeSendVoiceMessage && typeof onBeforeSendVoiceMessage === 'function' ? onBeforeSendVoiceMessage(file, quoteMessage) : {
1576
+ file: file,
1577
+ fileName: consts.VOICE_MESSAGE_FILE_NAME,
1578
+ mimeType: consts.VOICE_MESSAGE_MIME_TYPE,
1579
+ metaArrays: [new message.MessageMetaArray({
1580
+ key: consts.META_ARRAY_VOICE_DURATION_KEY,
1581
+ value: ["".concat(duration)]
1582
+ }), new message.MessageMetaArray({
1583
+ key: consts.META_ARRAY_MESSAGE_TYPE_KEY,
1584
+ value: [consts.META_ARRAY_MESSAGE_TYPE_VALUE__VOICE]
1585
+ })]
1586
+ };
1587
+ if (quoteMessage) {
1588
+ messageParams.isReplyToChannel = true;
1589
+ messageParams.parentMessageId = quoteMessage.messageId;
1590
+ }
1591
+ logger.info('Channel: Start sending voice message', messageParams);
1592
+ currentGroupChannel.sendFileMessage(messageParams).onPending(function (pendingMessage) {
1593
+ pubSub.publish(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, {
1594
+ /* pubSub is used instead of messagesDispatcher
1595
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1596
+ message: pendingMessage,
1597
+ channel: currentGroupChannel,
1598
+ publishingModules: [useSendMultipleFilesMessage.PublishingModuleType.CHANNEL]
1599
+ });
1600
+ setTimeout(function () {
1601
+ return utils.scrollIntoLast(0, scrollRef);
1602
+ }, 1000);
1603
+ }).onFailed(function (err, failedMessage) {
1604
+ logger.error('Channel: Sending voice message failed!', {
1605
+ failedMessage: failedMessage,
1606
+ err: err
1607
+ });
1608
+ messagesDispatcher({
1609
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1610
+ payload: failedMessage
1611
+ });
1612
+ }).onSucceeded(function (succeededMessage) {
1613
+ logger.info('Channel: Sending voice message success!', succeededMessage);
1614
+ messagesDispatcher({
1615
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1616
+ payload: succeededMessage
1617
+ });
1618
+ });
1619
+ }, [currentGroupChannel, onBeforeSendVoiceMessage]);
1620
+ return [sendMessage];
1621
+ };
1622
+
1623
+ var useHandleChannelPubsubEvents = function (_a) {
1624
+ var channelUrl = _a.channelUrl,
1625
+ sdkInit = _a.sdkInit,
1626
+ pubSub = _a.pubSub,
1627
+ dispatcher = _a.dispatcher,
1628
+ scrollRef = _a.scrollRef;
1629
+ React.useEffect(function () {
1630
+ var subscriber = new Map();
1631
+ if (pubSub === null || pubSub === void 0 ? void 0 : pubSub.subscribe) {
1632
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, function (props) {
1633
+ var channel = props.channel,
1634
+ message = props.message;
1635
+ utils.scrollIntoLast(0, scrollRef);
1636
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1637
+ dispatcher({
1638
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1639
+ payload: message
1640
+ });
1641
+ }
1642
+ }));
1643
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, function (props) {
1644
+ var _a = props,
1645
+ channel = _a.channel,
1646
+ message = _a.message,
1647
+ publishingModules = _a.publishingModules;
1648
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url) && publishingModules.includes(useSendMultipleFilesMessage.PublishingModuleType.CHANNEL)) {
1649
+ dispatcher({
1650
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_START,
1651
+ payload: message
1652
+ });
1653
+ }
1654
+ }));
1655
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.ON_FILE_INFO_UPLOADED, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.ON_FILE_INFO_UPLOADED, function (props) {
1656
+ var _a = props,
1657
+ response = _a.response,
1658
+ publishingModules = _a.publishingModules;
1659
+ if (channelUrl === response.channelUrl && publishingModules.includes(useSendMultipleFilesMessage.PublishingModuleType.CHANNEL)) {
1660
+ dispatcher({
1661
+ type: useSendMultipleFilesMessage.ON_FILE_INFO_UPLOADED,
1662
+ payload: response
1663
+ });
1664
+ }
1665
+ }));
1666
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_FAILED, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_FAILED, function (props) {
1667
+ var _a = props,
1668
+ channel = _a.channel,
1669
+ message = _a.message,
1670
+ publishingModules = _a.publishingModules;
1671
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url) && publishingModules.includes(useSendMultipleFilesMessage.PublishingModuleType.CHANNEL)) {
1672
+ dispatcher({
1673
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_FAILURE,
1674
+ payload: message
1675
+ });
1676
+ }
1677
+ }));
1678
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, function (props) {
1679
+ var channel = props.channel,
1680
+ message = props.message;
1681
+ utils.scrollIntoLast(0, scrollRef);
1682
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1683
+ dispatcher({
1684
+ type: useSendMultipleFilesMessage.SEND_MESSAGE_SUCCESS,
1685
+ payload: message
1686
+ });
1687
+ }
1688
+ }));
1689
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, function (props) {
1690
+ var channel = props.channel,
1691
+ message = props.message,
1692
+ fromSelector = props.fromSelector;
1693
+ if (fromSelector && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1694
+ dispatcher({
1695
+ type: useSendMultipleFilesMessage.ON_MESSAGE_UPDATED,
1696
+ payload: {
1697
+ channel: channel,
1698
+ message: message
1699
+ }
1700
+ });
1701
+ }
1702
+ }));
1703
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.DELETE_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.DELETE_MESSAGE, function (props) {
1704
+ var channel = props.channel,
1705
+ messageId = props.messageId;
1706
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1707
+ dispatcher({
1708
+ type: useSendMultipleFilesMessage.ON_MESSAGE_DELETED,
1709
+ payload: messageId
1710
+ });
1711
+ }
1712
+ }));
1713
+ }
1714
+ return function () {
1715
+ subscriber.forEach(function (s) {
1716
+ try {
1717
+ s.remove();
1718
+ } catch (_a) {
1719
+ //
1720
+ }
1721
+ });
1722
+ };
1723
+ }, [channelUrl, sdkInit]);
1724
+ };
1725
+
1726
+ var ChannelContext = /*#__PURE__*/React__default["default"].createContext(undefined);
1727
+ var ChannelProvider = function (props) {
1728
+ var _a, _b, _c, _d, _e, _f;
1729
+ var channelUrl = props.channelUrl,
1730
+ children = props.children,
1731
+ isReactionEnabled = props.isReactionEnabled,
1732
+ _g = props.isMessageGroupingEnabled,
1733
+ isMessageGroupingEnabled = _g === void 0 ? true : _g,
1734
+ _h = props.isMultipleFilesMessageEnabled,
1735
+ isMultipleFilesMessageEnabled = _h === void 0 ? false : _h,
1736
+ showSearchIcon = props.showSearchIcon,
1737
+ animatedMessage = props.animatedMessage,
1738
+ highlightedMessage = props.highlightedMessage,
1739
+ startingPoint = props.startingPoint,
1740
+ onBeforeSendUserMessage = props.onBeforeSendUserMessage,
1741
+ onBeforeSendFileMessage = props.onBeforeSendFileMessage,
1742
+ onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage,
1743
+ onBeforeSendVoiceMessage = props.onBeforeSendVoiceMessage,
1744
+ onBeforeSendMultipleFilesMessage = props.onBeforeSendMultipleFilesMessage,
1745
+ onChatHeaderActionClick = props.onChatHeaderActionClick,
1746
+ onSearchClick = props.onSearchClick,
1747
+ onBackClick = props.onBackClick,
1748
+ channelReplyType = props.replyType,
1749
+ threadReplySelectType = props.threadReplySelectType,
1750
+ queries = props.queries,
1751
+ filterMessageList = props.filterMessageList,
1752
+ _j = props.disableMarkAsRead,
1753
+ disableMarkAsRead = _j === void 0 ? false : _j,
1754
+ onReplyInThread = props.onReplyInThread,
1755
+ onQuoteMessageClick = props.onQuoteMessageClick,
1756
+ onMessageAnimated = props.onMessageAnimated,
1757
+ onMessageHighlighted = props.onMessageHighlighted,
1758
+ _k = props.scrollBehavior,
1759
+ scrollBehavior = _k === void 0 ? 'auto' : _k,
1760
+ _l = props.reconnectOnIdle,
1761
+ reconnectOnIdle = _l === void 0 ? true : _l;
1762
+ var globalStore = useSendbirdStateContext.useSendbirdStateContext();
1763
+ var config = globalStore.config;
1764
+ var replyType = channelReplyType !== null && channelReplyType !== void 0 ? channelReplyType : config.replyType;
1765
+ var pubSub = config.pubSub,
1766
+ logger = config.logger,
1767
+ userId = config.userId,
1768
+ isOnline = config.isOnline,
1769
+ imageCompression = config.imageCompression,
1770
+ isMentionEnabled = config.isMentionEnabled,
1771
+ isVoiceMessageEnabled = config.isVoiceMessageEnabled,
1772
+ onUserProfileMessage = config.onUserProfileMessage,
1773
+ markAsReadScheduler = config.markAsReadScheduler,
1774
+ groupChannel = config.groupChannel;
1775
+ var sdk = (_b = (_a = globalStore === null || globalStore === void 0 ? void 0 : globalStore.stores) === null || _a === void 0 ? void 0 : _a.sdkStore) === null || _b === void 0 ? void 0 : _b.sdk;
1776
+ var sdkInit = (_d = (_c = globalStore === null || globalStore === void 0 ? void 0 : globalStore.stores) === null || _c === void 0 ? void 0 : _c.sdkStore) === null || _d === void 0 ? void 0 : _d.initialized;
1777
+ var globalConfigs = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config;
1778
+ var _m = React.useState(startingPoint),
1779
+ initialTimeStamp = _m[0],
1780
+ setInitialTimeStamp = _m[1];
1781
+ React.useEffect(function () {
1782
+ setInitialTimeStamp(startingPoint);
1783
+ }, [startingPoint, channelUrl]);
1784
+ var _o = React.useState(0),
1785
+ animatedMessageId = _o[0],
1786
+ setAnimatedMessageId = _o[1];
1787
+ var _p = React.useState(highlightedMessage),
1788
+ highLightedMessageId = _p[0],
1789
+ setHighLightedMessageId = _p[1];
1790
+ React.useEffect(function () {
1791
+ setHighLightedMessageId(highlightedMessage);
1792
+ }, [highlightedMessage]);
1793
+ var userFilledMessageListQuery = queries === null || queries === void 0 ? void 0 : queries.messageListParams;
1794
+ var _q = React.useState(null),
1795
+ quoteMessage = _q[0],
1796
+ setQuoteMessage = _q[1];
1797
+ var _r = React.useState(false),
1798
+ isScrolled = _r[0],
1799
+ setIsScrolled = _r[1];
1800
+ var _s = React.useReducer(channelReducer, initialState),
1801
+ messagesStore = _s[0],
1802
+ messagesDispatcher = _s[1];
1803
+ var scrollRef = React.useRef(null);
1804
+ var allMessages = messagesStore.allMessages,
1805
+ localMessages = messagesStore.localMessages,
1806
+ loading = messagesStore.loading,
1807
+ initialized = messagesStore.initialized,
1808
+ unreadSince = messagesStore.unreadSince,
1809
+ isInvalid = messagesStore.isInvalid,
1810
+ currentGroupChannel = messagesStore.currentGroupChannel,
1811
+ hasMorePrev = messagesStore.hasMorePrev,
1812
+ oldestMessageTimeStamp = messagesStore.oldestMessageTimeStamp,
1813
+ hasMoreNext = messagesStore.hasMoreNext,
1814
+ latestMessageTimeStamp = messagesStore.latestMessageTimeStamp,
1815
+ emojiContainer = messagesStore.emojiContainer,
1816
+ readStatus = messagesStore.readStatus;
1817
+ var isSuper = (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.isSuper) || false;
1818
+ var isBroadcast = (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.isBroadcast) || false;
1819
+ var usingReaction = getIsReactionEnabled({
1820
+ isBroadcast: isBroadcast,
1821
+ isSuper: isSuper,
1822
+ globalLevel: config === null || config === void 0 ? void 0 : config.isReactionEnabled,
1823
+ moduleLevel: isReactionEnabled
1824
+ });
1825
+ var emojiAllMap = React.useMemo(function () {
1826
+ return usingReaction ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map();
1827
+ }, [emojiContainer]);
1828
+ var nicknamesMap = React.useMemo(function () {
1829
+ return usingReaction && currentGroupChannel ? utils.getNicknamesMapFromMembers(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members) : new Map();
1830
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members]);
1831
+ // Animate message
1832
+ React.useEffect(function () {
1833
+ if (animatedMessage) {
1834
+ setAnimatedMessageId(animatedMessage);
1835
+ }
1836
+ }, [animatedMessage]);
1837
+ // Scrollup is default scroll for channel
1838
+ var onScrollCallback = useScrollCallback({
1839
+ currentGroupChannel: currentGroupChannel,
1840
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
1841
+ userFilledMessageListQuery: userFilledMessageListQuery,
1842
+ replyType: replyType
1843
+ }, {
1844
+ hasMorePrev: hasMorePrev,
1845
+ logger: logger,
1846
+ messagesDispatcher: messagesDispatcher,
1847
+ sdk: sdk
1848
+ });
1849
+ var scrollToMessage = useScrollToMessage({
1850
+ setInitialTimeStamp: setInitialTimeStamp,
1851
+ setAnimatedMessageId: setAnimatedMessageId,
1852
+ allMessages: allMessages,
1853
+ scrollRef: scrollRef
1854
+ }, {
1855
+ logger: logger
1856
+ });
1857
+ // onScrollDownCallback is added for navigation to different timestamps on messageSearch
1858
+ // hasMorePrev, onScrollCallback -> scroll up(default behavior)
1859
+ // hasMoreNext, onScrollDownCallback -> scroll down
1860
+ var onScrollDownCallback = useScrollDownCallback({
1861
+ currentGroupChannel: currentGroupChannel,
1862
+ latestMessageTimeStamp: latestMessageTimeStamp,
1863
+ userFilledMessageListQuery: userFilledMessageListQuery,
1864
+ hasMoreNext: hasMoreNext,
1865
+ replyType: replyType,
1866
+ isVoiceMessageEnabled: isVoiceMessageEnabled
1867
+ }, {
1868
+ logger: logger,
1869
+ messagesDispatcher: messagesDispatcher,
1870
+ sdk: sdk
1871
+ });
1872
+ var toggleReaction = useToggleReactionCallback({
1873
+ currentGroupChannel: currentGroupChannel
1874
+ }, {
1875
+ logger: logger
1876
+ });
1877
+ // to create message-datasource
1878
+ // this hook sets currentGroupChannel asynchronously
1879
+ useSetChannel({
1880
+ channelUrl: channelUrl,
1881
+ sdkInit: sdkInit,
1882
+ disableMarkAsRead: disableMarkAsRead
1883
+ }, {
1884
+ messagesDispatcher: messagesDispatcher,
1885
+ sdk: sdk,
1886
+ logger: logger,
1887
+ markAsReadScheduler: markAsReadScheduler
1888
+ });
1889
+ // to set quote message as null
1890
+ React.useEffect(function () {
1891
+ setQuoteMessage(null);
1892
+ }, [channelUrl]);
1893
+ // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
1894
+ useHandleChannelEvents({
1895
+ currentGroupChannel: currentGroupChannel,
1896
+ sdkInit: sdkInit,
1897
+ currentUserId: userId,
1898
+ disableMarkAsRead: disableMarkAsRead
1899
+ }, {
1900
+ messagesDispatcher: messagesDispatcher,
1901
+ sdk: sdk,
1902
+ logger: logger,
1903
+ scrollRef: scrollRef,
1904
+ setQuoteMessage: setQuoteMessage
1905
+ });
1906
+ // hook that fetches messages when channel changes
1907
+ // to be clear here useGetChannel sets currentGroupChannel
1908
+ // and useInitialMessagesFetch executes when currentGroupChannel changes
1909
+ // p.s This one executes on initialTimeStamp change too
1910
+ useInitialMessagesFetch({
1911
+ currentGroupChannel: currentGroupChannel,
1912
+ userFilledMessageListQuery: userFilledMessageListQuery,
1913
+ initialTimeStamp: initialTimeStamp,
1914
+ replyType: replyType,
1915
+ setIsScrolled: setIsScrolled
1916
+ }, {
1917
+ logger: logger,
1918
+ scrollRef: scrollRef,
1919
+ messagesDispatcher: messagesDispatcher
1920
+ });
1921
+ // handles API calls from withSendbird
1922
+ useHandleChannelPubsubEvents({
1923
+ channelUrl: channelUrl,
1924
+ sdkInit: sdkInit,
1925
+ pubSub: pubSub,
1926
+ dispatcher: messagesDispatcher,
1927
+ scrollRef: scrollRef
1928
+ });
1929
+ // handling connection breaks
1930
+ useHandleReconnect({
1931
+ isOnline: isOnline,
1932
+ replyType: replyType,
1933
+ disableMarkAsRead: disableMarkAsRead,
1934
+ reconnectOnIdle: reconnectOnIdle
1935
+ }, {
1936
+ logger: logger,
1937
+ sdk: sdk,
1938
+ scrollRef: scrollRef,
1939
+ currentGroupChannel: currentGroupChannel,
1940
+ messagesDispatcher: messagesDispatcher,
1941
+ userFilledMessageListQuery: userFilledMessageListQuery,
1942
+ markAsReadScheduler: markAsReadScheduler
1943
+ });
1944
+ // callbacks for Message CURD actions
1945
+ var deleteMessage = useDeleteMessageCallback({
1946
+ currentGroupChannel: currentGroupChannel,
1947
+ messagesDispatcher: messagesDispatcher
1948
+ }, {
1949
+ logger: logger
1950
+ });
1951
+ var updateMessage = useUpdateMessageCallback({
1952
+ currentGroupChannel: currentGroupChannel,
1953
+ messagesDispatcher: messagesDispatcher,
1954
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage,
1955
+ isMentionEnabled: isMentionEnabled
1956
+ }, {
1957
+ logger: logger,
1958
+ pubSub: pubSub
1959
+ });
1960
+ var resendMessage = useResendMessageCallback({
1961
+ currentGroupChannel: currentGroupChannel,
1962
+ messagesDispatcher: messagesDispatcher
1963
+ }, {
1964
+ logger: logger
1965
+ });
1966
+ var _t = useSendMessageCallback({
1967
+ currentGroupChannel: currentGroupChannel,
1968
+ isMentionEnabled: isMentionEnabled,
1969
+ onBeforeSendUserMessage: onBeforeSendUserMessage
1970
+ }, {
1971
+ logger: logger,
1972
+ pubSub: pubSub,
1973
+ scrollRef: scrollRef,
1974
+ messagesDispatcher: messagesDispatcher
1975
+ }),
1976
+ messageInputRef = _t[0],
1977
+ sendMessage = _t[1];
1978
+ var sendFileMessage = useSendFileMessageCallback({
1979
+ currentGroupChannel: currentGroupChannel,
1980
+ imageCompression: imageCompression,
1981
+ onBeforeSendFileMessage: onBeforeSendFileMessage
1982
+ }, {
1983
+ logger: logger,
1984
+ pubSub: pubSub,
1985
+ scrollRef: scrollRef,
1986
+ messagesDispatcher: messagesDispatcher
1987
+ })[0];
1988
+ var sendVoiceMessage = useSendVoiceMessageCallback({
1989
+ currentGroupChannel: currentGroupChannel,
1990
+ onBeforeSendVoiceMessage: onBeforeSendVoiceMessage
1991
+ }, {
1992
+ logger: logger,
1993
+ pubSub: pubSub,
1994
+ scrollRef: scrollRef,
1995
+ messagesDispatcher: messagesDispatcher
1996
+ })[0];
1997
+ var sendMultipleFilesMessage = useSendMultipleFilesMessage.useSendMultipleFilesMessage({
1998
+ currentChannel: currentGroupChannel,
1999
+ onBeforeSendMultipleFilesMessage: onBeforeSendMultipleFilesMessage,
2000
+ publishingModules: [useSendMultipleFilesMessage.PublishingModuleType.CHANNEL]
2001
+ }, {
2002
+ logger: logger,
2003
+ pubSub: pubSub,
2004
+ scrollRef: scrollRef
2005
+ })[0];
2006
+ return /*#__PURE__*/React__default["default"].createElement(ChannelContext.Provider, {
2007
+ value: {
2008
+ // props
2009
+ channelUrl: channelUrl,
2010
+ isReactionEnabled: usingReaction,
2011
+ isMessageGroupingEnabled: isMessageGroupingEnabled,
2012
+ isMultipleFilesMessageEnabled: isMultipleFilesMessageEnabled,
2013
+ showSearchIcon: showSearchIcon !== null && showSearchIcon !== void 0 ? showSearchIcon : globalConfigs.showSearchIcon,
2014
+ highlightedMessage: highlightedMessage,
2015
+ startingPoint: startingPoint,
2016
+ onBeforeSendUserMessage: onBeforeSendUserMessage,
2017
+ onBeforeSendFileMessage: onBeforeSendFileMessage,
2018
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage,
2019
+ onChatHeaderActionClick: onChatHeaderActionClick,
2020
+ onSearchClick: onSearchClick,
2021
+ onBackClick: onBackClick,
2022
+ replyType: replyType,
2023
+ threadReplySelectType: (_e = threadReplySelectType !== null && threadReplySelectType !== void 0 ? threadReplySelectType : resolvedReplyType.getCaseResolvedThreadReplySelectType(groupChannel.threadReplySelectType).upperCase) !== null && _e !== void 0 ? _e : _const.ThreadReplySelectType.THREAD,
2024
+ queries: queries,
2025
+ filterMessageList: filterMessageList,
2026
+ disableMarkAsRead: disableMarkAsRead,
2027
+ onReplyInThread: onReplyInThread,
2028
+ onQuoteMessageClick: onQuoteMessageClick,
2029
+ onMessageAnimated: onMessageAnimated,
2030
+ onMessageHighlighted: onMessageHighlighted,
2031
+ // messagesStore
2032
+ allMessages: allMessages,
2033
+ localMessages: localMessages,
2034
+ loading: loading,
2035
+ initialized: initialized,
2036
+ unreadSince: unreadSince,
2037
+ isInvalid: isInvalid,
2038
+ currentGroupChannel: currentGroupChannel,
2039
+ hasMorePrev: hasMorePrev,
2040
+ hasMoreNext: hasMoreNext,
2041
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
2042
+ latestMessageTimeStamp: latestMessageTimeStamp,
2043
+ emojiContainer: emojiContainer,
2044
+ readStatus: readStatus,
2045
+ // utils
2046
+ scrollToMessage: scrollToMessage,
2047
+ quoteMessage: quoteMessage,
2048
+ setQuoteMessage: setQuoteMessage,
2049
+ deleteMessage: deleteMessage,
2050
+ updateMessage: updateMessage,
2051
+ resendMessage: resendMessage,
2052
+ messageInputRef: messageInputRef,
2053
+ sendMessage: sendMessage,
2054
+ sendFileMessage: sendFileMessage,
2055
+ sendVoiceMessage: sendVoiceMessage,
2056
+ sendMultipleFilesMessage: sendMultipleFilesMessage,
2057
+ initialTimeStamp: initialTimeStamp,
2058
+ messageActionTypes: useSendMultipleFilesMessage.channelActions,
2059
+ messagesDispatcher: messagesDispatcher,
2060
+ setInitialTimeStamp: setInitialTimeStamp,
2061
+ setAnimatedMessageId: setAnimatedMessageId,
2062
+ setHighLightedMessageId: setHighLightedMessageId,
2063
+ animatedMessageId: animatedMessageId,
2064
+ highLightedMessageId: highLightedMessageId,
2065
+ nicknamesMap: nicknamesMap,
2066
+ emojiAllMap: emojiAllMap,
2067
+ onScrollCallback: onScrollCallback,
2068
+ onScrollDownCallback: onScrollDownCallback,
2069
+ scrollRef: scrollRef,
2070
+ scrollBehavior: scrollBehavior,
2071
+ toggleReaction: toggleReaction,
2072
+ isScrolled: isScrolled,
2073
+ setIsScrolled: setIsScrolled
2074
+ }
2075
+ }, /*#__PURE__*/React__default["default"].createElement(UserProfileContext.UserProfileProvider, {
2076
+ disableUserProfile: (_f = props === null || props === void 0 ? void 0 : props.disableUserProfile) !== null && _f !== void 0 ? _f : config === null || config === void 0 ? void 0 : config.disableUserProfile,
2077
+ renderUserProfile: props === null || props === void 0 ? void 0 : props.renderUserProfile,
2078
+ onUserProfileMessage: onUserProfileMessage
2079
+ }, children));
2080
+ };
2081
+ var useChannelContext = function () {
2082
+ return React__default["default"].useContext(ChannelContext);
2083
+ };
2084
+
2085
+ exports.ChannelProvider = ChannelProvider;
2086
+ exports.getIsReactionEnabled = getIsReactionEnabled;
2087
+ exports.useChannelContext = useChannelContext;
2088
+ //# sourceMappingURL=ChannelProvider-7fa98120.js.map