@sendbird/uikit-react 3.5.0-rc.1 → 3.5.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 (936) hide show
  1. package/App.js +312 -235
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +544 -0
  4. package/Channel/components/ChannelHeader.js +46 -41
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +104 -131
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +56 -52
  9. package/Channel/components/FileViewer.js.map +1 -1
  10. package/Channel/components/FrozenNotification.js +12 -7
  11. package/Channel/components/FrozenNotification.js.map +1 -1
  12. package/Channel/components/Message.js +240 -230
  13. package/Channel/components/Message.js.map +1 -1
  14. package/Channel/components/MessageInput.js +152 -129
  15. package/Channel/components/MessageInput.js.map +1 -1
  16. package/Channel/components/MessageList.js +260 -175
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +34 -30
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +139 -193
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +44 -61
  23. package/Channel/components/TypingIndicator.js.map +1 -1
  24. package/Channel/components/UnreadCount.js +18 -20
  25. package/Channel/components/UnreadCount.js.map +1 -1
  26. package/Channel/context.js +12 -19
  27. package/Channel/context.js.map +1 -1
  28. package/Channel.js +69 -44
  29. package/Channel.js.map +1 -1
  30. package/ChannelList/components/AddChannel.js +29 -30
  31. package/ChannelList/components/AddChannel.js.map +1 -1
  32. package/ChannelList/components/ChannelListHeader.js +32 -28
  33. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  34. package/ChannelList/components/ChannelListUI.js +101 -142
  35. package/ChannelList/components/ChannelListUI.js.map +1 -1
  36. package/ChannelList/components/ChannelPreview.js +72 -82
  37. package/ChannelList/components/ChannelPreview.js.map +1 -1
  38. package/ChannelList/components/ChannelPreviewAction.js +36 -36
  39. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  40. package/ChannelList/context.js +7 -8
  41. package/ChannelList/context.js.map +1 -1
  42. package/ChannelList.js +32 -31
  43. package/ChannelList.js.map +1 -1
  44. package/{ChannelListProvider-1d36e2e9.js → ChannelListProvider-4cf5c0f5.js} +233 -285
  45. package/ChannelListProvider-4cf5c0f5.js.map +1 -0
  46. package/{ChannelProvider-289cd35f.js → ChannelProvider-6e8e99df.js} +659 -726
  47. package/ChannelProvider-6e8e99df.js.map +1 -0
  48. package/ChannelSettings/components/ChannelProfile.js +33 -46
  49. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  50. package/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  51. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  52. package/ChannelSettings/components/EditDetailsModal.js +47 -58
  53. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  54. package/ChannelSettings/components/LeaveChannel.js +40 -46
  55. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  56. package/ChannelSettings/components/ModerationPanel.js +522 -605
  57. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  58. package/ChannelSettings/components/UserListItem.js +71 -72
  59. package/ChannelSettings/components/UserListItem.js.map +1 -1
  60. package/ChannelSettings/components/UserPanel.js +29 -32
  61. package/ChannelSettings/components/UserPanel.js.map +1 -1
  62. package/ChannelSettings/context.js +53 -57
  63. package/ChannelSettings/context.js.map +1 -1
  64. package/ChannelSettings.js +20 -20
  65. package/ChannelSettings.js.map +1 -1
  66. package/CreateChannel/components/CreateChannelUI.js +24 -24
  67. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  68. package/CreateChannel/components/InviteUsers.js +102 -124
  69. package/CreateChannel/components/InviteUsers.js.map +1 -1
  70. package/CreateChannel/components/SelectChannelType.js +41 -42
  71. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  72. package/CreateChannel/context.js +4 -4
  73. package/CreateChannel.js +22 -21
  74. package/CreateChannel.js.map +1 -1
  75. package/CreateChannelProvider-34603fa5.js +44 -0
  76. package/CreateChannelProvider-34603fa5.js.map +1 -0
  77. package/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  78. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  79. package/CreateOpenChannel/context.js +33 -33
  80. package/CreateOpenChannel/context.js.map +1 -1
  81. package/CreateOpenChannel.js +18 -17
  82. package/CreateOpenChannel.js.map +1 -1
  83. package/EditUserProfile/components/EditUserProfileUI.js +12 -13
  84. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  85. package/EditUserProfile/context.js +0 -2
  86. package/EditUserProfile/context.js.map +1 -1
  87. package/EditUserProfile.js +18 -17
  88. package/EditUserProfile.js.map +1 -1
  89. package/LocalizationContext-04c0c9dc.js +20 -0
  90. package/{LocalizationContext-289c1917.js.map → LocalizationContext-04c0c9dc.js.map} +1 -1
  91. package/MediaQueryContext-ff9dca2b.js +87 -0
  92. package/MediaQueryContext-ff9dca2b.js.map +1 -0
  93. package/MemberList-9bf26111.js +403 -0
  94. package/MemberList-9bf26111.js.map +1 -0
  95. package/Message/context.js +31 -0
  96. package/Message/context.js.map +1 -0
  97. package/MessageSearch/components/MessageSearchUI.js +62 -71
  98. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  99. package/MessageSearch/context.js +201 -224
  100. package/MessageSearch/context.js.map +1 -1
  101. package/MessageSearch.js +46 -58
  102. package/MessageSearch.js.map +1 -1
  103. package/OpenChannel/components/FrozenChannelNotification.js +8 -6
  104. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  105. package/OpenChannel/components/OpenChannelHeader.js +27 -25
  106. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  107. package/OpenChannel/components/OpenChannelInput.js +50 -35
  108. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  109. package/OpenChannel/components/OpenChannelMessage.js +174 -191
  110. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  111. package/OpenChannel/components/OpenChannelMessageList.js +72 -92
  112. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  113. package/OpenChannel/components/OpenChannelUI.js +52 -49
  114. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  115. package/OpenChannel/context.js +8 -9
  116. package/OpenChannel/context.js.map +1 -1
  117. package/OpenChannel.js +36 -30
  118. package/OpenChannel.js.map +1 -1
  119. package/OpenChannelList/components/OpenChannelListUI.js +61 -76
  120. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  121. package/OpenChannelList/components/OpenChannelPreview.js +21 -22
  122. package/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  123. package/OpenChannelList/context.js +3 -4
  124. package/OpenChannelList/context.js.map +1 -1
  125. package/OpenChannelList.js +26 -24
  126. package/OpenChannelList.js.map +1 -1
  127. package/OpenChannelListProvider-d7372692.js +429 -0
  128. package/OpenChannelListProvider-d7372692.js.map +1 -0
  129. package/OpenChannelProvider-24cd68b9.js +1885 -0
  130. package/OpenChannelProvider-24cd68b9.js.map +1 -0
  131. package/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  132. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  133. package/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  134. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  135. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  136. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  137. package/OpenChannelSettings/components/OperatorUI.js +516 -586
  138. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  139. package/OpenChannelSettings/components/ParticipantUI.js +15 -16
  140. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  141. package/OpenChannelSettings/context.js +56 -69
  142. package/OpenChannelSettings/context.js.map +1 -1
  143. package/OpenChannelSettings.js +19 -20
  144. package/OpenChannelSettings.js.map +1 -1
  145. package/README.md +62 -13
  146. package/RemoveMessageModal-94e2bf9e.js +36 -0
  147. package/RemoveMessageModal-94e2bf9e.js.map +1 -0
  148. package/SendbirdProvider.js +749 -408
  149. package/SendbirdProvider.js.map +1 -1
  150. package/Thread/components/ParentMessageInfo.js +238 -217
  151. package/Thread/components/ParentMessageInfo.js.map +1 -1
  152. package/Thread/components/ParentMessageInfoItem.js +112 -89
  153. package/Thread/components/ParentMessageInfoItem.js.map +1 -1
  154. package/Thread/components/ThreadHeader.js +22 -23
  155. package/Thread/components/ThreadHeader.js.map +1 -1
  156. package/Thread/components/ThreadList.js +108 -83
  157. package/Thread/components/ThreadList.js.map +1 -1
  158. package/Thread/components/ThreadListItem.js +306 -276
  159. package/Thread/components/ThreadListItem.js.map +1 -1
  160. package/Thread/components/ThreadMessageInput.js +146 -113
  161. package/Thread/components/ThreadMessageInput.js.map +1 -1
  162. package/Thread/components/ThreadUI.js +169 -138
  163. package/Thread/components/ThreadUI.js.map +1 -1
  164. package/Thread/context/types.js +9 -14
  165. package/Thread/context/types.js.map +1 -1
  166. package/Thread/context.js +8 -8
  167. package/Thread.js +87 -57
  168. package/Thread.js.map +1 -1
  169. package/ThreadProvider-203b94f3.js +1695 -0
  170. package/ThreadProvider-203b94f3.js.map +1 -0
  171. package/{UserProfileContext-e3530842.js → UserProfileContext-c776d522.js} +1 -4
  172. package/{UserProfileContext-e3530842.js.map → UserProfileContext-c776d522.js.map} +1 -1
  173. package/VoiceMessageInputWrapper-77d8f487.js +170 -0
  174. package/VoiceMessageInputWrapper-77d8f487.js.map +1 -0
  175. package/VoicePlayer/context.js +7 -0
  176. package/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  177. package/VoicePlayer/useVoicePlayer.js +84 -0
  178. package/VoicePlayer/useVoicePlayer.js.map +1 -0
  179. package/VoiceRecorder/context.js +156 -0
  180. package/VoiceRecorder/context.js.map +1 -0
  181. package/VoiceRecorder/useVoiceRecorder.js +121 -0
  182. package/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  183. package/WebAudioUtils-62e6d3a7.js +123 -0
  184. package/WebAudioUtils-62e6d3a7.js.map +1 -0
  185. package/{_rollupPluginBabelHelpers-519f674b.js → _rollupPluginBabelHelpers-fb0e05a4.js} +17 -11
  186. package/_rollupPluginBabelHelpers-fb0e05a4.js.map +1 -0
  187. package/actionTypes-1db5749d.js +8 -0
  188. package/actionTypes-1db5749d.js.map +1 -0
  189. package/cjs/App.js +312 -235
  190. package/cjs/App.js.map +1 -1
  191. package/cjs/Channel/components/ChannelHeader.js +46 -41
  192. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  193. package/cjs/Channel/components/ChannelUI.js +102 -129
  194. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  195. package/cjs/Channel/components/FileViewer.js +56 -52
  196. package/cjs/Channel/components/FileViewer.js.map +1 -1
  197. package/cjs/Channel/components/FrozenNotification.js +12 -7
  198. package/cjs/Channel/components/FrozenNotification.js.map +1 -1
  199. package/cjs/Channel/components/Message.js +243 -233
  200. package/cjs/Channel/components/Message.js.map +1 -1
  201. package/cjs/Channel/components/MessageInput.js +151 -128
  202. package/cjs/Channel/components/MessageInput.js.map +1 -1
  203. package/cjs/Channel/components/MessageList.js +260 -175
  204. package/cjs/Channel/components/MessageList.js.map +1 -1
  205. package/cjs/Channel/components/RemoveMessageModal.js +34 -30
  206. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  207. package/cjs/Channel/components/SuggestedMentionList.js +139 -193
  208. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  209. package/cjs/Channel/components/TypingIndicator.js +44 -61
  210. package/cjs/Channel/components/TypingIndicator.js.map +1 -1
  211. package/cjs/Channel/components/UnreadCount.js +18 -20
  212. package/cjs/Channel/components/UnreadCount.js.map +1 -1
  213. package/cjs/Channel/context.js +12 -23
  214. package/cjs/Channel/context.js.map +1 -1
  215. package/cjs/Channel.js +69 -44
  216. package/cjs/Channel.js.map +1 -1
  217. package/cjs/ChannelList/components/AddChannel.js +29 -30
  218. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  219. package/cjs/ChannelList/components/ChannelListHeader.js +32 -28
  220. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  221. package/cjs/ChannelList/components/ChannelListUI.js +100 -141
  222. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  223. package/cjs/ChannelList/components/ChannelPreview.js +72 -82
  224. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  225. package/cjs/ChannelList/components/ChannelPreviewAction.js +36 -36
  226. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  227. package/cjs/ChannelList/context.js +7 -8
  228. package/cjs/ChannelList/context.js.map +1 -1
  229. package/cjs/ChannelList.js +32 -31
  230. package/cjs/ChannelList.js.map +1 -1
  231. package/cjs/{ChannelListProvider-0de52d2b.js → ChannelListProvider-e0ce316a.js} +232 -284
  232. package/cjs/ChannelListProvider-e0ce316a.js.map +1 -0
  233. package/cjs/{ChannelProvider-fc58e60e.js → ChannelProvider-0df75472.js} +657 -724
  234. package/cjs/ChannelProvider-0df75472.js.map +1 -0
  235. package/cjs/ChannelSettings/components/ChannelProfile.js +33 -46
  236. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  237. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +45 -48
  238. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  239. package/cjs/ChannelSettings/components/EditDetailsModal.js +47 -58
  240. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  241. package/cjs/ChannelSettings/components/LeaveChannel.js +40 -46
  242. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  243. package/cjs/ChannelSettings/components/ModerationPanel.js +522 -605
  244. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  245. package/cjs/ChannelSettings/components/UserListItem.js +71 -72
  246. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  247. package/cjs/ChannelSettings/components/UserPanel.js +29 -32
  248. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  249. package/cjs/ChannelSettings/context.js +55 -59
  250. package/cjs/ChannelSettings/context.js.map +1 -1
  251. package/cjs/ChannelSettings.js +20 -20
  252. package/cjs/ChannelSettings.js.map +1 -1
  253. package/cjs/CreateChannel/components/CreateChannelUI.js +24 -24
  254. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  255. package/cjs/CreateChannel/components/InviteUsers.js +102 -124
  256. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  257. package/cjs/CreateChannel/components/SelectChannelType.js +41 -42
  258. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  259. package/cjs/CreateChannel/context.js +4 -4
  260. package/cjs/CreateChannel.js +22 -21
  261. package/cjs/CreateChannel.js.map +1 -1
  262. package/cjs/CreateChannelProvider-c0fca0a5.js +52 -0
  263. package/cjs/CreateChannelProvider-c0fca0a5.js.map +1 -0
  264. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +33 -43
  265. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  266. package/cjs/CreateOpenChannel/context.js +33 -33
  267. package/cjs/CreateOpenChannel/context.js.map +1 -1
  268. package/cjs/CreateOpenChannel.js +18 -17
  269. package/cjs/CreateOpenChannel.js.map +1 -1
  270. package/cjs/EditUserProfile/components/EditUserProfileUI.js +12 -13
  271. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  272. package/cjs/EditUserProfile/context.js +0 -2
  273. package/cjs/EditUserProfile/context.js.map +1 -1
  274. package/cjs/EditUserProfile.js +18 -17
  275. package/cjs/EditUserProfile.js.map +1 -1
  276. package/cjs/{LocalizationContext-bddc5c2b.js → LocalizationContext-0e429c3d.js} +9 -11
  277. package/cjs/{LocalizationContext-bddc5c2b.js.map → LocalizationContext-0e429c3d.js.map} +1 -1
  278. package/cjs/MediaQueryContext-33fc3b17.js +94 -0
  279. package/cjs/MediaQueryContext-33fc3b17.js.map +1 -0
  280. package/cjs/MemberList-a45a51c4.js +409 -0
  281. package/cjs/MemberList-a45a51c4.js.map +1 -0
  282. package/cjs/Message/context.js +40 -0
  283. package/cjs/Message/context.js.map +1 -0
  284. package/cjs/MessageSearch/components/MessageSearchUI.js +61 -70
  285. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  286. package/cjs/MessageSearch/context.js +201 -224
  287. package/cjs/MessageSearch/context.js.map +1 -1
  288. package/cjs/MessageSearch.js +46 -58
  289. package/cjs/MessageSearch.js.map +1 -1
  290. package/cjs/OpenChannel/components/FrozenChannelNotification.js +8 -6
  291. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -1
  292. package/cjs/OpenChannel/components/OpenChannelHeader.js +27 -25
  293. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  294. package/cjs/OpenChannel/components/OpenChannelInput.js +50 -35
  295. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  296. package/cjs/OpenChannel/components/OpenChannelMessage.js +174 -191
  297. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  298. package/cjs/OpenChannel/components/OpenChannelMessageList.js +72 -92
  299. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  300. package/cjs/OpenChannel/components/OpenChannelUI.js +52 -49
  301. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  302. package/cjs/OpenChannel/context.js +8 -9
  303. package/cjs/OpenChannel/context.js.map +1 -1
  304. package/cjs/OpenChannel.js +36 -30
  305. package/cjs/OpenChannel.js.map +1 -1
  306. package/cjs/OpenChannelList/components/OpenChannelListUI.js +61 -76
  307. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  308. package/cjs/OpenChannelList/components/OpenChannelPreview.js +21 -22
  309. package/cjs/OpenChannelList/components/OpenChannelPreview.js.map +1 -1
  310. package/cjs/OpenChannelList/context.js +3 -4
  311. package/cjs/OpenChannelList/context.js.map +1 -1
  312. package/cjs/OpenChannelList.js +26 -24
  313. package/cjs/OpenChannelList.js.map +1 -1
  314. package/cjs/OpenChannelListProvider-fc8b53ee.js +439 -0
  315. package/cjs/OpenChannelListProvider-fc8b53ee.js.map +1 -0
  316. package/cjs/OpenChannelProvider-217a8ac2.js +1894 -0
  317. package/cjs/OpenChannelProvider-217a8ac2.js.map +1 -0
  318. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +47 -56
  319. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  320. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +26 -31
  321. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  322. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +45 -43
  323. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  324. package/cjs/OpenChannelSettings/components/OperatorUI.js +516 -586
  325. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  326. package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -16
  327. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  328. package/cjs/OpenChannelSettings/context.js +57 -70
  329. package/cjs/OpenChannelSettings/context.js.map +1 -1
  330. package/cjs/OpenChannelSettings.js +19 -20
  331. package/cjs/OpenChannelSettings.js.map +1 -1
  332. package/cjs/{RemoveMessageModal-9169766a.js → RemoveMessageModal-5903f232.js} +19 -14
  333. package/cjs/RemoveMessageModal-5903f232.js.map +1 -0
  334. package/cjs/SendbirdProvider.js +748 -408
  335. package/cjs/SendbirdProvider.js.map +1 -1
  336. package/cjs/Thread/components/ParentMessageInfo.js +237 -216
  337. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  338. package/cjs/Thread/components/ParentMessageInfoItem.js +111 -88
  339. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
  340. package/cjs/Thread/components/ThreadHeader.js +22 -23
  341. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  342. package/cjs/Thread/components/ThreadList.js +108 -83
  343. package/cjs/Thread/components/ThreadList.js.map +1 -1
  344. package/cjs/Thread/components/ThreadListItem.js +305 -275
  345. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  346. package/cjs/Thread/components/ThreadMessageInput.js +146 -113
  347. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  348. package/cjs/Thread/components/ThreadUI.js +170 -139
  349. package/cjs/Thread/components/ThreadUI.js.map +1 -1
  350. package/cjs/Thread/context/types.js +13 -14
  351. package/cjs/Thread/context/types.js.map +1 -1
  352. package/cjs/Thread/context.js +8 -8
  353. package/cjs/Thread.js +87 -57
  354. package/cjs/Thread.js.map +1 -1
  355. package/cjs/ThreadProvider-8ee179c2.js +1704 -0
  356. package/cjs/ThreadProvider-8ee179c2.js.map +1 -0
  357. package/cjs/{UserProfileContext-8d0dee57.js → UserProfileContext-87580795.js} +1 -4
  358. package/cjs/{UserProfileContext-8d0dee57.js.map → UserProfileContext-87580795.js.map} +1 -1
  359. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js +176 -0
  360. package/cjs/VoiceMessageInputWrapper-4fdc8ef1.js.map +1 -0
  361. package/cjs/VoicePlayer/context.js +17 -0
  362. package/cjs/{NotificationChannel → VoicePlayer}/context.js.map +1 -1
  363. package/cjs/VoicePlayer/useVoicePlayer.js +88 -0
  364. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -0
  365. package/cjs/VoiceRecorder/context.js +166 -0
  366. package/cjs/VoiceRecorder/context.js.map +1 -0
  367. package/cjs/VoiceRecorder/useVoiceRecorder.js +126 -0
  368. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -0
  369. package/cjs/WebAudioUtils-e226789c.js +126 -0
  370. package/cjs/WebAudioUtils-e226789c.js.map +1 -0
  371. package/cjs/{_rollupPluginBabelHelpers-fed1e122.js → _rollupPluginBabelHelpers-c89f311a.js} +17 -10
  372. package/cjs/_rollupPluginBabelHelpers-c89f311a.js.map +1 -0
  373. package/cjs/actionTypes-0fa2943d.js +10 -0
  374. package/cjs/actionTypes-0fa2943d.js.map +1 -0
  375. package/cjs/{color-f47044b3.js → color-bada0fc7.js} +13 -21
  376. package/cjs/color-bada0fc7.js.map +1 -0
  377. package/cjs/{compareIds-4124b297.js → compareIds-ccccfe86.js} +5 -6
  378. package/cjs/compareIds-ccccfe86.js.map +1 -0
  379. package/cjs/const-a85f3364.js +20 -0
  380. package/cjs/const-a85f3364.js.map +1 -0
  381. package/cjs/{const-fd64914b.js → const-d8cece19.js} +4 -4
  382. package/cjs/const-d8cece19.js.map +1 -0
  383. package/cjs/consts-1c3020ad.js +6 -0
  384. package/cjs/consts-1c3020ad.js.map +1 -0
  385. package/cjs/consts-1d94dc61.js +6 -0
  386. package/cjs/consts-1d94dc61.js.map +1 -0
  387. package/cjs/consts-5e0f96b3.js +41 -0
  388. package/cjs/consts-5e0f96b3.js.map +1 -0
  389. package/cjs/consts-740f60b8.js +6 -0
  390. package/cjs/consts-740f60b8.js.map +1 -0
  391. package/cjs/{context-7a0e057b.js → context-8e7e8457.js} +6 -5
  392. package/cjs/{context-7a0e057b.js.map → context-8e7e8457.js.map} +1 -1
  393. package/cjs/dist/index.css +1640 -1187
  394. package/cjs/dist/index.css.map +1 -1
  395. package/cjs/handlers/OpenChannelHandler.js.map +1 -1
  396. package/cjs/handlers/SessionHandler.js.map +1 -1
  397. package/cjs/{index-d14a43c4.js → index-016f7106.js} +1 -1
  398. package/cjs/{index-d14a43c4.js.map → index-016f7106.js.map} +1 -1
  399. package/cjs/{index-9ca07037.js → index-1613ae03.js} +29 -37
  400. package/cjs/index-1613ae03.js.map +1 -0
  401. package/cjs/index-2be14d85.js +57 -0
  402. package/cjs/index-2be14d85.js.map +1 -0
  403. package/cjs/index-3b30939e.js +79 -0
  404. package/cjs/index-3b30939e.js.map +1 -0
  405. package/cjs/index-5231fde8.js +585 -0
  406. package/cjs/index-5231fde8.js.map +1 -0
  407. package/cjs/index-648c06ed.js +330 -0
  408. package/cjs/index-648c06ed.js.map +1 -0
  409. package/cjs/{index-5d5497c2.js → index-6cb0d040.js} +11 -25
  410. package/cjs/index-6cb0d040.js.map +1 -0
  411. package/cjs/{index-c475c3c8.js → index-71fdaa1b.js} +55 -63
  412. package/cjs/index-71fdaa1b.js.map +1 -0
  413. package/cjs/{index-343cd84a.js → index-7d125728.js} +2 -2
  414. package/cjs/{index-343cd84a.js.map → index-7d125728.js.map} +1 -1
  415. package/cjs/{index-3a4f8219.js → index-7f6bbe0c.js} +42 -51
  416. package/cjs/index-7f6bbe0c.js.map +1 -0
  417. package/cjs/{index-8de8f28a.js → index-869e9a94.js} +2 -2
  418. package/cjs/{index-8de8f28a.js.map → index-869e9a94.js.map} +1 -1
  419. package/cjs/index-89d81dad.js +456 -0
  420. package/cjs/index-89d81dad.js.map +1 -0
  421. package/cjs/{index-abbc8024.js → index-8affdde5.js} +57 -3
  422. package/cjs/index-8affdde5.js.map +1 -0
  423. package/cjs/index-99f16473.js +202 -0
  424. package/cjs/index-99f16473.js.map +1 -0
  425. package/cjs/index-c9d348b6.js +367 -0
  426. package/cjs/index-c9d348b6.js.map +1 -0
  427. package/cjs/index-e8c0080f.js +161 -0
  428. package/cjs/index-e8c0080f.js.map +1 -0
  429. package/cjs/{index-c5cd589d.js → index-f570d25c.js} +1 -1
  430. package/cjs/index-f570d25c.js.map +1 -0
  431. package/cjs/index.js +84 -63
  432. package/cjs/index.js.map +1 -1
  433. package/cjs/index.module-0585715f.js +6 -0
  434. package/cjs/index.module-0585715f.js.map +1 -0
  435. package/cjs/lame.all.js +2541 -0
  436. package/cjs/lame.all.js.map +1 -0
  437. package/cjs/resolvedReplyType-67e78c63.js +32 -0
  438. package/cjs/resolvedReplyType-67e78c63.js.map +1 -0
  439. package/cjs/sendbirdSelectors.js +307 -417
  440. package/cjs/sendbirdSelectors.js.map +1 -1
  441. package/cjs/{stringSet-3e6167ef.js → stringSet-106da549.js} +112 -90
  442. package/cjs/stringSet-106da549.js.map +1 -0
  443. package/cjs/tokenize-2aa0f876.js +164 -0
  444. package/cjs/tokenize-2aa0f876.js.map +1 -0
  445. package/cjs/topics-b384e6b3.js +18 -0
  446. package/cjs/topics-b384e6b3.js.map +1 -0
  447. package/cjs/types-e0b77c8c.js +17 -0
  448. package/cjs/types-e0b77c8c.js.map +1 -0
  449. package/cjs/ui/Accordion.js +21 -24
  450. package/cjs/ui/Accordion.js.map +1 -1
  451. package/cjs/ui/AccordionGroup.js +10 -13
  452. package/cjs/ui/AccordionGroup.js.map +1 -1
  453. package/cjs/ui/AdminMessage.js +10 -13
  454. package/cjs/ui/AdminMessage.js.map +1 -1
  455. package/cjs/ui/Avatar.js +57 -79
  456. package/cjs/ui/Avatar.js.map +1 -1
  457. package/cjs/ui/Badge.js +16 -15
  458. package/cjs/ui/Badge.js.map +1 -1
  459. package/cjs/ui/BottomSheet.js +14 -12
  460. package/cjs/ui/BottomSheet.js.map +1 -1
  461. package/cjs/ui/Button.js +20 -35
  462. package/cjs/ui/Button.js.map +1 -1
  463. package/cjs/ui/ChannelAvatar.js +38 -41
  464. package/cjs/ui/ChannelAvatar.js.map +1 -1
  465. package/cjs/ui/Checkbox.js +11 -13
  466. package/cjs/ui/Checkbox.js.map +1 -1
  467. package/cjs/ui/ConnectionStatus.js +7 -5
  468. package/cjs/ui/ConnectionStatus.js.map +1 -1
  469. package/cjs/ui/ContextMenu.js +175 -199
  470. package/cjs/ui/ContextMenu.js.map +1 -1
  471. package/cjs/ui/DateSeparator.js +12 -14
  472. package/cjs/ui/DateSeparator.js.map +1 -1
  473. package/cjs/ui/EmojiReactions.js +299 -107
  474. package/cjs/ui/EmojiReactions.js.map +1 -1
  475. package/cjs/ui/FileMessageItemBody.js +22 -23
  476. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  477. package/cjs/ui/FileViewer.js +36 -36
  478. package/cjs/ui/FileViewer.js.map +1 -1
  479. package/cjs/ui/Icon.js +447 -623
  480. package/cjs/ui/Icon.js.map +1 -1
  481. package/cjs/ui/IconButton.js +20 -31
  482. package/cjs/ui/IconButton.js.map +1 -1
  483. package/cjs/ui/ImageRenderer.js +34 -43
  484. package/cjs/ui/ImageRenderer.js.map +1 -1
  485. package/cjs/ui/Input.js +16 -16
  486. package/cjs/ui/Input.js.map +1 -1
  487. package/cjs/ui/Label.js +2 -2
  488. package/cjs/ui/LinkLabel.js +4 -3
  489. package/cjs/ui/LinkLabel.js.map +1 -1
  490. package/cjs/ui/Loader.js +10 -12
  491. package/cjs/ui/Loader.js.map +1 -1
  492. package/cjs/ui/MentionLabel.js +58 -65
  493. package/cjs/ui/MentionLabel.js.map +1 -1
  494. package/cjs/ui/MentionUserLabel.js +12 -10
  495. package/cjs/ui/MentionUserLabel.js.map +1 -1
  496. package/cjs/ui/MessageContent.js +212 -548
  497. package/cjs/ui/MessageContent.js.map +1 -1
  498. package/cjs/ui/MessageInput.js +392 -119
  499. package/cjs/ui/MessageInput.js.map +1 -1
  500. package/cjs/ui/MessageItemMenu.js +83 -83
  501. package/cjs/ui/MessageItemMenu.js.map +1 -1
  502. package/cjs/ui/MessageItemReactionMenu.js +58 -62
  503. package/cjs/ui/MessageItemReactionMenu.js.map +1 -1
  504. package/cjs/ui/MessageSearchFileItem.js +56 -51
  505. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  506. package/cjs/ui/MessageSearchItem.js +42 -41
  507. package/cjs/ui/MessageSearchItem.js.map +1 -1
  508. package/cjs/ui/MessageStatus.js +10 -11
  509. package/cjs/ui/MessageStatus.js.map +1 -1
  510. package/cjs/ui/Modal.js +52 -46
  511. package/cjs/ui/Modal.js.map +1 -1
  512. package/cjs/ui/MutedAvatarOverlay.js +10 -10
  513. package/cjs/ui/MutedAvatarOverlay.js.map +1 -1
  514. package/cjs/ui/OGMessageItemBody.js +67 -63
  515. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  516. package/cjs/ui/OpenChannelAdminMessage.js +8 -7
  517. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -1
  518. package/cjs/ui/OpenChannelAvatar.js +18 -17
  519. package/cjs/ui/OpenChannelAvatar.js.map +1 -1
  520. package/cjs/ui/OpenchannelConversationHeader.js +17 -13
  521. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -1
  522. package/cjs/ui/OpenchannelFileMessage.js +140 -151
  523. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  524. package/cjs/ui/OpenchannelOGMessage.js +204 -233
  525. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  526. package/cjs/ui/OpenchannelThumbnailMessage.js +215 -222
  527. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  528. package/cjs/ui/OpenchannelUserMessage.js +168 -178
  529. package/cjs/ui/OpenchannelUserMessage.js.map +1 -1
  530. package/cjs/ui/PlaceHolder.js +5 -6
  531. package/cjs/ui/PlaceHolder.js.map +1 -1
  532. package/cjs/ui/PlaybackTime.js +35 -0
  533. package/cjs/ui/PlaybackTime.js.map +1 -0
  534. package/cjs/ui/ProgressBar.js +40 -0
  535. package/cjs/ui/ProgressBar.js.map +1 -0
  536. package/cjs/ui/QuoteMessage.js +50 -44
  537. package/cjs/ui/QuoteMessage.js.map +1 -1
  538. package/cjs/ui/QuoteMessageInput.js +31 -29
  539. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  540. package/cjs/ui/ReactionBadge.js +13 -21
  541. package/cjs/ui/ReactionBadge.js.map +1 -1
  542. package/cjs/ui/ReactionButton.js +30 -27
  543. package/cjs/ui/ReactionButton.js.map +1 -1
  544. package/cjs/ui/SortByRow.js +14 -18
  545. package/cjs/ui/SortByRow.js.map +1 -1
  546. package/cjs/ui/TextButton.js +13 -21
  547. package/cjs/ui/TextButton.js.map +1 -1
  548. package/cjs/ui/TextMessageItemBody.js +41 -48
  549. package/cjs/ui/TextMessageItemBody.js.map +1 -1
  550. package/cjs/ui/ThreadReplies.js +25 -22
  551. package/cjs/ui/ThreadReplies.js.map +1 -1
  552. package/cjs/ui/ThumbnailMessageItemBody.js +36 -45
  553. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  554. package/cjs/ui/Toggle.js +202 -0
  555. package/cjs/ui/Toggle.js.map +1 -0
  556. package/cjs/ui/Tooltip.js +8 -9
  557. package/cjs/ui/Tooltip.js.map +1 -1
  558. package/cjs/ui/TooltipWrapper.js +17 -20
  559. package/cjs/ui/TooltipWrapper.js.map +1 -1
  560. package/cjs/ui/UnknownMessageItemBody.js +21 -22
  561. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  562. package/cjs/ui/UserListItem.js +76 -76
  563. package/cjs/ui/UserListItem.js.map +1 -1
  564. package/cjs/ui/UserProfile.js +31 -29
  565. package/cjs/ui/UserProfile.js.map +1 -1
  566. package/cjs/ui/VoiceMessageItemBody.js +119 -0
  567. package/cjs/ui/VoiceMessageItemBody.js.map +1 -0
  568. package/cjs/ui/VoiceMessgeInput.js +22 -0
  569. package/cjs/ui/VoiceMessgeInput.js.map +1 -0
  570. package/cjs/ui/Word.js +31 -39
  571. package/cjs/ui/Word.js.map +1 -1
  572. package/cjs/useDirtyGetMentions-b8ca5675.js +77 -0
  573. package/cjs/useDirtyGetMentions-b8ca5675.js.map +1 -0
  574. package/cjs/useLongPress-8037894e.js +87 -0
  575. package/cjs/useLongPress-8037894e.js.map +1 -0
  576. package/cjs/useSendbirdStateContext.js +2 -3
  577. package/cjs/useSendbirdStateContext.js.map +1 -1
  578. package/cjs/utils/message/getOutgoingMessageState.js +16 -21
  579. package/cjs/utils/message/getOutgoingMessageState.js.map +1 -1
  580. package/cjs/utils/message/isVoiceMessage.js +12 -0
  581. package/cjs/utils/message/isVoiceMessage.js.map +1 -0
  582. package/cjs/{utils-5f86a394.js → utils-01ff5332.js} +3 -7
  583. package/cjs/{utils-5f86a394.js.map → utils-01ff5332.js.map} +1 -1
  584. package/cjs/utils-2edcddc8.js +35 -0
  585. package/cjs/utils-2edcddc8.js.map +1 -0
  586. package/cjs/utils-5ac3db44.js +31 -0
  587. package/cjs/utils-5ac3db44.js.map +1 -0
  588. package/cjs/{utils-374d57b4.js → utils-ad7b5b82.js} +1 -1
  589. package/cjs/{utils-374d57b4.js.map → utils-ad7b5b82.js.map} +1 -1
  590. package/cjs/uuid-12b01f73.js +15 -0
  591. package/cjs/{uuid-2475ef6c.js.map → uuid-12b01f73.js.map} +1 -1
  592. package/cjs/withSendbird.js +5 -6
  593. package/cjs/withSendbird.js.map +1 -1
  594. package/{color-163ba24d.js → color-347926b6.js} +5 -14
  595. package/{color-163ba24d.js.map → color-347926b6.js.map} +1 -1
  596. package/{compareIds-ef41eb2c.js → compareIds-3a43c11b.js} +5 -6
  597. package/compareIds-3a43c11b.js.map +1 -0
  598. package/const-18dba7a4.js +13 -0
  599. package/const-18dba7a4.js.map +1 -0
  600. package/{const-76d87f47.js → const-c608f749.js} +4 -4
  601. package/const-c608f749.js.map +1 -0
  602. package/consts-6bca01c7.js +4 -0
  603. package/consts-6bca01c7.js.map +1 -0
  604. package/consts-7a169a0f.js +4 -0
  605. package/consts-7a169a0f.js.map +1 -0
  606. package/consts-c1baf70a.js +27 -0
  607. package/consts-c1baf70a.js.map +1 -0
  608. package/consts-fb4d475a.js +4 -0
  609. package/consts-fb4d475a.js.map +1 -0
  610. package/context-786ef1a2.js +13 -0
  611. package/{context-10475c77.js.map → context-786ef1a2.js.map} +1 -1
  612. package/dist/index.css +1640 -1187
  613. package/dist/index.css.map +1 -1
  614. package/handlers/OpenChannelHandler.js.map +1 -1
  615. package/handlers/SessionHandler.js.map +1 -1
  616. package/{index-12754b45.js → index-06b854f7.js} +55 -63
  617. package/index-06b854f7.js.map +1 -0
  618. package/index-2673effb.js +360 -0
  619. package/index-2673effb.js.map +1 -0
  620. package/{index-4ebfc7a7.js → index-319984d0.js} +1 -1
  621. package/{index-4ebfc7a7.js.map → index-319984d0.js.map} +1 -1
  622. package/{index-3c013a28.js → index-4455855e.js} +2 -2
  623. package/{index-3c013a28.js.map → index-4455855e.js.map} +1 -1
  624. package/index-6663ce18.js +450 -0
  625. package/index-6663ce18.js.map +1 -0
  626. package/{index-a02da5bd.js → index-6c252d25.js} +2 -2
  627. package/{index-a02da5bd.js.map → index-6c252d25.js.map} +1 -1
  628. package/index-71a20863.js +320 -0
  629. package/index-71a20863.js.map +1 -0
  630. package/index-7d71b26c.js +154 -0
  631. package/index-7d71b26c.js.map +1 -0
  632. package/{index-2f346069.js → index-9a4e0846.js} +1 -1
  633. package/index-9a4e0846.js.map +1 -0
  634. package/{index-232388fa.js → index-9cd77b08.js} +29 -37
  635. package/index-9cd77b08.js.map +1 -0
  636. package/index-c149ea48.js +187 -0
  637. package/index-c149ea48.js.map +1 -0
  638. package/index-cf3939c6.js +76 -0
  639. package/index-cf3939c6.js.map +1 -0
  640. package/index-cf859f03.js +540 -0
  641. package/index-cf859f03.js.map +1 -0
  642. package/{index-2784bdd8.js → index-e33f7f55.js} +11 -25
  643. package/index-e33f7f55.js.map +1 -0
  644. package/{index-aea7b7d6.js → index-eabd1e7e.js} +39 -48
  645. package/index-eabd1e7e.js.map +1 -0
  646. package/index-ebb62af1.js +51 -0
  647. package/index-ebb62af1.js.map +1 -0
  648. package/{index-751f97ce.js → index-edf844f0.js} +57 -4
  649. package/index-edf844f0.js.map +1 -0
  650. package/index.d.ts +176 -124
  651. package/index.js +84 -63
  652. package/index.js.map +1 -1
  653. package/index.module-6b7ed635.js +4 -0
  654. package/index.module-6b7ed635.js.map +1 -0
  655. package/lame.all.js +2537 -0
  656. package/lame.all.js.map +1 -0
  657. package/package.json +62 -41
  658. package/resolvedReplyType-8776d777.js +29 -0
  659. package/resolvedReplyType-8776d777.js.map +1 -0
  660. package/sendbirdSelectors.js +307 -417
  661. package/sendbirdSelectors.js.map +1 -1
  662. package/{stringSet-9ae71b7d.js → stringSet-e0ee1265.js} +112 -90
  663. package/stringSet-e0ee1265.js.map +1 -0
  664. package/tokenize-1b053c86.js +159 -0
  665. package/tokenize-1b053c86.js.map +1 -0
  666. package/topics-70f569e9.js +16 -0
  667. package/topics-70f569e9.js.map +1 -0
  668. package/types-77bbdda6.js +15 -0
  669. package/types-77bbdda6.js.map +1 -0
  670. package/ui/Accordion.js +21 -24
  671. package/ui/Accordion.js.map +1 -1
  672. package/ui/AccordionGroup.js +10 -13
  673. package/ui/AccordionGroup.js.map +1 -1
  674. package/ui/AdminMessage.js +10 -13
  675. package/ui/AdminMessage.js.map +1 -1
  676. package/ui/Avatar.js +57 -79
  677. package/ui/Avatar.js.map +1 -1
  678. package/ui/Badge.js +16 -15
  679. package/ui/Badge.js.map +1 -1
  680. package/ui/BottomSheet.js +14 -12
  681. package/ui/BottomSheet.js.map +1 -1
  682. package/ui/Button.js +20 -35
  683. package/ui/Button.js.map +1 -1
  684. package/ui/ChannelAvatar.js +38 -41
  685. package/ui/ChannelAvatar.js.map +1 -1
  686. package/ui/Checkbox.js +11 -13
  687. package/ui/Checkbox.js.map +1 -1
  688. package/ui/ConnectionStatus.js +7 -5
  689. package/ui/ConnectionStatus.js.map +1 -1
  690. package/ui/ContextMenu.js +176 -200
  691. package/ui/ContextMenu.js.map +1 -1
  692. package/ui/DateSeparator.js +12 -14
  693. package/ui/DateSeparator.js.map +1 -1
  694. package/ui/EmojiReactions.js +300 -108
  695. package/ui/EmojiReactions.js.map +1 -1
  696. package/ui/FileMessageItemBody.js +22 -23
  697. package/ui/FileMessageItemBody.js.map +1 -1
  698. package/ui/FileViewer.js +36 -36
  699. package/ui/FileViewer.js.map +1 -1
  700. package/ui/Icon.js +448 -622
  701. package/ui/Icon.js.map +1 -1
  702. package/ui/IconButton.js +20 -31
  703. package/ui/IconButton.js.map +1 -1
  704. package/ui/ImageRenderer.js +34 -43
  705. package/ui/ImageRenderer.js.map +1 -1
  706. package/ui/Input.js +16 -16
  707. package/ui/Input.js.map +1 -1
  708. package/ui/Label.js +2 -2
  709. package/ui/LinkLabel.js +4 -3
  710. package/ui/LinkLabel.js.map +1 -1
  711. package/ui/Loader.js +10 -12
  712. package/ui/Loader.js.map +1 -1
  713. package/ui/MentionLabel.js +58 -65
  714. package/ui/MentionLabel.js.map +1 -1
  715. package/ui/MentionUserLabel.js +12 -10
  716. package/ui/MentionUserLabel.js.map +1 -1
  717. package/ui/MessageContent.js +215 -551
  718. package/ui/MessageContent.js.map +1 -1
  719. package/ui/MessageInput.js +392 -120
  720. package/ui/MessageInput.js.map +1 -1
  721. package/ui/MessageItemMenu.js +83 -83
  722. package/ui/MessageItemMenu.js.map +1 -1
  723. package/ui/MessageItemReactionMenu.js +58 -62
  724. package/ui/MessageItemReactionMenu.js.map +1 -1
  725. package/ui/MessageSearchFileItem.js +55 -50
  726. package/ui/MessageSearchFileItem.js.map +1 -1
  727. package/ui/MessageSearchItem.js +41 -40
  728. package/ui/MessageSearchItem.js.map +1 -1
  729. package/ui/MessageStatus.js +10 -11
  730. package/ui/MessageStatus.js.map +1 -1
  731. package/ui/Modal.js +52 -46
  732. package/ui/Modal.js.map +1 -1
  733. package/ui/MutedAvatarOverlay.js +10 -10
  734. package/ui/MutedAvatarOverlay.js.map +1 -1
  735. package/ui/OGMessageItemBody.js +68 -64
  736. package/ui/OGMessageItemBody.js.map +1 -1
  737. package/ui/OpenChannelAdminMessage.js +8 -7
  738. package/ui/OpenChannelAdminMessage.js.map +1 -1
  739. package/ui/OpenChannelAvatar.js +18 -17
  740. package/ui/OpenChannelAvatar.js.map +1 -1
  741. package/ui/OpenchannelConversationHeader.js +17 -13
  742. package/ui/OpenchannelConversationHeader.js.map +1 -1
  743. package/ui/OpenchannelFileMessage.js +140 -151
  744. package/ui/OpenchannelFileMessage.js.map +1 -1
  745. package/ui/OpenchannelOGMessage.js +204 -233
  746. package/ui/OpenchannelOGMessage.js.map +1 -1
  747. package/ui/OpenchannelThumbnailMessage.js +215 -222
  748. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  749. package/ui/OpenchannelUserMessage.js +168 -178
  750. package/ui/OpenchannelUserMessage.js.map +1 -1
  751. package/ui/PlaceHolder.js +5 -6
  752. package/ui/PlaceHolder.js.map +1 -1
  753. package/ui/PlaybackTime.js +26 -0
  754. package/ui/PlaybackTime.js.map +1 -0
  755. package/ui/ProgressBar.js +30 -0
  756. package/ui/ProgressBar.js.map +1 -0
  757. package/ui/QuoteMessage.js +50 -44
  758. package/ui/QuoteMessage.js.map +1 -1
  759. package/ui/QuoteMessageInput.js +31 -29
  760. package/ui/QuoteMessageInput.js.map +1 -1
  761. package/ui/ReactionBadge.js +13 -21
  762. package/ui/ReactionBadge.js.map +1 -1
  763. package/ui/ReactionButton.js +30 -27
  764. package/ui/ReactionButton.js.map +1 -1
  765. package/ui/SortByRow.js +14 -18
  766. package/ui/SortByRow.js.map +1 -1
  767. package/ui/TextButton.js +13 -21
  768. package/ui/TextButton.js.map +1 -1
  769. package/ui/TextMessageItemBody.js +41 -48
  770. package/ui/TextMessageItemBody.js.map +1 -1
  771. package/ui/ThreadReplies.js +25 -22
  772. package/ui/ThreadReplies.js.map +1 -1
  773. package/ui/ThumbnailMessageItemBody.js +36 -45
  774. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  775. package/ui/Toggle.js +191 -0
  776. package/ui/Toggle.js.map +1 -0
  777. package/ui/Tooltip.js +8 -9
  778. package/ui/Tooltip.js.map +1 -1
  779. package/ui/TooltipWrapper.js +17 -20
  780. package/ui/TooltipWrapper.js.map +1 -1
  781. package/ui/UnknownMessageItemBody.js +21 -22
  782. package/ui/UnknownMessageItemBody.js.map +1 -1
  783. package/ui/UserListItem.js +76 -76
  784. package/ui/UserListItem.js.map +1 -1
  785. package/ui/UserProfile.js +31 -29
  786. package/ui/UserProfile.js.map +1 -1
  787. package/ui/VoiceMessageItemBody.js +110 -0
  788. package/ui/VoiceMessageItemBody.js.map +1 -0
  789. package/ui/VoiceMessgeInput.js +14 -0
  790. package/ui/VoiceMessgeInput.js.map +1 -0
  791. package/ui/Word.js +31 -39
  792. package/ui/Word.js.map +1 -1
  793. package/useDirtyGetMentions-f00f1f94.js +75 -0
  794. package/useDirtyGetMentions-f00f1f94.js.map +1 -0
  795. package/useLongPress-1ab49410.js +85 -0
  796. package/useLongPress-1ab49410.js.map +1 -0
  797. package/useSendbirdStateContext.js +2 -3
  798. package/useSendbirdStateContext.js.map +1 -1
  799. package/utils/message/getOutgoingMessageState.js +9 -15
  800. package/utils/message/getOutgoingMessageState.js.map +1 -1
  801. package/utils/message/isVoiceMessage.js +8 -0
  802. package/utils/message/isVoiceMessage.js.map +1 -0
  803. package/{utils-ea66f822.js → utils-56cb7de5.js} +1 -1
  804. package/{utils-ea66f822.js.map → utils-56cb7de5.js.map} +1 -1
  805. package/utils-77f7e8b2.js +29 -0
  806. package/utils-77f7e8b2.js.map +1 -0
  807. package/{utils-ddb0df4c.js → utils-7f3d0d8c.js} +3 -7
  808. package/{utils-ddb0df4c.js.map → utils-7f3d0d8c.js.map} +1 -1
  809. package/utils-af9b1c06.js +31 -0
  810. package/utils-af9b1c06.js.map +1 -0
  811. package/uuid-92d22300.js +13 -0
  812. package/{uuid-7e004f47.js.map → uuid-92d22300.js.map} +1 -1
  813. package/withSendbird.js +5 -6
  814. package/withSendbird.js.map +1 -1
  815. package/ChannelListProvider-1d36e2e9.js.map +0 -1
  816. package/ChannelProvider-289cd35f.js.map +0 -1
  817. package/CreateChannelProvider-72b655e9.js +0 -55
  818. package/CreateChannelProvider-72b655e9.js.map +0 -1
  819. package/LocalizationContext-289c1917.js +0 -22
  820. package/MediaQueryContext-273d29f6.js +0 -90
  821. package/MediaQueryContext-273d29f6.js.map +0 -1
  822. package/MemberList-7ad0fa0b.js +0 -435
  823. package/MemberList-7ad0fa0b.js.map +0 -1
  824. package/NotificationChannel/components/NotificationChannelUI.js +0 -119
  825. package/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  826. package/NotificationChannel/components/NotificationList.js +0 -111
  827. package/NotificationChannel/components/NotificationList.js.map +0 -1
  828. package/NotificationChannel/components/NotificationMessageWrap.js +0 -136
  829. package/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  830. package/NotificationChannel/context.js +0 -12
  831. package/NotificationChannel.js +0 -58
  832. package/NotificationChannel.js.map +0 -1
  833. package/NotificationChannelProvider-ad556c64.js +0 -535
  834. package/NotificationChannelProvider-ad556c64.js.map +0 -1
  835. package/OpenChannelListProvider-0febf8b2.js +0 -434
  836. package/OpenChannelListProvider-0febf8b2.js.map +0 -1
  837. package/OpenChannelProvider-c254c663.js +0 -2000
  838. package/OpenChannelProvider-c254c663.js.map +0 -1
  839. package/RemoveMessageModal-d6cbf9fa.js +0 -31
  840. package/RemoveMessageModal-d6cbf9fa.js.map +0 -1
  841. package/ThreadProvider-8696ef31.js +0 -1644
  842. package/ThreadProvider-8696ef31.js.map +0 -1
  843. package/_rollupPluginBabelHelpers-519f674b.js.map +0 -1
  844. package/actionTypes-9f87e87f.js +0 -6
  845. package/actionTypes-9f87e87f.js.map +0 -1
  846. package/cjs/ChannelListProvider-0de52d2b.js.map +0 -1
  847. package/cjs/ChannelProvider-fc58e60e.js.map +0 -1
  848. package/cjs/CreateChannelProvider-a82d20f4.js +0 -62
  849. package/cjs/CreateChannelProvider-a82d20f4.js.map +0 -1
  850. package/cjs/MediaQueryContext-4711a81f.js +0 -97
  851. package/cjs/MediaQueryContext-4711a81f.js.map +0 -1
  852. package/cjs/MemberList-b2623166.js +0 -441
  853. package/cjs/MemberList-b2623166.js.map +0 -1
  854. package/cjs/NotificationChannel/components/NotificationChannelUI.js +0 -125
  855. package/cjs/NotificationChannel/components/NotificationChannelUI.js.map +0 -1
  856. package/cjs/NotificationChannel/components/NotificationList.js +0 -117
  857. package/cjs/NotificationChannel/components/NotificationList.js.map +0 -1
  858. package/cjs/NotificationChannel/components/NotificationMessageWrap.js +0 -142
  859. package/cjs/NotificationChannel/components/NotificationMessageWrap.js.map +0 -1
  860. package/cjs/NotificationChannel/context.js +0 -21
  861. package/cjs/NotificationChannel.js +0 -64
  862. package/cjs/NotificationChannel.js.map +0 -1
  863. package/cjs/NotificationChannelProvider-2cdc7ff4.js +0 -543
  864. package/cjs/NotificationChannelProvider-2cdc7ff4.js.map +0 -1
  865. package/cjs/OpenChannelListProvider-60bc3c69.js +0 -443
  866. package/cjs/OpenChannelListProvider-60bc3c69.js.map +0 -1
  867. package/cjs/OpenChannelProvider-3ed4eb6e.js +0 -2009
  868. package/cjs/OpenChannelProvider-3ed4eb6e.js.map +0 -1
  869. package/cjs/RemoveMessageModal-9169766a.js.map +0 -1
  870. package/cjs/ThreadProvider-389f5031.js +0 -1653
  871. package/cjs/ThreadProvider-389f5031.js.map +0 -1
  872. package/cjs/_rollupPluginBabelHelpers-fed1e122.js.map +0 -1
  873. package/cjs/actionTypes-2f90e726.js +0 -10
  874. package/cjs/actionTypes-2f90e726.js.map +0 -1
  875. package/cjs/color-f47044b3.js.map +0 -1
  876. package/cjs/compareIds-4124b297.js.map +0 -1
  877. package/cjs/const-015e5589.js +0 -20
  878. package/cjs/const-015e5589.js.map +0 -1
  879. package/cjs/const-fd64914b.js.map +0 -1
  880. package/cjs/index-30c97863.js +0 -194
  881. package/cjs/index-30c97863.js.map +0 -1
  882. package/cjs/index-3a4f8219.js.map +0 -1
  883. package/cjs/index-40e4653a.js +0 -59
  884. package/cjs/index-40e4653a.js.map +0 -1
  885. package/cjs/index-5d5497c2.js.map +0 -1
  886. package/cjs/index-62c1bdfc.js +0 -701
  887. package/cjs/index-62c1bdfc.js.map +0 -1
  888. package/cjs/index-9ca07037.js.map +0 -1
  889. package/cjs/index-9f3670d0.js +0 -360
  890. package/cjs/index-9f3670d0.js.map +0 -1
  891. package/cjs/index-abbc8024.js.map +0 -1
  892. package/cjs/index-c475c3c8.js.map +0 -1
  893. package/cjs/index-c5cd589d.js.map +0 -1
  894. package/cjs/stringSet-3e6167ef.js.map +0 -1
  895. package/cjs/topics-56842e14.js +0 -22
  896. package/cjs/topics-56842e14.js.map +0 -1
  897. package/cjs/tslib.es6-b8ba50ef.js +0 -110
  898. package/cjs/tslib.es6-b8ba50ef.js.map +0 -1
  899. package/cjs/useLongPress-99c66f7f.js +0 -118
  900. package/cjs/useLongPress-99c66f7f.js.map +0 -1
  901. package/cjs/utils-9adfd244.js +0 -38
  902. package/cjs/utils-9adfd244.js.map +0 -1
  903. package/cjs/utils-f6a96ebf.js +0 -32
  904. package/cjs/utils-f6a96ebf.js.map +0 -1
  905. package/cjs/uuid-2475ef6c.js +0 -19
  906. package/compareIds-ef41eb2c.js.map +0 -1
  907. package/const-76d87f47.js.map +0 -1
  908. package/const-da6f3d34.js +0 -14
  909. package/const-da6f3d34.js.map +0 -1
  910. package/context-10475c77.js +0 -12
  911. package/index-12754b45.js.map +0 -1
  912. package/index-1e46e582.js +0 -179
  913. package/index-1e46e582.js.map +0 -1
  914. package/index-232388fa.js.map +0 -1
  915. package/index-2784bdd8.js.map +0 -1
  916. package/index-2f346069.js.map +0 -1
  917. package/index-4637b0de.js +0 -57
  918. package/index-4637b0de.js.map +0 -1
  919. package/index-4900e890.js +0 -353
  920. package/index-4900e890.js.map +0 -1
  921. package/index-751f97ce.js.map +0 -1
  922. package/index-855ef33d.js +0 -662
  923. package/index-855ef33d.js.map +0 -1
  924. package/index-aea7b7d6.js.map +0 -1
  925. package/stringSet-9ae71b7d.js.map +0 -1
  926. package/topics-e2963bba.js +0 -13
  927. package/topics-e2963bba.js.map +0 -1
  928. package/tslib.es6-72df3331.js +0 -104
  929. package/tslib.es6-72df3331.js.map +0 -1
  930. package/useLongPress-1a777e9e.js +0 -116
  931. package/useLongPress-1a777e9e.js.map +0 -1
  932. package/utils-2976f2c1.js +0 -30
  933. package/utils-2976f2c1.js.map +0 -1
  934. package/utils-6b69fb18.js +0 -34
  935. package/utils-6b69fb18.js.map +0 -1
  936. package/uuid-7e004f47.js +0 -17
@@ -0,0 +1,1695 @@
1
+ import React__default, { useEffect, useCallback, useReducer, useMemo } from 'react';
2
+ import { f as format } from './index-4455855e.js';
3
+ import { getOutgoingMessageState, OutgoingMessageStates } from './utils/message/getOutgoingMessageState.js';
4
+ import { U as UserProfileProvider } from './UserProfileContext-c776d522.js';
5
+ import useSendbirdStateContext from './useSendbirdStateContext.js';
6
+ import { _ as _objectSpread2 } from './_rollupPluginBabelHelpers-fb0e05a4.js';
7
+ import { ChannelStateTypes, ThreadListStateTypes, ParentMessageStateTypes } from './Thread/context/types.js';
8
+ import { ChannelType } from '@sendbird/chat';
9
+ import { P as PUBSUB_TOPICS } from './topics-70f569e9.js';
10
+ import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
11
+ import { u as uuidv4 } from './uuid-92d22300.js';
12
+ import { SendingStatus, MessageType, MessageMetaArray } from '@sendbird/chat/message';
13
+ import { b as VOICE_MESSAGE_FILE_NAME, c as VOICE_MESSAGE_MIME_TYPE, M as META_ARRAY_VOICE_DURATION_KEY, d as META_ARRAY_MESSAGE_TYPE_KEY, e as META_ARRAY_MESSAGE_TYPE_VALUE__VOICE } from './consts-c1baf70a.js';
14
+
15
+ const getNicknamesMapFromMembers = function () {
16
+ let members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
17
+ const nicknamesMap = new Map();
18
+ for (let memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
19
+ const {
20
+ userId,
21
+ nickname
22
+ } = members[memberIndex];
23
+ nicknamesMap.set(userId, nickname);
24
+ }
25
+ return nicknamesMap;
26
+ };
27
+ const getParentMessageFrom = message => {
28
+ if (!message) {
29
+ return null;
30
+ }
31
+ if (isParentMessage(message)) {
32
+ return message;
33
+ }
34
+ if (isThreadMessage(message)) {
35
+ return (message === null || message === void 0 ? void 0 : message.parentMessage) || null;
36
+ }
37
+ return null;
38
+ };
39
+ const isParentMessage = message => {
40
+ return (message === null || message === void 0 ? void 0 : message.parentMessage) === null && typeof (message === null || message === void 0 ? void 0 : message.parentMessageId) === 'number' && !(message !== null && message !== void 0 && message.parentMessageId);
41
+ };
42
+ const isThreadMessage = message => {
43
+ return (message === null || message === void 0 ? void 0 : message.parentMessage) !== null && typeof (message === null || message === void 0 ? void 0 : message.parentMessageId) === 'number' && (message === null || message === void 0 ? void 0 : message.parentMessageId) > 0 && (message === null || message === void 0 ? void 0 : message.threadInfo) === null;
44
+ };
45
+ const isAboutSame = (a, b, px) => Math.abs(a - b) <= px;
46
+ const isEmpty = val => val === null || val === undefined;
47
+
48
+ // Some Ids return string and number inconsistently
49
+ // only use to comapre IDs
50
+ function compareIds(a, b) {
51
+ if (isEmpty(a) || isEmpty(b)) {
52
+ return false;
53
+ }
54
+ const aString = a.toString();
55
+ const bString = b.toString();
56
+ return aString === bString;
57
+ }
58
+ const getMessageCreatedAt = message => format(message.createdAt, 'p');
59
+ const isReadMessage = (channel, message) => getOutgoingMessageState(channel, message) === OutgoingMessageStates.READ;
60
+ const isSameGroup = (message, comparingMessage, currentChannel) => {
61
+ var _message$sender, _comparingMessage$sen, _message$sender2, _comparingMessage$sen2;
62
+ if (!(message && comparingMessage && message.messageType && message.messageType !== 'admin' && comparingMessage.messageType && (comparingMessage === null || comparingMessage === void 0 ? void 0 : 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 && (_message$sender = message.sender) !== null && _message$sender !== void 0 && _message$sender.userId && comparingMessage !== null && comparingMessage !== void 0 && (_comparingMessage$sen = comparingMessage.sender) !== null && _comparingMessage$sen !== void 0 && _comparingMessage$sen.userId)) {
63
+ return false;
64
+ }
65
+ 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$sender2 = message.sender) === null || _message$sender2 === void 0 ? void 0 : _message$sender2.userId) === (comparingMessage === null || comparingMessage === void 0 ? void 0 : (_comparingMessage$sen2 = comparingMessage.sender) === null || _comparingMessage$sen2 === void 0 ? void 0 : _comparingMessage$sen2.userId) && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage) && isReadMessage(currentChannel, message) === isReadMessage(currentChannel, comparingMessage);
66
+ };
67
+ const compareMessagesForGrouping = (prevMessage, currMessage, nextMessage, currentChannel, replyType) => {
68
+ if (replyType === 'THREAD' && currMessage !== null && currMessage !== void 0 && currMessage.threadInfo) {
69
+ return [false, false];
70
+ }
71
+ const sendingStatus = (currMessage === null || currMessage === void 0 ? void 0 : currMessage.sendingStatus) || '';
72
+ const isAcceptable = sendingStatus !== 'pending' && sendingStatus !== 'failed';
73
+ return [isSameGroup(prevMessage, currMessage, currentChannel) && isAcceptable, isSameGroup(currMessage, nextMessage, currentChannel) && isAcceptable];
74
+ };
75
+ const scrollIntoLast = function () {
76
+ let intialTry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
77
+ const MAX_TRIES = 10;
78
+ const currentTry = intialTry;
79
+ if (currentTry > MAX_TRIES) {
80
+ return;
81
+ }
82
+ try {
83
+ const scrollDOM = document.querySelector('.sendbird-thread-ui--scroll');
84
+ // eslint-disable-next-line no-multi-assign
85
+ scrollDOM.scrollTop = scrollDOM.scrollHeight;
86
+ } catch (error) {
87
+ setTimeout(() => {
88
+ scrollIntoLast(currentTry + 1);
89
+ }, 500 * currentTry);
90
+ }
91
+ };
92
+
93
+ const PREV_THREADS_FETCH_SIZE = 30;
94
+ const NEXT_THREADS_FETCH_SIZE = 30;
95
+
96
+ let ThreadContextActionTypes = /*#__PURE__*/function (ThreadContextActionTypes) {
97
+ ThreadContextActionTypes["INIT_USER_ID"] = "INIT_USER_ID";
98
+ ThreadContextActionTypes["GET_CHANNEL_START"] = "GET_CHANNEL_START";
99
+ ThreadContextActionTypes["GET_CHANNEL_SUCCESS"] = "GET_CHANNEL_SUCCESS";
100
+ ThreadContextActionTypes["GET_CHANNEL_FAILURE"] = "GET_CHANNEL_FAILURE";
101
+ ThreadContextActionTypes["SET_EMOJI_CONTAINER"] = "SET_EMOJI_CONTAINER";
102
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_START"] = "GET_PARENT_MESSAGE_START";
103
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_SUCCESS"] = "GET_PARENT_MESSAGE_SUCCESS";
104
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_FAILURE"] = "GET_PARENT_MESSAGE_FAILURE";
105
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_START"] = "INITIALIZE_THREAD_LIST_START";
106
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_SUCCESS"] = "INITIALIZE_THREAD_LIST_SUCCESS";
107
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_FAILURE"] = "INITIALIZE_THREAD_LIST_FAILURE";
108
+ ThreadContextActionTypes["GET_PREV_MESSAGES_START"] = "GET_PREV_MESSAGES_START";
109
+ ThreadContextActionTypes["GET_PREV_MESSAGES_SUCESS"] = "GET_PREV_MESSAGES_SUCESS";
110
+ ThreadContextActionTypes["GET_PREV_MESSAGES_FAILURE"] = "GET_PREV_MESSAGES_FAILURE";
111
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_START"] = "GET_NEXT_MESSAGES_START";
112
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_SUCESS"] = "GET_NEXT_MESSAGES_SUCESS";
113
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_FAILURE"] = "GET_NEXT_MESSAGES_FAILURE";
114
+ ThreadContextActionTypes["SEND_MESSAGE_START"] = "SEND_MESSAGE_START";
115
+ ThreadContextActionTypes["SEND_MESSAGE_SUCESS"] = "SEND_MESSAGE_SUCESS";
116
+ ThreadContextActionTypes["SEND_MESSAGE_FAILURE"] = "SEND_MESSAGE_FAILURE";
117
+ ThreadContextActionTypes["RESEND_MESSAGE_START"] = "RESEND_MESSAGE_START";
118
+ ThreadContextActionTypes["ON_MESSAGE_DELETED_BY_REQ_ID"] = "ON_MESSAGE_DELETED_BY_REQ_ID";
119
+ ThreadContextActionTypes["ON_MESSAGE_RECEIVED"] = "ON_MESSAGE_RECEIVED";
120
+ ThreadContextActionTypes["ON_MESSAGE_UPDATED"] = "ON_MESSAGE_UPDATED";
121
+ ThreadContextActionTypes["ON_MESSAGE_DELETED"] = "ON_MESSAGE_DELETED";
122
+ ThreadContextActionTypes["ON_REACTION_UPDATED"] = "ON_REACTION_UPDATED";
123
+ ThreadContextActionTypes["ON_USER_MUTED"] = "ON_USER_MUTED";
124
+ ThreadContextActionTypes["ON_USER_UNMUTED"] = "ON_USER_UNMUTED";
125
+ ThreadContextActionTypes["ON_USER_BANNED"] = "ON_USER_BANNED";
126
+ ThreadContextActionTypes["ON_USER_UNBANNED"] = "ON_USER_UNBANNED";
127
+ ThreadContextActionTypes["ON_USER_LEFT"] = "ON_USER_LEFT";
128
+ ThreadContextActionTypes["ON_CHANNEL_FROZEN"] = "ON_CHANNEL_FROZEN";
129
+ ThreadContextActionTypes["ON_CHANNEL_UNFROZEN"] = "ON_CHANNEL_UNFROZEN";
130
+ ThreadContextActionTypes["ON_OPERATOR_UPDATED"] = "ON_OPERATOR_UPDATED";
131
+ return ThreadContextActionTypes;
132
+ }({});
133
+
134
+ function reducer(state, action) {
135
+ switch (action.type) {
136
+ // initialize
137
+ case ThreadContextActionTypes.INIT_USER_ID:
138
+ {
139
+ return _objectSpread2(_objectSpread2({}, state), {}, {
140
+ currentUserId: action.payload
141
+ });
142
+ }
143
+ case ThreadContextActionTypes.GET_CHANNEL_START:
144
+ {
145
+ return _objectSpread2(_objectSpread2({}, state), {}, {
146
+ channelState: ChannelStateTypes.LOADING,
147
+ currentChannel: null
148
+ });
149
+ }
150
+ case ThreadContextActionTypes.GET_CHANNEL_SUCCESS:
151
+ {
152
+ var _groupChannel$members, _groupChannel$members2;
153
+ const groupChannel = action.payload.groupChannel;
154
+ return _objectSpread2(_objectSpread2({}, state), {}, {
155
+ channelState: ChannelStateTypes.INITIALIZED,
156
+ currentChannel: groupChannel,
157
+ // only support in normal group channel
158
+ isMuted: (groupChannel === null || groupChannel === void 0 ? void 0 : (_groupChannel$members = groupChannel.members) === null || _groupChannel$members === void 0 ? void 0 : (_groupChannel$members2 = _groupChannel$members.find(member => (member === null || member === void 0 ? void 0 : member.userId) === state.currentUserId)) === null || _groupChannel$members2 === void 0 ? void 0 : _groupChannel$members2.isMuted) || false,
159
+ isChannelFrozen: (groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.isFrozen) || false
160
+ });
161
+ }
162
+ case ThreadContextActionTypes.GET_CHANNEL_FAILURE:
163
+ {
164
+ return _objectSpread2(_objectSpread2({}, state), {}, {
165
+ channelState: ChannelStateTypes.INVALID,
166
+ currentChannel: null
167
+ });
168
+ }
169
+ case ThreadContextActionTypes.SET_EMOJI_CONTAINER:
170
+ {
171
+ const {
172
+ emojiContainer
173
+ } = action.payload;
174
+ return _objectSpread2(_objectSpread2({}, state), {}, {
175
+ emojiContainer: emojiContainer
176
+ });
177
+ }
178
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_START:
179
+ {
180
+ return _objectSpread2(_objectSpread2({}, state), {}, {
181
+ parentMessageState: ParentMessageStateTypes.LOADING,
182
+ parentMessage: null
183
+ });
184
+ }
185
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_SUCCESS:
186
+ {
187
+ return _objectSpread2(_objectSpread2({}, state), {}, {
188
+ parentMessageState: ParentMessageStateTypes.INITIALIZED,
189
+ parentMessage: action.payload.parentMessage
190
+ });
191
+ }
192
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_FAILURE:
193
+ {
194
+ return _objectSpread2(_objectSpread2({}, state), {}, {
195
+ parentMessageState: ParentMessageStateTypes.INVALID,
196
+ parentMessage: null
197
+ });
198
+ }
199
+ // fetch threads
200
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_START:
201
+ {
202
+ return _objectSpread2(_objectSpread2({}, state), {}, {
203
+ threadListState: ThreadListStateTypes.LOADING,
204
+ allThreadMessages: []
205
+ });
206
+ }
207
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_SUCCESS:
208
+ {
209
+ const {
210
+ parentMessage,
211
+ anchorMessage,
212
+ threadedMessages
213
+ } = action.payload;
214
+ const anchorMessageCreatedAt = !(anchorMessage !== null && anchorMessage !== void 0 && anchorMessage.messageId) ? parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.createdAt : anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.createdAt;
215
+ const anchorIndex = threadedMessages.findIndex(message => (message === null || message === void 0 ? void 0 : message.createdAt) > anchorMessageCreatedAt);
216
+ const prevThreadMessages = anchorIndex > -1 ? threadedMessages.slice(0, anchorIndex) : threadedMessages;
217
+ const anchorThreadMessage = anchorMessage !== null && anchorMessage !== void 0 && anchorMessage.messageId ? [anchorMessage] : [];
218
+ const nextThreadMessages = anchorIndex > -1 ? threadedMessages.slice(anchorIndex) : [];
219
+ return _objectSpread2(_objectSpread2({}, state), {}, {
220
+ threadListState: ThreadListStateTypes.INITIALIZED,
221
+ hasMorePrev: anchorIndex === -1 || anchorIndex === PREV_THREADS_FETCH_SIZE,
222
+ hasMoreNext: threadedMessages.length - anchorIndex === NEXT_THREADS_FETCH_SIZE,
223
+ allThreadMessages: [prevThreadMessages, anchorThreadMessage, nextThreadMessages].flat()
224
+ });
225
+ }
226
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_FAILURE:
227
+ {
228
+ return _objectSpread2(_objectSpread2({}, state), {}, {
229
+ threadListState: ThreadListStateTypes.INVALID,
230
+ allThreadMessages: []
231
+ });
232
+ }
233
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_START:
234
+ {
235
+ return _objectSpread2({}, state);
236
+ }
237
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_SUCESS:
238
+ {
239
+ const {
240
+ threadedMessages
241
+ } = action.payload;
242
+ return _objectSpread2(_objectSpread2({}, state), {}, {
243
+ hasMoreNext: threadedMessages.length === NEXT_THREADS_FETCH_SIZE,
244
+ allThreadMessages: [...state.allThreadMessages, ...threadedMessages]
245
+ });
246
+ }
247
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_FAILURE:
248
+ {
249
+ return _objectSpread2(_objectSpread2({}, state), {}, {
250
+ hasMoreNext: false
251
+ });
252
+ }
253
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_START:
254
+ {
255
+ return _objectSpread2({}, state);
256
+ }
257
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_SUCESS:
258
+ {
259
+ const {
260
+ threadedMessages
261
+ } = action.payload;
262
+ return _objectSpread2(_objectSpread2({}, state), {}, {
263
+ hasMorePrev: threadedMessages.length === PREV_THREADS_FETCH_SIZE,
264
+ allThreadMessages: [...threadedMessages, ...state.allThreadMessages]
265
+ });
266
+ }
267
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_FAILURE:
268
+ {
269
+ return _objectSpread2(_objectSpread2({}, state), {}, {
270
+ hasMorePrev: false
271
+ });
272
+ }
273
+ // event handlers - message status change
274
+ case ThreadContextActionTypes.ON_MESSAGE_RECEIVED:
275
+ {
276
+ var _state$currentChannel, _message$parentMessag, _state$parentMessage, _state$parentMessage2;
277
+ const {
278
+ channel,
279
+ message
280
+ } = action.payload;
281
+ if (((_state$currentChannel = state.currentChannel) === null || _state$currentChannel === void 0 ? void 0 : _state$currentChannel.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.hasMoreNext || (message === null || message === void 0 ? void 0 : (_message$parentMessag = message.parentMessage) === null || _message$parentMessag === void 0 ? void 0 : _message$parentMessag.messageId) !== (state === null || state === void 0 ? void 0 : (_state$parentMessage = state.parentMessage) === null || _state$parentMessage === void 0 ? void 0 : _state$parentMessage.messageId)) {
282
+ return state;
283
+ }
284
+ const isAlreadyReceived = state.allThreadMessages.findIndex(m => m.messageId === message.messageId) > -1;
285
+ return _objectSpread2(_objectSpread2({}, state), {}, {
286
+ parentMessage: ((_state$parentMessage2 = state.parentMessage) === null || _state$parentMessage2 === void 0 ? void 0 : _state$parentMessage2.messageId) === (message === null || message === void 0 ? void 0 : message.messageId) ? message : state.parentMessage,
287
+ allThreadMessages: isAlreadyReceived ? state.allThreadMessages.map(m => m.messageId === message.messageId ? message : m) : [...state.allThreadMessages.filter(m => (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId)), message]
288
+ });
289
+ }
290
+ case ThreadContextActionTypes.ON_MESSAGE_UPDATED:
291
+ {
292
+ var _state$currentChannel2, _state$parentMessage3, _state$allThreadMessa;
293
+ const {
294
+ channel,
295
+ message
296
+ } = action.payload;
297
+ if (((_state$currentChannel2 = state.currentChannel) === null || _state$currentChannel2 === void 0 ? void 0 : _state$currentChannel2.url) !== (channel === null || channel === void 0 ? void 0 : channel.url)) {
298
+ return state;
299
+ }
300
+ return _objectSpread2(_objectSpread2({}, state), {}, {
301
+ parentMessage: ((_state$parentMessage3 = state.parentMessage) === null || _state$parentMessage3 === void 0 ? void 0 : _state$parentMessage3.messageId) === (message === null || message === void 0 ? void 0 : message.messageId) ? message : state.parentMessage,
302
+ allThreadMessages: (_state$allThreadMessa = state.allThreadMessages) === null || _state$allThreadMessa === void 0 ? void 0 : _state$allThreadMessa.map(msg => (msg === null || msg === void 0 ? void 0 : msg.messageId) === (message === null || message === void 0 ? void 0 : message.messageId) ? message : msg)
303
+ });
304
+ }
305
+ case ThreadContextActionTypes.ON_MESSAGE_DELETED:
306
+ {
307
+ var _state$currentChannel3, _state$parentMessage4, _state$allThreadMessa2;
308
+ const {
309
+ channel,
310
+ messageId
311
+ } = action.payload;
312
+ if (((_state$currentChannel3 = state.currentChannel) === null || _state$currentChannel3 === void 0 ? void 0 : _state$currentChannel3.url) !== (channel === null || channel === void 0 ? void 0 : channel.url)) {
313
+ return state;
314
+ }
315
+ if ((state === null || state === void 0 ? void 0 : (_state$parentMessage4 = state.parentMessage) === null || _state$parentMessage4 === void 0 ? void 0 : _state$parentMessage4.messageId) === messageId) {
316
+ return _objectSpread2(_objectSpread2({}, state), {}, {
317
+ parentMessage: null,
318
+ parentMessageState: ParentMessageStateTypes.NIL,
319
+ allThreadMessages: []
320
+ });
321
+ }
322
+ return _objectSpread2(_objectSpread2({}, state), {}, {
323
+ allThreadMessages: (_state$allThreadMessa2 = state.allThreadMessages) === null || _state$allThreadMessa2 === void 0 ? void 0 : _state$allThreadMessa2.filter(msg => (msg === null || msg === void 0 ? void 0 : msg.messageId) !== messageId)
324
+ });
325
+ }
326
+ case ThreadContextActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:
327
+ {
328
+ return _objectSpread2(_objectSpread2({}, state), {}, {
329
+ allThreadMessages: state.allThreadMessages.filter(m => !compareIds(m.reqId, action.payload))
330
+ });
331
+ }
332
+ case ThreadContextActionTypes.ON_REACTION_UPDATED:
333
+ {
334
+ var _action$payload, _state$parentMessage5;
335
+ const reactionEvent = (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : _action$payload.reactionEvent;
336
+ if ((state === null || state === void 0 ? void 0 : (_state$parentMessage5 = state.parentMessage) === null || _state$parentMessage5 === void 0 ? void 0 : _state$parentMessage5.messageId) === (reactionEvent === null || reactionEvent === void 0 ? void 0 : reactionEvent.messageId)) {
337
+ var _state$parentMessage6, _state$parentMessage7;
338
+ (_state$parentMessage6 = state.parentMessage) === null || _state$parentMessage6 === void 0 ? void 0 : (_state$parentMessage7 = _state$parentMessage6.applyReactionEvent) === null || _state$parentMessage7 === void 0 ? void 0 : _state$parentMessage7.call(_state$parentMessage6, reactionEvent);
339
+ }
340
+ return _objectSpread2(_objectSpread2({}, state), {}, {
341
+ allThreadMessages: state.allThreadMessages.map(m => {
342
+ if ((reactionEvent === null || reactionEvent === void 0 ? void 0 : reactionEvent.messageId) === (m === null || m === void 0 ? void 0 : m.messageId)) {
343
+ var _m$applyReactionEvent;
344
+ m === null || m === void 0 ? void 0 : (_m$applyReactionEvent = m.applyReactionEvent) === null || _m$applyReactionEvent === void 0 ? void 0 : _m$applyReactionEvent.call(m, reactionEvent);
345
+ return m;
346
+ }
347
+ return m;
348
+ })
349
+ });
350
+ }
351
+ // event handlers - user status change
352
+ case ThreadContextActionTypes.ON_USER_MUTED:
353
+ {
354
+ var _state$currentChannel4;
355
+ const {
356
+ channel,
357
+ user
358
+ } = action.payload;
359
+ if (((_state$currentChannel4 = state.currentChannel) === null || _state$currentChannel4 === void 0 ? void 0 : _state$currentChannel4.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.currentUserId !== (user === null || user === void 0 ? void 0 : user.userId)) {
360
+ return state;
361
+ }
362
+ return _objectSpread2(_objectSpread2({}, state), {}, {
363
+ isMuted: true
364
+ });
365
+ }
366
+ case ThreadContextActionTypes.ON_USER_UNMUTED:
367
+ {
368
+ var _state$currentChannel5;
369
+ const {
370
+ channel,
371
+ user
372
+ } = action.payload;
373
+ if (((_state$currentChannel5 = state.currentChannel) === null || _state$currentChannel5 === void 0 ? void 0 : _state$currentChannel5.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.currentUserId !== (user === null || user === void 0 ? void 0 : user.userId)) {
374
+ return state;
375
+ }
376
+ return _objectSpread2(_objectSpread2({}, state), {}, {
377
+ isMuted: false
378
+ });
379
+ }
380
+ case ThreadContextActionTypes.ON_USER_BANNED:
381
+ {
382
+ return _objectSpread2(_objectSpread2({}, state), {}, {
383
+ channelState: ChannelStateTypes.NIL,
384
+ threadListState: ThreadListStateTypes.NIL,
385
+ parentMessageState: ParentMessageStateTypes.NIL,
386
+ currentChannel: null,
387
+ parentMessage: null,
388
+ allThreadMessages: [],
389
+ hasMorePrev: false,
390
+ hasMoreNext: false
391
+ });
392
+ }
393
+ case ThreadContextActionTypes.ON_USER_UNBANNED:
394
+ {
395
+ return _objectSpread2({}, state);
396
+ }
397
+ case ThreadContextActionTypes.ON_USER_LEFT:
398
+ {
399
+ return _objectSpread2(_objectSpread2({}, state), {}, {
400
+ channelState: ChannelStateTypes.NIL,
401
+ threadListState: ThreadListStateTypes.NIL,
402
+ parentMessageState: ParentMessageStateTypes.NIL,
403
+ currentChannel: null,
404
+ parentMessage: null,
405
+ allThreadMessages: [],
406
+ hasMorePrev: false,
407
+ hasMoreNext: false
408
+ });
409
+ }
410
+ // event handler - channel status change
411
+ case ThreadContextActionTypes.ON_CHANNEL_FROZEN:
412
+ {
413
+ return _objectSpread2(_objectSpread2({}, state), {}, {
414
+ isChannelFrozen: true
415
+ });
416
+ }
417
+ case ThreadContextActionTypes.ON_CHANNEL_UNFROZEN:
418
+ {
419
+ return _objectSpread2(_objectSpread2({}, state), {}, {
420
+ isChannelFrozen: false
421
+ });
422
+ }
423
+ case ThreadContextActionTypes.ON_OPERATOR_UPDATED:
424
+ {
425
+ var _state$currentChannel6;
426
+ const {
427
+ channel
428
+ } = action.payload;
429
+ if ((channel === null || channel === void 0 ? void 0 : channel.url) === ((_state$currentChannel6 = state.currentChannel) === null || _state$currentChannel6 === void 0 ? void 0 : _state$currentChannel6.url)) {
430
+ return _objectSpread2(_objectSpread2({}, state), {}, {
431
+ currentChannel: channel
432
+ });
433
+ }
434
+ return state;
435
+ }
436
+ // message
437
+ case ThreadContextActionTypes.SEND_MESSAGE_START:
438
+ {
439
+ const {
440
+ message
441
+ } = action.payload;
442
+ return _objectSpread2(_objectSpread2({}, state), {}, {
443
+ allThreadMessages: [...state.allThreadMessages, message]
444
+ });
445
+ }
446
+ case ThreadContextActionTypes.SEND_MESSAGE_SUCESS:
447
+ {
448
+ const {
449
+ message
450
+ } = action.payload;
451
+ const filteredThreadMessages = state.allThreadMessages.filter(m => !compareIds(m === null || m === void 0 ? void 0 : m.reqId, message === null || message === void 0 ? void 0 : message.reqId));
452
+ return _objectSpread2(_objectSpread2({}, state), {}, {
453
+ allThreadMessages: [...filteredThreadMessages, message]
454
+ });
455
+ }
456
+ case ThreadContextActionTypes.SEND_MESSAGE_FAILURE:
457
+ {
458
+ const {
459
+ message
460
+ } = action.payload;
461
+ return _objectSpread2(_objectSpread2({}, state), {}, {
462
+ allThreadMessages: state.allThreadMessages.map(m => compareIds(m === null || m === void 0 ? void 0 : m.reqId, message === null || message === void 0 ? void 0 : message.reqId) ? message : m)
463
+ });
464
+ }
465
+ case ThreadContextActionTypes.RESEND_MESSAGE_START:
466
+ {
467
+ return _objectSpread2({}, state);
468
+ }
469
+ default:
470
+ {
471
+ return state;
472
+ }
473
+ }
474
+ }
475
+
476
+ const initialState = {
477
+ currentChannel: null,
478
+ allThreadMessages: [],
479
+ parentMessage: null,
480
+ channelState: ChannelStateTypes.NIL,
481
+ parentMessageState: ParentMessageStateTypes.NIL,
482
+ threadListState: ThreadListStateTypes.NIL,
483
+ hasMorePrev: false,
484
+ hasMoreNext: false,
485
+ emojiContainer: {},
486
+ isMuted: false,
487
+ isChannelFrozen: false,
488
+ currentUserId: ''
489
+ };
490
+
491
+ function useGetChannel(_ref, _ref2) {
492
+ let {
493
+ channelUrl,
494
+ sdkInit,
495
+ message
496
+ } = _ref;
497
+ let {
498
+ sdk,
499
+ logger,
500
+ threadDispatcher
501
+ } = _ref2;
502
+ useEffect(() => {
503
+ // validation check
504
+ if (sdkInit && channelUrl && sdk !== null && sdk !== void 0 && sdk.groupChannel) {
505
+ var _sdk$groupChannel$get, _sdk$groupChannel;
506
+ threadDispatcher({
507
+ type: ThreadContextActionTypes.GET_CHANNEL_START,
508
+ payload: null
509
+ });
510
+ (_sdk$groupChannel$get = (_sdk$groupChannel = sdk.groupChannel).getChannel) === null || _sdk$groupChannel$get === void 0 ? void 0 : _sdk$groupChannel$get.call(_sdk$groupChannel, channelUrl).then(groupChannel => {
511
+ logger.info('Thread | useInitialize: Get channel succeeded', groupChannel);
512
+ threadDispatcher({
513
+ type: ThreadContextActionTypes.GET_CHANNEL_SUCCESS,
514
+ payload: {
515
+ groupChannel
516
+ }
517
+ });
518
+ }).catch(error => {
519
+ logger.info('Thread | useInitialize: Get channel failed', error);
520
+ threadDispatcher({
521
+ type: ThreadContextActionTypes.GET_CHANNEL_FAILURE,
522
+ payload: error
523
+ });
524
+ });
525
+ }
526
+ }, [message, sdkInit]);
527
+ /**
528
+ * We don't use channelUrl here,
529
+ * because Thread must operate independently of the channel.
530
+ */
531
+ }
532
+
533
+ function useGetAllEmoji(_ref, _ref2) {
534
+ let {
535
+ sdk
536
+ } = _ref;
537
+ let {
538
+ logger,
539
+ threadDispatcher
540
+ } = _ref2;
541
+ useEffect(() => {
542
+ if (sdk !== null && sdk !== void 0 && sdk.getAllEmoji) {
543
+ // validation check
544
+ sdk === null || sdk === void 0 ? void 0 : sdk.getAllEmoji().then(emojiContainer => {
545
+ logger.info('Thread | useGetAllEmoji: Getting emojis succeeded.', emojiContainer);
546
+ threadDispatcher({
547
+ type: ThreadContextActionTypes.SET_EMOJI_CONTAINER,
548
+ payload: {
549
+ emojiContainer
550
+ }
551
+ });
552
+ }).catch(error => {
553
+ logger.info('Thread | useGetAllEmoji: Getting emojis failed.', error);
554
+ });
555
+ }
556
+ }, [sdk]);
557
+ }
558
+
559
+ function useGetThreadList(_ref, _ref2) {
560
+ let {
561
+ sdkInit,
562
+ parentMessage,
563
+ anchorMessage,
564
+ isReactionEnabled
565
+ } = _ref;
566
+ let {
567
+ logger,
568
+ threadDispatcher
569
+ } = _ref2;
570
+ useEffect(() => {
571
+ // validation check
572
+ if (sdkInit && parentMessage !== null && parentMessage !== void 0 && parentMessage.getThreadedMessagesByTimestamp) {
573
+ var _parentMessage$getThr;
574
+ threadDispatcher({
575
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_START,
576
+ payload: null
577
+ });
578
+ const timeStamp = (anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.createdAt) || 0;
579
+ const params = {
580
+ prevResultSize: PREV_THREADS_FETCH_SIZE,
581
+ nextResultSize: NEXT_THREADS_FETCH_SIZE,
582
+ includeReactions: isReactionEnabled,
583
+ includeMetaArray: true
584
+ };
585
+ logger.info('Thread | useGetThreadList: Initialize thread list start.', {
586
+ timeStamp,
587
+ params
588
+ });
589
+ (_parentMessage$getThr = parentMessage.getThreadedMessagesByTimestamp) === null || _parentMessage$getThr === void 0 ? void 0 : _parentMessage$getThr.call(parentMessage, timeStamp, params).then(_ref3 => {
590
+ let {
591
+ parentMessage,
592
+ threadedMessages
593
+ } = _ref3;
594
+ logger.info('Thread | useGetThreadList: Initialize thread list succeeded.', {
595
+ parentMessage,
596
+ threadedMessages
597
+ });
598
+ threadDispatcher({
599
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_SUCCESS,
600
+ payload: {
601
+ parentMessage,
602
+ anchorMessage,
603
+ threadedMessages
604
+ }
605
+ });
606
+ }).catch(error => {
607
+ logger.info('Therad | useGetThreadList: Initialize thread list failed.', error);
608
+ threadDispatcher({
609
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_FAILURE,
610
+ payload: error
611
+ });
612
+ });
613
+ }
614
+ }, [sdkInit, parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId, anchorMessage]);
615
+ }
616
+
617
+ function useGetParentMessage(_ref, _ref2) {
618
+ let {
619
+ channelUrl,
620
+ sdkInit,
621
+ parentMessage
622
+ } = _ref;
623
+ let {
624
+ sdk,
625
+ logger,
626
+ threadDispatcher
627
+ } = _ref2;
628
+ useEffect(() => {
629
+ var _sdk$message;
630
+ // validation check
631
+ if (sdkInit && sdk !== null && sdk !== void 0 && (_sdk$message = sdk.message) !== null && _sdk$message !== void 0 && _sdk$message.getMessage) {
632
+ threadDispatcher({
633
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_START,
634
+ payload: null
635
+ });
636
+ const params = {
637
+ channelUrl,
638
+ channelType: ChannelType.GROUP,
639
+ messageId: parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId,
640
+ includeMetaArray: true,
641
+ includeReactions: true,
642
+ includeThreadInfo: true,
643
+ includeParentMessageInfo: true
644
+ };
645
+ logger.info('Thread | useGetParentMessage: Get parent message start.', params);
646
+ const fetchParentMessage = async () => {
647
+ var _sdk$message$getMessa, _sdk$message2;
648
+ const data = await ((_sdk$message$getMessa = (_sdk$message2 = sdk.message).getMessage) === null || _sdk$message$getMessa === void 0 ? void 0 : _sdk$message$getMessa.call(_sdk$message2, params));
649
+ return data;
650
+ };
651
+ fetchParentMessage().then(parentMsg => {
652
+ logger.info('Thread | useGetParentMessage: Get parent message succeeded.', parentMessage);
653
+ parentMsg.ogMetaData = (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.ogMetaData) || null; // ogMetaData is not included for now
654
+ threadDispatcher({
655
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_SUCCESS,
656
+ payload: {
657
+ parentMessage: parentMsg
658
+ }
659
+ });
660
+ }).catch(error => {
661
+ logger.info('Thread | useGetParentMessage: Get parent message failed.', error);
662
+ threadDispatcher({
663
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_FAILURE,
664
+ payload: error
665
+ });
666
+ });
667
+ }
668
+ }, [sdkInit, parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId]);
669
+ /**
670
+ * We don't use channelUrl here,
671
+ * because Thread must operate independently of the channel.
672
+ */
673
+ }
674
+
675
+ function useHandlePubsubEvents(_ref, _ref2) {
676
+ let {
677
+ sdkInit,
678
+ currentChannel,
679
+ parentMessage
680
+ } = _ref;
681
+ let {
682
+ pubSub,
683
+ threadDispatcher
684
+ } = _ref2;
685
+ useEffect(() => {
686
+ const pubSubHandler = () => {
687
+ const subscriber = new Map();
688
+ if (!pubSub || !pubSub.subscribe) {
689
+ return subscriber;
690
+ }
691
+ subscriber.set(PUBSUB_TOPICS.SEND_USER_MESSAGE, pubSub.subscribe(PUBSUB_TOPICS.SEND_USER_MESSAGE, props => {
692
+ const {
693
+ channel,
694
+ message
695
+ } = props;
696
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url) && (message === null || message === void 0 ? void 0 : message.parentMessageId) === (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.messageId)) {
697
+ threadDispatcher({
698
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
699
+ payload: {
700
+ message
701
+ }
702
+ });
703
+ }
704
+ scrollIntoLast === null || scrollIntoLast === void 0 ? void 0 : scrollIntoLast();
705
+ }));
706
+ subscriber.set(PUBSUB_TOPICS.SEND_FILE_MESSAGE, pubSub.subscribe(PUBSUB_TOPICS.SEND_FILE_MESSAGE, props => {
707
+ const {
708
+ channel,
709
+ message
710
+ } = props;
711
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
712
+ threadDispatcher({
713
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
714
+ payload: {
715
+ message
716
+ }
717
+ });
718
+ }
719
+ scrollIntoLast === null || scrollIntoLast === void 0 ? void 0 : scrollIntoLast();
720
+ }));
721
+ subscriber.set(PUBSUB_TOPICS.UPDATE_USER_MESSAGE, pubSub.subscribe(PUBSUB_TOPICS.UPDATE_USER_MESSAGE, msg => {
722
+ const {
723
+ channel,
724
+ message
725
+ } = msg;
726
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
727
+ threadDispatcher({
728
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
729
+ payload: {
730
+ channel,
731
+ message
732
+ }
733
+ });
734
+ }
735
+ }));
736
+ subscriber.set(PUBSUB_TOPICS.DELETE_MESSAGE, pubSub.subscribe(PUBSUB_TOPICS.DELETE_MESSAGE, msg => {
737
+ const {
738
+ channel,
739
+ messageId
740
+ } = msg;
741
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
742
+ threadDispatcher({
743
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
744
+ payload: {
745
+ messageId
746
+ }
747
+ });
748
+ }
749
+ }));
750
+ };
751
+ const subscriber = pubSubHandler();
752
+ return () => {
753
+ subscriber === null || subscriber === void 0 ? void 0 : subscriber.forEach(s => {
754
+ try {
755
+ s === null || s === void 0 ? void 0 : s.remove();
756
+ } catch (_unused) {
757
+ //
758
+ }
759
+ });
760
+ };
761
+ }, [sdkInit, currentChannel]);
762
+ }
763
+
764
+ function useHandleChannelEvents(_ref, _ref2) {
765
+ let {
766
+ sdk,
767
+ currentChannel
768
+ } = _ref;
769
+ let {
770
+ logger,
771
+ threadDispatcher
772
+ } = _ref2;
773
+ useEffect(() => {
774
+ var _sdk$groupChannel;
775
+ const handlerId = uuidv4();
776
+ // validation check
777
+ if (sdk !== null && sdk !== void 0 && (_sdk$groupChannel = sdk.groupChannel) !== null && _sdk$groupChannel !== void 0 && _sdk$groupChannel.addGroupChannelHandler && currentChannel) {
778
+ var _sdk$groupChannel$add, _sdk$groupChannel2;
779
+ const channelHandlerParams = {
780
+ // message status change
781
+ onMessageReceived(channel, message) {
782
+ logger.info('Thread | useHandleChannelEvents: onMessageReceived', {
783
+ channel,
784
+ message
785
+ });
786
+ threadDispatcher({
787
+ type: ThreadContextActionTypes.ON_MESSAGE_RECEIVED,
788
+ payload: {
789
+ channel,
790
+ message
791
+ }
792
+ });
793
+ },
794
+ onMessageUpdated(channel, message) {
795
+ logger.info('Thread | useHandleChannelEvents: onMessageUpdated', {
796
+ channel,
797
+ message
798
+ });
799
+ threadDispatcher({
800
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
801
+ payload: {
802
+ channel,
803
+ message
804
+ }
805
+ });
806
+ },
807
+ onMessageDeleted(channel, messageId) {
808
+ logger.info('Thread | useHandleChannelEvents: onMessageDeleted', {
809
+ channel,
810
+ messageId
811
+ });
812
+ threadDispatcher({
813
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
814
+ payload: {
815
+ channel,
816
+ messageId
817
+ }
818
+ });
819
+ },
820
+ onReactionUpdated(channel, reactionEvent) {
821
+ logger.info('Thread | useHandleChannelEvents: onReactionUpdated', {
822
+ channel,
823
+ reactionEvent
824
+ });
825
+ threadDispatcher({
826
+ type: ThreadContextActionTypes.ON_REACTION_UPDATED,
827
+ payload: {
828
+ channel,
829
+ reactionEvent
830
+ }
831
+ });
832
+ },
833
+ // user status change
834
+ onUserMuted(channel, user) {
835
+ logger.info('Thread | useHandleChannelEvents: onUserMuted', {
836
+ channel,
837
+ user
838
+ });
839
+ threadDispatcher({
840
+ type: ThreadContextActionTypes.ON_USER_MUTED,
841
+ payload: {
842
+ channel,
843
+ user
844
+ }
845
+ });
846
+ },
847
+ onUserUnmuted(channel, user) {
848
+ logger.info('Thread | useHandleChannelEvents: onUserUnmuted', {
849
+ channel,
850
+ user
851
+ });
852
+ threadDispatcher({
853
+ type: ThreadContextActionTypes.ON_USER_UNMUTED,
854
+ payload: {
855
+ channel,
856
+ user
857
+ }
858
+ });
859
+ },
860
+ onUserBanned(channel, user) {
861
+ logger.info('Thread | useHandleChannelEvents: onUserBanned', {
862
+ channel,
863
+ user
864
+ });
865
+ threadDispatcher({
866
+ type: ThreadContextActionTypes.ON_USER_BANNED,
867
+ payload: {
868
+ channel,
869
+ user
870
+ }
871
+ });
872
+ },
873
+ onUserUnbanned(channel, user) {
874
+ logger.info('Thread | useHandleChannelEvents: onUserUnbanned', {
875
+ channel,
876
+ user
877
+ });
878
+ threadDispatcher({
879
+ type: ThreadContextActionTypes.ON_USER_UNBANNED,
880
+ payload: {
881
+ channel,
882
+ user
883
+ }
884
+ });
885
+ },
886
+ onUserLeft(channel, user) {
887
+ logger.info('Thread | useHandleChannelEvents: onUserLeft', {
888
+ channel,
889
+ user
890
+ });
891
+ threadDispatcher({
892
+ type: ThreadContextActionTypes.ON_USER_LEFT,
893
+ payload: {
894
+ channel,
895
+ user
896
+ }
897
+ });
898
+ },
899
+ // channel status change
900
+ onChannelFrozen(channel) {
901
+ logger.info('Thread | useHandleChannelEvents: onChannelFrozen', {
902
+ channel
903
+ });
904
+ threadDispatcher({
905
+ type: ThreadContextActionTypes.ON_CHANNEL_FROZEN,
906
+ payload: {
907
+ channel
908
+ }
909
+ });
910
+ },
911
+ onChannelUnfrozen(channel) {
912
+ logger.info('Thread | useHandleChannelEvents: onChannelUnfrozen', {
913
+ channel
914
+ });
915
+ threadDispatcher({
916
+ type: ThreadContextActionTypes.ON_CHANNEL_UNFROZEN,
917
+ payload: {
918
+ channel
919
+ }
920
+ });
921
+ },
922
+ onOperatorUpdated(channel, users) {
923
+ logger.info('Thread | useHandleChannelEvents: onOperatorUpdated', {
924
+ channel,
925
+ users
926
+ });
927
+ threadDispatcher({
928
+ type: ThreadContextActionTypes.ON_OPERATOR_UPDATED,
929
+ payload: {
930
+ channel,
931
+ users
932
+ }
933
+ });
934
+ }
935
+ };
936
+ const channelHandler = new GroupChannelHandler(channelHandlerParams);
937
+ (_sdk$groupChannel$add = (_sdk$groupChannel2 = sdk.groupChannel).addGroupChannelHandler) === null || _sdk$groupChannel$add === void 0 ? void 0 : _sdk$groupChannel$add.call(_sdk$groupChannel2, handlerId, channelHandler);
938
+ logger.info('Thread | useHandleChannelEvents: Added channelHandler in Thread', {
939
+ handlerId,
940
+ channelHandler
941
+ });
942
+ }
943
+ return () => {
944
+ var _sdk$groupChannel3;
945
+ // validation check
946
+ if (handlerId && sdk !== null && sdk !== void 0 && (_sdk$groupChannel3 = sdk.groupChannel) !== null && _sdk$groupChannel3 !== void 0 && _sdk$groupChannel3.removeGroupChannelHandler) {
947
+ var _sdk$groupChannel$rem, _sdk$groupChannel4;
948
+ (_sdk$groupChannel$rem = (_sdk$groupChannel4 = sdk.groupChannel).removeGroupChannelHandler) === null || _sdk$groupChannel$rem === void 0 ? void 0 : _sdk$groupChannel$rem.call(_sdk$groupChannel4, handlerId);
949
+ logger.info('Thread | useHandleChannelEvents: Removed channelHandler in Thread.', handlerId);
950
+ }
951
+ };
952
+ }, [sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel, currentChannel]);
953
+ }
954
+
955
+ function useSendFileMessageCallback(_ref, _ref2) {
956
+ let {
957
+ currentChannel
958
+ } = _ref;
959
+ let {
960
+ logger,
961
+ pubSub,
962
+ threadDispatcher
963
+ } = _ref2;
964
+ const sendMessage = useCallback((file, quoteMessage) => {
965
+ const createParamsDefault = () => {
966
+ const params = {};
967
+ params.file = file;
968
+ if (quoteMessage) {
969
+ params.isReplyToChannel = true;
970
+ params.parentMessageId = quoteMessage.messageId;
971
+ }
972
+ return params;
973
+ };
974
+ const params = createParamsDefault();
975
+ logger.info('Thread | useSendFileMessageCallback: Sending file message start.', params);
976
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendFileMessage(params).onPending(pendingMessage => {
977
+ threadDispatcher({
978
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
979
+ payload: {
980
+ /* pubSub is used instead of messagesDispatcher
981
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
982
+ message: _objectSpread2(_objectSpread2({}, pendingMessage), {}, {
983
+ url: URL.createObjectURL(file),
984
+ // pending thumbnail message seems to be failed
985
+ requestState: 'pending'
986
+ })
987
+ }
988
+ });
989
+ setTimeout(() => scrollIntoLast(), 1000);
990
+ }).onFailed((error, message) => {
991
+ message.localUrl = URL.createObjectURL(file);
992
+ message.file = file;
993
+ logger.info('Thread | useSendFileMessageCallback: Sending file message failed.', {
994
+ message,
995
+ error
996
+ });
997
+ threadDispatcher({
998
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
999
+ payload: {
1000
+ message,
1001
+ error
1002
+ }
1003
+ });
1004
+ }).onSucceeded(message => {
1005
+ logger.info('Thread | useSendFileMessageCallback: Sending file message succeeded.', message);
1006
+ pubSub.publish(PUBSUB_TOPICS.SEND_FILE_MESSAGE, {
1007
+ channel: currentChannel,
1008
+ message: message
1009
+ });
1010
+ });
1011
+ }, [currentChannel]);
1012
+ return sendMessage;
1013
+ }
1014
+
1015
+ function useUpdateMessageCallback(_ref, _ref2) {
1016
+ let {
1017
+ currentChannel,
1018
+ isMentionEnabled
1019
+ } = _ref;
1020
+ let {
1021
+ logger,
1022
+ pubSub,
1023
+ threadDispatcher
1024
+ } = _ref2;
1025
+ return useCallback(props => {
1026
+ var _currentChannel$updat;
1027
+ const {
1028
+ messageId,
1029
+ message,
1030
+ mentionedUsers,
1031
+ mentionTemplate
1032
+ } = props;
1033
+ const createParamsDefault = () => {
1034
+ const params = {};
1035
+ params.message = message;
1036
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1037
+ params.mentionedUsers = mentionedUsers;
1038
+ }
1039
+ if (isMentionEnabled && mentionTemplate) {
1040
+ params.mentionedMessageTemplate = mentionTemplate;
1041
+ } else {
1042
+ params.mentionedMessageTemplate = message;
1043
+ }
1044
+ return params;
1045
+ };
1046
+ const params = createParamsDefault();
1047
+ logger.info('Thread | useUpdateMessageCallback: Message update start.', params);
1048
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$updat = currentChannel.updateUserMessage) === null || _currentChannel$updat === void 0 ? void 0 : _currentChannel$updat.call(currentChannel, messageId, params).then(message => {
1049
+ logger.info('Thread | useUpdateMessageCallback: Message update succeeded.', message);
1050
+ threadDispatcher({
1051
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
1052
+ payload: {
1053
+ channel: currentChannel,
1054
+ message: message
1055
+ }
1056
+ });
1057
+ pubSub.publish(PUBSUB_TOPICS.UPDATE_USER_MESSAGE, {
1058
+ fromSelector: true,
1059
+ channel: currentChannel,
1060
+ message: message
1061
+ });
1062
+ });
1063
+ }, [currentChannel, isMentionEnabled]);
1064
+ }
1065
+
1066
+ function useDeleteMessageCallback(_ref, _ref2) {
1067
+ let {
1068
+ currentChannel,
1069
+ threadDispatcher
1070
+ } = _ref;
1071
+ let {
1072
+ logger
1073
+ } = _ref2;
1074
+ return useCallback(message => {
1075
+ logger.info('Thread | useDeleteMessageCallback: Deleting message.', message);
1076
+ const {
1077
+ sendingStatus
1078
+ } = message;
1079
+ return new Promise((resolve, reject) => {
1080
+ var _currentChannel$delet;
1081
+ logger.info('Thread | useDeleteMessageCallback: Deleting message requestState:', sendingStatus);
1082
+ // Message is only on local
1083
+ if (sendingStatus === 'failed' || sendingStatus === 'pending') {
1084
+ logger.info('Thread | useDeleteMessageCallback: Deleted message from local:', message);
1085
+ threadDispatcher({
1086
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,
1087
+ payload: message.reqId
1088
+ });
1089
+ resolve(message);
1090
+ }
1091
+ logger.info('Thread | useDeleteMessageCallback: Deleting message from remote:', sendingStatus);
1092
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$delet = currentChannel.deleteMessage) === null || _currentChannel$delet === void 0 ? void 0 : _currentChannel$delet.call(currentChannel, message).then(() => {
1093
+ logger.info('Thread | useDeleteMessageCallback: Deleting message success!', message);
1094
+ threadDispatcher({
1095
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
1096
+ payload: {
1097
+ message,
1098
+ channel: currentChannel
1099
+ }
1100
+ });
1101
+ resolve(message);
1102
+ }).catch(err => {
1103
+ logger.warning('Thread | useDeleteMessageCallback: Deleting message failed!', err);
1104
+ reject(err);
1105
+ });
1106
+ });
1107
+ }, [currentChannel]);
1108
+ }
1109
+
1110
+ function useGetPrevThreadsCallback(_ref, _ref2) {
1111
+ let {
1112
+ hasMorePrev,
1113
+ parentMessage,
1114
+ threadListState,
1115
+ oldestMessageTimeStamp,
1116
+ isReactionEnabled
1117
+ } = _ref;
1118
+ let {
1119
+ logger,
1120
+ threadDispatcher
1121
+ } = _ref2;
1122
+ return useCallback(callback => {
1123
+ // validation check
1124
+ if (threadListState === ThreadListStateTypes.INITIALIZED && parentMessage !== null && parentMessage !== void 0 && parentMessage.getThreadedMessagesByTimestamp && oldestMessageTimeStamp !== 0) {
1125
+ var _parentMessage$getThr;
1126
+ threadDispatcher({
1127
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_START,
1128
+ payload: null
1129
+ });
1130
+ (_parentMessage$getThr = parentMessage.getThreadedMessagesByTimestamp) === null || _parentMessage$getThr === void 0 ? void 0 : _parentMessage$getThr.call(parentMessage, oldestMessageTimeStamp, {
1131
+ prevResultSize: PREV_THREADS_FETCH_SIZE,
1132
+ nextResultSize: 0,
1133
+ includeReactions: isReactionEnabled,
1134
+ includeMetaArray: true
1135
+ }).then(_ref3 => {
1136
+ let {
1137
+ parentMessage,
1138
+ threadedMessages
1139
+ } = _ref3;
1140
+ logger.info('Thread | useGetPrevThreadsCallback: Fetch prev threads succeeded.', {
1141
+ parentMessage,
1142
+ threadedMessages
1143
+ });
1144
+ threadDispatcher({
1145
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_SUCESS,
1146
+ payload: {
1147
+ parentMessage,
1148
+ threadedMessages
1149
+ }
1150
+ });
1151
+ callback(threadedMessages);
1152
+ }).catch(error => {
1153
+ logger.info('Thread | useGetPrevThreadsCallback: Fetch prev threads failed.', error);
1154
+ threadDispatcher({
1155
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_FAILURE,
1156
+ payload: error
1157
+ });
1158
+ });
1159
+ }
1160
+ }, [hasMorePrev, parentMessage, threadListState, oldestMessageTimeStamp]);
1161
+ }
1162
+
1163
+ function useGetNextThreadsCallback(_ref, _ref2) {
1164
+ let {
1165
+ hasMoreNext,
1166
+ parentMessage,
1167
+ threadListState,
1168
+ latestMessageTimeStamp,
1169
+ isReactionEnabled
1170
+ } = _ref;
1171
+ let {
1172
+ logger,
1173
+ threadDispatcher
1174
+ } = _ref2;
1175
+ return useCallback(callback => {
1176
+ // validation check
1177
+ if (threadListState === ThreadListStateTypes.INITIALIZED && parentMessage !== null && parentMessage !== void 0 && parentMessage.getThreadedMessagesByTimestamp && latestMessageTimeStamp !== 0) {
1178
+ var _parentMessage$getThr;
1179
+ threadDispatcher({
1180
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_START,
1181
+ payload: null
1182
+ });
1183
+ (_parentMessage$getThr = parentMessage.getThreadedMessagesByTimestamp) === null || _parentMessage$getThr === void 0 ? void 0 : _parentMessage$getThr.call(parentMessage, latestMessageTimeStamp, {
1184
+ prevResultSize: 0,
1185
+ nextResultSize: NEXT_THREADS_FETCH_SIZE,
1186
+ includeReactions: isReactionEnabled,
1187
+ includeMetaArray: true
1188
+ }).then(_ref3 => {
1189
+ let {
1190
+ parentMessage,
1191
+ threadedMessages
1192
+ } = _ref3;
1193
+ logger.info('Thread | useGetNextThreadsCallback: Fetch next threads succeeded.', {
1194
+ parentMessage,
1195
+ threadedMessages
1196
+ });
1197
+ threadDispatcher({
1198
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_SUCESS,
1199
+ payload: {
1200
+ parentMessage,
1201
+ threadedMessages
1202
+ }
1203
+ });
1204
+ callback(threadedMessages);
1205
+ }).catch(error => {
1206
+ logger.info('Thread | useGetNextThreadsCallback: Fetch next threads failed.', error);
1207
+ threadDispatcher({
1208
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_FAILURE,
1209
+ payload: error
1210
+ });
1211
+ });
1212
+ }
1213
+ }, [hasMoreNext, parentMessage, threadListState, latestMessageTimeStamp]);
1214
+ }
1215
+
1216
+ function useToggleReactionCallback(_ref, _ref2) {
1217
+ let {
1218
+ currentChannel
1219
+ } = _ref;
1220
+ let {
1221
+ logger
1222
+ } = _ref2;
1223
+ return useCallback((message, key, isReacted) => {
1224
+ var _currentChannel$addRe;
1225
+ if (isReacted) {
1226
+ var _currentChannel$delet;
1227
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$delet = currentChannel.deleteReaction) === null || _currentChannel$delet === void 0 ? void 0 : _currentChannel$delet.call(currentChannel, message, key).then(res => {
1228
+ logger.info('Thread | useToggleReactionsCallback: Delete reaction succeeded.', res);
1229
+ }).catch(err => {
1230
+ logger.warning('Thread | useToggleReactionsCallback: Delete reaction failed.', err);
1231
+ });
1232
+ return;
1233
+ }
1234
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$addRe = currentChannel.addReaction) === null || _currentChannel$addRe === void 0 ? void 0 : _currentChannel$addRe.call(currentChannel, message, key).then(res => {
1235
+ logger.info('Thread | useToggleReactionsCallback: Add reaction succeeded.', res);
1236
+ }).catch(err => {
1237
+ logger.warning('Thread | useToggleReactionsCallback: Add reaction failed.', err);
1238
+ });
1239
+ }, [currentChannel]);
1240
+ }
1241
+
1242
+ function useSendUserMessageCallback(_ref, _ref2) {
1243
+ let {
1244
+ isMentionEnabled,
1245
+ currentChannel
1246
+ } = _ref;
1247
+ let {
1248
+ logger,
1249
+ pubSub,
1250
+ threadDispatcher
1251
+ } = _ref2;
1252
+ const sendMessage = useCallback(props => {
1253
+ const {
1254
+ message,
1255
+ quoteMessage = null,
1256
+ mentionTemplate,
1257
+ mentionedUsers
1258
+ } = props;
1259
+ const createDefaultParams = () => {
1260
+ const params = {};
1261
+ params.message = message;
1262
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1263
+ params.mentionedUsers = mentionedUsers;
1264
+ }
1265
+ if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1266
+ params.mentionedMessageTemplate = mentionTemplate;
1267
+ }
1268
+ if (quoteMessage) {
1269
+ params.isReplyToChannel = true;
1270
+ params.parentMessageId = quoteMessage.messageId;
1271
+ }
1272
+ return params;
1273
+ };
1274
+ const params = createDefaultParams();
1275
+ logger.info('Thread | useSendUserMessageCallback: Sending user message start.', params);
1276
+ if (currentChannel !== null && currentChannel !== void 0 && currentChannel.sendUserMessage) {
1277
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendUserMessage(params).onPending(pendingMessage => {
1278
+ threadDispatcher({
1279
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
1280
+ payload: {
1281
+ message: pendingMessage
1282
+ }
1283
+ });
1284
+ }).onFailed((error, message) => {
1285
+ logger.info('Thread | useSendUserMessageCallback: Sending user message failed.', {
1286
+ message,
1287
+ error
1288
+ });
1289
+ threadDispatcher({
1290
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1291
+ payload: {
1292
+ error,
1293
+ message
1294
+ }
1295
+ });
1296
+ }).onSucceeded(message => {
1297
+ logger.info('Thread | useSendUserMessageCallback: Sending user message succeeded.', message);
1298
+ threadDispatcher({
1299
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1300
+ payload: {
1301
+ message
1302
+ }
1303
+ });
1304
+ // because Thread doesn't subscribe SEND_USER_MESSAGE
1305
+ pubSub.publish(PUBSUB_TOPICS.SEND_USER_MESSAGE, {
1306
+ channel: currentChannel,
1307
+ message: message
1308
+ });
1309
+ });
1310
+ }
1311
+ }, [isMentionEnabled, currentChannel]);
1312
+ return sendMessage;
1313
+ }
1314
+
1315
+ function useResendMessageCallback(_ref, _ref2) {
1316
+ let {
1317
+ currentChannel
1318
+ } = _ref;
1319
+ let {
1320
+ logger,
1321
+ pubSub,
1322
+ threadDispatcher
1323
+ } = _ref2;
1324
+ return useCallback(failedMessage => {
1325
+ if (failedMessage !== null && failedMessage !== void 0 && failedMessage.isResendable) {
1326
+ var _failedMessage$isUser, _failedMessage$isFile;
1327
+ failedMessage.sendingStatus = SendingStatus.PENDING;
1328
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage start.', failedMessage);
1329
+ threadDispatcher({
1330
+ type: ThreadContextActionTypes.RESEND_MESSAGE_START,
1331
+ payload: failedMessage
1332
+ });
1333
+ if (failedMessage !== null && failedMessage !== void 0 && (_failedMessage$isUser = failedMessage.isUserMessage) !== null && _failedMessage$isUser !== void 0 && _failedMessage$isUser.call(failedMessage) || (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.messageType) === MessageType.USER) {
1334
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.resendUserMessage(failedMessage).then(message => {
1335
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage succeeded.', message);
1336
+ threadDispatcher({
1337
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1338
+ payload: {
1339
+ message
1340
+ }
1341
+ });
1342
+ pubSub.publish(PUBSUB_TOPICS.SEND_USER_MESSAGE, {
1343
+ channel: currentChannel,
1344
+ message: message
1345
+ });
1346
+ }).catch(error => {
1347
+ logger.warning('Thread | useResendMessageCallback: Resending failedMessage failed.', error);
1348
+ failedMessage.sendingStatus = SendingStatus.FAILED;
1349
+ threadDispatcher({
1350
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1351
+ payload: {
1352
+ message: failedMessage
1353
+ }
1354
+ });
1355
+ });
1356
+ } else if (failedMessage !== null && failedMessage !== void 0 && (_failedMessage$isFile = failedMessage.isFileMessage) !== null && _failedMessage$isFile !== void 0 && _failedMessage$isFile.call(failedMessage) || (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.messageType) === MessageType.FILE) {
1357
+ var _currentChannel$resen;
1358
+ currentChannel === null || currentChannel === void 0 ? void 0 : (_currentChannel$resen = currentChannel.resendFileMessage) === null || _currentChannel$resen === void 0 ? void 0 : _currentChannel$resen.call(currentChannel, failedMessage).then(message => {
1359
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage succeeded.', message);
1360
+ threadDispatcher({
1361
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1362
+ payload: {
1363
+ message
1364
+ }
1365
+ });
1366
+ }).catch(error => {
1367
+ logger.warning('Thread | useResendMessageCallback: Resending failedMessage failed.', error);
1368
+ failedMessage.sendingStatus = SendingStatus.FAILED;
1369
+ threadDispatcher({
1370
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1371
+ payload: {
1372
+ message: failedMessage
1373
+ }
1374
+ });
1375
+ pubSub.publish(PUBSUB_TOPICS.SEND_FILE_MESSAGE, {
1376
+ channel: currentChannel,
1377
+ message: failedMessage
1378
+ });
1379
+ });
1380
+ } else {
1381
+ logger.warning('Thread | useResendMessageCallback: Message is not resendable.', failedMessage);
1382
+ failedMessage.sendingStatus = SendingStatus.FAILED;
1383
+ threadDispatcher({
1384
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1385
+ payload: {
1386
+ message: failedMessage
1387
+ }
1388
+ });
1389
+ }
1390
+ }
1391
+ }, [currentChannel]);
1392
+ }
1393
+
1394
+ const useSendVoiceMessageCallback = (_ref, _ref2) => {
1395
+ let {
1396
+ currentChannel,
1397
+ onBeforeSendVoiceMessage
1398
+ } = _ref;
1399
+ let {
1400
+ logger,
1401
+ pubSub,
1402
+ threadDispatcher
1403
+ } = _ref2;
1404
+ const sendMessage = useCallback((file, duration, quoteMessage) => {
1405
+ const messageParams = onBeforeSendVoiceMessage && typeof onBeforeSendVoiceMessage === 'function' ? onBeforeSendVoiceMessage(file, quoteMessage) : {
1406
+ file,
1407
+ fileName: VOICE_MESSAGE_FILE_NAME,
1408
+ mimeType: VOICE_MESSAGE_MIME_TYPE,
1409
+ metaArrays: [new MessageMetaArray({
1410
+ key: META_ARRAY_VOICE_DURATION_KEY,
1411
+ value: [`${duration}`]
1412
+ }), new MessageMetaArray({
1413
+ key: META_ARRAY_MESSAGE_TYPE_KEY,
1414
+ value: [META_ARRAY_MESSAGE_TYPE_VALUE__VOICE]
1415
+ })]
1416
+ };
1417
+ if (quoteMessage) {
1418
+ messageParams.isReplyToChannel = true;
1419
+ messageParams.parentMessageId = quoteMessage.messageId;
1420
+ }
1421
+ logger.info('Thread | useSendVoiceMessageCallback: Start sending voice message', messageParams);
1422
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendFileMessage(messageParams).onPending(pendingMessage => {
1423
+ threadDispatcher({
1424
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
1425
+ payload: {
1426
+ /* pubSub is used instead of messagesDispatcher
1427
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
1428
+ message: _objectSpread2(_objectSpread2({}, pendingMessage), {}, {
1429
+ url: URL.createObjectURL(file),
1430
+ // pending thumbnail message seems to be failed
1431
+ requestState: 'pending'
1432
+ })
1433
+ }
1434
+ });
1435
+ setTimeout(() => scrollIntoLast(), 1000);
1436
+ }).onFailed((error, message) => {
1437
+ message.localUrl = URL.createObjectURL(file);
1438
+ message.file = file;
1439
+ logger.info('Thread | useSendVoiceMessageCallback: Sending voice message failed.', {
1440
+ message,
1441
+ error
1442
+ });
1443
+ threadDispatcher({
1444
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1445
+ payload: {
1446
+ message,
1447
+ error
1448
+ }
1449
+ });
1450
+ }).onSucceeded(message => {
1451
+ logger.info('Thread | useSendVoiceMessageCallback: Sending voice message succeeded.', message);
1452
+ pubSub.publish(PUBSUB_TOPICS.SEND_FILE_MESSAGE, {
1453
+ channel: currentChannel,
1454
+ message: message
1455
+ });
1456
+ });
1457
+ }, [currentChannel, onBeforeSendVoiceMessage]);
1458
+ return sendMessage;
1459
+ };
1460
+
1461
+ const ThreadContext = /*#__PURE__*/React__default.createContext(null);
1462
+ const ThreadProvider = props => {
1463
+ var _allThreadMessages$, _allThreadMessages;
1464
+ const {
1465
+ children,
1466
+ channelUrl,
1467
+ onHeaderActionClick,
1468
+ onMoveToParentMessage,
1469
+ onBeforeSendVoiceMessage,
1470
+ // User Profile
1471
+ disableUserProfile,
1472
+ renderUserProfile
1473
+ } = props;
1474
+ const propsMessage = props === null || props === void 0 ? void 0 : props.message;
1475
+ const propsParentMessage = getParentMessageFrom(propsMessage);
1476
+ // Context from SendbirdProvider
1477
+ const globalStore = useSendbirdStateContext();
1478
+ const {
1479
+ stores,
1480
+ config
1481
+ } = globalStore;
1482
+ // // stores
1483
+ const {
1484
+ sdkStore,
1485
+ userStore
1486
+ } = stores;
1487
+ const {
1488
+ sdk
1489
+ } = sdkStore;
1490
+ const {
1491
+ user
1492
+ } = userStore;
1493
+ const sdkInit = sdkStore === null || sdkStore === void 0 ? void 0 : sdkStore.initialized;
1494
+ // // config
1495
+ const {
1496
+ logger,
1497
+ pubSub,
1498
+ replyType,
1499
+ isMentionEnabled,
1500
+ isReactionEnabled,
1501
+ onUserProfileMessage
1502
+ } = config;
1503
+
1504
+ // dux of Thread
1505
+ const [threadStore, threadDispatcher] = useReducer(reducer, initialState);
1506
+ const {
1507
+ currentChannel,
1508
+ allThreadMessages,
1509
+ parentMessage,
1510
+ channelState,
1511
+ threadListState,
1512
+ parentMessageState,
1513
+ hasMorePrev,
1514
+ hasMoreNext,
1515
+ emojiContainer,
1516
+ isMuted,
1517
+ isChannelFrozen,
1518
+ currentUserId
1519
+ } = threadStore;
1520
+
1521
+ // Initialization
1522
+ useEffect(() => {
1523
+ threadDispatcher({
1524
+ type: ThreadContextActionTypes.INIT_USER_ID,
1525
+ payload: user === null || user === void 0 ? void 0 : user.userId
1526
+ });
1527
+ }, [user]);
1528
+ useGetChannel({
1529
+ channelUrl,
1530
+ sdkInit,
1531
+ message: propsMessage
1532
+ }, {
1533
+ sdk,
1534
+ logger,
1535
+ threadDispatcher
1536
+ });
1537
+ useGetParentMessage({
1538
+ channelUrl,
1539
+ sdkInit,
1540
+ parentMessage: propsParentMessage
1541
+ }, {
1542
+ sdk,
1543
+ logger,
1544
+ threadDispatcher
1545
+ });
1546
+ useGetThreadList({
1547
+ sdkInit,
1548
+ parentMessage,
1549
+ isReactionEnabled,
1550
+ anchorMessage: (propsMessage === null || propsMessage === void 0 ? void 0 : propsMessage.messageId) !== (propsParentMessage === null || propsParentMessage === void 0 ? void 0 : propsParentMessage.messageId) ? propsMessage : null
1551
+ // anchorMessage should be null when parentMessage doesn't exist
1552
+ }, {
1553
+ logger,
1554
+ threadDispatcher
1555
+ });
1556
+ useGetAllEmoji({
1557
+ sdk
1558
+ }, {
1559
+ logger,
1560
+ threadDispatcher
1561
+ });
1562
+ // Handle channel events
1563
+ useHandleChannelEvents({
1564
+ sdk,
1565
+ currentChannel
1566
+ }, {
1567
+ logger,
1568
+ threadDispatcher
1569
+ });
1570
+ useHandlePubsubEvents({
1571
+ sdkInit,
1572
+ currentChannel,
1573
+ parentMessage
1574
+ }, {
1575
+ logger,
1576
+ pubSub,
1577
+ threadDispatcher
1578
+ });
1579
+
1580
+ // callbacks
1581
+ const fetchPrevThreads = useGetPrevThreadsCallback({
1582
+ hasMorePrev,
1583
+ parentMessage,
1584
+ threadListState,
1585
+ isReactionEnabled,
1586
+ oldestMessageTimeStamp: ((_allThreadMessages$ = allThreadMessages[0]) === null || _allThreadMessages$ === void 0 ? void 0 : _allThreadMessages$.createdAt) || 0
1587
+ }, {
1588
+ logger,
1589
+ threadDispatcher
1590
+ });
1591
+ const fetchNextThreads = useGetNextThreadsCallback({
1592
+ hasMoreNext,
1593
+ parentMessage,
1594
+ threadListState,
1595
+ isReactionEnabled,
1596
+ latestMessageTimeStamp: ((_allThreadMessages = allThreadMessages[allThreadMessages.length - 1]) === null || _allThreadMessages === void 0 ? void 0 : _allThreadMessages.createdAt) || 0
1597
+ }, {
1598
+ logger,
1599
+ threadDispatcher
1600
+ });
1601
+ const toggleReaction = useToggleReactionCallback({
1602
+ currentChannel
1603
+ }, {
1604
+ logger
1605
+ });
1606
+ const sendMessage = useSendUserMessageCallback({
1607
+ isMentionEnabled,
1608
+ currentChannel
1609
+ }, {
1610
+ logger,
1611
+ pubSub,
1612
+ threadDispatcher
1613
+ });
1614
+ const sendFileMessage = useSendFileMessageCallback({
1615
+ currentChannel
1616
+ }, {
1617
+ logger,
1618
+ pubSub,
1619
+ threadDispatcher
1620
+ });
1621
+ const sendVoiceMessage = useSendVoiceMessageCallback({
1622
+ currentChannel,
1623
+ onBeforeSendVoiceMessage
1624
+ }, {
1625
+ logger,
1626
+ pubSub,
1627
+ threadDispatcher
1628
+ });
1629
+ const resendMessage = useResendMessageCallback({
1630
+ currentChannel
1631
+ }, {
1632
+ logger,
1633
+ pubSub,
1634
+ threadDispatcher
1635
+ });
1636
+ const updateMessage = useUpdateMessageCallback({
1637
+ currentChannel,
1638
+ isMentionEnabled
1639
+ }, {
1640
+ logger,
1641
+ pubSub,
1642
+ threadDispatcher
1643
+ });
1644
+ const deleteMessage = useDeleteMessageCallback({
1645
+ currentChannel,
1646
+ threadDispatcher
1647
+ }, {
1648
+ logger
1649
+ });
1650
+
1651
+ // memo
1652
+ const nicknamesMap = useMemo(() => replyType && currentChannel ? getNicknamesMapFromMembers(currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.members) : new Map(), [currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.members]);
1653
+ return /*#__PURE__*/React__default.createElement(ThreadContext.Provider, {
1654
+ value: {
1655
+ // ThreadProviderProps
1656
+ channelUrl,
1657
+ message: propsMessage,
1658
+ onHeaderActionClick,
1659
+ onMoveToParentMessage,
1660
+ // ThreadContextInitialState
1661
+ currentChannel,
1662
+ allThreadMessages,
1663
+ parentMessage,
1664
+ channelState,
1665
+ threadListState,
1666
+ parentMessageState,
1667
+ hasMorePrev,
1668
+ hasMoreNext,
1669
+ emojiContainer,
1670
+ // hooks
1671
+ fetchPrevThreads,
1672
+ fetchNextThreads,
1673
+ toggleReaction,
1674
+ sendMessage,
1675
+ sendFileMessage,
1676
+ sendVoiceMessage,
1677
+ resendMessage,
1678
+ updateMessage,
1679
+ deleteMessage,
1680
+ // context
1681
+ nicknamesMap,
1682
+ isMuted,
1683
+ isChannelFrozen,
1684
+ currentUserId
1685
+ }
1686
+ }, /*#__PURE__*/React__default.createElement(UserProfileProvider, {
1687
+ disableUserProfile: disableUserProfile,
1688
+ renderUserProfile: renderUserProfile,
1689
+ onUserProfileMessage: onUserProfileMessage
1690
+ }, children));
1691
+ };
1692
+ const useThreadContext = () => React__default.useContext(ThreadContext);
1693
+
1694
+ export { ThreadProvider as T, compareMessagesForGrouping as c, isAboutSame as i, useThreadContext as u };
1695
+ //# sourceMappingURL=ThreadProvider-203b94f3.js.map