@sendbird/uikit-react 3.2.6 → 3.3.0-rc.1

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 (529) hide show
  1. package/App.js +163 -71
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +57 -0
  4. package/Channel/components/ChannelHeader.js +18 -43
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +28 -23
  7. package/Channel/components/ChannelUI.js.map +1 -1
  8. package/Channel/components/FileViewer.js +14 -14
  9. package/Channel/components/FrozenNotification.js +4 -4
  10. package/Channel/components/Message.js +49 -24
  11. package/Channel/components/Message.js.map +1 -1
  12. package/Channel/components/MessageInput.js +21 -16
  13. package/Channel/components/MessageInput.js.map +1 -1
  14. package/Channel/components/MessageList.js +30 -32
  15. package/Channel/components/MessageList.js.map +1 -1
  16. package/Channel/components/RemoveMessageModal.js +16 -16
  17. package/Channel/components/SuggestedMentionList.js +54 -48
  18. package/Channel/components/SuggestedMentionList.js.map +1 -1
  19. package/Channel/components/TypingIndicator.js +14 -14
  20. package/Channel/components/UnreadCount.js +4 -4
  21. package/Channel/context.js +13 -13
  22. package/Channel.js +35 -24
  23. package/Channel.js.map +1 -1
  24. package/ChannelList/components/AddChannel.js +14 -14
  25. package/ChannelList/components/ChannelListHeader.js +7 -7
  26. package/ChannelList/components/ChannelListUI.js +28 -27
  27. package/ChannelList/components/ChannelListUI.js.map +1 -1
  28. package/ChannelList/components/ChannelPreview.js +26 -24
  29. package/ChannelList/components/ChannelPreview.js.map +1 -1
  30. package/ChannelList/components/ChannelPreviewAction.js +32 -25
  31. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  32. package/ChannelList/context.js +8 -8
  33. package/ChannelList.js +27 -27
  34. package/{ChannelListProvider-6596e633.js → ChannelListProvider-82fa5abc.js} +8 -8
  35. package/{ChannelListProvider-6596e633.js.map → ChannelListProvider-82fa5abc.js.map} +1 -1
  36. package/{ChannelProvider-5e995fe8.js → ChannelProvider-0c8ccbbf.js} +96 -47
  37. package/ChannelProvider-0c8ccbbf.js.map +1 -0
  38. package/ChannelSettings/components/ChannelProfile.js +12 -12
  39. package/ChannelSettings/components/ChannelSettingsUI.js +18 -18
  40. package/ChannelSettings/components/EditDetailsModal.js +12 -12
  41. package/ChannelSettings/components/LeaveChannel.js +12 -12
  42. package/ChannelSettings/components/ModerationPanel.js +24 -19
  43. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  44. package/ChannelSettings/components/UserListItem.js +13 -13
  45. package/ChannelSettings/components/UserListItem.js.map +1 -1
  46. package/ChannelSettings/components/UserPanel.js +14 -14
  47. package/ChannelSettings/context.js +3 -3
  48. package/ChannelSettings.js +18 -18
  49. package/CreateChannel/components/CreateChannelUI.js +14 -14
  50. package/CreateChannel/components/InviteUsers.js +14 -14
  51. package/CreateChannel/components/SelectChannelType.js +11 -11
  52. package/CreateChannel/context.js +4 -4
  53. package/CreateChannel.js +14 -14
  54. package/{CreateChannelProvider-fc0268d6.js → CreateChannelProvider-5bd3ebea.js} +1 -1
  55. package/{CreateChannelProvider-fc0268d6.js.map → CreateChannelProvider-5bd3ebea.js.map} +1 -1
  56. package/CreateOpenChannel/components/CreateOpenChannelUI.js +10 -10
  57. package/CreateOpenChannel/context.js +1 -1
  58. package/CreateOpenChannel.js +10 -10
  59. package/EditUserProfile/components/EditUserProfileUI.js +13 -13
  60. package/EditUserProfile.js +13 -13
  61. package/{LocalizationContext-a90809c7.js → LocalizationContext-410574e8.js} +3 -3
  62. package/{LocalizationContext-a90809c7.js.map → LocalizationContext-410574e8.js.map} +1 -1
  63. package/{MediaQueryContext-280871f5.js → MediaQueryContext-53329809.js} +1 -1
  64. package/{MediaQueryContext-280871f5.js.map → MediaQueryContext-53329809.js.map} +1 -1
  65. package/{MemberList-25c34d5b.js → MemberList-35d3c304.js} +7 -6
  66. package/MemberList-35d3c304.js.map +1 -0
  67. package/MessageSearch/components/MessageSearchUI.js +11 -11
  68. package/MessageSearch/context.js +2 -2
  69. package/MessageSearch.js +11 -11
  70. package/OpenChannel/components/FrozenChannelNotification.js +4 -4
  71. package/OpenChannel/components/OpenChannelHeader.js +13 -13
  72. package/OpenChannel/components/OpenChannelInput.js +15 -15
  73. package/OpenChannel/components/OpenChannelMessage.js +22 -22
  74. package/OpenChannel/components/OpenChannelMessageList.js +24 -24
  75. package/OpenChannel/components/OpenChannelUI.js +24 -24
  76. package/OpenChannel/context.js +9 -9
  77. package/OpenChannel.js +24 -24
  78. package/OpenChannelList/components/OpenChannelListUI.js +13 -13
  79. package/OpenChannelList/components/OpenChannelPreview.js +4 -4
  80. package/OpenChannelList/context.js +4 -4
  81. package/OpenChannelList.js +13 -13
  82. package/{OpenChannelListProvider-9b77cf19.js → OpenChannelListProvider-f58761c4.js} +3 -3
  83. package/{OpenChannelListProvider-9b77cf19.js.map → OpenChannelListProvider-f58761c4.js.map} +1 -1
  84. package/{OpenChannelProvider-911f3536.js → OpenChannelProvider-a572410e.js} +7 -7
  85. package/OpenChannelProvider-a572410e.js.map +1 -0
  86. package/OpenChannelSettings/components/EditDetailsModal.js +13 -13
  87. package/OpenChannelSettings/components/OpenChannelProfile.js +13 -13
  88. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
  89. package/OpenChannelSettings/components/OperatorUI.js +17 -17
  90. package/OpenChannelSettings/components/ParticipantUI.js +15 -15
  91. package/OpenChannelSettings/context.js +3 -3
  92. package/OpenChannelSettings.js +18 -18
  93. package/RemoveMessageModal-13018bc9.js +31 -0
  94. package/RemoveMessageModal-13018bc9.js.map +1 -0
  95. package/SendbirdProvider.js +18 -14
  96. package/SendbirdProvider.js.map +1 -1
  97. package/Thread/components/ParentMessageInfo.js +360 -0
  98. package/Thread/components/ParentMessageInfo.js.map +1 -0
  99. package/Thread/components/ParentMessageInfoItem.js +197 -0
  100. package/Thread/components/ParentMessageInfoItem.js.map +1 -0
  101. package/Thread/components/ThreadHeader.js +61 -0
  102. package/Thread/components/ThreadHeader.js.map +1 -0
  103. package/Thread/components/ThreadList.js +139 -0
  104. package/Thread/components/ThreadList.js.map +1 -0
  105. package/Thread/components/ThreadListItem.js +522 -0
  106. package/Thread/components/ThreadListItem.js.map +1 -0
  107. package/Thread/components/ThreadMessageInput.js +193 -0
  108. package/Thread/components/ThreadMessageInput.js.map +1 -0
  109. package/Thread/components/ThreadUI.js +314 -0
  110. package/Thread/components/ThreadUI.js.map +1 -0
  111. package/Thread/context/types.js +30 -0
  112. package/Thread/context/types.js.map +1 -0
  113. package/Thread/context.js +18 -0
  114. package/Thread/context.js.map +1 -0
  115. package/Thread.js +112 -0
  116. package/Thread.js.map +1 -0
  117. package/ThreadProvider-b7452f09.js +1644 -0
  118. package/ThreadProvider-b7452f09.js.map +1 -0
  119. package/{UserProfileContext-4e70ef73.js → UserProfileContext-2af91c5b.js} +1 -1
  120. package/{UserProfileContext-4e70ef73.js.map → UserProfileContext-2af91c5b.js.map} +1 -1
  121. package/{_rollupPluginBabelHelpers-51c9f5c3.js → _rollupPluginBabelHelpers-0df8ccf2.js} +1 -1
  122. package/_rollupPluginBabelHelpers-0df8ccf2.js.map +1 -0
  123. package/{actionTypes-3dc172c6.js → actionTypes-56bfddb6.js} +1 -1
  124. package/{actionTypes-3dc172c6.js.map → actionTypes-56bfddb6.js.map} +1 -1
  125. package/cjs/App.js +163 -71
  126. package/cjs/App.js.map +1 -1
  127. package/cjs/Channel/components/ChannelHeader.js +20 -45
  128. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  129. package/cjs/Channel/components/ChannelUI.js +28 -23
  130. package/cjs/Channel/components/ChannelUI.js.map +1 -1
  131. package/cjs/Channel/components/FileViewer.js +14 -14
  132. package/cjs/Channel/components/FrozenNotification.js +4 -4
  133. package/cjs/Channel/components/Message.js +49 -24
  134. package/cjs/Channel/components/Message.js.map +1 -1
  135. package/cjs/Channel/components/MessageInput.js +21 -16
  136. package/cjs/Channel/components/MessageInput.js.map +1 -1
  137. package/cjs/Channel/components/MessageList.js +30 -32
  138. package/cjs/Channel/components/MessageList.js.map +1 -1
  139. package/cjs/Channel/components/RemoveMessageModal.js +16 -16
  140. package/cjs/Channel/components/SuggestedMentionList.js +54 -48
  141. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  142. package/cjs/Channel/components/TypingIndicator.js +14 -14
  143. package/cjs/Channel/components/UnreadCount.js +4 -4
  144. package/cjs/Channel/context.js +17 -13
  145. package/cjs/Channel/context.js.map +1 -1
  146. package/cjs/Channel.js +35 -24
  147. package/cjs/Channel.js.map +1 -1
  148. package/cjs/ChannelList/components/AddChannel.js +14 -14
  149. package/cjs/ChannelList/components/ChannelListHeader.js +7 -7
  150. package/cjs/ChannelList/components/ChannelListUI.js +28 -27
  151. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  152. package/cjs/ChannelList/components/ChannelPreview.js +26 -24
  153. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  154. package/cjs/ChannelList/components/ChannelPreviewAction.js +32 -25
  155. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  156. package/cjs/ChannelList/context.js +8 -8
  157. package/cjs/ChannelList.js +27 -27
  158. package/cjs/{ChannelListProvider-a61b57d9.js → ChannelListProvider-2b605a05.js} +8 -8
  159. package/cjs/{ChannelListProvider-a61b57d9.js.map → ChannelListProvider-2b605a05.js.map} +1 -1
  160. package/cjs/{ChannelProvider-4dd6e426.js → ChannelProvider-0151b6ec.js} +95 -46
  161. package/cjs/ChannelProvider-0151b6ec.js.map +1 -0
  162. package/cjs/ChannelSettings/components/ChannelProfile.js +12 -12
  163. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +18 -18
  164. package/cjs/ChannelSettings/components/EditDetailsModal.js +12 -12
  165. package/cjs/ChannelSettings/components/LeaveChannel.js +12 -12
  166. package/cjs/ChannelSettings/components/ModerationPanel.js +24 -19
  167. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  168. package/cjs/ChannelSettings/components/UserListItem.js +13 -13
  169. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -1
  170. package/cjs/ChannelSettings/components/UserPanel.js +14 -14
  171. package/cjs/ChannelSettings/context.js +3 -3
  172. package/cjs/ChannelSettings.js +18 -18
  173. package/cjs/CreateChannel/components/CreateChannelUI.js +14 -14
  174. package/cjs/CreateChannel/components/InviteUsers.js +14 -14
  175. package/cjs/CreateChannel/components/SelectChannelType.js +11 -11
  176. package/cjs/CreateChannel/context.js +4 -4
  177. package/cjs/CreateChannel.js +14 -14
  178. package/cjs/{CreateChannelProvider-29af9e9c.js → CreateChannelProvider-67a24a4a.js} +1 -1
  179. package/cjs/{CreateChannelProvider-29af9e9c.js.map → CreateChannelProvider-67a24a4a.js.map} +1 -1
  180. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +10 -10
  181. package/cjs/CreateOpenChannel/context.js +1 -1
  182. package/cjs/CreateOpenChannel.js +10 -10
  183. package/cjs/EditUserProfile/components/EditUserProfileUI.js +13 -13
  184. package/cjs/EditUserProfile.js +13 -13
  185. package/cjs/{LocalizationContext-3c85c616.js → LocalizationContext-68ab5e81.js} +3 -3
  186. package/cjs/{LocalizationContext-3c85c616.js.map → LocalizationContext-68ab5e81.js.map} +1 -1
  187. package/cjs/{MediaQueryContext-c8f557d1.js → MediaQueryContext-7bd4247a.js} +1 -1
  188. package/cjs/{MediaQueryContext-c8f557d1.js.map → MediaQueryContext-7bd4247a.js.map} +1 -1
  189. package/cjs/{MemberList-0861d5f8.js → MemberList-61efd673.js} +7 -6
  190. package/cjs/MemberList-61efd673.js.map +1 -0
  191. package/cjs/MessageSearch/components/MessageSearchUI.js +11 -11
  192. package/cjs/MessageSearch/context.js +2 -2
  193. package/cjs/MessageSearch.js +11 -11
  194. package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
  195. package/cjs/OpenChannel/components/OpenChannelHeader.js +13 -13
  196. package/cjs/OpenChannel/components/OpenChannelInput.js +15 -15
  197. package/cjs/OpenChannel/components/OpenChannelMessage.js +22 -22
  198. package/cjs/OpenChannel/components/OpenChannelMessageList.js +24 -24
  199. package/cjs/OpenChannel/components/OpenChannelUI.js +24 -24
  200. package/cjs/OpenChannel/context.js +9 -9
  201. package/cjs/OpenChannel.js +24 -24
  202. package/cjs/OpenChannelList/components/OpenChannelListUI.js +13 -13
  203. package/cjs/OpenChannelList/components/OpenChannelPreview.js +4 -4
  204. package/cjs/OpenChannelList/context.js +4 -4
  205. package/cjs/OpenChannelList.js +13 -13
  206. package/cjs/{OpenChannelListProvider-934729b4.js → OpenChannelListProvider-03c75ad9.js} +3 -3
  207. package/cjs/{OpenChannelListProvider-934729b4.js.map → OpenChannelListProvider-03c75ad9.js.map} +1 -1
  208. package/cjs/{OpenChannelProvider-c05255cc.js → OpenChannelProvider-b3dacb85.js} +7 -7
  209. package/cjs/OpenChannelProvider-b3dacb85.js.map +1 -0
  210. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +13 -13
  211. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +13 -13
  212. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
  213. package/cjs/OpenChannelSettings/components/OperatorUI.js +17 -17
  214. package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -15
  215. package/cjs/OpenChannelSettings/context.js +3 -3
  216. package/cjs/OpenChannelSettings.js +18 -18
  217. package/cjs/RemoveMessageModal-22d7e167.js +37 -0
  218. package/cjs/RemoveMessageModal-22d7e167.js.map +1 -0
  219. package/cjs/SendbirdProvider.js +18 -14
  220. package/cjs/SendbirdProvider.js.map +1 -1
  221. package/cjs/Thread/components/ParentMessageInfo.js +366 -0
  222. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -0
  223. package/cjs/Thread/components/ParentMessageInfoItem.js +203 -0
  224. package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -0
  225. package/cjs/Thread/components/ThreadHeader.js +67 -0
  226. package/cjs/Thread/components/ThreadHeader.js.map +1 -0
  227. package/cjs/Thread/components/ThreadList.js +145 -0
  228. package/cjs/Thread/components/ThreadList.js.map +1 -0
  229. package/cjs/Thread/components/ThreadListItem.js +528 -0
  230. package/cjs/Thread/components/ThreadListItem.js.map +1 -0
  231. package/cjs/Thread/components/ThreadMessageInput.js +199 -0
  232. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -0
  233. package/cjs/Thread/components/ThreadUI.js +320 -0
  234. package/cjs/Thread/components/ThreadUI.js.map +1 -0
  235. package/cjs/Thread/context/types.js +32 -0
  236. package/cjs/Thread/context/types.js.map +1 -0
  237. package/cjs/Thread/context.js +27 -0
  238. package/cjs/Thread/context.js.map +1 -0
  239. package/cjs/Thread.js +118 -0
  240. package/cjs/Thread.js.map +1 -0
  241. package/cjs/ThreadProvider-06e039df.js +1653 -0
  242. package/cjs/ThreadProvider-06e039df.js.map +1 -0
  243. package/cjs/{UserProfileContext-c16bb529.js → UserProfileContext-a411f7b7.js} +1 -1
  244. package/cjs/{UserProfileContext-c16bb529.js.map → UserProfileContext-a411f7b7.js.map} +1 -1
  245. package/cjs/{_rollupPluginBabelHelpers-23c0e950.js → _rollupPluginBabelHelpers-3886e03a.js} +1 -1
  246. package/cjs/_rollupPluginBabelHelpers-3886e03a.js.map +1 -0
  247. package/cjs/{actionTypes-d80c4fb6.js → actionTypes-898f9ec5.js} +1 -1
  248. package/cjs/{actionTypes-d80c4fb6.js.map → actionTypes-898f9ec5.js.map} +1 -1
  249. package/cjs/{color-03c2ecf2.js → color-4ed3829e.js} +1 -1
  250. package/cjs/{color-03c2ecf2.js.map → color-4ed3829e.js.map} +1 -1
  251. package/cjs/{compareIds-c670ae57.js → compareIds-fc53942c.js} +1 -1
  252. package/cjs/{compareIds-c670ae57.js.map → compareIds-fc53942c.js.map} +1 -1
  253. package/cjs/{const-fe6f002d.js → const-8a65fe1e.js} +1 -1
  254. package/cjs/{const-fe6f002d.js.map → const-8a65fe1e.js.map} +1 -1
  255. package/cjs/{const-0095baf3.js → const-d025f0a2.js} +7 -1
  256. package/cjs/const-d025f0a2.js.map +1 -0
  257. package/cjs/{context-0fb617f1.js → context-48995334.js} +2 -2
  258. package/cjs/{context-0fb617f1.js.map → context-48995334.js.map} +1 -1
  259. package/cjs/dist/index.css +1049 -196
  260. package/cjs/dist/index.css.map +1 -1
  261. package/cjs/{index-607cb4ff.js → index-0cab061c.js} +1 -1
  262. package/cjs/{index-607cb4ff.js.map → index-0cab061c.js.map} +1 -1
  263. package/cjs/{index-97e2a887.js → index-2439032c.js} +9 -9
  264. package/cjs/index-2439032c.js.map +1 -0
  265. package/cjs/{index-b1a4b6f0.js → index-249ae5ae.js} +2 -2
  266. package/cjs/{index-b1a4b6f0.js.map → index-249ae5ae.js.map} +1 -1
  267. package/cjs/{index-fab17fef.js → index-311c564c.js} +4 -4
  268. package/cjs/{index-fab17fef.js.map → index-311c564c.js.map} +1 -1
  269. package/cjs/{index-0854d1ea.js → index-4a58b2e1.js} +2 -2
  270. package/cjs/{index-0854d1ea.js.map → index-4a58b2e1.js.map} +1 -1
  271. package/cjs/{index-039012c4.js → index-79006076.js} +4 -4
  272. package/cjs/{index-039012c4.js.map → index-79006076.js.map} +1 -1
  273. package/cjs/{index-1042f264.js → index-858d4ced.js} +2 -2
  274. package/cjs/{index-1042f264.js.map → index-858d4ced.js.map} +1 -1
  275. package/cjs/{index-27c6a6bc.js → index-9a71cc15.js} +2 -2
  276. package/cjs/{index-27c6a6bc.js.map → index-9a71cc15.js.map} +1 -1
  277. package/cjs/{index-475ae379.js → index-a8e6344b.js} +5 -5
  278. package/cjs/{index-475ae379.js.map → index-a8e6344b.js.map} +1 -1
  279. package/cjs/{index-1218eab2.js → index-c015580f.js} +7 -7
  280. package/cjs/index-c015580f.js.map +1 -0
  281. package/cjs/{index-1b69f7d2.js → index-f31610a5.js} +1 -1
  282. package/cjs/{index-1b69f7d2.js.map → index-f31610a5.js.map} +1 -1
  283. package/cjs/index.js +82 -68
  284. package/cjs/index.js.map +1 -1
  285. package/cjs/sendbirdSelectors.js +2 -2
  286. package/cjs/{stringSet-da2fe019.js → stringSet-fd892563.js} +17 -3
  287. package/cjs/stringSet-fd892563.js.map +1 -0
  288. package/cjs/{topics-fd2124f5.js → topics-6a30e46d.js} +1 -1
  289. package/cjs/{topics-fd2124f5.js.map → topics-6a30e46d.js.map} +1 -1
  290. package/cjs/tslib.es6-029d13d0.js +97 -0
  291. package/cjs/{tslib.es6-bce345aa.js.map → tslib.es6-029d13d0.js.map} +1 -1
  292. package/cjs/ui/Accordion.js +3 -3
  293. package/cjs/ui/AccordionGroup.js +2 -2
  294. package/cjs/ui/AdminMessage.js +3 -3
  295. package/cjs/ui/AdminMessage.js.map +1 -1
  296. package/cjs/ui/Avatar.js +2 -2
  297. package/cjs/ui/Badge.js +5 -5
  298. package/cjs/ui/BottomSheet.js +1 -1
  299. package/cjs/ui/Button.js +3 -3
  300. package/cjs/ui/ChannelAvatar.js +3 -3
  301. package/cjs/ui/ConnectionStatus.js +4 -4
  302. package/cjs/ui/ContextMenu.js +15 -11
  303. package/cjs/ui/ContextMenu.js.map +1 -1
  304. package/cjs/ui/DateSeparator.js +4 -4
  305. package/cjs/ui/EmojiReactions.js +26 -14
  306. package/cjs/ui/EmojiReactions.js.map +1 -1
  307. package/cjs/ui/FileMessageItemBody.js +11 -8
  308. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  309. package/cjs/ui/FileViewer.js +8 -8
  310. package/cjs/ui/IconButton.js +1 -1
  311. package/cjs/ui/ImageRenderer.js +1 -1
  312. package/cjs/ui/Input.js +2 -2
  313. package/cjs/ui/Label.js +2 -2
  314. package/cjs/ui/LinkLabel.js +2 -2
  315. package/cjs/ui/Loader.js +1 -1
  316. package/cjs/ui/MentionLabel.js +15 -14
  317. package/cjs/ui/MentionLabel.js.map +1 -1
  318. package/cjs/ui/MessageContent.js +104 -56
  319. package/cjs/ui/MessageContent.js.map +1 -1
  320. package/cjs/ui/MessageInput.js +17 -13
  321. package/cjs/ui/MessageInput.js.map +1 -1
  322. package/cjs/ui/MessageItemMenu.js +40 -16
  323. package/cjs/ui/MessageItemMenu.js.map +1 -1
  324. package/cjs/ui/MessageItemReactionMenu.js +5 -5
  325. package/cjs/ui/MessageSearchFileItem.js +9 -9
  326. package/cjs/ui/MessageSearchItem.js +9 -9
  327. package/cjs/ui/MessageStatus.js +11 -11
  328. package/cjs/ui/MessageStatus.js.map +1 -1
  329. package/cjs/ui/Modal.js +7 -7
  330. package/cjs/ui/Modal.js.map +1 -1
  331. package/cjs/ui/OGMessageItemBody.js +11 -13
  332. package/cjs/ui/OGMessageItemBody.js.map +1 -1
  333. package/cjs/ui/OpenChannelAdminMessage.js +3 -3
  334. package/cjs/ui/OpenChannelAvatar.js +6 -6
  335. package/cjs/ui/OpenchannelConversationHeader.js +6 -6
  336. package/cjs/ui/OpenchannelFileMessage.js +21 -19
  337. package/cjs/ui/OpenchannelFileMessage.js.map +1 -1
  338. package/cjs/ui/OpenchannelOGMessage.js +18 -18
  339. package/cjs/ui/OpenchannelOGMessage.js.map +1 -1
  340. package/cjs/ui/OpenchannelThumbnailMessage.js +17 -17
  341. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -1
  342. package/cjs/ui/OpenchannelUserMessage.js +16 -16
  343. package/cjs/ui/PlaceHolder.js +6 -6
  344. package/cjs/ui/QuoteMessage.js +34 -16
  345. package/cjs/ui/QuoteMessage.js.map +1 -1
  346. package/cjs/ui/QuoteMessageInput.js +6 -6
  347. package/cjs/ui/ReactionBadge.js +3 -3
  348. package/cjs/ui/ReactionButton.js +1 -1
  349. package/cjs/ui/SortByRow.js +2 -2
  350. package/cjs/ui/SortByRow.js.map +1 -1
  351. package/cjs/ui/TextButton.js +2 -2
  352. package/cjs/ui/TextMessageItemBody.js +11 -11
  353. package/cjs/ui/ThreadReplies.js +82 -0
  354. package/cjs/ui/ThreadReplies.js.map +1 -0
  355. package/cjs/ui/ThumbnailMessageItemBody.js +14 -12
  356. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  357. package/cjs/ui/Tooltip.js +3 -3
  358. package/cjs/ui/TooltipWrapper.js +1 -1
  359. package/cjs/ui/UnknownMessageItemBody.js +6 -6
  360. package/cjs/ui/UserListItem.js +17 -17
  361. package/cjs/ui/UserListItem.js.map +1 -1
  362. package/cjs/ui/UserProfile.js +14 -12
  363. package/cjs/ui/UserProfile.js.map +1 -1
  364. package/cjs/ui/Word.js +11 -11
  365. package/cjs/{useLongPress-698416e4.js → useLongPress-40972b66.js} +3 -3
  366. package/cjs/{useLongPress-698416e4.js.map → useLongPress-40972b66.js.map} +1 -1
  367. package/cjs/useSendbirdStateContext.js +1 -1
  368. package/cjs/utils-d43cb0c1.js +32 -0
  369. package/cjs/utils-d43cb0c1.js.map +1 -0
  370. package/cjs/{utils-8a793976.js → utils-d8127210.js} +1 -1
  371. package/cjs/{utils-8a793976.js.map → utils-d8127210.js.map} +1 -1
  372. package/cjs/{utils-557bb5d2.js → utils-db6fb27a.js} +1 -1
  373. package/cjs/{utils-557bb5d2.js.map → utils-db6fb27a.js.map} +1 -1
  374. package/cjs/{utils-0d32641e.js → utils-f90f83c1.js} +1 -1
  375. package/cjs/{utils-0d32641e.js.map → utils-f90f83c1.js.map} +1 -1
  376. package/cjs/{uuid-2a459d4b.js → uuid-de38f276.js} +1 -1
  377. package/cjs/{uuid-2a459d4b.js.map → uuid-de38f276.js.map} +1 -1
  378. package/cjs/withSendbird.js +1 -1
  379. package/{color-e740c17f.js → color-1619c1b7.js} +1 -1
  380. package/{color-e740c17f.js.map → color-1619c1b7.js.map} +1 -1
  381. package/{compareIds-e84966df.js → compareIds-bbc4e959.js} +1 -1
  382. package/{compareIds-e84966df.js.map → compareIds-bbc4e959.js.map} +1 -1
  383. package/{const-3c9680d2.js → const-0751201c.js} +1 -1
  384. package/{const-3c9680d2.js.map → const-0751201c.js.map} +1 -1
  385. package/const-6e3eaa64.js +14 -0
  386. package/const-6e3eaa64.js.map +1 -0
  387. package/{context-3adaf9b3.js → context-0ecfbd98.js} +2 -2
  388. package/{context-3adaf9b3.js.map → context-0ecfbd98.js.map} +1 -1
  389. package/dist/index.css +1049 -196
  390. package/dist/index.css.map +1 -1
  391. package/{index-8ce0c4b6.js → index-2e0b072c.js} +5 -5
  392. package/{index-8ce0c4b6.js.map → index-2e0b072c.js.map} +1 -1
  393. package/{index-873ffa33.js → index-3ade03b5.js} +4 -4
  394. package/{index-873ffa33.js.map → index-3ade03b5.js.map} +1 -1
  395. package/{index-fb4777a9.js → index-43349e3a.js} +4 -4
  396. package/{index-fb4777a9.js.map → index-43349e3a.js.map} +1 -1
  397. package/{index-ca3ba8a0.js → index-468659e6.js} +7 -7
  398. package/index-468659e6.js.map +1 -0
  399. package/{index-8d74bd4b.js → index-4e38f6d5.js} +1 -1
  400. package/{index-8d74bd4b.js.map → index-4e38f6d5.js.map} +1 -1
  401. package/{index-0fa44537.js → index-51219968.js} +2 -2
  402. package/{index-0fa44537.js.map → index-51219968.js.map} +1 -1
  403. package/{index-8e0d1cc6.js → index-51ef2190.js} +1 -1
  404. package/{index-8e0d1cc6.js.map → index-51ef2190.js.map} +1 -1
  405. package/{index-64740116.js → index-59fddbdc.js} +2 -2
  406. package/{index-64740116.js.map → index-59fddbdc.js.map} +1 -1
  407. package/{index-cfdf3b6d.js → index-7ad981b0.js} +2 -2
  408. package/{index-cfdf3b6d.js.map → index-7ad981b0.js.map} +1 -1
  409. package/{index-041c94d3.js → index-dfbeafcd.js} +2 -2
  410. package/{index-041c94d3.js.map → index-dfbeafcd.js.map} +1 -1
  411. package/{index-05c36d6c.js → index-dfc090e4.js} +9 -9
  412. package/index-dfc090e4.js.map +1 -0
  413. package/index.d.ts +230 -14
  414. package/index.js +82 -68
  415. package/index.js.map +1 -1
  416. package/package.json +1 -1
  417. package/sendbirdSelectors.js +2 -2
  418. package/{stringSet-e413411d.js → stringSet-bd5e1130.js} +17 -3
  419. package/stringSet-bd5e1130.js.map +1 -0
  420. package/{topics-b81e5b9b.js → topics-d58e48df.js} +1 -1
  421. package/{topics-b81e5b9b.js.map → topics-d58e48df.js.map} +1 -1
  422. package/tslib.es6-0f615f78.js +92 -0
  423. package/{tslib.es6-e592f653.js.map → tslib.es6-0f615f78.js.map} +1 -1
  424. package/ui/Accordion.js +3 -3
  425. package/ui/AccordionGroup.js +2 -2
  426. package/ui/AdminMessage.js +3 -3
  427. package/ui/AdminMessage.js.map +1 -1
  428. package/ui/Avatar.js +2 -2
  429. package/ui/Badge.js +5 -5
  430. package/ui/BottomSheet.js +1 -1
  431. package/ui/Button.js +3 -3
  432. package/ui/ChannelAvatar.js +3 -3
  433. package/ui/ConnectionStatus.js +4 -4
  434. package/ui/ContextMenu.js +15 -11
  435. package/ui/ContextMenu.js.map +1 -1
  436. package/ui/DateSeparator.js +4 -4
  437. package/ui/EmojiReactions.js +26 -14
  438. package/ui/EmojiReactions.js.map +1 -1
  439. package/ui/FileMessageItemBody.js +11 -8
  440. package/ui/FileMessageItemBody.js.map +1 -1
  441. package/ui/FileViewer.js +8 -8
  442. package/ui/IconButton.js +1 -1
  443. package/ui/ImageRenderer.js +1 -1
  444. package/ui/Input.js +2 -2
  445. package/ui/Label.js +2 -2
  446. package/ui/LinkLabel.js +2 -2
  447. package/ui/Loader.js +1 -1
  448. package/ui/MentionLabel.js +15 -14
  449. package/ui/MentionLabel.js.map +1 -1
  450. package/ui/MessageContent.js +104 -56
  451. package/ui/MessageContent.js.map +1 -1
  452. package/ui/MessageInput.js +17 -13
  453. package/ui/MessageInput.js.map +1 -1
  454. package/ui/MessageItemMenu.js +40 -16
  455. package/ui/MessageItemMenu.js.map +1 -1
  456. package/ui/MessageItemReactionMenu.js +5 -5
  457. package/ui/MessageSearchFileItem.js +9 -9
  458. package/ui/MessageSearchItem.js +9 -9
  459. package/ui/MessageStatus.js +11 -11
  460. package/ui/MessageStatus.js.map +1 -1
  461. package/ui/Modal.js +7 -7
  462. package/ui/Modal.js.map +1 -1
  463. package/ui/OGMessageItemBody.js +11 -13
  464. package/ui/OGMessageItemBody.js.map +1 -1
  465. package/ui/OpenChannelAdminMessage.js +3 -3
  466. package/ui/OpenChannelAvatar.js +6 -6
  467. package/ui/OpenchannelConversationHeader.js +6 -6
  468. package/ui/OpenchannelFileMessage.js +21 -19
  469. package/ui/OpenchannelFileMessage.js.map +1 -1
  470. package/ui/OpenchannelOGMessage.js +18 -18
  471. package/ui/OpenchannelOGMessage.js.map +1 -1
  472. package/ui/OpenchannelThumbnailMessage.js +17 -17
  473. package/ui/OpenchannelThumbnailMessage.js.map +1 -1
  474. package/ui/OpenchannelUserMessage.js +16 -16
  475. package/ui/PlaceHolder.js +6 -6
  476. package/ui/QuoteMessage.js +34 -16
  477. package/ui/QuoteMessage.js.map +1 -1
  478. package/ui/QuoteMessageInput.js +6 -6
  479. package/ui/ReactionBadge.js +3 -3
  480. package/ui/ReactionButton.js +1 -1
  481. package/ui/SortByRow.js +2 -2
  482. package/ui/SortByRow.js.map +1 -1
  483. package/ui/TextButton.js +2 -2
  484. package/ui/TextMessageItemBody.js +11 -11
  485. package/ui/ThreadReplies.js +76 -0
  486. package/ui/ThreadReplies.js.map +1 -0
  487. package/ui/ThumbnailMessageItemBody.js +14 -12
  488. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  489. package/ui/Tooltip.js +3 -3
  490. package/ui/TooltipWrapper.js +1 -1
  491. package/ui/UnknownMessageItemBody.js +6 -6
  492. package/ui/UserListItem.js +17 -17
  493. package/ui/UserListItem.js.map +1 -1
  494. package/ui/UserProfile.js +14 -12
  495. package/ui/UserProfile.js.map +1 -1
  496. package/ui/Word.js +11 -11
  497. package/{useLongPress-8cda7590.js → useLongPress-3d0759b4.js} +3 -3
  498. package/{useLongPress-8cda7590.js.map → useLongPress-3d0759b4.js.map} +1 -1
  499. package/useSendbirdStateContext.js +1 -1
  500. package/{utils-c2438081.js → utils-9f07eb45.js} +1 -1
  501. package/{utils-c2438081.js.map → utils-9f07eb45.js.map} +1 -1
  502. package/{utils-f95bafde.js → utils-d76efebb.js} +1 -1
  503. package/{utils-f95bafde.js.map → utils-d76efebb.js.map} +1 -1
  504. package/{utils-90964f90.js → utils-db1bf7d1.js} +1 -1
  505. package/{utils-90964f90.js.map → utils-db1bf7d1.js.map} +1 -1
  506. package/utils-e2976a74.js +30 -0
  507. package/utils-e2976a74.js.map +1 -0
  508. package/{uuid-c41826f3.js → uuid-9f76bbf8.js} +1 -1
  509. package/{uuid-c41826f3.js.map → uuid-9f76bbf8.js.map} +1 -1
  510. package/withSendbird.js +1 -1
  511. package/ChannelProvider-5e995fe8.js.map +0 -1
  512. package/MemberList-25c34d5b.js.map +0 -1
  513. package/OpenChannelProvider-911f3536.js.map +0 -1
  514. package/_rollupPluginBabelHelpers-51c9f5c3.js.map +0 -1
  515. package/cjs/ChannelProvider-4dd6e426.js.map +0 -1
  516. package/cjs/MemberList-0861d5f8.js.map +0 -1
  517. package/cjs/OpenChannelProvider-c05255cc.js.map +0 -1
  518. package/cjs/_rollupPluginBabelHelpers-23c0e950.js.map +0 -1
  519. package/cjs/const-0095baf3.js.map +0 -1
  520. package/cjs/index-1218eab2.js.map +0 -1
  521. package/cjs/index-97e2a887.js.map +0 -1
  522. package/cjs/stringSet-da2fe019.js.map +0 -1
  523. package/cjs/tslib.es6-bce345aa.js +0 -57
  524. package/const-630a8129.js +0 -8
  525. package/const-630a8129.js.map +0 -1
  526. package/index-05c36d6c.js.map +0 -1
  527. package/index-ca3ba8a0.js.map +0 -1
  528. package/stringSet-e413411d.js.map +0 -1
  529. package/tslib.es6-e592f653.js +0 -54
@@ -0,0 +1,1644 @@
1
+ import React__default, { useEffect, useCallback, useReducer, useMemo } from 'react';
2
+ import { f as format } from './index-dfbeafcd.js';
3
+ import { getOutgoingMessageState, OutgoingMessageStates } from './utils/message/getOutgoingMessageState.js';
4
+ import { U as UserProfileProvider } from './UserProfileContext-2af91c5b.js';
5
+ import useSendbirdStateContext from './useSendbirdStateContext.js';
6
+ import { _ as __assign, a as __spreadArray, c as __awaiter, d as __generator } from './tslib.es6-0f615f78.js';
7
+ import { ChannelStateTypes, ThreadListStateTypes, ParentMessageInfoStateTypes } from './Thread/context/types.js';
8
+ import { ChannelType } from '@sendbird/chat';
9
+ import { a as SEND_USER_MESSAGE, b as SEND_FILE_MESSAGE, U as UPDATE_USER_MESSAGE, D as DELETE_MESSAGE } from './topics-d58e48df.js';
10
+ import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
11
+ import { u as uuidv4 } from './uuid-9f76bbf8.js';
12
+ import { SendingStatus, MessageType } from '@sendbird/chat/message';
13
+
14
+ var getNicknamesMapFromMembers = function (members) {
15
+ if (members === void 0) {
16
+ members = [];
17
+ }
18
+
19
+ var nicknamesMap = new Map();
20
+
21
+ for (var memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
22
+ var _a = members[memberIndex],
23
+ userId = _a.userId,
24
+ nickname = _a.nickname;
25
+ nicknamesMap.set(userId, nickname);
26
+ }
27
+
28
+ return nicknamesMap;
29
+ };
30
+ var isAboutSame = function (a, b, px) {
31
+ return Math.abs(a - b) <= px;
32
+ };
33
+ var isEmpty = function (val) {
34
+ return val === null || val === undefined;
35
+ }; // Some Ids return string and number inconsistently
36
+ // only use to comapre IDs
37
+
38
+ function compareIds(a, b) {
39
+ if (isEmpty(a) || isEmpty(b)) {
40
+ return false;
41
+ }
42
+
43
+ var aString = a.toString();
44
+ var bString = b.toString();
45
+ return aString === bString;
46
+ }
47
+ var getMessageCreatedAt = function (message) {
48
+ return format(message.createdAt, 'p');
49
+ };
50
+ var isReadMessage = function (channel, message) {
51
+ return getOutgoingMessageState(channel, message) === OutgoingMessageStates.READ;
52
+ };
53
+ var isSameGroup = function (message, comparingMessage, currentChannel) {
54
+ var _a, _b, _c, _d;
55
+
56
+ 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 ? void 0 : message.sender) && (comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.sender) && (message === null || message === void 0 ? void 0 : message.createdAt) && (comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.createdAt) && ((_a = message === null || message === void 0 ? void 0 : message.sender) === null || _a === void 0 ? void 0 : _a.userId) && ((_b = comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.sender) === null || _b === void 0 ? void 0 : _b.userId))) {
57
+ return false;
58
+ }
59
+
60
+ return (message === null || message === void 0 ? void 0 : message.sendingStatus) === (comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.sendingStatus) && ((_c = message === null || message === void 0 ? void 0 : message.sender) === null || _c === void 0 ? void 0 : _c.userId) === ((_d = comparingMessage === null || comparingMessage === void 0 ? void 0 : comparingMessage.sender) === null || _d === void 0 ? void 0 : _d.userId) && getMessageCreatedAt(message) === getMessageCreatedAt(comparingMessage) && isReadMessage(currentChannel, message) === isReadMessage(currentChannel, comparingMessage);
61
+ };
62
+ var compareMessagesForGrouping = function (prevMessage, currMessage, nextMessage, currentChannel, replyType) {
63
+ if (replyType === 'THREAD' && (currMessage === null || currMessage === void 0 ? void 0 : currMessage.threadInfo)) {
64
+ return [false, false];
65
+ }
66
+
67
+ var sendingStatus = (currMessage === null || currMessage === void 0 ? void 0 : currMessage.sendingStatus) || '';
68
+ var isAcceptable = sendingStatus !== 'pending' && sendingStatus !== 'failed';
69
+ return [isSameGroup(prevMessage, currMessage, currentChannel) && isAcceptable, isSameGroup(currMessage, nextMessage, currentChannel) && isAcceptable];
70
+ };
71
+ var scrollIntoLast = function (intialTry) {
72
+ if (intialTry === void 0) {
73
+ intialTry = 0;
74
+ }
75
+
76
+ var MAX_TRIES = 10;
77
+ var currentTry = intialTry;
78
+
79
+ if (currentTry > MAX_TRIES) {
80
+ return;
81
+ }
82
+
83
+ try {
84
+ var scrollDOM = document.querySelector('.sendbird-thread-ui--scroll'); // eslint-disable-next-line no-multi-assign
85
+
86
+ scrollDOM.scrollTop = scrollDOM.scrollHeight;
87
+ } catch (error) {
88
+ setTimeout(function () {
89
+ scrollIntoLast(currentTry + 1);
90
+ }, 500 * currentTry);
91
+ }
92
+ };
93
+
94
+ var PREV_THREADS_FETCH_SIZE = 30;
95
+ var NEXT_THREADS_FETCH_SIZE = 30;
96
+
97
+ var ThreadContextActionTypes;
98
+
99
+ (function (ThreadContextActionTypes) {
100
+ // initialize
101
+ ThreadContextActionTypes["INIT_USER_ID"] = "INIT_USER_ID"; // channel
102
+
103
+ ThreadContextActionTypes["GET_CHANNEL_START"] = "GET_CHANNEL_START";
104
+ ThreadContextActionTypes["GET_CHANNEL_SUCCESS"] = "GET_CHANNEL_SUCCESS";
105
+ ThreadContextActionTypes["GET_CHANNEL_FAILURE"] = "GET_CHANNEL_FAILURE"; // emojis
106
+
107
+ ThreadContextActionTypes["SET_EMOJI_CONTAINER"] = "SET_EMOJI_CONTAINER"; // parent message
108
+
109
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_START"] = "GET_PARENT_MESSAGE_START";
110
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_SUCCESS"] = "GET_PARENT_MESSAGE_SUCCESS";
111
+ ThreadContextActionTypes["GET_PARENT_MESSAGE_FAILURE"] = "GET_PARENT_MESSAGE_FAILURE"; // fetch threads
112
+
113
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_START"] = "INITIALIZE_THREAD_LIST_START";
114
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_SUCCESS"] = "INITIALIZE_THREAD_LIST_SUCCESS";
115
+ ThreadContextActionTypes["INITIALIZE_THREAD_LIST_FAILURE"] = "INITIALIZE_THREAD_LIST_FAILURE";
116
+ ThreadContextActionTypes["GET_PREV_MESSAGES_START"] = "GET_PREV_MESSAGES_START";
117
+ ThreadContextActionTypes["GET_PREV_MESSAGES_SUCESS"] = "GET_PREV_MESSAGES_SUCESS";
118
+ ThreadContextActionTypes["GET_PREV_MESSAGES_FAILURE"] = "GET_PREV_MESSAGES_FAILURE";
119
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_START"] = "GET_NEXT_MESSAGES_START";
120
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_SUCESS"] = "GET_NEXT_MESSAGES_SUCESS";
121
+ ThreadContextActionTypes["GET_NEXT_MESSAGES_FAILURE"] = "GET_NEXT_MESSAGES_FAILURE"; // handle messages
122
+
123
+ ThreadContextActionTypes["SEND_MESSAGE_START"] = "SEND_MESSAGE_START";
124
+ ThreadContextActionTypes["SEND_MESSAGE_SUCESS"] = "SEND_MESSAGE_SUCESS";
125
+ ThreadContextActionTypes["SEND_MESSAGE_FAILURE"] = "SEND_MESSAGE_FAILURE";
126
+ ThreadContextActionTypes["RESEND_MESSAGE_START"] = "RESEND_MESSAGE_START";
127
+ ThreadContextActionTypes["ON_MESSAGE_DELETED_BY_REQ_ID"] = "ON_MESSAGE_DELETED_BY_REQ_ID"; // event handlers - message status change
128
+
129
+ ThreadContextActionTypes["ON_MESSAGE_RECEIVED"] = "ON_MESSAGE_RECEIVED";
130
+ ThreadContextActionTypes["ON_MESSAGE_UPDATED"] = "ON_MESSAGE_UPDATED";
131
+ ThreadContextActionTypes["ON_MESSAGE_DELETED"] = "ON_MESSAGE_DELETED";
132
+ ThreadContextActionTypes["ON_REACTION_UPDATED"] = "ON_REACTION_UPDATED"; // event handlers - user status change
133
+
134
+ ThreadContextActionTypes["ON_USER_MUTED"] = "ON_USER_MUTED";
135
+ ThreadContextActionTypes["ON_USER_UNMUTED"] = "ON_USER_UNMUTED";
136
+ ThreadContextActionTypes["ON_USER_BANNED"] = "ON_USER_BANNED";
137
+ ThreadContextActionTypes["ON_USER_UNBANNED"] = "ON_USER_UNBANNED";
138
+ ThreadContextActionTypes["ON_USER_LEFT"] = "ON_USER_LEFT"; // event handler - channel status change
139
+
140
+ ThreadContextActionTypes["ON_CHANNEL_FROZEN"] = "ON_CHANNEL_FROZEN";
141
+ ThreadContextActionTypes["ON_CHANNEL_UNFROZEN"] = "ON_CHANNEL_UNFROZEN";
142
+ ThreadContextActionTypes["ON_OPERATOR_UPDATED"] = "ON_OPERATOR_UPDATED";
143
+ })(ThreadContextActionTypes || (ThreadContextActionTypes = {}));
144
+
145
+ function reducer(state, action) {
146
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
147
+
148
+ switch (action.type) {
149
+ // initialize
150
+ case ThreadContextActionTypes.INIT_USER_ID:
151
+ {
152
+ return __assign(__assign({}, state), {
153
+ currentUserId: action.payload
154
+ });
155
+ }
156
+
157
+ case ThreadContextActionTypes.GET_CHANNEL_START:
158
+ {
159
+ return __assign(__assign({}, state), {
160
+ channelStatus: ChannelStateTypes.LOADING,
161
+ currentChannel: null
162
+ });
163
+ }
164
+
165
+ case ThreadContextActionTypes.GET_CHANNEL_SUCCESS:
166
+ {
167
+ var groupChannel = action.payload.groupChannel;
168
+ return __assign(__assign({}, state), {
169
+ channelStatus: ChannelStateTypes.INITIALIZED,
170
+ currentChannel: groupChannel,
171
+ // only support in normal group channel
172
+ isMuted: ((_b = (_a = groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.members) === null || _a === void 0 ? void 0 : _a.find(function (member) {
173
+ return (member === null || member === void 0 ? void 0 : member.userId) === state.currentUserId;
174
+ })) === null || _b === void 0 ? void 0 : _b.isMuted) || false,
175
+ isChannelFrozen: (groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.isFrozen) || false
176
+ });
177
+ }
178
+
179
+ case ThreadContextActionTypes.GET_CHANNEL_FAILURE:
180
+ {
181
+ return __assign(__assign({}, state), {
182
+ channelStatus: ChannelStateTypes.INVALID,
183
+ currentChannel: null
184
+ });
185
+ }
186
+
187
+ case ThreadContextActionTypes.SET_EMOJI_CONTAINER:
188
+ {
189
+ var emojiContainer = action.payload.emojiContainer;
190
+ return __assign(__assign({}, state), {
191
+ emojiContainer: emojiContainer
192
+ });
193
+ }
194
+
195
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_START:
196
+ {
197
+ return __assign(__assign({}, state), {
198
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.LOADING,
199
+ parentMessage: null
200
+ });
201
+ }
202
+
203
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_SUCCESS:
204
+ {
205
+ return __assign(__assign({}, state), {
206
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.INITIALIZED,
207
+ parentMessage: action.payload.parentMessage
208
+ });
209
+ }
210
+
211
+ case ThreadContextActionTypes.GET_PARENT_MESSAGE_FAILURE:
212
+ {
213
+ return __assign(__assign({}, state), {
214
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.INVALID,
215
+ parentMessage: null
216
+ });
217
+ }
218
+ // fetch threads
219
+
220
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_START:
221
+ {
222
+ return __assign(__assign({}, state), {
223
+ threadListStatus: ThreadListStateTypes.LOADING,
224
+ allThreadMessages: []
225
+ });
226
+ }
227
+
228
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_SUCCESS:
229
+ {
230
+ var _v = action.payload,
231
+ parentMessage = _v.parentMessage,
232
+ anchorMessage = _v.anchorMessage,
233
+ threadedMessages = _v.threadedMessages;
234
+ var anchorMessageCreatedAt_1 = !(anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.messageId) ? parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.createdAt : anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.createdAt;
235
+ var anchorIndex = threadedMessages.findIndex(function (message) {
236
+ return (message === null || message === void 0 ? void 0 : message.createdAt) > anchorMessageCreatedAt_1;
237
+ });
238
+ var prevThreadMessages = anchorIndex > -1 ? threadedMessages.slice(0, anchorIndex) : threadedMessages;
239
+ var anchorThreadMessage = (anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.messageId) ? [anchorMessage] : [];
240
+ var nextThreadMessages = anchorIndex > -1 ? threadedMessages.slice(anchorIndex) : [];
241
+ return __assign(__assign({}, state), {
242
+ threadListStatus: ThreadListStateTypes.INITIALIZED,
243
+ hasMorePrev: anchorIndex === -1 || anchorIndex === PREV_THREADS_FETCH_SIZE,
244
+ hasMoreNext: threadedMessages.length - anchorIndex === NEXT_THREADS_FETCH_SIZE,
245
+ allThreadMessages: [prevThreadMessages, anchorThreadMessage, nextThreadMessages].flat()
246
+ });
247
+ }
248
+
249
+ case ThreadContextActionTypes.INITIALIZE_THREAD_LIST_FAILURE:
250
+ {
251
+ return __assign(__assign({}, state), {
252
+ threadListStatus: ThreadListStateTypes.INVALID,
253
+ allThreadMessages: []
254
+ });
255
+ }
256
+
257
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_START:
258
+ {
259
+ return __assign({}, state);
260
+ }
261
+
262
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_SUCESS:
263
+ {
264
+ var threadedMessages = action.payload.threadedMessages;
265
+ return __assign(__assign({}, state), {
266
+ hasMoreNext: threadedMessages.length === NEXT_THREADS_FETCH_SIZE,
267
+ allThreadMessages: __spreadArray(__spreadArray([], state.allThreadMessages, true), threadedMessages, true)
268
+ });
269
+ }
270
+
271
+ case ThreadContextActionTypes.GET_NEXT_MESSAGES_FAILURE:
272
+ {
273
+ return __assign(__assign({}, state), {
274
+ hasMoreNext: false
275
+ });
276
+ }
277
+
278
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_START:
279
+ {
280
+ return __assign({}, state);
281
+ }
282
+
283
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_SUCESS:
284
+ {
285
+ var threadedMessages = action.payload.threadedMessages;
286
+ return __assign(__assign({}, state), {
287
+ hasMorePrev: threadedMessages.length === PREV_THREADS_FETCH_SIZE,
288
+ allThreadMessages: __spreadArray(__spreadArray([], threadedMessages, true), state.allThreadMessages, true)
289
+ });
290
+ }
291
+
292
+ case ThreadContextActionTypes.GET_PREV_MESSAGES_FAILURE:
293
+ {
294
+ return __assign(__assign({}, state), {
295
+ hasMorePrev: false
296
+ });
297
+ }
298
+ // event handlers - message status change
299
+
300
+ case ThreadContextActionTypes.ON_MESSAGE_RECEIVED:
301
+ {
302
+ var _w = action.payload,
303
+ channel = _w.channel,
304
+ message_1 = _w.message;
305
+
306
+ if (((_c = state.currentChannel) === null || _c === void 0 ? void 0 : _c.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.hasMoreNext || ((_d = message_1 === null || message_1 === void 0 ? void 0 : message_1.parentMessage) === null || _d === void 0 ? void 0 : _d.messageId) !== ((_e = state === null || state === void 0 ? void 0 : state.parentMessage) === null || _e === void 0 ? void 0 : _e.messageId)) {
307
+ return state;
308
+ }
309
+
310
+ var isAlreadyReceived = state.allThreadMessages.findIndex(function (m) {
311
+ return m.messageId === message_1.messageId;
312
+ }) > -1;
313
+ return __assign(__assign({}, state), {
314
+ parentMessage: ((_f = state.parentMessage) === null || _f === void 0 ? void 0 : _f.messageId) === (message_1 === null || message_1 === void 0 ? void 0 : message_1.messageId) ? message_1 : state.parentMessage,
315
+ allThreadMessages: isAlreadyReceived ? state.allThreadMessages.map(function (m) {
316
+ return m.messageId === message_1.messageId ? message_1 : m;
317
+ }) : __spreadArray(__spreadArray([], state.allThreadMessages.filter(function (m) {
318
+ return (m === null || m === void 0 ? void 0 : m.reqId) !== (message_1 === null || message_1 === void 0 ? void 0 : message_1.reqId);
319
+ }), true), [message_1], false)
320
+ });
321
+ }
322
+
323
+ case ThreadContextActionTypes.ON_MESSAGE_UPDATED:
324
+ {
325
+ var _x = action.payload,
326
+ channel = _x.channel,
327
+ message_2 = _x.message;
328
+
329
+ if (((_g = state.currentChannel) === null || _g === void 0 ? void 0 : _g.url) !== (channel === null || channel === void 0 ? void 0 : channel.url)) {
330
+ return state;
331
+ }
332
+
333
+ return __assign(__assign({}, state), {
334
+ parentMessage: ((_h = state.parentMessage) === null || _h === void 0 ? void 0 : _h.messageId) === (message_2 === null || message_2 === void 0 ? void 0 : message_2.messageId) ? message_2 : state.parentMessage,
335
+ allThreadMessages: (_j = state.allThreadMessages) === null || _j === void 0 ? void 0 : _j.map(function (msg) {
336
+ return (msg === null || msg === void 0 ? void 0 : msg.messageId) === (message_2 === null || message_2 === void 0 ? void 0 : message_2.messageId) ? message_2 : msg;
337
+ })
338
+ });
339
+ }
340
+
341
+ case ThreadContextActionTypes.ON_MESSAGE_DELETED:
342
+ {
343
+ var _y = action.payload,
344
+ channel = _y.channel,
345
+ messageId_1 = _y.messageId;
346
+
347
+ if (((_k = state.currentChannel) === null || _k === void 0 ? void 0 : _k.url) !== (channel === null || channel === void 0 ? void 0 : channel.url)) {
348
+ return state;
349
+ }
350
+
351
+ if (((_l = state === null || state === void 0 ? void 0 : state.parentMessage) === null || _l === void 0 ? void 0 : _l.messageId) === messageId_1) {
352
+ return __assign(__assign({}, state), {
353
+ parentMessage: null,
354
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.NIL,
355
+ allThreadMessages: []
356
+ });
357
+ }
358
+
359
+ return __assign(__assign({}, state), {
360
+ allThreadMessages: (_m = state.allThreadMessages) === null || _m === void 0 ? void 0 : _m.filter(function (msg) {
361
+ return (msg === null || msg === void 0 ? void 0 : msg.messageId) !== messageId_1;
362
+ })
363
+ });
364
+ }
365
+
366
+ case ThreadContextActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID:
367
+ {
368
+ return __assign(__assign({}, state), {
369
+ allThreadMessages: state.allThreadMessages.filter(function (m) {
370
+ return !compareIds(m.reqId, action.payload);
371
+ })
372
+ });
373
+ }
374
+
375
+ case ThreadContextActionTypes.ON_REACTION_UPDATED:
376
+ {
377
+ var reactionEvent_1 = (_o = action.payload) === null || _o === void 0 ? void 0 : _o.reactionEvent;
378
+
379
+ if (((_p = state === null || state === void 0 ? void 0 : state.parentMessage) === null || _p === void 0 ? void 0 : _p.messageId) === (reactionEvent_1 === null || reactionEvent_1 === void 0 ? void 0 : reactionEvent_1.messageId)) {
380
+ (_r = (_q = state.parentMessage) === null || _q === void 0 ? void 0 : _q.applyReactionEvent) === null || _r === void 0 ? void 0 : _r.call(_q, reactionEvent_1);
381
+ }
382
+
383
+ return __assign(__assign({}, state), {
384
+ allThreadMessages: state.allThreadMessages.map(function (m) {
385
+ var _a;
386
+
387
+ if ((reactionEvent_1 === null || reactionEvent_1 === void 0 ? void 0 : reactionEvent_1.messageId) === (m === null || m === void 0 ? void 0 : m.messageId)) {
388
+ (_a = m === null || m === void 0 ? void 0 : m.applyReactionEvent) === null || _a === void 0 ? void 0 : _a.call(m, reactionEvent_1);
389
+ return m;
390
+ }
391
+
392
+ return m;
393
+ })
394
+ });
395
+ }
396
+ // event handlers - user status change
397
+
398
+ case ThreadContextActionTypes.ON_USER_MUTED:
399
+ {
400
+ var _z = action.payload,
401
+ channel = _z.channel,
402
+ user = _z.user;
403
+
404
+ if (((_s = state.currentChannel) === null || _s === void 0 ? void 0 : _s.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.currentUserId !== (user === null || user === void 0 ? void 0 : user.userId)) {
405
+ return state;
406
+ }
407
+
408
+ return __assign(__assign({}, state), {
409
+ isMuted: true
410
+ });
411
+ }
412
+
413
+ case ThreadContextActionTypes.ON_USER_UNMUTED:
414
+ {
415
+ var _0 = action.payload,
416
+ channel = _0.channel,
417
+ user = _0.user;
418
+
419
+ if (((_t = state.currentChannel) === null || _t === void 0 ? void 0 : _t.url) !== (channel === null || channel === void 0 ? void 0 : channel.url) || state.currentUserId !== (user === null || user === void 0 ? void 0 : user.userId)) {
420
+ return state;
421
+ }
422
+
423
+ return __assign(__assign({}, state), {
424
+ isMuted: false
425
+ });
426
+ }
427
+
428
+ case ThreadContextActionTypes.ON_USER_BANNED:
429
+ {
430
+ return __assign(__assign({}, state), {
431
+ channelStatus: ChannelStateTypes.NIL,
432
+ threadListStatus: ThreadListStateTypes.NIL,
433
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.NIL,
434
+ currentChannel: null,
435
+ parentMessage: null,
436
+ allThreadMessages: [],
437
+ hasMorePrev: false,
438
+ hasMoreNext: false
439
+ });
440
+ }
441
+
442
+ case ThreadContextActionTypes.ON_USER_UNBANNED:
443
+ {
444
+ return __assign({}, state);
445
+ }
446
+
447
+ case ThreadContextActionTypes.ON_USER_LEFT:
448
+ {
449
+ return __assign(__assign({}, state), {
450
+ channelStatus: ChannelStateTypes.NIL,
451
+ threadListStatus: ThreadListStateTypes.NIL,
452
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.NIL,
453
+ currentChannel: null,
454
+ parentMessage: null,
455
+ allThreadMessages: [],
456
+ hasMorePrev: false,
457
+ hasMoreNext: false
458
+ });
459
+ }
460
+ // event handler - channel status change
461
+
462
+ case ThreadContextActionTypes.ON_CHANNEL_FROZEN:
463
+ {
464
+ return __assign(__assign({}, state), {
465
+ isChannelFrozen: true
466
+ });
467
+ }
468
+
469
+ case ThreadContextActionTypes.ON_CHANNEL_UNFROZEN:
470
+ {
471
+ return __assign(__assign({}, state), {
472
+ isChannelFrozen: false
473
+ });
474
+ }
475
+
476
+ case ThreadContextActionTypes.ON_OPERATOR_UPDATED:
477
+ {
478
+ var channel = action.payload.channel;
479
+
480
+ if ((channel === null || channel === void 0 ? void 0 : channel.url) === ((_u = state.currentChannel) === null || _u === void 0 ? void 0 : _u.url)) {
481
+ return __assign(__assign({}, state), {
482
+ currentChannel: channel
483
+ });
484
+ }
485
+
486
+ return state;
487
+ }
488
+ // message
489
+
490
+ case ThreadContextActionTypes.SEND_MESSAGE_START:
491
+ {
492
+ var message = action.payload.message;
493
+ return __assign(__assign({}, state), {
494
+ allThreadMessages: __spreadArray(__spreadArray([], state.allThreadMessages, true), [message], false)
495
+ });
496
+ }
497
+
498
+ case ThreadContextActionTypes.SEND_MESSAGE_SUCESS:
499
+ {
500
+ var message_3 = action.payload.message;
501
+ var filteredThreadMessages = state.allThreadMessages.filter(function (m) {
502
+ return !compareIds(m === null || m === void 0 ? void 0 : m.reqId, message_3 === null || message_3 === void 0 ? void 0 : message_3.reqId);
503
+ });
504
+ return __assign(__assign({}, state), {
505
+ allThreadMessages: __spreadArray(__spreadArray([], filteredThreadMessages, true), [message_3], false)
506
+ });
507
+ }
508
+
509
+ case ThreadContextActionTypes.SEND_MESSAGE_FAILURE:
510
+ {
511
+ var message_4 = action.payload.message;
512
+ return __assign(__assign({}, state), {
513
+ allThreadMessages: state.allThreadMessages.map(function (m) {
514
+ return compareIds(m === null || m === void 0 ? void 0 : m.reqId, message_4 === null || message_4 === void 0 ? void 0 : message_4.reqId) ? message_4 : m;
515
+ })
516
+ });
517
+ }
518
+
519
+ case ThreadContextActionTypes.RESEND_MESSAGE_START:
520
+ {
521
+ return __assign({}, state);
522
+ }
523
+
524
+ default:
525
+ {
526
+ return state;
527
+ }
528
+ }
529
+ }
530
+
531
+ var initialState = {
532
+ currentChannel: null,
533
+ allThreadMessages: [],
534
+ parentMessage: null,
535
+ channelStatus: ChannelStateTypes.NIL,
536
+ parentMessageInfoStatus: ParentMessageInfoStateTypes.NIL,
537
+ threadListStatus: ThreadListStateTypes.NIL,
538
+ hasMorePrev: false,
539
+ hasMoreNext: false,
540
+ emojiContainer: {},
541
+ isMuted: false,
542
+ isChannelFrozen: false,
543
+ currentUserId: ''
544
+ };
545
+
546
+ function useGetChannel(_a, _b) {
547
+ var channelUrl = _a.channelUrl,
548
+ sdkInit = _a.sdkInit,
549
+ message = _a.message;
550
+ var sdk = _b.sdk,
551
+ logger = _b.logger,
552
+ threadDispatcher = _b.threadDispatcher;
553
+ useEffect(function () {
554
+ var _a, _b; // validation check
555
+
556
+
557
+ if (sdkInit && channelUrl && (sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel)) {
558
+ threadDispatcher({
559
+ type: ThreadContextActionTypes.GET_CHANNEL_START,
560
+ payload: null
561
+ });
562
+ (_b = (_a = sdk.groupChannel).getChannel) === null || _b === void 0 ? void 0 : _b.call(_a, channelUrl).then(function (groupChannel) {
563
+ logger.info('Thread | useInitialize: Get channel succeeded', groupChannel);
564
+ threadDispatcher({
565
+ type: ThreadContextActionTypes.GET_CHANNEL_SUCCESS,
566
+ payload: {
567
+ groupChannel: groupChannel
568
+ }
569
+ });
570
+ }).catch(function (error) {
571
+ logger.info('Thread | useInitialize: Get channel failed', error);
572
+ threadDispatcher({
573
+ type: ThreadContextActionTypes.GET_CHANNEL_FAILURE,
574
+ payload: error
575
+ });
576
+ });
577
+ }
578
+ }, [message, sdkInit]);
579
+ /**
580
+ * We don't use channelUrl here,
581
+ * because Thread must operate independently of the channel.
582
+ */
583
+ }
584
+
585
+ function useGetAllEmoji(_a, _b) {
586
+ var sdk = _a.sdk;
587
+ var logger = _b.logger,
588
+ threadDispatcher = _b.threadDispatcher;
589
+ useEffect(function () {
590
+ if (sdk === null || sdk === void 0 ? void 0 : sdk.getAllEmoji) {
591
+ // validation check
592
+ sdk === null || sdk === void 0 ? void 0 : sdk.getAllEmoji().then(function (emojiContainer) {
593
+ logger.info('Thread | useGetAllEmoji: Getting emojis succeeded.', emojiContainer);
594
+ threadDispatcher({
595
+ type: ThreadContextActionTypes.SET_EMOJI_CONTAINER,
596
+ payload: {
597
+ emojiContainer: emojiContainer
598
+ }
599
+ });
600
+ }).catch(function (error) {
601
+ logger.info('Thread | useGetAllEmoji: Getting emojis failed.', error);
602
+ });
603
+ }
604
+ }, [sdk]);
605
+ }
606
+
607
+ function useGetThreadList(_a, _b) {
608
+ var sdkInit = _a.sdkInit,
609
+ parentMessage = _a.parentMessage,
610
+ anchorMessage = _a.anchorMessage,
611
+ isReactionEnabled = _a.isReactionEnabled;
612
+ var logger = _b.logger,
613
+ threadDispatcher = _b.threadDispatcher;
614
+ useEffect(function () {
615
+ var _a; // validation check
616
+
617
+
618
+ if (sdkInit && (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.getThreadedMessagesByTimestamp)) {
619
+ threadDispatcher({
620
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_START,
621
+ payload: null
622
+ });
623
+ var timeStamp = (anchorMessage === null || anchorMessage === void 0 ? void 0 : anchorMessage.createdAt) || 0;
624
+ var params = {
625
+ prevResultSize: PREV_THREADS_FETCH_SIZE,
626
+ nextResultSize: NEXT_THREADS_FETCH_SIZE,
627
+ includeReactions: isReactionEnabled
628
+ };
629
+ logger.info('Thread | useGetThreadList: Initialize thread list start.', {
630
+ timeStamp: timeStamp,
631
+ params: params
632
+ });
633
+ (_a = parentMessage.getThreadedMessagesByTimestamp) === null || _a === void 0 ? void 0 : _a.call(parentMessage, timeStamp, params).then(function (_a) {
634
+ var parentMessage = _a.parentMessage,
635
+ threadedMessages = _a.threadedMessages;
636
+ logger.info('Thread | useGetThreadList: Initialize thread list succeeded.', {
637
+ parentMessage: parentMessage,
638
+ threadedMessages: threadedMessages
639
+ });
640
+ threadDispatcher({
641
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_SUCCESS,
642
+ payload: {
643
+ parentMessage: parentMessage,
644
+ anchorMessage: anchorMessage,
645
+ threadedMessages: threadedMessages
646
+ }
647
+ });
648
+ }).catch(function (error) {
649
+ logger.info('Therad | useGetThreadList: Initialize thread list failed.', error);
650
+ threadDispatcher({
651
+ type: ThreadContextActionTypes.INITIALIZE_THREAD_LIST_FAILURE,
652
+ payload: error
653
+ });
654
+ });
655
+ }
656
+ }, [sdkInit, parentMessage, anchorMessage]);
657
+ }
658
+
659
+ function useGetParentMessage(_a, _b) {
660
+ var _this = this;
661
+
662
+ var channelUrl = _a.channelUrl,
663
+ parentMessageId = _a.parentMessageId,
664
+ sdkInit = _a.sdkInit,
665
+ parentMessage = _a.parentMessage;
666
+ var sdk = _b.sdk,
667
+ logger = _b.logger,
668
+ threadDispatcher = _b.threadDispatcher;
669
+ useEffect(function () {
670
+ var _a; // validation check
671
+
672
+
673
+ if (sdkInit && ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.message) === null || _a === void 0 ? void 0 : _a.getMessage)) {
674
+ threadDispatcher({
675
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_START,
676
+ payload: null
677
+ });
678
+ var params_1 = {
679
+ channelUrl: channelUrl,
680
+ channelType: ChannelType.GROUP,
681
+ messageId: parentMessageId,
682
+ includeMetaArray: true,
683
+ includeReactions: true,
684
+ includeThreadInfo: true,
685
+ includePollDetails: true,
686
+ includeParentMessageInfo: true
687
+ };
688
+ logger.info('Thread | useGetParentMessage: Get parent message start.', params_1);
689
+
690
+ var fetchParentMessage = function () {
691
+ return __awaiter(_this, void 0, void 0, function () {
692
+ var data;
693
+
694
+ var _a, _b;
695
+
696
+ return __generator(this, function (_c) {
697
+ switch (_c.label) {
698
+ case 0:
699
+ return [4
700
+ /*yield*/
701
+ , (_b = (_a = sdk.message).getMessage) === null || _b === void 0 ? void 0 : _b.call(_a, params_1)];
702
+
703
+ case 1:
704
+ data = _c.sent();
705
+ return [2
706
+ /*return*/
707
+ , data];
708
+ }
709
+ });
710
+ });
711
+ };
712
+
713
+ fetchParentMessage().then(function (parentMsg) {
714
+ logger.info('Thread | useGetParentMessage: Get parent message succeeded.', parentMessage);
715
+ parentMsg.ogMetaData = parentMessage.ogMetaData; // ogMetaData is not included for now
716
+
717
+ threadDispatcher({
718
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_SUCCESS,
719
+ payload: {
720
+ parentMessage: parentMsg
721
+ }
722
+ });
723
+ }).catch(function (error) {
724
+ logger.info('Thread | useGetParentMessage: Get parent message failed.', error);
725
+ threadDispatcher({
726
+ type: ThreadContextActionTypes.GET_PARENT_MESSAGE_FAILURE,
727
+ payload: error
728
+ });
729
+ });
730
+ }
731
+ }, [sdkInit, parentMessageId]);
732
+ /**
733
+ * We don't use channelUrl here,
734
+ * because Thread must operate independently of the channel.
735
+ */
736
+ }
737
+
738
+ function useHandlePubsubEvents(_a, _b) {
739
+ var sdkInit = _a.sdkInit,
740
+ currentChannel = _a.currentChannel,
741
+ parentMessage = _a.parentMessage;
742
+ var pubSub = _b.pubSub,
743
+ threadDispatcher = _b.threadDispatcher;
744
+ useEffect(function () {
745
+ var pubSubHandler = function () {
746
+ var subscriber = new Map();
747
+
748
+ if (!pubSub || !pubSub.subscribe) {
749
+ return subscriber;
750
+ }
751
+
752
+ subscriber.set(SEND_USER_MESSAGE, pubSub.subscribe(SEND_USER_MESSAGE, function (props) {
753
+ var channel = props.channel,
754
+ message = props.message;
755
+
756
+ 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)) {
757
+ threadDispatcher({
758
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
759
+ payload: {
760
+ message: message
761
+ }
762
+ });
763
+ }
764
+
765
+ scrollIntoLast === null || scrollIntoLast === void 0 ? void 0 : scrollIntoLast();
766
+ }));
767
+ subscriber.set(SEND_FILE_MESSAGE, pubSub.subscribe(SEND_FILE_MESSAGE, function (props) {
768
+ var channel = props.channel,
769
+ message = props.message;
770
+
771
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
772
+ threadDispatcher({
773
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
774
+ payload: {
775
+ message: message
776
+ }
777
+ });
778
+ }
779
+
780
+ scrollIntoLast === null || scrollIntoLast === void 0 ? void 0 : scrollIntoLast();
781
+ }));
782
+ subscriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
783
+ var channel = msg.channel,
784
+ message = msg.message;
785
+
786
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
787
+ threadDispatcher({
788
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
789
+ payload: {
790
+ channel: channel,
791
+ message: message
792
+ }
793
+ });
794
+ }
795
+ }));
796
+ subscriber.set(DELETE_MESSAGE, pubSub.subscribe(DELETE_MESSAGE, function (msg) {
797
+ var channel = msg.channel,
798
+ messageId = msg.messageId;
799
+
800
+ if ((currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.url) === (channel === null || channel === void 0 ? void 0 : channel.url)) {
801
+ threadDispatcher({
802
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
803
+ payload: {
804
+ messageId: messageId
805
+ }
806
+ });
807
+ }
808
+ }));
809
+ };
810
+
811
+ var subscriber = pubSubHandler();
812
+ return function () {
813
+ subscriber === null || subscriber === void 0 ? void 0 : subscriber.forEach(function (s) {
814
+ try {
815
+ s === null || s === void 0 ? void 0 : s.remove();
816
+ } catch (_a) {//
817
+ }
818
+ });
819
+ };
820
+ }, [sdkInit, currentChannel]);
821
+ }
822
+
823
+ function useHandleChannelEvents(_a, _b) {
824
+ var sdk = _a.sdk,
825
+ currentChannel = _a.currentChannel;
826
+ var logger = _b.logger,
827
+ threadDispatcher = _b.threadDispatcher;
828
+ useEffect(function () {
829
+ var _a, _b, _c;
830
+
831
+ var handlerId = uuidv4(); // validation check
832
+
833
+ if (((_a = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.addGroupChannelHandler) && currentChannel) {
834
+ var channelHandlerParams = {
835
+ // message status change
836
+ onMessageReceived: function (channel, message) {
837
+ logger.info('Thread | useHandleChannelEvents: onMessageReceived', {
838
+ channel: channel,
839
+ message: message
840
+ });
841
+ threadDispatcher({
842
+ type: ThreadContextActionTypes.ON_MESSAGE_RECEIVED,
843
+ payload: {
844
+ channel: channel,
845
+ message: message
846
+ }
847
+ });
848
+ },
849
+ onMessageUpdated: function (channel, message) {
850
+ logger.info('Thread | useHandleChannelEvents: onMessageUpdated', {
851
+ channel: channel,
852
+ message: message
853
+ });
854
+ threadDispatcher({
855
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
856
+ payload: {
857
+ channel: channel,
858
+ message: message
859
+ }
860
+ });
861
+ },
862
+ onMessageDeleted: function (channel, messageId) {
863
+ logger.info('Thread | useHandleChannelEvents: onMessageDeleted', {
864
+ channel: channel,
865
+ messageId: messageId
866
+ });
867
+ threadDispatcher({
868
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
869
+ payload: {
870
+ channel: channel,
871
+ messageId: messageId
872
+ }
873
+ });
874
+ },
875
+ onReactionUpdated: function (channel, reactionEvent) {
876
+ logger.info('Thread | useHandleChannelEvents: onReactionUpdated', {
877
+ channel: channel,
878
+ reactionEvent: reactionEvent
879
+ });
880
+ threadDispatcher({
881
+ type: ThreadContextActionTypes.ON_REACTION_UPDATED,
882
+ payload: {
883
+ channel: channel,
884
+ reactionEvent: reactionEvent
885
+ }
886
+ });
887
+ },
888
+ // user status change
889
+ onUserMuted: function (channel, user) {
890
+ logger.info('Thread | useHandleChannelEvents: onUserMuted', {
891
+ channel: channel,
892
+ user: user
893
+ });
894
+ threadDispatcher({
895
+ type: ThreadContextActionTypes.ON_USER_MUTED,
896
+ payload: {
897
+ channel: channel,
898
+ user: user
899
+ }
900
+ });
901
+ },
902
+ onUserUnmuted: function (channel, user) {
903
+ logger.info('Thread | useHandleChannelEvents: onUserUnmuted', {
904
+ channel: channel,
905
+ user: user
906
+ });
907
+ threadDispatcher({
908
+ type: ThreadContextActionTypes.ON_USER_UNMUTED,
909
+ payload: {
910
+ channel: channel,
911
+ user: user
912
+ }
913
+ });
914
+ },
915
+ onUserBanned: function (channel, user) {
916
+ logger.info('Thread | useHandleChannelEvents: onUserBanned', {
917
+ channel: channel,
918
+ user: user
919
+ });
920
+ threadDispatcher({
921
+ type: ThreadContextActionTypes.ON_USER_BANNED,
922
+ payload: {
923
+ channel: channel,
924
+ user: user
925
+ }
926
+ });
927
+ },
928
+ onUserUnbanned: function (channel, user) {
929
+ logger.info('Thread | useHandleChannelEvents: onUserUnbanned', {
930
+ channel: channel,
931
+ user: user
932
+ });
933
+ threadDispatcher({
934
+ type: ThreadContextActionTypes.ON_USER_UNBANNED,
935
+ payload: {
936
+ channel: channel,
937
+ user: user
938
+ }
939
+ });
940
+ },
941
+ onUserLeft: function (channel, user) {
942
+ logger.info('Thread | useHandleChannelEvents: onUserLeft', {
943
+ channel: channel,
944
+ user: user
945
+ });
946
+ threadDispatcher({
947
+ type: ThreadContextActionTypes.ON_USER_LEFT,
948
+ payload: {
949
+ channel: channel,
950
+ user: user
951
+ }
952
+ });
953
+ },
954
+ // channel status change
955
+ onChannelFrozen: function (channel) {
956
+ logger.info('Thread | useHandleChannelEvents: onChannelFrozen', {
957
+ channel: channel
958
+ });
959
+ threadDispatcher({
960
+ type: ThreadContextActionTypes.ON_CHANNEL_FROZEN,
961
+ payload: {
962
+ channel: channel
963
+ }
964
+ });
965
+ },
966
+ onChannelUnfrozen: function (channel) {
967
+ logger.info('Thread | useHandleChannelEvents: onChannelUnfrozen', {
968
+ channel: channel
969
+ });
970
+ threadDispatcher({
971
+ type: ThreadContextActionTypes.ON_CHANNEL_UNFROZEN,
972
+ payload: {
973
+ channel: channel
974
+ }
975
+ });
976
+ },
977
+ onOperatorUpdated: function (channel, users) {
978
+ logger.info('Thread | useHandleChannelEvents: onOperatorUpdated', {
979
+ channel: channel,
980
+ users: users
981
+ });
982
+ threadDispatcher({
983
+ type: ThreadContextActionTypes.ON_OPERATOR_UPDATED,
984
+ payload: {
985
+ channel: channel,
986
+ users: users
987
+ }
988
+ });
989
+ }
990
+ };
991
+ var channelHandler = new GroupChannelHandler(channelHandlerParams);
992
+ (_c = (_b = sdk.groupChannel).addGroupChannelHandler) === null || _c === void 0 ? void 0 : _c.call(_b, handlerId, channelHandler);
993
+ logger.info('Thread | useHandleChannelEvents: Added channelHandler in Thread', {
994
+ handlerId: handlerId,
995
+ channelHandler: channelHandler
996
+ });
997
+ }
998
+
999
+ return function () {
1000
+ var _a, _b, _c; // validation check
1001
+
1002
+
1003
+ if (handlerId && ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.removeGroupChannelHandler)) {
1004
+ (_c = (_b = sdk.groupChannel).removeGroupChannelHandler) === null || _c === void 0 ? void 0 : _c.call(_b, handlerId);
1005
+ logger.info('Thread | useHandleChannelEvents: Removed channelHandler in Thread.', handlerId);
1006
+ }
1007
+ };
1008
+ }, [sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel, currentChannel]);
1009
+ }
1010
+
1011
+ function useSendFileMessageCallback(_a, _b) {
1012
+ var currentChannel = _a.currentChannel;
1013
+ var logger = _b.logger,
1014
+ pubSub = _b.pubSub,
1015
+ threadDispatcher = _b.threadDispatcher;
1016
+ var sendMessage = useCallback(function (file, quoteMessage) {
1017
+ var createParamsDefault = function () {
1018
+ var params = {};
1019
+ params.file = file;
1020
+
1021
+ if (quoteMessage) {
1022
+ params.isReplyToChannel = true;
1023
+ params.parentMessageId = quoteMessage.messageId;
1024
+ }
1025
+
1026
+ return params;
1027
+ };
1028
+
1029
+ var params = createParamsDefault();
1030
+ logger.info('Thread | useSendFileMessageCallback: Sending file message start.', params);
1031
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendFileMessage(params).onPending(function (pendingMessage) {
1032
+ threadDispatcher({
1033
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
1034
+ payload: {
1035
+ /* pubSub is used instead of messagesDispatcher
1036
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
1037
+ message: __assign(__assign({}, pendingMessage), {
1038
+ url: URL.createObjectURL(file),
1039
+ // pending thumbnail message seems to be failed
1040
+ requestState: 'pending'
1041
+ })
1042
+ }
1043
+ });
1044
+ setTimeout(function () {
1045
+ return scrollIntoLast();
1046
+ }, 1000);
1047
+ }).onFailed(function (error, message) {
1048
+ message.localUrl = URL.createObjectURL(file);
1049
+ message.file = file;
1050
+ logger.info('Thread | useSendFileMessageCallback: Sending file message failed.', {
1051
+ message: message,
1052
+ error: error
1053
+ });
1054
+ threadDispatcher({
1055
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1056
+ payload: {
1057
+ message: message,
1058
+ error: error
1059
+ }
1060
+ });
1061
+ }).onSucceeded(function (message) {
1062
+ logger.info('Thread | useSendFileMessageCallback: Sending file message succeeded.', message);
1063
+ pubSub.publish(SEND_FILE_MESSAGE, {
1064
+ channel: currentChannel,
1065
+ message: message
1066
+ });
1067
+ });
1068
+ }, [currentChannel]);
1069
+ return sendMessage;
1070
+ }
1071
+
1072
+ function useUpdateMessageCallback(_a, _b) {
1073
+ var currentChannel = _a.currentChannel,
1074
+ isMentionEnabled = _a.isMentionEnabled;
1075
+ var logger = _b.logger,
1076
+ pubSub = _b.pubSub,
1077
+ threadDispatcher = _b.threadDispatcher;
1078
+ return useCallback(function (props) {
1079
+ var _a;
1080
+
1081
+ var messageId = props.messageId,
1082
+ message = props.message,
1083
+ mentionedUsers = props.mentionedUsers,
1084
+ mentionTemplate = props.mentionTemplate;
1085
+
1086
+ var createParamsDefault = function () {
1087
+ var params = {};
1088
+ params.message = message;
1089
+
1090
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1091
+ params.mentionedUsers = mentionedUsers;
1092
+ }
1093
+
1094
+ if (isMentionEnabled && mentionTemplate) {
1095
+ params.mentionedMessageTemplate = mentionTemplate;
1096
+ } else {
1097
+ params.mentionedMessageTemplate = message;
1098
+ }
1099
+
1100
+ return params;
1101
+ };
1102
+
1103
+ var params = createParamsDefault();
1104
+ logger.info('Thread | useUpdateMessageCallback: Message update start.', params);
1105
+ (_a = currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.updateUserMessage) === null || _a === void 0 ? void 0 : _a.call(currentChannel, messageId, params).then(function (message) {
1106
+ logger.info('Thread | useUpdateMessageCallback: Message update succeeded.', message);
1107
+ threadDispatcher({
1108
+ type: ThreadContextActionTypes.ON_MESSAGE_UPDATED,
1109
+ payload: {
1110
+ channel: currentChannel,
1111
+ message: message
1112
+ }
1113
+ });
1114
+ pubSub.publish(UPDATE_USER_MESSAGE, {
1115
+ fromSelector: true,
1116
+ channel: currentChannel,
1117
+ message: message
1118
+ });
1119
+ });
1120
+ }, [currentChannel, isMentionEnabled]);
1121
+ }
1122
+
1123
+ function useDeleteMessageCallback(_a, _b) {
1124
+ var currentChannel = _a.currentChannel,
1125
+ threadDispatcher = _a.threadDispatcher;
1126
+ var logger = _b.logger;
1127
+ return useCallback(function (message) {
1128
+ logger.info('Thread | useDeleteMessageCallback: Deleting message.', message);
1129
+ var sendingStatus = message.sendingStatus;
1130
+ return new Promise(function (resolve, reject) {
1131
+ var _a;
1132
+
1133
+ logger.info('Thread | useDeleteMessageCallback: Deleting message requestState:', sendingStatus); // Message is only on local
1134
+
1135
+ if (sendingStatus === 'failed' || sendingStatus === 'pending') {
1136
+ logger.info('Thread | useDeleteMessageCallback: Deleted message from local:', message);
1137
+ threadDispatcher({
1138
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,
1139
+ payload: message.reqId
1140
+ });
1141
+ resolve(message);
1142
+ }
1143
+
1144
+ logger.info('Thread | useDeleteMessageCallback: Deleting message from remote:', sendingStatus);
1145
+ (_a = currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.deleteMessage) === null || _a === void 0 ? void 0 : _a.call(currentChannel, message).then(function () {
1146
+ logger.info('Thread | useDeleteMessageCallback: Deleting message success!', message);
1147
+ threadDispatcher({
1148
+ type: ThreadContextActionTypes.ON_MESSAGE_DELETED,
1149
+ payload: {
1150
+ message: message,
1151
+ channel: currentChannel
1152
+ }
1153
+ });
1154
+ resolve(message);
1155
+ }).catch(function (err) {
1156
+ logger.warning('Thread | useDeleteMessageCallback: Deleting message failed!', err);
1157
+ reject(err);
1158
+ });
1159
+ });
1160
+ }, [currentChannel]);
1161
+ }
1162
+
1163
+ function useGetPrevThreadsCallback(_a, _b) {
1164
+ var hasMorePrev = _a.hasMorePrev,
1165
+ parentMessage = _a.parentMessage,
1166
+ threadListStatus = _a.threadListStatus,
1167
+ oldestMessageTimeStamp = _a.oldestMessageTimeStamp,
1168
+ isReactionEnabled = _a.isReactionEnabled;
1169
+ var logger = _b.logger,
1170
+ threadDispatcher = _b.threadDispatcher;
1171
+ return useCallback(function (callback) {
1172
+ var _a; // validation check
1173
+
1174
+
1175
+ if (threadListStatus === ThreadListStateTypes.INITIALIZED && (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.getThreadedMessagesByTimestamp) && oldestMessageTimeStamp !== 0) {
1176
+ threadDispatcher({
1177
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_START,
1178
+ payload: null
1179
+ });
1180
+ (_a = parentMessage.getThreadedMessagesByTimestamp) === null || _a === void 0 ? void 0 : _a.call(parentMessage, oldestMessageTimeStamp, {
1181
+ prevResultSize: PREV_THREADS_FETCH_SIZE,
1182
+ nextResultSize: 0,
1183
+ includeReactions: isReactionEnabled
1184
+ }).then(function (_a) {
1185
+ var parentMessage = _a.parentMessage,
1186
+ threadedMessages = _a.threadedMessages;
1187
+ logger.info('Thread | useGetPrevThreadsCallback: Fetch prev threads succeeded.', {
1188
+ parentMessage: parentMessage,
1189
+ threadedMessages: threadedMessages
1190
+ });
1191
+ threadDispatcher({
1192
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_SUCESS,
1193
+ payload: {
1194
+ parentMessage: parentMessage,
1195
+ threadedMessages: threadedMessages
1196
+ }
1197
+ });
1198
+ callback(threadedMessages);
1199
+ }).catch(function (error) {
1200
+ logger.info('Thread | useGetPrevThreadsCallback: Fetch prev threads failed.', error);
1201
+ threadDispatcher({
1202
+ type: ThreadContextActionTypes.GET_PREV_MESSAGES_FAILURE,
1203
+ payload: error
1204
+ });
1205
+ });
1206
+ }
1207
+ }, [hasMorePrev, parentMessage, threadListStatus, oldestMessageTimeStamp]);
1208
+ }
1209
+
1210
+ function useGetNextThreadsCallback(_a, _b) {
1211
+ var hasMoreNext = _a.hasMoreNext,
1212
+ parentMessage = _a.parentMessage,
1213
+ threadListStatus = _a.threadListStatus,
1214
+ latestMessageTimeStamp = _a.latestMessageTimeStamp,
1215
+ isReactionEnabled = _a.isReactionEnabled;
1216
+ var logger = _b.logger,
1217
+ threadDispatcher = _b.threadDispatcher;
1218
+ return useCallback(function (callback) {
1219
+ var _a; // validation check
1220
+
1221
+
1222
+ if (threadListStatus === ThreadListStateTypes.INITIALIZED && (parentMessage === null || parentMessage === void 0 ? void 0 : parentMessage.getThreadedMessagesByTimestamp) && latestMessageTimeStamp !== 0) {
1223
+ threadDispatcher({
1224
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_START,
1225
+ payload: null
1226
+ });
1227
+ (_a = parentMessage.getThreadedMessagesByTimestamp) === null || _a === void 0 ? void 0 : _a.call(parentMessage, latestMessageTimeStamp, {
1228
+ prevResultSize: 0,
1229
+ nextResultSize: NEXT_THREADS_FETCH_SIZE,
1230
+ includeReactions: isReactionEnabled
1231
+ }).then(function (_a) {
1232
+ var parentMessage = _a.parentMessage,
1233
+ threadedMessages = _a.threadedMessages;
1234
+ logger.info('Thread | useGetNextThreadsCallback: Fetch next threads succeeded.', {
1235
+ parentMessage: parentMessage,
1236
+ threadedMessages: threadedMessages
1237
+ });
1238
+ threadDispatcher({
1239
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_SUCESS,
1240
+ payload: {
1241
+ parentMessage: parentMessage,
1242
+ threadedMessages: threadedMessages
1243
+ }
1244
+ });
1245
+ callback(threadedMessages);
1246
+ }).catch(function (error) {
1247
+ logger.info('Thread | useGetNextThreadsCallback: Fetch next threads failed.', error);
1248
+ threadDispatcher({
1249
+ type: ThreadContextActionTypes.GET_NEXT_MESSAGES_FAILURE,
1250
+ payload: error
1251
+ });
1252
+ });
1253
+ }
1254
+ }, [hasMoreNext, parentMessage, threadListStatus, latestMessageTimeStamp]);
1255
+ }
1256
+
1257
+ function useToggleReactionCallback(_a, _b) {
1258
+ var currentChannel = _a.currentChannel;
1259
+ var logger = _b.logger;
1260
+ return useCallback(function (message, key, isReacted) {
1261
+ var _a, _b;
1262
+
1263
+ if (isReacted) {
1264
+ (_a = currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.deleteReaction) === null || _a === void 0 ? void 0 : _a.call(currentChannel, message, key).then(function (res) {
1265
+ logger.info('Thread | useToggleReactionsCallback: Delete reaction succeeded.', res);
1266
+ }).catch(function (err) {
1267
+ logger.warning('Thread | useToggleReactionsCallback: Delete reaction failed.', err);
1268
+ });
1269
+ return;
1270
+ }
1271
+
1272
+ (_b = currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.addReaction) === null || _b === void 0 ? void 0 : _b.call(currentChannel, message, key).then(function (res) {
1273
+ logger.info('Thread | useToggleReactionsCallback: Add reaction succeeded.', res);
1274
+ }).catch(function (err) {
1275
+ logger.warning('Thread | useToggleReactionsCallback: Add reaction failed.', err);
1276
+ });
1277
+ }, [currentChannel]);
1278
+ }
1279
+
1280
+ function useSendUserMessageCallback(_a, _b) {
1281
+ var isMentionEnabled = _a.isMentionEnabled,
1282
+ currentChannel = _a.currentChannel;
1283
+ var logger = _b.logger,
1284
+ pubSub = _b.pubSub,
1285
+ threadDispatcher = _b.threadDispatcher;
1286
+ var sendMessage = useCallback(function (props) {
1287
+ var message = props.message,
1288
+ _a = props.quoteMessage,
1289
+ quoteMessage = _a === void 0 ? null : _a,
1290
+ mentionTemplate = props.mentionTemplate,
1291
+ mentionedUsers = props.mentionedUsers;
1292
+
1293
+ var createDefaultParams = function () {
1294
+ var params = {};
1295
+ params.message = (message === null || message === void 0 ? void 0 : message.trim()) || message;
1296
+
1297
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1298
+ params.mentionedUsers = mentionedUsers;
1299
+ }
1300
+
1301
+ if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1302
+ params.mentionedMessageTemplate = (mentionTemplate === null || mentionTemplate === void 0 ? void 0 : mentionTemplate.trim()) || mentionTemplate;
1303
+ }
1304
+
1305
+ if (quoteMessage) {
1306
+ params.isReplyToChannel = true;
1307
+ params.parentMessageId = quoteMessage.messageId;
1308
+ }
1309
+
1310
+ return params;
1311
+ };
1312
+
1313
+ var params = createDefaultParams();
1314
+ logger.info('Thread | useSendUserMessageCallback: Sending user message start.', params);
1315
+
1316
+ if (currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendUserMessage) {
1317
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.sendUserMessage(params).onPending(function (pendingMessage) {
1318
+ threadDispatcher({
1319
+ type: ThreadContextActionTypes.SEND_MESSAGE_START,
1320
+ payload: {
1321
+ message: pendingMessage
1322
+ }
1323
+ });
1324
+ }).onFailed(function (error, message) {
1325
+ logger.info('Thread | useSendUserMessageCallback: Sending user message failed.', {
1326
+ message: message,
1327
+ error: error
1328
+ });
1329
+ threadDispatcher({
1330
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1331
+ payload: {
1332
+ error: error,
1333
+ message: message
1334
+ }
1335
+ });
1336
+ }).onSucceeded(function (message) {
1337
+ logger.info('Thread | useSendUserMessageCallback: Sending user message succeeded.', message);
1338
+ threadDispatcher({
1339
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1340
+ payload: {
1341
+ message: message
1342
+ }
1343
+ }); // because Thread doesn't subscribe SEND_USER_MESSAGE
1344
+
1345
+ pubSub.publish(SEND_USER_MESSAGE, {
1346
+ channel: currentChannel,
1347
+ message: message
1348
+ });
1349
+ });
1350
+ }
1351
+ }, [isMentionEnabled, currentChannel]);
1352
+ return sendMessage;
1353
+ }
1354
+
1355
+ function useResendMessageCallback(_a, _b) {
1356
+ var currentChannel = _a.currentChannel;
1357
+ var logger = _b.logger,
1358
+ pubSub = _b.pubSub,
1359
+ threadDispatcher = _b.threadDispatcher;
1360
+ return useCallback(function (failedMessage) {
1361
+ var _a, _b, _c;
1362
+
1363
+ if (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.isResendable) {
1364
+ failedMessage.sendingStatus = SendingStatus.PENDING;
1365
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage start.', failedMessage);
1366
+ threadDispatcher({
1367
+ type: ThreadContextActionTypes.RESEND_MESSAGE_START,
1368
+ payload: failedMessage
1369
+ });
1370
+
1371
+ if (((_a = failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.isUserMessage) === null || _a === void 0 ? void 0 : _a.call(failedMessage)) || (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.messageType) === MessageType.USER) {
1372
+ currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.resendUserMessage(failedMessage).then(function (message) {
1373
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage succeeded.', message);
1374
+ threadDispatcher({
1375
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1376
+ payload: {
1377
+ message: message
1378
+ }
1379
+ });
1380
+ pubSub.publish(SEND_USER_MESSAGE, {
1381
+ channel: currentChannel,
1382
+ message: message
1383
+ });
1384
+ }).catch(function (error) {
1385
+ logger.warning('Thread | useResendMessageCallback: Resending failedMessage failed.', error);
1386
+ failedMessage.sendingStatus = SendingStatus.FAILED;
1387
+ threadDispatcher({
1388
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1389
+ payload: {
1390
+ message: failedMessage
1391
+ }
1392
+ });
1393
+ });
1394
+ } else if (((_b = failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.isFileMessage) === null || _b === void 0 ? void 0 : _b.call(failedMessage)) || (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.messageType) === MessageType.FILE) {
1395
+ (_c = currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.resendFileMessage) === null || _c === void 0 ? void 0 : _c.call(currentChannel, failedMessage).then(function (message) {
1396
+ logger.info('Thread | useResendMessageCallback: Resending failedMessage succeeded.', message);
1397
+ threadDispatcher({
1398
+ type: ThreadContextActionTypes.SEND_MESSAGE_SUCESS,
1399
+ payload: {
1400
+ message: message
1401
+ }
1402
+ });
1403
+ }).catch(function (error) {
1404
+ logger.warning('Thread | useResendMessageCallback: Resending failedMessage failed.', error);
1405
+ failedMessage.sendingStatus = SendingStatus.FAILED;
1406
+ threadDispatcher({
1407
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1408
+ payload: {
1409
+ message: failedMessage
1410
+ }
1411
+ });
1412
+ pubSub.publish(SEND_FILE_MESSAGE, {
1413
+ channel: currentChannel,
1414
+ message: failedMessage
1415
+ });
1416
+ });
1417
+ } else {
1418
+ logger.warning('Thread | useResendMessageCallback: Message is not resendable.', failedMessage);
1419
+ failedMessage.sendingStatus = SendingStatus.FAILED;
1420
+ threadDispatcher({
1421
+ type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
1422
+ payload: {
1423
+ message: failedMessage
1424
+ }
1425
+ });
1426
+ }
1427
+ }
1428
+ }, [currentChannel]);
1429
+ }
1430
+
1431
+ var ThreadContext = /*#__PURE__*/React__default.createContext(null);
1432
+ var ThreadProvider = function (props) {
1433
+ var _a, _b;
1434
+
1435
+ var children = props.children,
1436
+ channelUrl = props.channelUrl,
1437
+ message = props.message,
1438
+ onHeaderActionClick = props.onHeaderActionClick,
1439
+ onMoveToParentMessage = props.onMoveToParentMessage,
1440
+ // User Profile
1441
+ disableUserProfile = props.disableUserProfile,
1442
+ renderUserProfile = props.renderUserProfile,
1443
+ onUserProfileMessage = props.onUserProfileMessage; // Context from SendbirdProvider
1444
+
1445
+ var globalStore = useSendbirdStateContext();
1446
+ var stores = globalStore.stores,
1447
+ config = globalStore.config; // // stores
1448
+
1449
+ var sdkStore = stores.sdkStore,
1450
+ userStore = stores.userStore;
1451
+ var sdk = sdkStore.sdk;
1452
+ var user = userStore.user;
1453
+ var sdkInit = sdkStore === null || sdkStore === void 0 ? void 0 : sdkStore.initialized; // // config
1454
+
1455
+ var logger = config.logger,
1456
+ pubSub = config.pubSub,
1457
+ replyType = config.replyType,
1458
+ isMentionEnabled = config.isMentionEnabled,
1459
+ isReactionEnabled = config.isReactionEnabled; // dux of Thread
1460
+
1461
+ var _c = useReducer(reducer, initialState),
1462
+ threadStore = _c[0],
1463
+ threadDispatcher = _c[1];
1464
+
1465
+ var currentChannel = threadStore.currentChannel,
1466
+ allThreadMessages = threadStore.allThreadMessages,
1467
+ parentMessage = threadStore.parentMessage,
1468
+ channelStatus = threadStore.channelStatus,
1469
+ threadListStatus = threadStore.threadListStatus,
1470
+ parentMessageInfoStatus = threadStore.parentMessageInfoStatus,
1471
+ hasMorePrev = threadStore.hasMorePrev,
1472
+ hasMoreNext = threadStore.hasMoreNext,
1473
+ emojiContainer = threadStore.emojiContainer,
1474
+ isMuted = threadStore.isMuted,
1475
+ isChannelFrozen = threadStore.isChannelFrozen,
1476
+ currentUserId = threadStore.currentUserId; // Initialization
1477
+
1478
+ useEffect(function () {
1479
+ threadDispatcher({
1480
+ type: ThreadContextActionTypes.INIT_USER_ID,
1481
+ payload: user === null || user === void 0 ? void 0 : user.userId
1482
+ });
1483
+ }, [user]);
1484
+ useGetChannel({
1485
+ channelUrl: channelUrl,
1486
+ sdkInit: sdkInit,
1487
+ message: message
1488
+ }, {
1489
+ sdk: sdk,
1490
+ logger: logger,
1491
+ threadDispatcher: threadDispatcher
1492
+ });
1493
+ useGetParentMessage({
1494
+ channelUrl: channelUrl,
1495
+ sdkInit: sdkInit,
1496
+ parentMessageId: message === null || message === void 0 ? void 0 : message.parentMessageId,
1497
+ parentMessage: message === null || message === void 0 ? void 0 : message.parentMessage
1498
+ }, {
1499
+ sdk: sdk,
1500
+ logger: logger,
1501
+ threadDispatcher: threadDispatcher
1502
+ });
1503
+ useGetThreadList({
1504
+ sdkInit: sdkInit,
1505
+ parentMessage: parentMessage,
1506
+ isReactionEnabled: isReactionEnabled,
1507
+ anchorMessage: (message === null || message === void 0 ? void 0 : message.messageId) ? message : null
1508
+ }, {
1509
+ logger: logger,
1510
+ threadDispatcher: threadDispatcher
1511
+ });
1512
+ useGetAllEmoji({
1513
+ sdk: sdk
1514
+ }, {
1515
+ logger: logger,
1516
+ threadDispatcher: threadDispatcher
1517
+ }); // Handle channel events
1518
+
1519
+ useHandleChannelEvents({
1520
+ sdk: sdk,
1521
+ currentChannel: currentChannel
1522
+ }, {
1523
+ logger: logger,
1524
+ threadDispatcher: threadDispatcher
1525
+ });
1526
+ useHandlePubsubEvents({
1527
+ sdkInit: sdkInit,
1528
+ currentChannel: currentChannel,
1529
+ parentMessage: parentMessage
1530
+ }, {
1531
+ logger: logger,
1532
+ pubSub: pubSub,
1533
+ threadDispatcher: threadDispatcher
1534
+ }); // callbacks
1535
+
1536
+ var fetchPrevThreads = useGetPrevThreadsCallback({
1537
+ hasMorePrev: hasMorePrev,
1538
+ parentMessage: parentMessage,
1539
+ threadListStatus: threadListStatus,
1540
+ isReactionEnabled: isReactionEnabled,
1541
+ oldestMessageTimeStamp: ((_a = allThreadMessages[0]) === null || _a === void 0 ? void 0 : _a.createdAt) || 0
1542
+ }, {
1543
+ logger: logger,
1544
+ threadDispatcher: threadDispatcher
1545
+ });
1546
+ var fetchNextThreads = useGetNextThreadsCallback({
1547
+ hasMoreNext: hasMoreNext,
1548
+ parentMessage: parentMessage,
1549
+ threadListStatus: threadListStatus,
1550
+ isReactionEnabled: isReactionEnabled,
1551
+ latestMessageTimeStamp: ((_b = allThreadMessages[allThreadMessages.length - 1]) === null || _b === void 0 ? void 0 : _b.createdAt) || 0
1552
+ }, {
1553
+ logger: logger,
1554
+ threadDispatcher: threadDispatcher
1555
+ });
1556
+ var toggleReaction = useToggleReactionCallback({
1557
+ currentChannel: currentChannel
1558
+ }, {
1559
+ logger: logger
1560
+ });
1561
+ var sendMessage = useSendUserMessageCallback({
1562
+ isMentionEnabled: isMentionEnabled,
1563
+ currentChannel: currentChannel
1564
+ }, {
1565
+ logger: logger,
1566
+ pubSub: pubSub,
1567
+ threadDispatcher: threadDispatcher
1568
+ });
1569
+ var sendFileMessage = useSendFileMessageCallback({
1570
+ currentChannel: currentChannel
1571
+ }, {
1572
+ logger: logger,
1573
+ pubSub: pubSub,
1574
+ threadDispatcher: threadDispatcher
1575
+ });
1576
+ var resendMessage = useResendMessageCallback({
1577
+ currentChannel: currentChannel
1578
+ }, {
1579
+ logger: logger,
1580
+ pubSub: pubSub,
1581
+ threadDispatcher: threadDispatcher
1582
+ });
1583
+ var updateMessage = useUpdateMessageCallback({
1584
+ currentChannel: currentChannel,
1585
+ isMentionEnabled: isMentionEnabled
1586
+ }, {
1587
+ logger: logger,
1588
+ pubSub: pubSub,
1589
+ threadDispatcher: threadDispatcher
1590
+ });
1591
+ var deleteMessage = useDeleteMessageCallback({
1592
+ currentChannel: currentChannel,
1593
+ threadDispatcher: threadDispatcher
1594
+ }, {
1595
+ logger: logger
1596
+ }); // memo
1597
+
1598
+ var nicknamesMap = useMemo(function () {
1599
+ return replyType && currentChannel ? getNicknamesMapFromMembers(currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.members) : new Map();
1600
+ }, [currentChannel === null || currentChannel === void 0 ? void 0 : currentChannel.members]);
1601
+ return /*#__PURE__*/React__default.createElement(ThreadContext.Provider, {
1602
+ value: {
1603
+ // ThreadProviderProps
1604
+ channelUrl: channelUrl,
1605
+ message: message,
1606
+ onHeaderActionClick: onHeaderActionClick,
1607
+ onMoveToParentMessage: onMoveToParentMessage,
1608
+ // ThreadContextInitialState
1609
+ currentChannel: currentChannel,
1610
+ allThreadMessages: allThreadMessages,
1611
+ parentMessage: parentMessage,
1612
+ channelStatus: channelStatus,
1613
+ threadListStatus: threadListStatus,
1614
+ parentMessageInfoStatus: parentMessageInfoStatus,
1615
+ hasMorePrev: hasMorePrev,
1616
+ hasMoreNext: hasMoreNext,
1617
+ emojiContainer: emojiContainer,
1618
+ // hooks
1619
+ fetchPrevThreads: fetchPrevThreads,
1620
+ fetchNextThreads: fetchNextThreads,
1621
+ toggleReaction: toggleReaction,
1622
+ sendMessage: sendMessage,
1623
+ sendFileMessage: sendFileMessage,
1624
+ resendMessage: resendMessage,
1625
+ updateMessage: updateMessage,
1626
+ deleteMessage: deleteMessage,
1627
+ // context
1628
+ nicknamesMap: nicknamesMap,
1629
+ isMuted: isMuted,
1630
+ isChannelFrozen: isChannelFrozen,
1631
+ currentUserId: currentUserId
1632
+ }
1633
+ }, /*#__PURE__*/React__default.createElement(UserProfileProvider, {
1634
+ disableUserProfile: disableUserProfile,
1635
+ renderUserProfile: renderUserProfile,
1636
+ onUserProfileMessage: onUserProfileMessage
1637
+ }, children));
1638
+ };
1639
+ var useThreadContext = function () {
1640
+ return React__default.useContext(ThreadContext);
1641
+ };
1642
+
1643
+ export { ThreadProvider as T, compareMessagesForGrouping as c, isAboutSame as i, useThreadContext as u };
1644
+ //# sourceMappingURL=ThreadProvider-b7452f09.js.map