@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
@@ -1,1933 +0,0 @@
1
- import React__default, { useEffect, useState, useCallback, useRef, useReducer, useMemo } from 'react';
2
- import { U as UserProfileProvider } from './UserProfileContext-4ae968eb.js';
3
- import useSendbirdStateContext from './useSendbirdStateContext.js';
4
- import { N as NEXT_RESULT_SIZE, P as PREV_RESULT_SIZE, T as ThreadReplySelectType } from './const-711048c3.js';
5
- import { M as MESSAGE_LIST_PARAMS_CHANGED, O as ON_REACTION_UPDATED, S as SET_EMOJI_CONTAINER, a as ON_MESSAGE_DELETED_BY_REQ_ID, b as ON_MESSAGE_DELETED, c as MARK_AS_READ, R as RESEND_MESSAGE_START, d as ON_MESSAGE_THREAD_INFO_UPDATED, e as ON_MESSAGE_UPDATED, f as ON_MESSAGE_RECEIVED, p as passUnsuccessfullMessages, g as SET_CHANNEL_INVALID, h as SET_CURRENT_CHANNEL, i as SEND_MESSAGE_FAILURE, j as SEND_MESSAGE_SUCESS, k as SEND_MESSAGE_START, F as FETCH_NEXT_MESSAGES_FAILURE, l as FETCH_PREV_MESSAGES_FAILURE, m as FETCH_INITIAL_MESSAGES_FAILURE, n as FETCH_NEXT_MESSAGES_SUCCESS, o as mergeAndSortMessages, q as FETCH_PREV_MESSAGES_SUCCESS, r as FETCH_INITIAL_MESSAGES_SUCCESS, s as FETCH_INITIAL_MESSAGES_START, t as RESET_MESSAGES, u as scrollIntoLast, v as scrollToRenderedMessage, w as pxToNumber, x as getAllEmojisMapFromEmojiContainer, y as getNicknamesMapFromMembers, z as pubSubHandler, A as pubSubHandleRemover, B as messageActionTypes } from './utils-0c22998a.js';
6
- import { _ as _objectSpread2 } from './_rollupPluginBabelHelpers-50c9576f.js';
7
- import { f as format } from './index-daa3ae67.js';
8
- import { c as compareIds } from './compareIds-8ed6e36a.js';
9
- import { a as getSendingMessageStatus, b as filterMessageListParams, c as isMultipleFilesMessage } from './index-5d6a0f12.js';
10
- import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
11
- import { u as uuidv4 } from './uuid-16373bba.js';
12
- import { ReplyType, MessageMetaArray } from '@sendbird/chat/message';
13
- import { P as PUBSUB_TOPICS } from './topics-5659403d.js';
14
- import { c as VOICE_MESSAGE_FILE_NAME, d as VOICE_MESSAGE_MIME_TYPE, M as META_ARRAY_VOICE_DURATION_KEY, e as META_ARRAY_MESSAGE_TYPE_KEY, f as META_ARRAY_MESSAGE_TYPE_VALUE__VOICE } from './consts-691a3935.js';
15
- import { a as getCaseResolvedThreadReplySelectType } from './resolvedReplyType-1a128514.js';
16
- import { u as useSendMultipleFilesMessage } from './useSendMultipleFilesMessage-a3a2c84b.js';
17
-
18
- /**
19
- * This function helps consider the every condition
20
- * related to enabling emoji reaction feature.
21
- */
22
-
23
- function getIsReactionEnabled(_ref) {
24
- let {
25
- isBroadcast = false,
26
- isSuper = false,
27
- globalLevel = true,
28
- moduleLevel
29
- } = _ref;
30
- return !(isBroadcast || isSuper) && (moduleLevel !== null && moduleLevel !== void 0 ? moduleLevel : globalLevel);
31
- }
32
-
33
- var messagesInitialState = {
34
- initialized: false,
35
- loading: true,
36
- allMessages: [],
37
- /**
38
- * localMessages: pending & failed messages
39
- */
40
- localMessages: [],
41
- currentGroupChannel: {
42
- members: []
43
- },
44
- // for scrollup
45
- hasMorePrev: false,
46
- oldestMessageTimeStamp: 0,
47
- // for scroll down
48
- // onScrollDownCallback is added for navigation to different timestamps on messageSearch
49
- // hasMorePrev, onScrollCallback -> scroll up(default behavior)
50
- // hasMoreNext, onScrollDownCallback -> scroll down
51
- hasMoreNext: false,
52
- latestMessageTimeStamp: 0,
53
- emojiContainer: {},
54
- unreadSince: null,
55
- /**
56
- * unreadSince is a formatted date information string
57
- * It's used only for the {unreadSince && <UnreadCount time={unreadSince} />}
58
- */
59
- isInvalid: false,
60
- messageListParams: null
61
- };
62
-
63
- const {
64
- SUCCEEDED
65
- } = getSendingMessageStatus();
66
- const getOldestMessageTimeStamp = function () {
67
- let messages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
68
- const oldestMessage = messages[0];
69
- return oldestMessage && oldestMessage.createdAt || null;
70
- };
71
- const getLatestMessageTimeStamp = function () {
72
- let messages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
73
- const latestMessage = messages[messages.length - 1];
74
- return latestMessage && latestMessage.createdAt || null;
75
- };
76
- function reducer(state, action) {
77
- var _state$currentGroupCh7, _action$payload, _action$payload$chann;
78
- switch (action.type) {
79
- case RESET_MESSAGES:
80
- return _objectSpread2(_objectSpread2({}, state), {}, {
81
- // when user switches channel, if the previous channel `hasMorePrev`
82
- // the onScroll gets called twice, setting hasMorePrev false prevents this
83
- hasMorePrev: false,
84
- hasMoreNext: false,
85
- allMessages: []
86
- });
87
- case FETCH_INITIAL_MESSAGES_START:
88
- {
89
- return _objectSpread2(_objectSpread2({}, state), {}, {
90
- loading: true,
91
- allMessages: [...state.allMessages.filter(m => m.sendingStatus !== SUCCEEDED)]
92
- });
93
- }
94
- case FETCH_INITIAL_MESSAGES_SUCCESS:
95
- {
96
- var _state$currentGroupCh;
97
- const {
98
- currentGroupChannel,
99
- messages
100
- } = action.payload;
101
- if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_state$currentGroupCh = state.currentGroupChannel) === null || _state$currentGroupCh === void 0 ? void 0 : _state$currentGroupCh.url))) {
102
- return state;
103
- }
104
- const oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
105
- const latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
106
- return _objectSpread2(_objectSpread2({}, state), {}, {
107
- loading: false,
108
- initialized: true,
109
- hasMorePrev: true,
110
- hasMoreNext: true,
111
- oldestMessageTimeStamp,
112
- latestMessageTimeStamp,
113
- allMessages: [...messages]
114
- });
115
- }
116
- case FETCH_PREV_MESSAGES_SUCCESS:
117
- {
118
- var _state$currentGroupCh2, _messages$length, _state$messageListPar, _state$messageListPar2;
119
- const {
120
- currentGroupChannel,
121
- messages
122
- } = action.payload;
123
- if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_state$currentGroupCh2 = state.currentGroupChannel) === null || _state$currentGroupCh2 === void 0 ? void 0 : _state$currentGroupCh2.url))) {
124
- return state;
125
- }
126
- const hasMorePrev = ((_messages$length = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _messages$length !== void 0 ? _messages$length : 0) >= ((_state$messageListPar = state === null || state === void 0 ? void 0 : (_state$messageListPar2 = state.messageListParams) === null || _state$messageListPar2 === void 0 ? void 0 : _state$messageListPar2.prevResultSize) !== null && _state$messageListPar !== void 0 ? _state$messageListPar : PREV_RESULT_SIZE) + 1;
127
- const oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
128
-
129
- // Remove duplicated messages
130
- const duplicatedMessageIds = [];
131
- const updatedOldMessages = state.allMessages.map(msg => {
132
- const duplicatedMessage = messages.find(_ref => {
133
- let {
134
- messageId
135
- } = _ref;
136
- return compareIds(messageId, msg.messageId);
137
- });
138
- if (!duplicatedMessage) {
139
- return msg;
140
- }
141
- duplicatedMessageIds.push(duplicatedMessage.messageId);
142
- return duplicatedMessage.updatedAt > msg.updatedAt ? duplicatedMessage : msg;
143
- });
144
- const filteredNewMessages = duplicatedMessageIds.length > 0 ? messages.filter(msg => !duplicatedMessageIds.find(messageId => compareIds(messageId, msg.messageId))) : messages;
145
- return _objectSpread2(_objectSpread2({}, state), {}, {
146
- hasMorePrev,
147
- oldestMessageTimeStamp,
148
- allMessages: [...filteredNewMessages, ...updatedOldMessages]
149
- });
150
- }
151
- case FETCH_NEXT_MESSAGES_SUCCESS:
152
- {
153
- var _state$currentGroupCh3, _messages$length2, _state$messageListPar3, _state$messageListPar4;
154
- const {
155
- currentGroupChannel,
156
- messages
157
- } = action.payload;
158
- if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_state$currentGroupCh3 = state.currentGroupChannel) === null || _state$currentGroupCh3 === void 0 ? void 0 : _state$currentGroupCh3.url))) {
159
- return state;
160
- }
161
- const hasMoreNext = ((_messages$length2 = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _messages$length2 !== void 0 ? _messages$length2 : 0) === ((_state$messageListPar3 = state === null || state === void 0 ? void 0 : (_state$messageListPar4 = state.messageListParams) === null || _state$messageListPar4 === void 0 ? void 0 : _state$messageListPar4.nextResultSize) !== null && _state$messageListPar3 !== void 0 ? _state$messageListPar3 : NEXT_RESULT_SIZE) + 1;
162
- const latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
163
-
164
- // sort ~
165
- const sortedMessages = mergeAndSortMessages(state.allMessages, messages);
166
- return _objectSpread2(_objectSpread2({}, state), {}, {
167
- hasMoreNext,
168
- latestMessageTimeStamp,
169
- allMessages: sortedMessages
170
- });
171
- }
172
- case FETCH_INITIAL_MESSAGES_FAILURE:
173
- case FETCH_PREV_MESSAGES_FAILURE:
174
- case FETCH_NEXT_MESSAGES_FAILURE:
175
- {
176
- var _state$currentGroupCh4;
177
- const {
178
- currentGroupChannel
179
- } = action.payload;
180
- if ((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) !== (state === null || state === void 0 ? void 0 : (_state$currentGroupCh4 = state.currentGroupChannel) === null || _state$currentGroupCh4 === void 0 ? void 0 : _state$currentGroupCh4.url)) {
181
- return state;
182
- }
183
- return _objectSpread2(_objectSpread2({}, state), {}, {
184
- loading: false,
185
- initialized: false,
186
- allMessages: [],
187
- hasMorePrev: false,
188
- hasMoreNext: false,
189
- oldestMessageTimeStamp: null,
190
- latestMessageTimeStamp: null
191
- });
192
- }
193
- case SEND_MESSAGE_START:
194
- // Message should not be spread here
195
- // it will loose some methods like `isUserMessage`
196
- return _objectSpread2(_objectSpread2({}, state), {}, {
197
- localMessages: [...state.localMessages, action.payload]
198
- });
199
- case SEND_MESSAGE_SUCESS:
200
- {
201
- const message = action.payload;
202
- const filteredMessages = state.allMessages.filter(m => (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId));
203
- // [Policy] Pending messages and failed messages
204
- // must always be at the end of the message list
205
- return _objectSpread2(_objectSpread2({}, state), {}, {
206
- allMessages: [...filteredMessages, message],
207
- localMessages: state.localMessages.filter(m => (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId))
208
- });
209
- }
210
- case SEND_MESSAGE_FAILURE:
211
- {
212
- // eslint-disable-next-line no-param-reassign
213
- action.payload.failed = true;
214
- return _objectSpread2(_objectSpread2({}, state), {}, {
215
- localMessages: state.localMessages.map(m => compareIds(m.reqId, action.payload.reqId) ? action.payload : m)
216
- });
217
- }
218
- case SET_CURRENT_CHANNEL:
219
- {
220
- return _objectSpread2(_objectSpread2({}, state), {}, {
221
- currentGroupChannel: action.payload,
222
- isInvalid: false
223
- });
224
- }
225
- case SET_CHANNEL_INVALID:
226
- {
227
- return _objectSpread2(_objectSpread2({}, state), {}, {
228
- currentGroupChannel: null,
229
- isInvalid: true
230
- });
231
- }
232
- case ON_MESSAGE_RECEIVED:
233
- {
234
- const {
235
- channel,
236
- message
237
- } = action.payload;
238
- const {
239
- members
240
- } = channel;
241
- const {
242
- sender
243
- } = message;
244
- const {
245
- currentGroupChannel = {},
246
- unreadSince
247
- } = state;
248
- const currentGroupChannelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
249
- if (!compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
250
- return state;
251
- }
252
- // Excluded overlapping messages
253
- if (state.allMessages.some(msg => msg.messageId === message.messageId)) {
254
- return state;
255
- }
256
- // Filter by userFilledQuery
257
- if (state.messageListParams && !filterMessageListParams(state.messageListParams, message)) {
258
- return state;
259
- }
260
- if (message.isAdminMessage && message.isAdminMessage()) {
261
- return _objectSpread2(_objectSpread2({}, state), {}, {
262
- allMessages: passUnsuccessfullMessages(state.allMessages, message)
263
- });
264
- }
265
-
266
- // Update members when sender profileUrl, nickname, friendName has been changed
267
- const senderMember = members === null || members === void 0 ? void 0 : members.find(m => (m === null || m === void 0 ? void 0 : m.userId) === (sender === null || sender === void 0 ? void 0 : sender.userId));
268
- 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)) {
269
- channel.members = members.map(member => {
270
- if (member.userId === sender.userId) {
271
- return sender;
272
- }
273
- return member;
274
- });
275
- }
276
- return _objectSpread2(_objectSpread2({}, state), {}, {
277
- currentGroupChannel: channel,
278
- unreadSince: state !== null && state !== void 0 && state.unreadSince ? unreadSince : format(new Date(), 'p MMM dd'),
279
- allMessages: passUnsuccessfullMessages(state.allMessages, message)
280
- });
281
- }
282
- case ON_MESSAGE_UPDATED:
283
- {
284
- var _state$currentGroupCh5;
285
- const {
286
- channel,
287
- message
288
- } = action.payload;
289
- const currentGroupChannelUrl = (state === null || state === void 0 ? void 0 : (_state$currentGroupCh5 = state.currentGroupChannel) === null || _state$currentGroupCh5 === void 0 ? void 0 : _state$currentGroupCh5.url) || '';
290
- if (!compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
291
- return state; // Ignore event when it is not for the current channel
292
- }
293
-
294
- if (state.messageListParams && !filterMessageListParams(state.messageListParams, message)) {
295
- // Delete the message if it doesn't match to the params anymore
296
- return _objectSpread2(_objectSpread2({}, state), {}, {
297
- allMessages: state.allMessages.filter(m => !compareIds(m.messageId, message === null || message === void 0 ? void 0 : message.messageId))
298
- });
299
- }
300
- return _objectSpread2(_objectSpread2({}, state), {}, {
301
- allMessages: state.allMessages.map(m => {
302
- if (compareIds(m.messageId, message.messageId)) {
303
- return message;
304
- }
305
- if (compareIds(m.parentMessageId, message.messageId)) {
306
- m.parentMessage = message; // eslint-disable-line no-param-reassign
307
- }
308
-
309
- return m;
310
- })
311
- });
312
- }
313
- case ON_MESSAGE_THREAD_INFO_UPDATED:
314
- {
315
- var _state$currentGroupCh6;
316
- const {
317
- channel,
318
- event
319
- } = action.payload;
320
- const {
321
- channelUrl,
322
- threadInfo,
323
- targetMessageId
324
- } = event;
325
- const currentGroupChannelUrl = (state === null || state === void 0 ? void 0 : (_state$currentGroupCh6 = state.currentGroupChannel) === null || _state$currentGroupCh6 === void 0 ? void 0 : _state$currentGroupCh6.url) || '';
326
- if (!compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl) || !compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
327
- return state; // Ignore event when it is not for the current channel
328
- }
329
-
330
- return _objectSpread2(_objectSpread2({}, state), {}, {
331
- allMessages: state.allMessages.map(m => {
332
- if (compareIds(m.messageId, targetMessageId)) {
333
- // eslint-disable-next-line no-param-reassign
334
- m.threadInfo = threadInfo; // Upsert threadInfo to the target message
335
- }
336
-
337
- return m;
338
- })
339
- });
340
- }
341
- case RESEND_MESSAGE_START:
342
- return _objectSpread2(_objectSpread2({}, state), {}, {
343
- allMessages: state.allMessages.map(m => compareIds(m.reqId, action.payload.reqId) ? action.payload : m)
344
- });
345
- case MARK_AS_READ:
346
- if (((_state$currentGroupCh7 = state.currentGroupChannel) === null || _state$currentGroupCh7 === void 0 ? void 0 : _state$currentGroupCh7.url) !== ((_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$chann = _action$payload.channel) === null || _action$payload$chann === void 0 ? void 0 : _action$payload$chann.url)) {
347
- return state;
348
- }
349
- return _objectSpread2(_objectSpread2({}, state), {}, {
350
- unreadSince: null
351
- });
352
- case ON_MESSAGE_DELETED:
353
- return _objectSpread2(_objectSpread2({}, state), {}, {
354
- allMessages: state.allMessages.filter(m => !compareIds(m.messageId, action.payload))
355
- });
356
- case ON_MESSAGE_DELETED_BY_REQ_ID:
357
- return _objectSpread2(_objectSpread2({}, state), {}, {
358
- allMessages: state.allMessages.filter(m => !compareIds(m.reqId, action.payload))
359
- });
360
- case SET_EMOJI_CONTAINER:
361
- {
362
- return _objectSpread2(_objectSpread2({}, state), {}, {
363
- emojiContainer: action.payload
364
- });
365
- }
366
- case ON_REACTION_UPDATED:
367
- {
368
- return _objectSpread2(_objectSpread2({}, state), {}, {
369
- allMessages: state.allMessages.map(m => {
370
- if (compareIds(m.messageId, action.payload.messageId)) {
371
- if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
372
- m.applyReactionEvent(action.payload);
373
- }
374
- return m;
375
- }
376
- return m;
377
- })
378
- });
379
- }
380
- case MESSAGE_LIST_PARAMS_CHANGED:
381
- {
382
- return _objectSpread2(_objectSpread2({}, state), {}, {
383
- messageListParams: action.payload
384
- });
385
- }
386
- default:
387
- return state;
388
- }
389
- }
390
-
391
- /**
392
- * Handles ChannelEvents and send values to dispatcher using messagesDispatcher
393
- * messagesDispatcher: Dispatcher
394
- * sdk: sdkInstance
395
- * logger: loggerInstance
396
- * channelUrl: string
397
- * sdkInit: bool
398
- */
399
-
400
- const DELIVERY_RECIPT = 'delivery_receipt';
401
- function useHandleChannelEvents(_ref, _ref2) {
402
- var _store$stores$sdkStor, _store$stores$sdkStor2, _store$stores$sdkStor3;
403
- let {
404
- sdkInit,
405
- currentUserId,
406
- currentGroupChannel,
407
- disableMarkAsRead
408
- } = _ref;
409
- let {
410
- sdk,
411
- logger,
412
- scrollRef,
413
- setQuoteMessage,
414
- messagesDispatcher
415
- } = _ref2;
416
- const store = useSendbirdStateContext();
417
- const {
418
- markAsReadScheduler,
419
- markAsDeliveredScheduler,
420
- disableMarkAsDelivered
421
- } = store.config;
422
- const canSetMarkAsDelivered = (_store$stores$sdkStor = store.stores.sdkStore.sdk) === null || _store$stores$sdkStor === void 0 ? void 0 : (_store$stores$sdkStor2 = _store$stores$sdkStor.appInfo) === null || _store$stores$sdkStor2 === void 0 ? void 0 : (_store$stores$sdkStor3 = _store$stores$sdkStor2.premiumFeatureList) === null || _store$stores$sdkStor3 === void 0 ? void 0 : _store$stores$sdkStor3.find(feature => feature === DELIVERY_RECIPT);
423
- useEffect(() => {
424
- const channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
425
- const channelHandlerId = uuidv4();
426
- if (channelUrl && sdkInit) {
427
- var _sdk$groupChannel;
428
- const channelHandler = {
429
- onMessageReceived: (channel, message) => {
430
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
431
- var _document$getElementB, _document$getElementB2;
432
- let scrollToEnd = false;
433
- try {
434
- const {
435
- current
436
- } = scrollRef;
437
- scrollToEnd = current.offsetHeight + current.scrollTop >= current.scrollHeight - 10;
438
- // 10 is a buffer
439
- } catch (error) {
440
- //
441
- }
442
- logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
443
- messagesDispatcher({
444
- type: ON_MESSAGE_RECEIVED,
445
- payload: {
446
- channel,
447
- message
448
- }
449
- });
450
- if (scrollToEnd && ((_document$getElementB = document.getElementById('sendbird-dropdown-portal')) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.childElementCount) === 0 && ((_document$getElementB2 = document.getElementById('sendbird-emoji-list-portal')) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.childElementCount) === 0) {
451
- // and !openContextMenu
452
- try {
453
- setTimeout(() => {
454
- scrollIntoLast(0, scrollRef);
455
- });
456
- if (!disableMarkAsRead) {
457
- markAsReadScheduler.push(currentGroupChannel);
458
- }
459
- if (canSetMarkAsDelivered && !disableMarkAsDelivered) {
460
- markAsDeliveredScheduler.push(currentGroupChannel);
461
- }
462
- } catch (error) {
463
- logger.warning('Channel | onMessageReceived | scroll to end failed');
464
- }
465
- }
466
- }
467
- },
468
- onUnreadMemberStatusUpdated: channel => {
469
- logger.info('Channel | useHandleChannelEvents: onUnreadMemberStatusUpdated', channel);
470
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
471
- messagesDispatcher({
472
- type: SET_CURRENT_CHANNEL,
473
- payload: channel
474
- });
475
- }
476
- },
477
- // before(onDeliveryReceiptUpdated)
478
- onUndeliveredMemberStatusUpdated: channel => {
479
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
480
- logger.info('Channel | useHandleChannelEvents: onDeliveryReceiptUpdated', channel);
481
- messagesDispatcher({
482
- type: SET_CURRENT_CHANNEL,
483
- payload: channel
484
- });
485
- }
486
- },
487
- onMessageUpdated: (channel, message) => {
488
- logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
489
- messagesDispatcher({
490
- type: ON_MESSAGE_UPDATED,
491
- payload: {
492
- channel,
493
- message
494
- }
495
- });
496
- },
497
- onThreadInfoUpdated: (channel, threadInfoUpdateEvent) => {
498
- logger.info('Channel | useHandleChannelEvents: onThreadInfoUpdated', {
499
- channel,
500
- threadInfoUpdateEvent
501
- });
502
- messagesDispatcher({
503
- type: ON_MESSAGE_THREAD_INFO_UPDATED,
504
- payload: {
505
- channel,
506
- event: threadInfoUpdateEvent
507
- }
508
- });
509
- },
510
- onMessageDeleted: (channel, messageId) => {
511
- logger.info('Channel | useHandleChannelEvents: onMessageDeleted', {
512
- channel,
513
- messageId
514
- });
515
- setQuoteMessage(null);
516
- messagesDispatcher({
517
- type: ON_MESSAGE_DELETED,
518
- payload: messageId
519
- });
520
- },
521
- onReactionUpdated: (channel, reactionEvent) => {
522
- logger.info('Channel | useHandleChannelEvents: onReactionUpdated', {
523
- channel,
524
- reactionEvent
525
- });
526
- messagesDispatcher({
527
- type: ON_REACTION_UPDATED,
528
- payload: reactionEvent
529
- });
530
- },
531
- onChannelChanged: channel => {
532
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
533
- logger.info('Channel | useHandleChannelEvents: onChannelChanged', channel);
534
- messagesDispatcher({
535
- type: SET_CURRENT_CHANNEL,
536
- payload: channel
537
- });
538
- }
539
- },
540
- onChannelFrozen: channel => {
541
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
542
- logger.info('Channel | useHandleChannelEvents: onChannelFrozen', channel);
543
- messagesDispatcher({
544
- type: SET_CURRENT_CHANNEL,
545
- payload: channel
546
- });
547
- }
548
- },
549
- onChannelUnfrozen: channel => {
550
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
551
- logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', channel);
552
- messagesDispatcher({
553
- type: SET_CURRENT_CHANNEL,
554
- payload: channel
555
- });
556
- }
557
- },
558
- onUserMuted: (channel, user) => {
559
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
560
- logger.info('Channel | useHandleChannelEvents: onUserMuted', {
561
- channel,
562
- user
563
- });
564
- messagesDispatcher({
565
- type: SET_CURRENT_CHANNEL,
566
- payload: channel
567
- });
568
- }
569
- },
570
- onUserUnmuted: (channel, user) => {
571
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
572
- logger.info('Channel | useHandleChannelEvents: onUserUnmuted', {
573
- channel,
574
- user
575
- });
576
- messagesDispatcher({
577
- type: SET_CURRENT_CHANNEL,
578
- payload: channel
579
- });
580
- }
581
- },
582
- onUserBanned: (channel, user) => {
583
- var _sdk$currentUser;
584
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl) && (user === null || user === void 0 ? void 0 : user.userId) === (sdk === null || sdk === void 0 ? void 0 : (_sdk$currentUser = sdk.currentUser) === null || _sdk$currentUser === void 0 ? void 0 : _sdk$currentUser.userId)) {
585
- logger.info('Channel | useHandleChannelEvents: onUserBanned', {
586
- channel,
587
- user
588
- });
589
- messagesDispatcher({
590
- type: SET_CURRENT_CHANNEL,
591
- payload: null
592
- });
593
- }
594
- },
595
- onOperatorUpdated: (channel, users) => {
596
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
597
- logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', {
598
- channel,
599
- users
600
- });
601
- messagesDispatcher({
602
- type: SET_CURRENT_CHANNEL,
603
- payload: channel
604
- });
605
- }
606
- },
607
- onUserLeft: (channel, user) => {
608
- if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
609
- logger.info('Channel | useHandleChannelEvents: onUserLeft', {
610
- channel,
611
- user
612
- });
613
- if ((user === null || user === void 0 ? void 0 : user.userId) === currentUserId) {
614
- messagesDispatcher({
615
- type: SET_CURRENT_CHANNEL,
616
- payload: null
617
- });
618
- }
619
- }
620
- }
621
- };
622
- logger.info('Channel | useHandleChannelEvents: Setup event handler', {
623
- channelHandlerId,
624
- channelHandler
625
- });
626
- // Add this group channel handler to the Sendbird chat instance
627
- (_sdk$groupChannel = sdk.groupChannel) === null || _sdk$groupChannel === void 0 ? void 0 : _sdk$groupChannel.addGroupChannelHandler(channelHandlerId, new GroupChannelHandler(channelHandler));
628
- }
629
- return () => {
630
- var _sdk$groupChannel2;
631
- if (sdk !== null && sdk !== void 0 && (_sdk$groupChannel2 = sdk.groupChannel) !== null && _sdk$groupChannel2 !== void 0 && _sdk$groupChannel2.removeGroupChannelHandler) {
632
- logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', channelHandlerId);
633
- sdk.groupChannel.removeGroupChannelHandler(channelHandlerId);
634
- } else if (sdk !== null && sdk !== void 0 && sdk.groupChannel) {
635
- logger.error('Channel | useHandleChannelEvents: Not found the removeGroupChannelHandler');
636
- }
637
- };
638
- }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, sdkInit]);
639
- }
640
-
641
- function useSetChannel(_ref, _ref2) {
642
- let {
643
- channelUrl,
644
- sdkInit,
645
- disableMarkAsRead
646
- } = _ref;
647
- let {
648
- messagesDispatcher,
649
- sdk,
650
- logger,
651
- markAsReadScheduler
652
- } = _ref2;
653
- useEffect(() => {
654
- if (channelUrl && sdkInit && sdk && sdk.groupChannel) {
655
- logger.info('Channel | useSetChannel fetching channel', channelUrl);
656
- sdk.groupChannel.getChannel(channelUrl).then(groupChannel => {
657
- logger.info('Channel | useSetChannel fetched channel', groupChannel);
658
- messagesDispatcher({
659
- type: SET_CURRENT_CHANNEL,
660
- payload: groupChannel
661
- });
662
- logger.info('Channel: Mark as read', groupChannel);
663
- if (!disableMarkAsRead) {
664
- markAsReadScheduler.push(groupChannel);
665
- }
666
- }).catch(e => {
667
- logger.warning('Channel | useSetChannel fetch channel failed', {
668
- channelUrl,
669
- e
670
- });
671
- messagesDispatcher({
672
- type: SET_CHANNEL_INVALID
673
- });
674
- });
675
- sdk.getAllEmoji().then(emojiContainer_ => {
676
- logger.info('Channel: Getting emojis success', emojiContainer_);
677
- messagesDispatcher({
678
- type: SET_EMOJI_CONTAINER,
679
- payload: emojiContainer_
680
- });
681
- }).catch(err => {
682
- logger.error('Channel: Getting emojis failed', err);
683
- });
684
- }
685
- }, [channelUrl, sdkInit]);
686
- }
687
-
688
- function useInitialMessagesFetch(_ref, _ref2) {
689
- let {
690
- currentGroupChannel,
691
- userFilledMessageListQuery,
692
- initialTimeStamp,
693
- replyType,
694
- setIsScrolled
695
- } = _ref;
696
- let {
697
- logger,
698
- scrollRef,
699
- messagesDispatcher
700
- } = _ref2;
701
- const channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
702
- useEffect(() => {
703
- logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
704
- setIsScrolled(false);
705
- messagesDispatcher({
706
- type: RESET_MESSAGES,
707
- payload: null
708
- });
709
- if (currentGroupChannel && currentGroupChannel !== null && currentGroupChannel !== void 0 && currentGroupChannel.getMessagesByTimestamp) {
710
- const messageListParams = {};
711
- messageListParams.prevResultSize = PREV_RESULT_SIZE;
712
- if (initialTimeStamp) {
713
- messageListParams.nextResultSize = NEXT_RESULT_SIZE;
714
- }
715
- messageListParams.isInclusive = true;
716
- messageListParams.includeReactions = true;
717
- messageListParams.includeMetaArray = true;
718
- if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD')) {
719
- messageListParams.includeThreadInfo = true;
720
- messageListParams.includeParentMessageInfo = true;
721
- messageListParams.replyType = ReplyType.ONLY_REPLY_TO_CHANNEL;
722
- }
723
- if (userFilledMessageListQuery) {
724
- Object.keys(userFilledMessageListQuery).forEach(key => {
725
- messageListParams[key] = userFilledMessageListQuery[key];
726
- });
727
- }
728
- if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') || userFilledMessageListQuery) {
729
- logger.info('Channel useInitialMessagesFetch: Setup messageListParams', messageListParams);
730
- messagesDispatcher({
731
- type: MESSAGE_LIST_PARAMS_CHANGED,
732
- payload: messageListParams
733
- });
734
- }
735
- logger.info('Channel: Fetching messages', {
736
- currentGroupChannel,
737
- userFilledMessageListQuery
738
- });
739
- messagesDispatcher({
740
- type: FETCH_INITIAL_MESSAGES_START,
741
- payload: null
742
- });
743
- currentGroupChannel.getMessagesByTimestamp(initialTimeStamp || new Date().getTime(), messageListParams).then(messages => {
744
- messagesDispatcher({
745
- type: FETCH_INITIAL_MESSAGES_SUCCESS,
746
- payload: {
747
- currentGroupChannel,
748
- messages
749
- }
750
- });
751
- }).catch(error => {
752
- logger.error('Channel: Fetching messages failed', error);
753
- messagesDispatcher({
754
- type: FETCH_INITIAL_MESSAGES_FAILURE,
755
- payload: {
756
- currentGroupChannel
757
- }
758
- });
759
- }).finally(() => {
760
- if (!initialTimeStamp) {
761
- setTimeout(() => scrollIntoLast(0, scrollRef, setIsScrolled));
762
- } else {
763
- setTimeout(() => {
764
- scrollToRenderedMessage(scrollRef, initialTimeStamp, setIsScrolled);
765
- }, 500);
766
- }
767
- });
768
- }
769
- }, [channelUrl, userFilledMessageListQuery, initialTimeStamp]);
770
- /**
771
- * Note - useEffect(() => {}, [currentGroupChannel])
772
- * was buggy, that is why we did
773
- * const channelUrl = currentGroupChannel && currentGroupChannel.url;
774
- * useEffect(() => {}, [channelUrl])
775
- * Again, this hook is supposed to execute when currentGroupChannel changes
776
- * The 'channelUrl' here is not the same memory reference from Conversation.props
777
- */
778
- }
779
-
780
- function useReconnectOnIdle(isOnline, currentGroupChannel) {
781
- let reconnectOnIdle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
782
- const [isTabHidden, setIsTabHidden] = useState(false);
783
- const wasOffline = !isOnline;
784
- useEffect(() => {
785
- const handleVisibilityChange = () => {
786
- if (reconnectOnIdle) {
787
- setIsTabHidden(document.hidden);
788
- }
789
- };
790
- document.addEventListener('visibilitychange', handleVisibilityChange);
791
- return () => {
792
- document.removeEventListener('visibilitychange', handleVisibilityChange);
793
- };
794
- }, [reconnectOnIdle, document.hidden]);
795
- const shouldReconnect = wasOffline && (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) != null && !isTabHidden;
796
- return {
797
- shouldReconnect
798
- };
799
- }
800
-
801
- function useHandleReconnect(_ref, _ref2) {
802
- let {
803
- isOnline,
804
- replyType,
805
- disableMarkAsRead,
806
- reconnectOnIdle
807
- } = _ref;
808
- let {
809
- logger,
810
- sdk,
811
- scrollRef,
812
- currentGroupChannel,
813
- messagesDispatcher,
814
- markAsReadScheduler,
815
- userFilledMessageListQuery
816
- } = _ref2;
817
- const {
818
- shouldReconnect
819
- } = useReconnectOnIdle(isOnline, currentGroupChannel, reconnectOnIdle);
820
- useEffect(() => {
821
- return () => {
822
- // state changed from offline to online AND tab is visible
823
- if (shouldReconnect) {
824
- var _sdk$appInfo, _sdk$groupChannel;
825
- logger.info('Refreshing conversation state');
826
- const isReactionEnabled = (sdk === null || sdk === void 0 ? void 0 : (_sdk$appInfo = sdk.appInfo) === null || _sdk$appInfo === void 0 ? void 0 : _sdk$appInfo.useReaction) || false;
827
- const messageListParams = {
828
- prevResultSize: PREV_RESULT_SIZE,
829
- isInclusive: true,
830
- includeReactions: isReactionEnabled,
831
- nextResultSize: NEXT_RESULT_SIZE
832
- };
833
- if (replyType && replyType === 'QUOTE_REPLY') {
834
- messageListParams.includeThreadInfo = true;
835
- messageListParams.includeParentMessageInfo = true;
836
- messageListParams.replyType = ReplyType.ONLY_REPLY_TO_CHANNEL;
837
- }
838
- if (userFilledMessageListQuery) {
839
- Object.keys(userFilledMessageListQuery).forEach(key => {
840
- messageListParams[key] = userFilledMessageListQuery[key];
841
- });
842
- }
843
- logger.info('Channel: Fetching messages', {
844
- currentGroupChannel,
845
- userFilledMessageListQuery
846
- });
847
- messagesDispatcher({
848
- type: FETCH_INITIAL_MESSAGES_START,
849
- payload: null
850
- });
851
- sdk === null || sdk === void 0 ? void 0 : (_sdk$groupChannel = sdk.groupChannel) === null || _sdk$groupChannel === void 0 ? void 0 : _sdk$groupChannel.getChannel(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url).then(groupChannel => {
852
- const lastMessageTime = new Date().getTime();
853
- groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams).then(messages => {
854
- messagesDispatcher({
855
- type: FETCH_INITIAL_MESSAGES_SUCCESS,
856
- payload: {
857
- currentGroupChannel,
858
- messages
859
- }
860
- });
861
- setTimeout(() => scrollIntoLast(0, scrollRef));
862
- }).catch(error => {
863
- logger.error('Channel: Fetching messages failed', error);
864
- messagesDispatcher({
865
- type: FETCH_INITIAL_MESSAGES_FAILURE,
866
- payload: {
867
- currentGroupChannel
868
- }
869
- });
870
- });
871
- if (!disableMarkAsRead) {
872
- markAsReadScheduler.push(currentGroupChannel);
873
- }
874
- });
875
- }
876
- };
877
- }, [shouldReconnect, replyType]);
878
- }
879
-
880
- function useScrollCallback(_ref, _ref2) {
881
- let {
882
- currentGroupChannel,
883
- oldestMessageTimeStamp,
884
- userFilledMessageListQuery,
885
- replyType
886
- } = _ref;
887
- let {
888
- hasMorePrev,
889
- logger,
890
- messagesDispatcher,
891
- sdk
892
- } = _ref2;
893
- return useCallback(cb => {
894
- if (!hasMorePrev) {
895
- return;
896
- }
897
- const {
898
- appInfo = {}
899
- } = sdk;
900
- const isReactionEnabled = appInfo.useReaction || false;
901
- const messageListParams = {
902
- prevResultSize: PREV_RESULT_SIZE,
903
- isInclusive: true,
904
- includeReactions: isReactionEnabled
905
- };
906
- messageListParams.includeMetaArray = true;
907
- if (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') {
908
- messageListParams.includeThreadInfo = true;
909
- messageListParams.includeParentMessageInfo = true;
910
- messageListParams.replyType = ReplyType.ONLY_REPLY_TO_CHANNEL;
911
- }
912
- if (userFilledMessageListQuery) {
913
- Object.keys(userFilledMessageListQuery).forEach(key => {
914
- messageListParams[key] = userFilledMessageListQuery[key];
915
- });
916
- }
917
- logger.info('Channel: Fetching messages', {
918
- currentGroupChannel,
919
- userFilledMessageListQuery
920
- });
921
- currentGroupChannel.getMessagesByTimestamp(oldestMessageTimeStamp || new Date().getTime(), messageListParams).then(messages => {
922
- messagesDispatcher({
923
- type: FETCH_PREV_MESSAGES_SUCCESS,
924
- payload: {
925
- currentGroupChannel,
926
- messages
927
- }
928
- });
929
- cb([messages, null]);
930
- }).catch(error => {
931
- logger.error('Channel: Fetching messages failed', error);
932
- messagesDispatcher({
933
- type: FETCH_PREV_MESSAGES_FAILURE,
934
- payload: {
935
- currentGroupChannel
936
- }
937
- });
938
- cb([null, error]);
939
- });
940
- }, [currentGroupChannel, oldestMessageTimeStamp, replyType]);
941
- }
942
-
943
- function useScrollDownCallback(_ref, _ref2) {
944
- let {
945
- currentGroupChannel,
946
- latestMessageTimeStamp,
947
- userFilledMessageListQuery,
948
- hasMoreNext,
949
- replyType
950
- } = _ref;
951
- let {
952
- logger,
953
- messagesDispatcher,
954
- sdk
955
- } = _ref2;
956
- return useCallback(cb => {
957
- if (!hasMoreNext) {
958
- return;
959
- }
960
- const {
961
- appInfo = {}
962
- } = sdk;
963
- const isReactionEnabled = appInfo.useReaction || false;
964
- const messageListParams = {
965
- nextResultSize: NEXT_RESULT_SIZE,
966
- isInclusive: true,
967
- includeReactions: isReactionEnabled
968
- };
969
- messageListParams.includeMetaArray = true;
970
- if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD')) {
971
- messageListParams.includeThreadInfo = true;
972
- messageListParams.includeParentMessageInfo = true;
973
- messageListParams.replyType = ReplyType.ONLY_REPLY_TO_CHANNEL;
974
- }
975
- if (userFilledMessageListQuery) {
976
- Object.keys(userFilledMessageListQuery).forEach(key => {
977
- messageListParams[key] = userFilledMessageListQuery[key];
978
- });
979
- }
980
- logger.info('Channel: Fetching later messages', {
981
- currentGroupChannel,
982
- userFilledMessageListQuery
983
- });
984
- currentGroupChannel.getMessagesByTimestamp(latestMessageTimeStamp || new Date().getTime(), messageListParams).then(messages => {
985
- messagesDispatcher({
986
- type: FETCH_NEXT_MESSAGES_SUCCESS,
987
- payload: {
988
- currentGroupChannel,
989
- messages
990
- }
991
- });
992
- cb([messages, null]);
993
- }).catch(error => {
994
- logger.error('Channel: Fetching later messages failed', error);
995
- messagesDispatcher({
996
- type: FETCH_NEXT_MESSAGES_FAILURE,
997
- payload: {
998
- currentGroupChannel
999
- }
1000
- });
1001
- cb([null, error]);
1002
- });
1003
- }, [currentGroupChannel, latestMessageTimeStamp, hasMoreNext, replyType]);
1004
- }
1005
-
1006
- function useDeleteMessageCallback(_ref, _ref2) {
1007
- let {
1008
- currentGroupChannel,
1009
- messagesDispatcher
1010
- } = _ref;
1011
- let {
1012
- logger
1013
- } = _ref2;
1014
- return useCallback(message => {
1015
- logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
1016
- const {
1017
- requestState
1018
- } = message;
1019
- return new Promise((resolve, reject) => {
1020
- logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState);
1021
- // Message is only on local
1022
- if (requestState === 'failed' || requestState === 'pending') {
1023
- logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
1024
- messagesDispatcher({
1025
- type: ON_MESSAGE_DELETED_BY_REQ_ID,
1026
- payload: message.reqId
1027
- });
1028
- resolve(message);
1029
- }
1030
- logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);
1031
- currentGroupChannel.deleteMessage(message).then(() => {
1032
- logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
1033
- messagesDispatcher({
1034
- type: ON_MESSAGE_DELETED,
1035
- payload: message.messageId
1036
- });
1037
- resolve(message);
1038
- }).catch(err => {
1039
- logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
1040
- reject(err);
1041
- });
1042
- });
1043
- }, [currentGroupChannel, messagesDispatcher]);
1044
- }
1045
-
1046
- function useUpdateMessageCallback(_ref, _ref2) {
1047
- let {
1048
- currentGroupChannel,
1049
- messagesDispatcher,
1050
- onBeforeUpdateUserMessage,
1051
- isMentionEnabled
1052
- } = _ref;
1053
- let {
1054
- logger,
1055
- pubSub
1056
- } = _ref2;
1057
- return useCallback((props, callback) => {
1058
- const {
1059
- messageId,
1060
- message,
1061
- mentionedUsers,
1062
- mentionTemplate
1063
- } = props;
1064
- const createParamsDefault = () => {
1065
- const params = {};
1066
- params.message = message;
1067
- if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1068
- params.mentionedUsers = mentionedUsers;
1069
- }
1070
- if (isMentionEnabled && mentionTemplate) {
1071
- params.mentionedMessageTemplate = mentionTemplate;
1072
- } else {
1073
- params.mentionedMessageTemplate = message;
1074
- }
1075
- return params;
1076
- };
1077
- const createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
1078
- if (createCustomPrams) {
1079
- logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
1080
- }
1081
- const params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(message) : createParamsDefault();
1082
- logger.info('Channel: Updating message!', params);
1083
- currentGroupChannel.updateUserMessage(messageId, params).then((msg, err) => {
1084
- if (callback) {
1085
- callback(err, msg);
1086
- }
1087
- logger.info('Channel: Updating message success!', msg);
1088
- messagesDispatcher({
1089
- type: ON_MESSAGE_UPDATED,
1090
- payload: {
1091
- channel: currentGroupChannel,
1092
- message: msg
1093
- }
1094
- });
1095
- pubSub.publish(PUBSUB_TOPICS.UPDATE_USER_MESSAGE, {
1096
- message: msg,
1097
- channel: currentGroupChannel
1098
- });
1099
- });
1100
- }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
1101
- }
1102
-
1103
- function useResendMessageCallback(_ref, _ref2) {
1104
- let {
1105
- currentGroupChannel,
1106
- messagesDispatcher
1107
- } = _ref;
1108
- let {
1109
- logger
1110
- } = _ref2;
1111
- return useCallback(failedMessage => {
1112
- logger.info('Channel: Resending message has started', failedMessage);
1113
- const {
1114
- messageType,
1115
- file
1116
- } = failedMessage;
1117
- if (failedMessage !== null && failedMessage !== void 0 && failedMessage.isResendable) {
1118
- // Move the logic setting sendingStatus to pending into the reducer
1119
- // eslint-disable-next-line no-param-reassign
1120
- failedMessage.requestState = 'pending';
1121
- // eslint-disable-next-line no-param-reassign
1122
- failedMessage.sendingStatus = 'pending';
1123
- messagesDispatcher({
1124
- type: RESEND_MESSAGE_START,
1125
- payload: failedMessage
1126
- });
1127
-
1128
- // userMessage
1129
- if (messageType === 'user') {
1130
- currentGroupChannel.resendUserMessage(failedMessage).then(message => {
1131
- logger.info('Channel: Resending message success!', message);
1132
- messagesDispatcher({
1133
- type: SEND_MESSAGE_SUCESS,
1134
- payload: message
1135
- });
1136
- }).catch(e => {
1137
- logger.warning('Channel: Resending message failed!', e);
1138
- // eslint-disable-next-line no-param-reassign
1139
- failedMessage.requestState = 'failed';
1140
- // eslint-disable-next-line no-param-reassign
1141
- failedMessage.sendingStatus = 'failed';
1142
- messagesDispatcher({
1143
- type: SEND_MESSAGE_FAILURE,
1144
- payload: failedMessage
1145
- });
1146
- });
1147
-
1148
- // eslint-disable-next-line no-param-reassign
1149
- failedMessage.requestState = 'pending';
1150
- // eslint-disable-next-line no-param-reassign
1151
- failedMessage.sendingStatus = 'pending';
1152
- messagesDispatcher({
1153
- type: RESEND_MESSAGE_START,
1154
- payload: failedMessage
1155
- });
1156
- return;
1157
- }
1158
- if (messageType === 'file') {
1159
- currentGroupChannel.resendFileMessage(failedMessage, file).then(message => {
1160
- logger.info('Channel: Resending file message success!', message);
1161
- messagesDispatcher({
1162
- type: SEND_MESSAGE_SUCESS,
1163
- payload: message
1164
- });
1165
- }).catch(e => {
1166
- logger.warning('Channel: Resending file message failed!', e);
1167
- // eslint-disable-next-line no-param-reassign
1168
- failedMessage.requestState = 'failed';
1169
- // eslint-disable-next-line no-param-reassign
1170
- failedMessage.sendingStatus = 'failed';
1171
- messagesDispatcher({
1172
- type: SEND_MESSAGE_FAILURE,
1173
- payload: failedMessage
1174
- });
1175
- });
1176
-
1177
- // eslint-disable-next-line no-param-reassign
1178
- failedMessage.requestState = 'pending';
1179
- // eslint-disable-next-line no-param-reassign
1180
- failedMessage.sendingStatus = 'pending';
1181
- messagesDispatcher({
1182
- type: RESEND_MESSAGE_START,
1183
- payload: failedMessage
1184
- });
1185
- }
1186
- if (isMultipleFilesMessage(failedMessage)) {
1187
- currentGroupChannel.resendMessage(failedMessage).onPending(message => {
1188
- messagesDispatcher({
1189
- type: RESEND_MESSAGE_START,
1190
- payload: message
1191
- });
1192
- })
1193
- // TODO: Handle on file info upload event.
1194
- .onSucceeded(message => {
1195
- logger.info('Channel: Resending multiple files message success!', message);
1196
- messagesDispatcher({
1197
- type: SEND_MESSAGE_SUCESS,
1198
- payload: message
1199
- });
1200
- }).onFailed((e, message) => {
1201
- logger.warning('Channel: Resending multiple files message failed!', e);
1202
- messagesDispatcher({
1203
- type: SEND_MESSAGE_FAILURE,
1204
- payload: message
1205
- });
1206
- });
1207
- }
1208
- } else {
1209
- // to alert user on console
1210
- // eslint-disable-next-line no-console
1211
- console.error('Message is not resendable');
1212
- logger.warning('Message is not resendable', failedMessage);
1213
- }
1214
- }, [currentGroupChannel, messagesDispatcher]);
1215
- }
1216
-
1217
- function useSendMessageCallback(_ref, _ref2) {
1218
- let {
1219
- isMentionEnabled,
1220
- currentGroupChannel,
1221
- onBeforeSendUserMessage
1222
- } = _ref;
1223
- let {
1224
- logger,
1225
- pubSub,
1226
- scrollRef,
1227
- messagesDispatcher
1228
- } = _ref2;
1229
- const messageInputRef = useRef(null);
1230
- const sendMessage = useCallback(props => {
1231
- const {
1232
- quoteMessage = null,
1233
- message,
1234
- mentionTemplate,
1235
- // mentionedUserIds,
1236
- mentionedUsers
1237
- } = props;
1238
- const createParamsDefault = () => {
1239
- const params = {};
1240
- params.message = message;
1241
- // if (isMentionEnabled && mentionedUserIds?.length > 0) {
1242
- if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1243
- // params.mentionedUserIds = mentionedUserIds;
1244
- params.mentionedUsers = mentionedUsers;
1245
- }
1246
- // if (isMentionEnabled && mentionTemplate && mentionedUserIds?.length > 0) {
1247
- if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1248
- params.mentionedMessageTemplate = mentionTemplate;
1249
- }
1250
- if (quoteMessage) {
1251
- params.isReplyToChannel = true;
1252
- params.parentMessageId = quoteMessage.messageId;
1253
- }
1254
- return params;
1255
- };
1256
- const createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
1257
- if (createCustomPrams) {
1258
- logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
1259
- }
1260
- const params = onBeforeSendUserMessage ? onBeforeSendUserMessage(message, quoteMessage) : createParamsDefault();
1261
- logger.info('Channel: Sending message has started', params);
1262
- currentGroupChannel.sendUserMessage(params).onPending(pendingMsg => {
1263
- pubSub.publish(PUBSUB_TOPICS.SEND_MESSAGE_START, {
1264
- /* pubSub is used instead of messagesDispatcher
1265
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1266
- message: pendingMsg,
1267
- channel: currentGroupChannel
1268
- });
1269
- setTimeout(() => scrollIntoLast(0, scrollRef));
1270
- }).onFailed((err, msg) => {
1271
- logger.warning('Channel: Sending message failed!', {
1272
- message: msg,
1273
- error: err
1274
- });
1275
- messagesDispatcher({
1276
- type: SEND_MESSAGE_FAILURE,
1277
- payload: msg
1278
- });
1279
- }).onSucceeded(msg => {
1280
- logger.info('Channel: Sending message success!', msg);
1281
- messagesDispatcher({
1282
- type: SEND_MESSAGE_SUCESS,
1283
- payload: msg
1284
- });
1285
- });
1286
- }, [currentGroupChannel, onBeforeSendUserMessage]);
1287
- return [messageInputRef, sendMessage];
1288
- }
1289
-
1290
- function useSendFileMessageCallback(_ref, _ref2) {
1291
- let {
1292
- currentGroupChannel,
1293
- onBeforeSendFileMessage,
1294
- imageCompression = {}
1295
- } = _ref;
1296
- let {
1297
- logger,
1298
- pubSub,
1299
- scrollRef,
1300
- messagesDispatcher
1301
- } = _ref2;
1302
- const sendMessage = useCallback(function (file) {
1303
- let quoteMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1304
- const {
1305
- compressionRate,
1306
- resizingWidth,
1307
- resizingHeight
1308
- } = imageCompression;
1309
- const createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
1310
- const compressibleFileType = file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg';
1311
- const compressibleRatio = compressionRate > 0 && compressionRate < 1;
1312
- // pxToNumber returns null if values are invalid
1313
- const compressibleDiamensions = pxToNumber(resizingWidth) || pxToNumber(resizingHeight);
1314
- const canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);
1315
- const createParamsDefault = file_ => {
1316
- const params = {};
1317
- params.file = file_;
1318
- if (quoteMessage) {
1319
- params.isReplyToChannel = true;
1320
- params.parentMessageId = quoteMessage.messageId;
1321
- }
1322
- return params;
1323
- };
1324
- if (canCompressImage) {
1325
- // Using image compression
1326
- try {
1327
- const image = document.createElement('img');
1328
- image.src = URL.createObjectURL(file);
1329
- image.onload = () => {
1330
- URL.revokeObjectURL(image.src);
1331
- const canvas = document.createElement('canvas');
1332
- const imageWdith = image.naturalWidth || image.width;
1333
- const imageHeight = image.naturalHeight || image.height;
1334
- let targetWidth = pxToNumber(resizingWidth) || imageWdith;
1335
- let targetHeight = pxToNumber(resizingHeight) || imageHeight;
1336
-
1337
- // In canvas.toBlob(callback, mimeType, qualityArgument)
1338
- // qualityArgument doesnt work
1339
- // so in case compressibleDiamensions are not present, we use ratio
1340
- if (file.type === 'image/png' && !compressibleDiamensions) {
1341
- targetWidth *= compressionRate;
1342
- targetHeight *= compressionRate;
1343
- }
1344
- canvas.width = targetWidth;
1345
- canvas.height = targetHeight;
1346
- const context = canvas.getContext('2d');
1347
- context.drawImage(image, 0, 0, targetWidth, targetHeight);
1348
- context.canvas.toBlob(newImageBlob => {
1349
- const compressedFile = new File([newImageBlob], file.name, {
1350
- type: file.type
1351
- });
1352
- if (createCustomParams) {
1353
- logger.info('Channel: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1354
- }
1355
- const params = createCustomParams ? onBeforeSendFileMessage(compressedFile, quoteMessage) : createParamsDefault(compressedFile);
1356
- logger.info('Channel: Uploading file message start!', params);
1357
- currentGroupChannel.sendFileMessage(params).onPending(pendingMessage => {
1358
- pubSub.publish(PUBSUB_TOPICS.SEND_MESSAGE_START, {
1359
- /* pubSub is used instead of messagesDispatcher
1360
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1361
- message: _objectSpread2(_objectSpread2({}, pendingMessage), {}, {
1362
- url: URL.createObjectURL(compressedFile),
1363
- // pending thumbnail message seems to be failed
1364
- requestState: 'pending'
1365
- }),
1366
- channel: currentGroupChannel
1367
- });
1368
- setTimeout(() => scrollIntoLast(0, scrollRef), 1000);
1369
- }).onFailed((err, failedMessage) => {
1370
- logger.error('Channel: Sending file message failed!', {
1371
- failedMessage,
1372
- err
1373
- });
1374
- // eslint-disable-next-line no-param-reassign
1375
- failedMessage.localUrl = URL.createObjectURL(compressedFile);
1376
- // eslint-disable-next-line no-param-reassign
1377
- failedMessage.file = compressedFile;
1378
- messagesDispatcher({
1379
- type: SEND_MESSAGE_FAILURE,
1380
- payload: failedMessage
1381
- });
1382
- }).onSucceeded(succeededMessage => {
1383
- logger.info('Channel: Sending file message success!', succeededMessage);
1384
- messagesDispatcher({
1385
- type: SEND_MESSAGE_SUCESS,
1386
- payload: succeededMessage
1387
- });
1388
- });
1389
- }, file.type, compressionRate);
1390
- };
1391
- } catch (error) {
1392
- logger.error('Channel: Sending file message failed!', error);
1393
- }
1394
- } else {
1395
- // Not using image compression
1396
- if (createCustomParams) {
1397
- logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1398
- }
1399
- const params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file, quoteMessage) : createParamsDefault(file);
1400
- logger.info('Channel: Uploading file message start!', params);
1401
- currentGroupChannel.sendFileMessage(params).onPending(pendingMsg => {
1402
- pubSub.publish(PUBSUB_TOPICS.SEND_MESSAGE_START, {
1403
- /* pubSub is used instead of messagesDispatcher
1404
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1405
- message: _objectSpread2(_objectSpread2({}, pendingMsg), {}, {
1406
- url: URL.createObjectURL(file),
1407
- // pending thumbnail message seems to be failed
1408
- requestState: 'pending'
1409
- }),
1410
- channel: currentGroupChannel
1411
- });
1412
- setTimeout(() => scrollIntoLast(0, scrollRef), 1000);
1413
- }).onFailed((error, message) => {
1414
- logger.error('Channel: Sending file message failed!', {
1415
- message,
1416
- error
1417
- });
1418
- // eslint-disable-next-line no-param-reassign
1419
- message.localUrl = URL.createObjectURL(file);
1420
- // eslint-disable-next-line no-param-reassign
1421
- message.file = file;
1422
- messagesDispatcher({
1423
- type: SEND_MESSAGE_FAILURE,
1424
- payload: message
1425
- });
1426
- }).onSucceeded(message => {
1427
- logger.info('Channel: Sending message success!', message);
1428
- messagesDispatcher({
1429
- type: SEND_MESSAGE_SUCESS,
1430
- payload: message
1431
- });
1432
- });
1433
- }
1434
- }, [currentGroupChannel, onBeforeSendFileMessage, imageCompression]);
1435
- return [sendMessage];
1436
- }
1437
-
1438
- function useToggleReactionCallback(_ref, _ref2) {
1439
- let {
1440
- currentGroupChannel
1441
- } = _ref;
1442
- let {
1443
- logger
1444
- } = _ref2;
1445
- return useCallback((message, key, isReacted) => {
1446
- if (isReacted) {
1447
- currentGroupChannel.deleteReaction(message, key).then(res => {
1448
- logger.info('Delete reaction success', res);
1449
- }).catch(err => {
1450
- logger.warning('Delete reaction failed', err);
1451
- });
1452
- return;
1453
- }
1454
- currentGroupChannel.addReaction(message, key).then(res => {
1455
- logger.info('Add reaction success', res);
1456
- }).catch(err => {
1457
- logger.warning('Add reaction failed', err);
1458
- });
1459
- }, [currentGroupChannel]);
1460
- }
1461
-
1462
- // To prevent multiple clicks on the message in the channel while scrolling
1463
- function deactivateClick(scrollRef) {
1464
- const element = scrollRef.current;
1465
- const parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1466
- if (element && parentNode) {
1467
- element.style.pointerEvents = 'none';
1468
- parentNode.style.cursor = 'wait';
1469
- }
1470
- }
1471
- function activateClick(scrollRef) {
1472
- const element = scrollRef.current;
1473
- const parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1474
- if (element && parentNode) {
1475
- element.style.pointerEvents = 'auto';
1476
- parentNode.style.cursor = 'auto';
1477
- }
1478
- }
1479
- function useScrollToMessage(_ref, _ref2) {
1480
- let {
1481
- setInitialTimeStamp,
1482
- setAnimatedMessageId,
1483
- allMessages,
1484
- scrollRef
1485
- } = _ref;
1486
- let {
1487
- logger
1488
- } = _ref2;
1489
- return useCallback((createdAt, messageId) => {
1490
- const isPresent = allMessages.find(m => m.messageId === messageId);
1491
- setAnimatedMessageId(null);
1492
- setTimeout(() => {
1493
- try {
1494
- logger.info('Channel: scroll to message - disabling mouse events');
1495
- deactivateClick(scrollRef);
1496
- if (isPresent) {
1497
- logger.info('Channel: scroll to message - message is present');
1498
- setAnimatedMessageId(messageId);
1499
- scrollToRenderedMessage(scrollRef, createdAt);
1500
- } else {
1501
- logger.info('Channel: scroll to message - fetching older messages');
1502
- setInitialTimeStamp(null);
1503
- setInitialTimeStamp(createdAt);
1504
- setAnimatedMessageId(messageId);
1505
- }
1506
- } finally {
1507
- logger.info('Channel: scroll to message - enabled mouse events');
1508
- activateClick(scrollRef);
1509
- }
1510
- });
1511
- }, [setInitialTimeStamp, setAnimatedMessageId, allMessages]);
1512
- }
1513
-
1514
- const useSendVoiceMessageCallback = (_ref, _ref2) => {
1515
- let {
1516
- currentGroupChannel,
1517
- onBeforeSendVoiceMessage
1518
- } = _ref;
1519
- let {
1520
- logger,
1521
- pubSub,
1522
- scrollRef,
1523
- messagesDispatcher
1524
- } = _ref2;
1525
- const sendMessage = useCallback((file, duration, quoteMessage) => {
1526
- if (!currentGroupChannel) {
1527
- return;
1528
- }
1529
- const messageParams = onBeforeSendVoiceMessage && typeof onBeforeSendVoiceMessage === 'function' ? onBeforeSendVoiceMessage(file, quoteMessage) : {
1530
- file,
1531
- fileName: VOICE_MESSAGE_FILE_NAME,
1532
- mimeType: VOICE_MESSAGE_MIME_TYPE,
1533
- metaArrays: [new MessageMetaArray({
1534
- key: META_ARRAY_VOICE_DURATION_KEY,
1535
- value: [`${duration}`]
1536
- }), new MessageMetaArray({
1537
- key: META_ARRAY_MESSAGE_TYPE_KEY,
1538
- value: [META_ARRAY_MESSAGE_TYPE_VALUE__VOICE]
1539
- })]
1540
- };
1541
- if (quoteMessage) {
1542
- messageParams.isReplyToChannel = true;
1543
- messageParams.parentMessageId = quoteMessage.messageId;
1544
- }
1545
- logger.info('Channel: Start sending voice message', messageParams);
1546
- currentGroupChannel.sendFileMessage(messageParams).onPending(pendingMessage => {
1547
- pubSub.publish(PUBSUB_TOPICS.SEND_MESSAGE_START, {
1548
- /* pubSub is used instead of messagesDispatcher
1549
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1550
- message: pendingMessage,
1551
- channel: currentGroupChannel
1552
- });
1553
- setTimeout(() => scrollIntoLast(0, scrollRef), 1000);
1554
- }).onFailed((err, failedMessage) => {
1555
- logger.error('Channel: Sending voice message failed!', {
1556
- failedMessage,
1557
- err
1558
- });
1559
- messagesDispatcher({
1560
- type: SEND_MESSAGE_FAILURE,
1561
- payload: failedMessage
1562
- });
1563
- }).onSucceeded(succeededMessage => {
1564
- logger.info('Channel: Sending voice message success!', succeededMessage);
1565
- messagesDispatcher({
1566
- type: SEND_MESSAGE_SUCESS,
1567
- payload: succeededMessage
1568
- });
1569
- });
1570
- }, [currentGroupChannel, onBeforeSendVoiceMessage]);
1571
- return [sendMessage];
1572
- };
1573
-
1574
- const ChannelContext = /*#__PURE__*/React__default.createContext(undefined);
1575
- const ChannelProvider = props => {
1576
- var _globalStore$stores, _globalStore$stores$s, _globalStore$stores2, _globalStore$stores2$, _ref, _props$disableUserPro;
1577
- const {
1578
- channelUrl,
1579
- children,
1580
- isReactionEnabled,
1581
- isMessageGroupingEnabled = true,
1582
- isMultipleFilesMessageEnabled = false,
1583
- showSearchIcon,
1584
- animatedMessage,
1585
- highlightedMessage,
1586
- startingPoint,
1587
- onBeforeSendUserMessage,
1588
- onBeforeSendFileMessage,
1589
- onBeforeUpdateUserMessage,
1590
- onBeforeSendVoiceMessage,
1591
- onBeforeSendMultipleFilesMessage,
1592
- onChatHeaderActionClick,
1593
- onSearchClick,
1594
- onBackClick,
1595
- replyType: channelReplyType,
1596
- threadReplySelectType,
1597
- queries,
1598
- filterMessageList,
1599
- disableMarkAsRead = false,
1600
- onReplyInThread,
1601
- onQuoteMessageClick,
1602
- onMessageAnimated,
1603
- onMessageHighlighted,
1604
- scrollBehavior = 'auto',
1605
- reconnectOnIdle = true
1606
- } = props;
1607
- const globalStore = useSendbirdStateContext();
1608
- const {
1609
- config
1610
- } = globalStore;
1611
- const replyType = channelReplyType !== null && channelReplyType !== void 0 ? channelReplyType : config.replyType;
1612
- const {
1613
- pubSub,
1614
- logger,
1615
- userId,
1616
- isOnline,
1617
- imageCompression,
1618
- isMentionEnabled,
1619
- isVoiceMessageEnabled,
1620
- onUserProfileMessage,
1621
- markAsReadScheduler,
1622
- groupChannel
1623
- } = config;
1624
- const sdk = globalStore === null || globalStore === void 0 ? void 0 : (_globalStore$stores = globalStore.stores) === null || _globalStore$stores === void 0 ? void 0 : (_globalStore$stores$s = _globalStore$stores.sdkStore) === null || _globalStore$stores$s === void 0 ? void 0 : _globalStore$stores$s.sdk;
1625
- const sdkInit = globalStore === null || globalStore === void 0 ? void 0 : (_globalStore$stores2 = globalStore.stores) === null || _globalStore$stores2 === void 0 ? void 0 : (_globalStore$stores2$ = _globalStore$stores2.sdkStore) === null || _globalStore$stores2$ === void 0 ? void 0 : _globalStore$stores2$.initialized;
1626
- const globalConfigs = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config;
1627
- const [initialTimeStamp, setInitialTimeStamp] = useState(startingPoint);
1628
- useEffect(() => {
1629
- setInitialTimeStamp(startingPoint);
1630
- }, [startingPoint, channelUrl]);
1631
- const [animatedMessageId, setAnimatedMessageId] = useState(0);
1632
- const [highLightedMessageId, setHighLightedMessageId] = useState(highlightedMessage);
1633
- useEffect(() => {
1634
- setHighLightedMessageId(highlightedMessage);
1635
- }, [highlightedMessage]);
1636
- const userFilledMessageListQuery = queries === null || queries === void 0 ? void 0 : queries.messageListParams;
1637
- const [quoteMessage, setQuoteMessage] = useState(null);
1638
- const [isScrolled, setIsScrolled] = useState(false);
1639
- const [messagesStore, messagesDispatcher] = useReducer(reducer, messagesInitialState);
1640
- const scrollRef = useRef(null);
1641
- const {
1642
- allMessages,
1643
- localMessages,
1644
- loading,
1645
- initialized,
1646
- unreadSince,
1647
- isInvalid,
1648
- currentGroupChannel,
1649
- hasMorePrev,
1650
- oldestMessageTimeStamp,
1651
- hasMoreNext,
1652
- latestMessageTimeStamp,
1653
- emojiContainer,
1654
- readStatus
1655
- } = messagesStore;
1656
- const isSuper = (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.isSuper) || false;
1657
- const isBroadcast = (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.isBroadcast) || false;
1658
- const usingReaction = getIsReactionEnabled({
1659
- isBroadcast,
1660
- isSuper,
1661
- globalLevel: config === null || config === void 0 ? void 0 : config.isReactionEnabled,
1662
- moduleLevel: isReactionEnabled
1663
- });
1664
- const emojiAllMap = useMemo(() => usingReaction ? getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map(), [emojiContainer]);
1665
- const nicknamesMap = useMemo(() => usingReaction && currentGroupChannel ? getNicknamesMapFromMembers(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members) : new Map(), [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members]);
1666
-
1667
- // Animate message
1668
- useEffect(() => {
1669
- if (animatedMessage) {
1670
- setAnimatedMessageId(animatedMessage);
1671
- }
1672
- }, [animatedMessage]);
1673
-
1674
- // Scrollup is default scroll for channel
1675
- const onScrollCallback = useScrollCallback({
1676
- currentGroupChannel,
1677
- oldestMessageTimeStamp,
1678
- userFilledMessageListQuery,
1679
- replyType,
1680
- isVoiceMessageEnabled
1681
- }, {
1682
- hasMorePrev,
1683
- logger,
1684
- messagesDispatcher,
1685
- sdk
1686
- });
1687
- const scrollToMessage = useScrollToMessage({
1688
- setInitialTimeStamp,
1689
- setAnimatedMessageId,
1690
- allMessages,
1691
- scrollRef
1692
- }, {
1693
- logger
1694
- });
1695
-
1696
- // onScrollDownCallback is added for navigation to different timestamps on messageSearch
1697
- // hasMorePrev, onScrollCallback -> scroll up(default behavior)
1698
- // hasMoreNext, onScrollDownCallback -> scroll down
1699
- const onScrollDownCallback = useScrollDownCallback({
1700
- currentGroupChannel,
1701
- latestMessageTimeStamp,
1702
- userFilledMessageListQuery,
1703
- hasMoreNext,
1704
- replyType,
1705
- isVoiceMessageEnabled
1706
- }, {
1707
- logger,
1708
- messagesDispatcher,
1709
- sdk
1710
- });
1711
- const toggleReaction = useToggleReactionCallback({
1712
- currentGroupChannel
1713
- }, {
1714
- logger
1715
- });
1716
-
1717
- // to create message-datasource
1718
- // this hook sets currentGroupChannel asynchronously
1719
- useSetChannel({
1720
- channelUrl,
1721
- sdkInit,
1722
- disableMarkAsRead
1723
- }, {
1724
- messagesDispatcher,
1725
- sdk,
1726
- logger,
1727
- markAsReadScheduler
1728
- });
1729
-
1730
- // to set quote message as null
1731
- useEffect(() => {
1732
- setQuoteMessage(null);
1733
- }, [channelUrl]);
1734
-
1735
- // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
1736
- useHandleChannelEvents({
1737
- currentGroupChannel,
1738
- sdkInit,
1739
- currentUserId: userId,
1740
- disableMarkAsRead
1741
- }, {
1742
- messagesDispatcher,
1743
- sdk,
1744
- logger,
1745
- scrollRef,
1746
- setQuoteMessage
1747
- });
1748
-
1749
- // hook that fetches messages when channel changes
1750
- // to be clear here useGetChannel sets currentGroupChannel
1751
- // and useInitialMessagesFetch executes when currentGroupChannel changes
1752
- // p.s This one executes on initialTimeStamp change too
1753
- useInitialMessagesFetch({
1754
- currentGroupChannel,
1755
- userFilledMessageListQuery,
1756
- initialTimeStamp,
1757
- latestMessageTimeStamp,
1758
- replyType,
1759
- isVoiceMessageEnabled,
1760
- setIsScrolled
1761
- }, {
1762
- logger,
1763
- scrollRef,
1764
- messagesDispatcher
1765
- });
1766
-
1767
- // handles API calls from withSendbird
1768
- useEffect(() => {
1769
- const subscriber = pubSubHandler({
1770
- channelUrl,
1771
- pubSub,
1772
- dispatcher: messagesDispatcher,
1773
- scrollRef
1774
- });
1775
- return () => {
1776
- pubSubHandleRemover(subscriber);
1777
- };
1778
- }, [channelUrl, sdkInit]);
1779
-
1780
- // handling connection breaks
1781
- useHandleReconnect({
1782
- isOnline,
1783
- replyType,
1784
- disableMarkAsRead,
1785
- reconnectOnIdle
1786
- }, {
1787
- logger,
1788
- sdk,
1789
- scrollRef,
1790
- currentGroupChannel,
1791
- messagesDispatcher,
1792
- userFilledMessageListQuery,
1793
- markAsReadScheduler
1794
- });
1795
-
1796
- // callbacks for Message CURD actions
1797
- const deleteMessage = useDeleteMessageCallback({
1798
- currentGroupChannel,
1799
- messagesDispatcher
1800
- }, {
1801
- logger
1802
- });
1803
- const updateMessage = useUpdateMessageCallback({
1804
- currentGroupChannel,
1805
- messagesDispatcher,
1806
- onBeforeUpdateUserMessage,
1807
- isMentionEnabled
1808
- }, {
1809
- logger,
1810
- pubSub
1811
- });
1812
- const resendMessage = useResendMessageCallback({
1813
- currentGroupChannel,
1814
- messagesDispatcher
1815
- }, {
1816
- logger
1817
- });
1818
- const [messageInputRef, sendMessage] = useSendMessageCallback({
1819
- currentGroupChannel,
1820
- isMentionEnabled,
1821
- onBeforeSendUserMessage
1822
- }, {
1823
- logger,
1824
- pubSub,
1825
- scrollRef,
1826
- messagesDispatcher
1827
- });
1828
- const [sendFileMessage] = useSendFileMessageCallback({
1829
- currentGroupChannel,
1830
- imageCompression,
1831
- onBeforeSendFileMessage
1832
- }, {
1833
- logger,
1834
- pubSub,
1835
- scrollRef,
1836
- messagesDispatcher
1837
- });
1838
- const [sendVoiceMessage] = useSendVoiceMessageCallback({
1839
- currentGroupChannel,
1840
- onBeforeSendVoiceMessage
1841
- }, {
1842
- logger,
1843
- pubSub,
1844
- scrollRef,
1845
- messagesDispatcher
1846
- });
1847
- const [sendMultipleFilesMessage] = useSendMultipleFilesMessage({
1848
- currentChannel: currentGroupChannel,
1849
- onBeforeSendMultipleFilesMessage
1850
- }, {
1851
- logger,
1852
- pubSub,
1853
- scrollRef
1854
- });
1855
- return /*#__PURE__*/React__default.createElement(ChannelContext.Provider, {
1856
- value: {
1857
- // props
1858
- channelUrl,
1859
- isReactionEnabled: usingReaction,
1860
- isMessageGroupingEnabled,
1861
- isMultipleFilesMessageEnabled,
1862
- showSearchIcon: showSearchIcon !== null && showSearchIcon !== void 0 ? showSearchIcon : globalConfigs.showSearchIcon,
1863
- highlightedMessage,
1864
- startingPoint,
1865
- onBeforeSendUserMessage,
1866
- onBeforeSendFileMessage,
1867
- onBeforeUpdateUserMessage,
1868
- onChatHeaderActionClick,
1869
- onSearchClick,
1870
- onBackClick,
1871
- replyType,
1872
- threadReplySelectType: (_ref = threadReplySelectType !== null && threadReplySelectType !== void 0 ? threadReplySelectType : getCaseResolvedThreadReplySelectType(groupChannel.threadReplySelectType).upperCase) !== null && _ref !== void 0 ? _ref : ThreadReplySelectType.THREAD,
1873
- queries,
1874
- filterMessageList,
1875
- disableMarkAsRead,
1876
- onReplyInThread,
1877
- onQuoteMessageClick,
1878
- onMessageAnimated,
1879
- onMessageHighlighted,
1880
- // messagesStore
1881
- allMessages,
1882
- localMessages,
1883
- loading,
1884
- initialized,
1885
- unreadSince,
1886
- isInvalid,
1887
- currentGroupChannel,
1888
- hasMorePrev,
1889
- hasMoreNext,
1890
- oldestMessageTimeStamp,
1891
- latestMessageTimeStamp,
1892
- emojiContainer,
1893
- readStatus,
1894
- // utils
1895
- scrollToMessage,
1896
- quoteMessage,
1897
- setQuoteMessage,
1898
- deleteMessage,
1899
- updateMessage,
1900
- resendMessage,
1901
- messageInputRef,
1902
- sendMessage,
1903
- sendFileMessage,
1904
- sendVoiceMessage,
1905
- sendMultipleFilesMessage,
1906
- initialTimeStamp,
1907
- messageActionTypes,
1908
- messagesDispatcher,
1909
- setInitialTimeStamp,
1910
- setAnimatedMessageId,
1911
- setHighLightedMessageId,
1912
- animatedMessageId,
1913
- highLightedMessageId,
1914
- nicknamesMap,
1915
- emojiAllMap,
1916
- onScrollCallback,
1917
- onScrollDownCallback,
1918
- scrollRef,
1919
- scrollBehavior,
1920
- toggleReaction,
1921
- isScrolled,
1922
- setIsScrolled
1923
- }
1924
- }, /*#__PURE__*/React__default.createElement(UserProfileProvider, {
1925
- disableUserProfile: (_props$disableUserPro = props === null || props === void 0 ? void 0 : props.disableUserProfile) !== null && _props$disableUserPro !== void 0 ? _props$disableUserPro : config === null || config === void 0 ? void 0 : config.disableUserProfile,
1926
- renderUserProfile: props === null || props === void 0 ? void 0 : props.renderUserProfile,
1927
- onUserProfileMessage: onUserProfileMessage
1928
- }, children));
1929
- };
1930
- const useChannelContext = () => React__default.useContext(ChannelContext);
1931
-
1932
- export { ChannelProvider as C, getIsReactionEnabled as g, useChannelContext as u };
1933
- //# sourceMappingURL=ChannelProvider-9de00431.js.map