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

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