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