@sendbird/uikit-react 3.4.6-rc.1 → 3.4.7-0

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