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