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