@sendbird/uikit-react 3.4.6 → 3.4.7-0

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