@sendbird/uikit-react 3.0.0-beta.4 → 3.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. package/App.js +316 -0
  2. package/App.js.map +1 -0
  3. package/CHANGELOG.md +43 -1
  4. package/Channel/components/ChannelHeader.js +121 -0
  5. package/Channel/components/ChannelHeader.js.map +1 -0
  6. package/Channel/components/ChannelUI.js +182 -0
  7. package/Channel/components/ChannelUI.js.map +1 -0
  8. package/Channel/components/FileViewer.js +153 -0
  9. package/Channel/components/FileViewer.js.map +1 -0
  10. package/Channel/components/FrozenNotification.js +20 -0
  11. package/Channel/components/FrozenNotification.js.map +1 -0
  12. package/Channel/components/Message.js +364 -0
  13. package/Channel/components/Message.js.map +1 -0
  14. package/Channel/components/MessageInput.js +214 -0
  15. package/Channel/components/MessageInput.js.map +1 -0
  16. package/Channel/components/MessageList.js +242 -0
  17. package/Channel/components/MessageList.js.map +1 -0
  18. package/Channel/components/RemoveMessageModal.js +55 -0
  19. package/Channel/components/RemoveMessageModal.js.map +1 -0
  20. package/Channel/components/SuggestedMentionList.js +306 -0
  21. package/Channel/components/SuggestedMentionList.js.map +1 -0
  22. package/Channel/components/TypingIndicator.js +102 -0
  23. package/Channel/components/TypingIndicator.js.map +1 -0
  24. package/Channel/components/UnreadCount.js +41 -0
  25. package/Channel/components/UnreadCount.js.map +1 -0
  26. package/Channel/context.js +26 -0
  27. package/Channel/context.js.map +1 -0
  28. package/Channel.js +109 -0
  29. package/Channel.js.map +1 -0
  30. package/ChannelList/components/AddChannel.js +70 -0
  31. package/ChannelList/components/AddChannel.js.map +1 -0
  32. package/ChannelList/components/ChannelListHeader.js +62 -0
  33. package/ChannelList/components/ChannelListHeader.js.map +1 -0
  34. package/ChannelList/components/ChannelListUI.js +235 -0
  35. package/ChannelList/components/ChannelListUI.js.map +1 -0
  36. package/ChannelList/components/ChannelPreview.js +216 -0
  37. package/ChannelList/components/ChannelPreview.js.map +1 -0
  38. package/ChannelList/components/ChannelPreviewAction.js +133 -0
  39. package/ChannelList/components/ChannelPreviewAction.js.map +1 -0
  40. package/ChannelList/context.js +15 -0
  41. package/ChannelList/context.js.map +1 -0
  42. package/ChannelList.js +91 -0
  43. package/ChannelList.js.map +1 -0
  44. package/ChannelListProvider-76b1ec23.js +944 -0
  45. package/ChannelListProvider-76b1ec23.js.map +1 -0
  46. package/ChannelProvider-c0ed5fae.js +2075 -0
  47. package/ChannelProvider-c0ed5fae.js.map +1 -0
  48. package/ChannelSettings/components/ChannelProfile.js +102 -0
  49. package/ChannelSettings/components/ChannelProfile.js.map +1 -0
  50. package/ChannelSettings/components/ChannelSettingsUI.js +152 -0
  51. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -0
  52. package/ChannelSettings/components/EditDetailsModal.js +158 -0
  53. package/ChannelSettings/components/EditDetailsModal.js.map +1 -0
  54. package/ChannelSettings/components/LeaveChannel.js +53 -0
  55. package/ChannelSettings/components/LeaveChannel.js.map +1 -0
  56. package/ChannelSettings/components/ModerationPanel.js +851 -0
  57. package/ChannelSettings/components/ModerationPanel.js.map +1 -0
  58. package/ChannelSettings/components/UserListItem.js +106 -0
  59. package/ChannelSettings/components/UserListItem.js.map +1 -0
  60. package/ChannelSettings/components/UserPanel.js +79 -0
  61. package/ChannelSettings/components/UserPanel.js.map +1 -0
  62. package/ChannelSettings/context.js +93 -0
  63. package/ChannelSettings/context.js.map +1 -0
  64. package/ChannelSettings.js +71 -0
  65. package/ChannelSettings.js.map +1 -0
  66. package/CreateChannel/components/CreateChannelUI.js +53 -0
  67. package/CreateChannel/components/CreateChannelUI.js.map +1 -0
  68. package/CreateChannel/components/InviteUsers.js +180 -0
  69. package/CreateChannel/components/InviteUsers.js.map +1 -0
  70. package/CreateChannel/components/SelectChannelType.js +131 -0
  71. package/CreateChannel/components/SelectChannelType.js.map +1 -0
  72. package/CreateChannel/context.js +9 -0
  73. package/CreateChannel/context.js.map +1 -0
  74. package/CreateChannel.js +53 -0
  75. package/CreateChannel.js.map +1 -0
  76. package/CreateChannelProvider-8c72aa06.js +53 -0
  77. package/CreateChannelProvider-8c72aa06.js.map +1 -0
  78. package/EditUserProfile/components/EditUserProfileUI.js +26 -0
  79. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -0
  80. package/EditUserProfile/context.js +27 -0
  81. package/EditUserProfile/context.js.map +1 -0
  82. package/EditUserProfile.js +39 -0
  83. package/EditUserProfile.js.map +1 -0
  84. package/LocalizationContext-fb3dafcd.js +22 -0
  85. package/LocalizationContext-fb3dafcd.js.map +1 -0
  86. package/MemberList-01d3c8bf.js +404 -0
  87. package/MemberList-01d3c8bf.js.map +1 -0
  88. package/MessageSearch/components/MessageSearchUI.js +151 -0
  89. package/MessageSearch/components/MessageSearchUI.js.map +1 -0
  90. package/MessageSearch/context.js +387 -0
  91. package/MessageSearch/context.js.map +1 -0
  92. package/MessageSearch.js +146 -0
  93. package/MessageSearch.js.map +1 -0
  94. package/OpenChannel/components/FrozenChannelNotification.js +20 -0
  95. package/OpenChannel/components/FrozenChannelNotification.js.map +1 -0
  96. package/OpenChannel/components/OpenChannelHeader.js +80 -0
  97. package/OpenChannel/components/OpenChannelHeader.js.map +1 -0
  98. package/OpenChannel/components/OpenChannelInput.js +58 -0
  99. package/OpenChannel/components/OpenChannelInput.js.map +1 -0
  100. package/OpenChannel/components/OpenChannelMessage.js +287 -0
  101. package/OpenChannel/components/OpenChannelMessage.js.map +1 -0
  102. package/OpenChannel/components/OpenChannelMessageList.js +158 -0
  103. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -0
  104. package/OpenChannel/components/OpenChannelUI.js +111 -0
  105. package/OpenChannel/components/OpenChannelUI.js.map +1 -0
  106. package/OpenChannel/context.js +16 -0
  107. package/OpenChannel/context.js.map +1 -0
  108. package/OpenChannel.js +82 -0
  109. package/OpenChannel.js.map +1 -0
  110. package/OpenChannelProvider-0fb27972.js +1946 -0
  111. package/OpenChannelProvider-0fb27972.js.map +1 -0
  112. package/OpenChannelSettings/components/EditDetailsModal.js +143 -0
  113. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -0
  114. package/OpenChannelSettings/components/OpenChannelProfile.js +81 -0
  115. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -0
  116. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +120 -0
  117. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -0
  118. package/OpenChannelSettings/components/OperatorUI.js +199 -0
  119. package/OpenChannelSettings/components/OperatorUI.js.map +1 -0
  120. package/OpenChannelSettings/components/ParticipantUI.js +145 -0
  121. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -0
  122. package/OpenChannelSettings/context.js +64 -0
  123. package/OpenChannelSettings/context.js.map +1 -0
  124. package/OpenChannelSettings.js +64 -0
  125. package/OpenChannelSettings.js.map +1 -0
  126. package/README.md +0 -1
  127. package/SendbirdProvider.js +782 -0
  128. package/SendbirdProvider.js.map +1 -0
  129. package/UserProfileContext-6a387a08.js +38 -0
  130. package/UserProfileContext-6a387a08.js.map +1 -0
  131. package/__bundle-7dfccc8c-03df3ada.js +24 -0
  132. package/__bundle-7dfccc8c-03df3ada.js.map +1 -0
  133. package/_rollupPluginBabelHelpers-084fb589.js +233 -0
  134. package/_rollupPluginBabelHelpers-084fb589.js.map +1 -0
  135. package/actionTypes-302a2801.js +6 -0
  136. package/actionTypes-302a2801.js.map +1 -0
  137. package/cjs/App.js +323 -0
  138. package/cjs/App.js.map +1 -0
  139. package/cjs/Channel/components/ChannelHeader.js +127 -0
  140. package/cjs/Channel/components/ChannelHeader.js.map +1 -0
  141. package/cjs/Channel/components/ChannelUI.js +188 -0
  142. package/cjs/Channel/components/ChannelUI.js.map +1 -0
  143. package/cjs/Channel/components/FileViewer.js +162 -0
  144. package/cjs/Channel/components/FileViewer.js.map +1 -0
  145. package/cjs/Channel/components/FrozenNotification.js +26 -0
  146. package/cjs/Channel/components/FrozenNotification.js.map +1 -0
  147. package/cjs/Channel/components/Message.js +370 -0
  148. package/cjs/Channel/components/Message.js.map +1 -0
  149. package/cjs/Channel/components/MessageInput.js +220 -0
  150. package/cjs/Channel/components/MessageInput.js.map +1 -0
  151. package/cjs/Channel/components/MessageList.js +248 -0
  152. package/cjs/Channel/components/MessageList.js.map +1 -0
  153. package/cjs/Channel/components/RemoveMessageModal.js +61 -0
  154. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -0
  155. package/cjs/Channel/components/SuggestedMentionList.js +312 -0
  156. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -0
  157. package/cjs/Channel/components/TypingIndicator.js +111 -0
  158. package/cjs/Channel/components/TypingIndicator.js.map +1 -0
  159. package/cjs/Channel/components/UnreadCount.js +47 -0
  160. package/cjs/Channel/components/UnreadCount.js.map +1 -0
  161. package/cjs/Channel/context.js +35 -0
  162. package/cjs/Channel/context.js.map +1 -0
  163. package/cjs/Channel.js +115 -0
  164. package/cjs/Channel.js.map +1 -0
  165. package/cjs/ChannelList/components/AddChannel.js +79 -0
  166. package/cjs/ChannelList/components/AddChannel.js.map +1 -0
  167. package/cjs/ChannelList/components/ChannelListHeader.js +68 -0
  168. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -0
  169. package/cjs/ChannelList/components/ChannelListUI.js +241 -0
  170. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -0
  171. package/cjs/ChannelList/components/ChannelPreview.js +222 -0
  172. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -0
  173. package/cjs/ChannelList/components/ChannelPreviewAction.js +140 -0
  174. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -0
  175. package/cjs/ChannelList/context.js +24 -0
  176. package/cjs/ChannelList/context.js.map +1 -0
  177. package/cjs/ChannelList.js +97 -0
  178. package/cjs/ChannelList.js.map +1 -0
  179. package/cjs/ChannelListProvider-7d1c0466.js +956 -0
  180. package/cjs/ChannelListProvider-7d1c0466.js.map +1 -0
  181. package/cjs/ChannelProvider-a3ec5a56.js +2088 -0
  182. package/cjs/ChannelProvider-a3ec5a56.js.map +1 -0
  183. package/cjs/ChannelSettings/components/ChannelProfile.js +108 -0
  184. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -0
  185. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +158 -0
  186. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -0
  187. package/cjs/ChannelSettings/components/EditDetailsModal.js +164 -0
  188. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -0
  189. package/cjs/ChannelSettings/components/LeaveChannel.js +59 -0
  190. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -0
  191. package/cjs/ChannelSettings/components/ModerationPanel.js +857 -0
  192. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -0
  193. package/cjs/ChannelSettings/components/UserListItem.js +112 -0
  194. package/cjs/ChannelSettings/components/UserListItem.js.map +1 -0
  195. package/cjs/ChannelSettings/components/UserPanel.js +85 -0
  196. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -0
  197. package/cjs/ChannelSettings/context.js +102 -0
  198. package/cjs/ChannelSettings/context.js.map +1 -0
  199. package/cjs/ChannelSettings.js +77 -0
  200. package/cjs/ChannelSettings.js.map +1 -0
  201. package/cjs/CreateChannel/components/CreateChannelUI.js +59 -0
  202. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -0
  203. package/cjs/CreateChannel/components/InviteUsers.js +186 -0
  204. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -0
  205. package/cjs/CreateChannel/components/SelectChannelType.js +137 -0
  206. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -0
  207. package/cjs/CreateChannel/context.js +18 -0
  208. package/cjs/CreateChannel/context.js.map +1 -0
  209. package/cjs/CreateChannel.js +59 -0
  210. package/cjs/CreateChannel.js.map +1 -0
  211. package/cjs/CreateChannelProvider-95fbfb06.js +60 -0
  212. package/cjs/CreateChannelProvider-95fbfb06.js.map +1 -0
  213. package/cjs/EditUserProfile/components/EditUserProfileUI.js +32 -0
  214. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -0
  215. package/cjs/EditUserProfile/context.js +36 -0
  216. package/cjs/EditUserProfile/context.js.map +1 -0
  217. package/cjs/EditUserProfile.js +45 -0
  218. package/cjs/EditUserProfile.js.map +1 -0
  219. package/cjs/LocalizationContext-5a6a0f67.js +30 -0
  220. package/cjs/LocalizationContext-5a6a0f67.js.map +1 -0
  221. package/cjs/MemberList-bfecdd64.js +410 -0
  222. package/cjs/MemberList-bfecdd64.js.map +1 -0
  223. package/cjs/MessageSearch/components/MessageSearchUI.js +160 -0
  224. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -0
  225. package/cjs/MessageSearch/context.js +396 -0
  226. package/cjs/MessageSearch/context.js.map +1 -0
  227. package/cjs/MessageSearch.js +152 -0
  228. package/cjs/MessageSearch.js.map +1 -0
  229. package/cjs/OpenChannel/components/FrozenChannelNotification.js +26 -0
  230. package/cjs/OpenChannel/components/FrozenChannelNotification.js.map +1 -0
  231. package/cjs/OpenChannel/components/OpenChannelHeader.js +86 -0
  232. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -0
  233. package/cjs/OpenChannel/components/OpenChannelInput.js +64 -0
  234. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -0
  235. package/cjs/OpenChannel/components/OpenChannelMessage.js +293 -0
  236. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -0
  237. package/cjs/OpenChannel/components/OpenChannelMessageList.js +164 -0
  238. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -0
  239. package/cjs/OpenChannel/components/OpenChannelUI.js +117 -0
  240. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -0
  241. package/cjs/OpenChannel/context.js +25 -0
  242. package/cjs/OpenChannel/context.js.map +1 -0
  243. package/cjs/OpenChannel.js +88 -0
  244. package/cjs/OpenChannel.js.map +1 -0
  245. package/cjs/OpenChannelProvider-e8247193.js +1955 -0
  246. package/cjs/OpenChannelProvider-e8247193.js.map +1 -0
  247. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +149 -0
  248. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -0
  249. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +87 -0
  250. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -0
  251. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +126 -0
  252. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -0
  253. package/cjs/OpenChannelSettings/components/OperatorUI.js +209 -0
  254. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -0
  255. package/cjs/OpenChannelSettings/components/ParticipantUI.js +151 -0
  256. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -0
  257. package/cjs/OpenChannelSettings/context.js +73 -0
  258. package/cjs/OpenChannelSettings/context.js.map +1 -0
  259. package/cjs/OpenChannelSettings.js +70 -0
  260. package/cjs/OpenChannelSettings.js.map +1 -0
  261. package/cjs/SendbirdProvider.js +790 -0
  262. package/cjs/SendbirdProvider.js.map +1 -0
  263. package/cjs/UserProfileContext-17c8f75c.js +46 -0
  264. package/cjs/UserProfileContext-17c8f75c.js.map +1 -0
  265. package/cjs/__bundle-7dfccc8c-c3c55861.js +151 -0
  266. package/cjs/__bundle-7dfccc8c-c3c55861.js.map +1 -0
  267. package/cjs/_rollupPluginBabelHelpers-d984e855.js +243 -0
  268. package/cjs/_rollupPluginBabelHelpers-d984e855.js.map +1 -0
  269. package/cjs/actionTypes-7a330bec.js +10 -0
  270. package/cjs/actionTypes-7a330bec.js.map +1 -0
  271. package/cjs/color-b30f84a2.js +42 -0
  272. package/cjs/color-b30f84a2.js.map +1 -0
  273. package/cjs/compareIds-d8053014.js +20 -0
  274. package/cjs/compareIds-d8053014.js.map +1 -0
  275. package/cjs/const-2623fae1.js +22 -0
  276. package/cjs/const-2623fae1.js.map +1 -0
  277. package/cjs/const-6aa26f9f.js +14 -0
  278. package/cjs/const-6aa26f9f.js.map +1 -0
  279. package/cjs/context-83ecdafd.js +19 -0
  280. package/cjs/context-83ecdafd.js.map +1 -0
  281. package/cjs/dist/index.css +4603 -0
  282. package/cjs/dist/index.css.map +1 -0
  283. package/cjs/groupChannel-e311e26a.js +9 -0
  284. package/cjs/groupChannel-e311e26a.js.map +1 -0
  285. package/cjs/index-1e14c5b9.js +130 -0
  286. package/cjs/index-1e14c5b9.js.map +1 -0
  287. package/cjs/index-2537cbc7.js +284 -0
  288. package/cjs/index-2537cbc7.js.map +1 -0
  289. package/cjs/index-40d245a3.js +729 -0
  290. package/cjs/index-40d245a3.js.map +1 -0
  291. package/cjs/index-5e7b82c2.js +178 -0
  292. package/cjs/index-5e7b82c2.js.map +1 -0
  293. package/cjs/index-72479c2a.js +514 -0
  294. package/cjs/index-72479c2a.js.map +1 -0
  295. package/cjs/index-ab5d906d.js +67 -0
  296. package/cjs/index-ab5d906d.js.map +1 -0
  297. package/cjs/index-cdcd27bc.js +1880 -0
  298. package/cjs/index-cdcd27bc.js.map +1 -0
  299. package/cjs/index-ce679d41.js +9 -0
  300. package/cjs/index-ce679d41.js.map +1 -0
  301. package/cjs/index-df05e765.js +142 -0
  302. package/cjs/index-df05e765.js.map +1 -0
  303. package/cjs/index-f9677913.js +97 -0
  304. package/cjs/index-f9677913.js.map +1 -0
  305. package/cjs/index.js +165 -0
  306. package/cjs/index.js.map +1 -0
  307. package/cjs/openChannel-e9f65946.js +13 -0
  308. package/cjs/openChannel-e9f65946.js.map +1 -0
  309. package/cjs/openChannelUtils-4b7d2697.js +97 -0
  310. package/cjs/openChannelUtils-4b7d2697.js.map +1 -0
  311. package/cjs/sendbirdSelectors.js +696 -0
  312. package/cjs/sendbirdSelectors.js.map +1 -0
  313. package/cjs/stringSet-2f3588b5.js +118 -0
  314. package/cjs/stringSet-2f3588b5.js.map +1 -0
  315. package/cjs/topics-582e38dc.js +18 -0
  316. package/cjs/topics-582e38dc.js.map +1 -0
  317. package/cjs/tslib.es6-d9c7aa8b.js +40 -0
  318. package/cjs/tslib.es6-d9c7aa8b.js.map +1 -0
  319. package/cjs/ui/Accordion.js +74 -0
  320. package/cjs/ui/Accordion.js.map +1 -0
  321. package/cjs/ui/AccordionGroup.js +32 -0
  322. package/cjs/ui/AccordionGroup.js.map +1 -0
  323. package/cjs/ui/AdminMessage.js +45 -0
  324. package/cjs/ui/AdminMessage.js.map +1 -0
  325. package/cjs/ui/Avatar.js +226 -0
  326. package/cjs/ui/Avatar.js.map +1 -0
  327. package/cjs/ui/Badge.js +45 -0
  328. package/cjs/ui/Badge.js.map +1 -0
  329. package/cjs/ui/Button.js +17 -0
  330. package/cjs/ui/Button.js.map +1 -0
  331. package/cjs/ui/ChannelAvatar.js +59 -0
  332. package/cjs/ui/ChannelAvatar.js.map +1 -0
  333. package/cjs/ui/ChannelPreview.js +208 -0
  334. package/cjs/ui/ChannelPreview.js.map +1 -0
  335. package/cjs/ui/ChatHeader.js +152 -0
  336. package/cjs/ui/ChatHeader.js.map +1 -0
  337. package/cjs/ui/Checkbox.js +49 -0
  338. package/cjs/ui/Checkbox.js.map +1 -0
  339. package/cjs/ui/ConnectionStatus.js +34 -0
  340. package/cjs/ui/ConnectionStatus.js.map +1 -0
  341. package/cjs/ui/ContextMenu.js +410 -0
  342. package/cjs/ui/ContextMenu.js.map +1 -0
  343. package/cjs/ui/DateSeparator.js +44 -0
  344. package/cjs/ui/DateSeparator.js.map +1 -0
  345. package/cjs/ui/Dropdown.js +107 -0
  346. package/cjs/ui/Dropdown.js.map +1 -0
  347. package/cjs/ui/EmojiReactions.js +127 -0
  348. package/cjs/ui/EmojiReactions.js.map +1 -0
  349. package/cjs/ui/FileMessageItemBody.js +57 -0
  350. package/cjs/ui/FileMessageItemBody.js.map +1 -0
  351. package/cjs/ui/FileViewer.js +174 -0
  352. package/cjs/ui/FileViewer.js.map +1 -0
  353. package/cjs/ui/Icon.js +1466 -0
  354. package/cjs/ui/Icon.js.map +1 -0
  355. package/cjs/ui/IconButton.js +83 -0
  356. package/cjs/ui/IconButton.js.map +1 -0
  357. package/cjs/ui/ImageRenderer.js +138 -0
  358. package/cjs/ui/ImageRenderer.js.map +1 -0
  359. package/cjs/ui/Input.js +74 -0
  360. package/cjs/ui/Input.js.map +1 -0
  361. package/cjs/ui/Label.js +17 -0
  362. package/cjs/ui/Label.js.map +1 -0
  363. package/cjs/ui/LinkLabel.js +51 -0
  364. package/cjs/ui/LinkLabel.js.map +1 -0
  365. package/cjs/ui/Loader.js +44 -0
  366. package/cjs/ui/Loader.js.map +1 -0
  367. package/cjs/ui/MentionLabel.js +100 -0
  368. package/cjs/ui/MentionLabel.js.map +1 -0
  369. package/cjs/ui/MentionUserLabel.js +25 -0
  370. package/cjs/ui/MentionUserLabel.js.map +1 -0
  371. package/cjs/ui/MessageContent.js +297 -0
  372. package/cjs/ui/MessageContent.js.map +1 -0
  373. package/cjs/ui/MessageInput.js +5052 -0
  374. package/cjs/ui/MessageInput.js.map +1 -0
  375. package/cjs/ui/MessageItemMenu.js +137 -0
  376. package/cjs/ui/MessageItemMenu.js.map +1 -0
  377. package/cjs/ui/MessageItemReactionMenu.js +112 -0
  378. package/cjs/ui/MessageItemReactionMenu.js.map +1 -0
  379. package/cjs/ui/MessageSearchFileItem.js +131 -0
  380. package/cjs/ui/MessageSearchFileItem.js.map +1 -0
  381. package/cjs/ui/MessageSearchItem.js +93 -0
  382. package/cjs/ui/MessageSearchItem.js.map +1 -0
  383. package/cjs/ui/MessageStatus.js +66 -0
  384. package/cjs/ui/MessageStatus.js.map +1 -0
  385. package/cjs/ui/Modal.js +140 -0
  386. package/cjs/ui/Modal.js.map +1 -0
  387. package/cjs/ui/MutedAvatarOverlay.js +40 -0
  388. package/cjs/ui/MutedAvatarOverlay.js.map +1 -0
  389. package/cjs/ui/OGMessageItemBody.js +119 -0
  390. package/cjs/ui/OGMessageItemBody.js.map +1 -0
  391. package/cjs/ui/OpenChannelAdminMessage.js +27 -0
  392. package/cjs/ui/OpenChannelAdminMessage.js.map +1 -0
  393. package/cjs/ui/OpenChannelAvatar.js +41 -0
  394. package/cjs/ui/OpenChannelAvatar.js.map +1 -0
  395. package/cjs/ui/OpenchannelConversationHeader.js +73 -0
  396. package/cjs/ui/OpenchannelConversationHeader.js.map +1 -0
  397. package/cjs/ui/OpenchannelFileMessage.js +231 -0
  398. package/cjs/ui/OpenchannelFileMessage.js.map +1 -0
  399. package/cjs/ui/OpenchannelOGMessage.js +346 -0
  400. package/cjs/ui/OpenchannelOGMessage.js.map +1 -0
  401. package/cjs/ui/OpenchannelThumbnailMessage.js +306 -0
  402. package/cjs/ui/OpenchannelThumbnailMessage.js.map +1 -0
  403. package/cjs/ui/OpenchannelUserMessage.js +265 -0
  404. package/cjs/ui/OpenchannelUserMessage.js.map +1 -0
  405. package/cjs/ui/PlaceHolder.js +20 -0
  406. package/cjs/ui/PlaceHolder.js.map +1 -0
  407. package/cjs/ui/QuoteMessage.js +131 -0
  408. package/cjs/ui/QuoteMessage.js.map +1 -0
  409. package/cjs/ui/QuoteMessageInput.js +97 -0
  410. package/cjs/ui/QuoteMessageInput.js.map +1 -0
  411. package/cjs/ui/ReactionBadge.js +68 -0
  412. package/cjs/ui/ReactionBadge.js.map +1 -0
  413. package/cjs/ui/ReactionButton.js +55 -0
  414. package/cjs/ui/ReactionButton.js.map +1 -0
  415. package/cjs/ui/SortByRow.js +57 -0
  416. package/cjs/ui/SortByRow.js.map +1 -0
  417. package/cjs/ui/TextButton.js +45 -0
  418. package/cjs/ui/TextButton.js.map +1 -0
  419. package/cjs/ui/TextMessageItemBody.js +76 -0
  420. package/cjs/ui/TextMessageItemBody.js.map +1 -0
  421. package/cjs/ui/ThumbnailMessageItemBody.js +82 -0
  422. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -0
  423. package/cjs/ui/Tooltip.js +35 -0
  424. package/cjs/ui/Tooltip.js.map +1 -0
  425. package/cjs/ui/TooltipWrapper.js +65 -0
  426. package/cjs/ui/TooltipWrapper.js.map +1 -0
  427. package/cjs/ui/UnknownMessageItemBody.js +41 -0
  428. package/cjs/ui/UnknownMessageItemBody.js.map +1 -0
  429. package/cjs/ui/UserListItem.js +159 -0
  430. package/cjs/ui/UserListItem.js.map +1 -0
  431. package/cjs/ui/UserProfile.js +88 -0
  432. package/cjs/ui/UserProfile.js.map +1 -0
  433. package/cjs/ui/Word.js +76 -0
  434. package/cjs/ui/Word.js.map +1 -0
  435. package/cjs/useSendbirdStateContext.js +22 -0
  436. package/cjs/useSendbirdStateContext.js.map +1 -0
  437. package/cjs/utils-031aba48.js +6 -0
  438. package/cjs/utils-031aba48.js.map +1 -0
  439. package/cjs/utils-510b93ac.js +38 -0
  440. package/cjs/utils-510b93ac.js.map +1 -0
  441. package/cjs/utils-689065e6.js +32 -0
  442. package/cjs/utils-689065e6.js.map +1 -0
  443. package/cjs/uuid-099485ae.js +19 -0
  444. package/cjs/uuid-099485ae.js.map +1 -0
  445. package/cjs/withSendBird.js +35 -0
  446. package/cjs/withSendBird.js.map +1 -0
  447. package/color-9bf8c922.js +39 -0
  448. package/color-9bf8c922.js.map +1 -0
  449. package/compareIds-b78d7cd6.js +18 -0
  450. package/compareIds-b78d7cd6.js.map +1 -0
  451. package/const-40b58d8b.js +18 -0
  452. package/const-40b58d8b.js.map +1 -0
  453. package/const-99800b8d.js +8 -0
  454. package/const-99800b8d.js.map +1 -0
  455. package/context-bedea43b.js +12 -0
  456. package/context-bedea43b.js.map +1 -0
  457. package/dist/index.css +292 -152
  458. package/dist/index.css.map +1 -1
  459. package/groupChannel-96502de7.js +6 -0
  460. package/groupChannel-96502de7.js.map +1 -0
  461. package/index-13729368.js +512 -0
  462. package/index-13729368.js.map +1 -0
  463. package/index-16bed610.js +64 -0
  464. package/index-16bed610.js.map +1 -0
  465. package/index-1d112ad4.js +7 -0
  466. package/index-1d112ad4.js.map +1 -0
  467. package/index-71ad343b.js +171 -0
  468. package/index-71ad343b.js.map +1 -0
  469. package/index-71e2bf26.js +131 -0
  470. package/index-71e2bf26.js.map +1 -0
  471. package/index-8e6a607b.js +688 -0
  472. package/index-8e6a607b.js.map +1 -0
  473. package/index-a5e8849a.js +280 -0
  474. package/index-a5e8849a.js.map +1 -0
  475. package/index-b574cc8e.js +87 -0
  476. package/index-b574cc8e.js.map +1 -0
  477. package/index-c95d2aab.js +121 -0
  478. package/index-c95d2aab.js.map +1 -0
  479. package/index-ccd99cfe.js +1873 -0
  480. package/index-ccd99cfe.js.map +1 -0
  481. package/index.d.ts +1965 -0
  482. package/index.d.ts_bkup +1883 -0
  483. package/index.js +146 -0
  484. package/index.js.map +1 -0
  485. package/openChannel-dd5c9246.js +8 -0
  486. package/openChannel-dd5c9246.js.map +1 -0
  487. package/openChannelUtils-211a679a.js +86 -0
  488. package/openChannelUtils-211a679a.js.map +1 -0
  489. package/package.json +11 -33
  490. package/sendbirdSelectors.js +671 -0
  491. package/sendbirdSelectors.js.map +1 -0
  492. package/stringSet-d3a8a2a0.js +116 -0
  493. package/stringSet-d3a8a2a0.js.map +1 -0
  494. package/topics-f941ba80.js +10 -0
  495. package/topics-f941ba80.js.map +1 -0
  496. package/tslib.es6-a7db0cc5.js +38 -0
  497. package/tslib.es6-a7db0cc5.js.map +1 -0
  498. package/ui/Accordion.js +65 -0
  499. package/ui/Accordion.js.map +1 -0
  500. package/ui/AccordionGroup.js +26 -0
  501. package/ui/AccordionGroup.js.map +1 -0
  502. package/ui/AdminMessage.js +38 -0
  503. package/ui/AdminMessage.js.map +1 -0
  504. package/ui/Avatar.js +217 -0
  505. package/ui/Avatar.js.map +1 -0
  506. package/ui/Badge.js +38 -0
  507. package/ui/Badge.js.map +1 -0
  508. package/ui/Button.js +7 -0
  509. package/ui/Button.js.map +1 -0
  510. package/ui/ChannelAvatar.js +53 -0
  511. package/ui/ChannelAvatar.js.map +1 -0
  512. package/ui/ChannelPreview.js +201 -0
  513. package/ui/ChannelPreview.js.map +1 -0
  514. package/ui/ChatHeader.js +145 -0
  515. package/ui/ChatHeader.js.map +1 -0
  516. package/ui/Checkbox.js +42 -0
  517. package/ui/Checkbox.js.map +1 -0
  518. package/ui/ConnectionStatus.js +28 -0
  519. package/ui/ConnectionStatus.js.map +1 -0
  520. package/ui/ContextMenu.js +396 -0
  521. package/ui/ContextMenu.js.map +1 -0
  522. package/ui/DateSeparator.js +37 -0
  523. package/ui/DateSeparator.js.map +1 -0
  524. package/ui/Dropdown.js +97 -0
  525. package/ui/Dropdown.js.map +1 -0
  526. package/ui/EmojiReactions.js +121 -0
  527. package/ui/EmojiReactions.js.map +1 -0
  528. package/ui/FileMessageItemBody.js +51 -0
  529. package/ui/FileMessageItemBody.js.map +1 -0
  530. package/ui/FileViewer.js +164 -0
  531. package/ui/FileViewer.js.map +1 -0
  532. package/ui/Icon.js +1436 -0
  533. package/ui/Icon.js.map +1 -0
  534. package/ui/IconButton.js +76 -0
  535. package/ui/IconButton.js.map +1 -0
  536. package/ui/ImageRenderer.js +131 -0
  537. package/ui/ImageRenderer.js.map +1 -0
  538. package/ui/Input.js +64 -0
  539. package/ui/Input.js.map +1 -0
  540. package/ui/Label.js +6 -0
  541. package/ui/Label.js.map +1 -0
  542. package/ui/LinkLabel.js +40 -0
  543. package/ui/LinkLabel.js.map +1 -0
  544. package/ui/Loader.js +37 -0
  545. package/ui/Loader.js.map +1 -0
  546. package/ui/MentionLabel.js +94 -0
  547. package/ui/MentionLabel.js.map +1 -0
  548. package/ui/MentionUserLabel.js +19 -0
  549. package/ui/MentionUserLabel.js.map +1 -0
  550. package/ui/MessageContent.js +291 -0
  551. package/ui/MessageContent.js.map +1 -0
  552. package/ui/MessageInput.js +5044 -0
  553. package/ui/MessageInput.js.map +1 -0
  554. package/ui/MessageItemMenu.js +131 -0
  555. package/ui/MessageItemMenu.js.map +1 -0
  556. package/ui/MessageItemReactionMenu.js +106 -0
  557. package/ui/MessageItemReactionMenu.js.map +1 -0
  558. package/ui/MessageSearchFileItem.js +125 -0
  559. package/ui/MessageSearchFileItem.js.map +1 -0
  560. package/ui/MessageSearchItem.js +87 -0
  561. package/ui/MessageSearchItem.js.map +1 -0
  562. package/ui/MessageStatus.js +57 -0
  563. package/ui/MessageStatus.js.map +1 -0
  564. package/ui/Modal.js +128 -0
  565. package/ui/Modal.js.map +1 -0
  566. package/ui/MutedAvatarOverlay.js +34 -0
  567. package/ui/MutedAvatarOverlay.js.map +1 -0
  568. package/ui/OGMessageItemBody.js +113 -0
  569. package/ui/OGMessageItemBody.js.map +1 -0
  570. package/ui/OpenChannelAdminMessage.js +21 -0
  571. package/ui/OpenChannelAdminMessage.js.map +1 -0
  572. package/ui/OpenChannelAvatar.js +35 -0
  573. package/ui/OpenChannelAvatar.js.map +1 -0
  574. package/ui/OpenchannelConversationHeader.js +67 -0
  575. package/ui/OpenchannelConversationHeader.js.map +1 -0
  576. package/ui/OpenchannelFileMessage.js +225 -0
  577. package/ui/OpenchannelFileMessage.js.map +1 -0
  578. package/ui/OpenchannelOGMessage.js +340 -0
  579. package/ui/OpenchannelOGMessage.js.map +1 -0
  580. package/ui/OpenchannelThumbnailMessage.js +300 -0
  581. package/ui/OpenchannelThumbnailMessage.js.map +1 -0
  582. package/ui/OpenchannelUserMessage.js +259 -0
  583. package/ui/OpenchannelUserMessage.js.map +1 -0
  584. package/ui/PlaceHolder.js +11 -0
  585. package/ui/PlaceHolder.js.map +1 -0
  586. package/ui/QuoteMessage.js +125 -0
  587. package/ui/QuoteMessage.js.map +1 -0
  588. package/ui/QuoteMessageInput.js +91 -0
  589. package/ui/QuoteMessageInput.js.map +1 -0
  590. package/ui/ReactionBadge.js +61 -0
  591. package/ui/ReactionBadge.js.map +1 -0
  592. package/ui/ReactionButton.js +48 -0
  593. package/ui/ReactionButton.js.map +1 -0
  594. package/ui/SortByRow.js +50 -0
  595. package/ui/SortByRow.js.map +1 -0
  596. package/ui/TextButton.js +38 -0
  597. package/ui/TextButton.js.map +1 -0
  598. package/ui/TextMessageItemBody.js +70 -0
  599. package/ui/TextMessageItemBody.js.map +1 -0
  600. package/ui/ThumbnailMessageItemBody.js +76 -0
  601. package/ui/ThumbnailMessageItemBody.js.map +1 -0
  602. package/ui/Tooltip.js +28 -0
  603. package/ui/Tooltip.js.map +1 -0
  604. package/ui/TooltipWrapper.js +58 -0
  605. package/ui/TooltipWrapper.js.map +1 -0
  606. package/ui/UnknownMessageItemBody.js +35 -0
  607. package/ui/UnknownMessageItemBody.js.map +1 -0
  608. package/ui/UserListItem.js +152 -0
  609. package/ui/UserListItem.js.map +1 -0
  610. package/ui/UserProfile.js +82 -0
  611. package/ui/UserProfile.js.map +1 -0
  612. package/ui/Word.js +70 -0
  613. package/ui/Word.js.map +1 -0
  614. package/useSendbirdStateContext.js +20 -0
  615. package/useSendbirdStateContext.js.map +1 -0
  616. package/utils-2e3623c0.js +30 -0
  617. package/utils-2e3623c0.js.map +1 -0
  618. package/utils-cadde06a.js +4 -0
  619. package/utils-cadde06a.js.map +1 -0
  620. package/utils-d9325ddf.js +34 -0
  621. package/utils-d9325ddf.js.map +1 -0
  622. package/uuid-748dae7a.js +17 -0
  623. package/uuid-748dae7a.js.map +1 -0
  624. package/withSendBird.js +26 -0
  625. package/withSendBird.js.map +1 -0
@@ -0,0 +1,2075 @@
1
+ import React__default, { useEffect, useCallback, useRef, useMemo, useState, useReducer } from 'react';
2
+ import { U as UserProfileProvider } from './UserProfileContext-6a387a08.js';
3
+ import useSendbirdStateContext from './useSendbirdStateContext.js';
4
+ import { b as _toConsumableArray, _ as _objectSpread2 } from './_rollupPluginBabelHelpers-084fb589.js';
5
+ import { f as format } from './index-ccd99cfe.js';
6
+ import { a as SEND_USER_MESSAGE, S as SEND_MESSAGE_START, b as SEND_FILE_MESSAGE, U as UPDATE_USER_MESSAGE, D as DELETE_MESSAGE } from './topics-f941ba80.js';
7
+ import { a as getOutgoingMessageStates, b as getSendingMessageStatus, c as isReadMessage, d as filterMessageListParams } from './index-8e6a607b.js';
8
+ import { c as compareIds } from './compareIds-b78d7cd6.js';
9
+ import { N as NEXT_RESULT_SIZE, P as PREV_RESULT_SIZE } from './const-99800b8d.js';
10
+ import { Y as Yr } from './groupChannel-96502de7.js';
11
+ import { u as uuidv4 } from './uuid-748dae7a.js';
12
+ import { u as ue } from './__bundle-7dfccc8c-03df3ada.js';
13
+ import { EmojiListItems } from './ui/ContextMenu.js';
14
+ import ReactionButton from './ui/ReactionButton.js';
15
+ import ImageRenderer from './ui/ImageRenderer.js';
16
+ import Icon, { IconTypes } from './ui/Icon.js';
17
+
18
+ var RESET_MESSAGES = 'RESET_MESSAGES';
19
+ var FETCH_INITIAL_MESSAGES_START = 'FETCH_INITIAL_MESSAGES_START';
20
+ var FETCH_INITIAL_MESSAGES_SUCCESS = 'FETCH_INITIAL_MESSAGES_SUCCESS';
21
+ var FETCH_INITIAL_MESSAGES_FAILURE = 'FETCH_INITIAL_MESSAGES_FAILURE';
22
+ var FETCH_PREV_MESSAGES_SUCCESS = 'FETCH_PREV_MESSAGES_SUCCESS';
23
+ var FETCH_PREV_MESSAGES_FAILURE = 'FETCH_PREV_MESSAGES_FAILURE';
24
+ var FETCH_NEXT_MESSAGES_SUCCESS = 'FETCH_NEXT_MESSAGES_SUCCESS';
25
+ var FETCH_NEXT_MESSAGES_FAILURE = 'FETCH_NEXT_MESSAGES_FAILURE';
26
+ var SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';
27
+ var SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';
28
+ var SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';
29
+ var RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';
30
+ var ON_MESSAGE_RECEIVED = 'ON_MESSAGE_RECEIVED';
31
+ var ON_MESSAGE_UPDATED = 'ON_MESSAGE_UPDATED';
32
+ var ON_MESSAGE_THREAD_INFO_UPDATED = 'ON_MESSAGE_THREAD_INFO_UPDATED';
33
+ var ON_MESSAGE_DELETED = 'ON_MESSAGE_DELETED';
34
+ var ON_MESSAGE_DELETED_BY_REQ_ID = 'ON_MESSAGE_DELETED_BY_REQ_ID';
35
+ var SET_CURRENT_CHANNEL = 'SET_CURRENT_CHANNEL';
36
+ var SET_CHANNEL_INVALID = 'SET_CHANNEL_INVALID';
37
+ var MARK_AS_READ = 'MARK_AS_READ';
38
+ var ON_REACTION_UPDATED = 'ON_REACTION_UPDATED';
39
+ var SET_EMOJI_CONTAINER = 'SET_EMOJI_CONTAINER';
40
+ var MESSAGE_LIST_PARAMS_CHANGED = 'MESSAGE_LIST_PARAMS_CHANGED';
41
+
42
+ var messageActionTypes = /*#__PURE__*/Object.freeze({
43
+ __proto__: null,
44
+ RESET_MESSAGES: RESET_MESSAGES,
45
+ FETCH_INITIAL_MESSAGES_START: FETCH_INITIAL_MESSAGES_START,
46
+ FETCH_INITIAL_MESSAGES_SUCCESS: FETCH_INITIAL_MESSAGES_SUCCESS,
47
+ FETCH_INITIAL_MESSAGES_FAILURE: FETCH_INITIAL_MESSAGES_FAILURE,
48
+ FETCH_PREV_MESSAGES_SUCCESS: FETCH_PREV_MESSAGES_SUCCESS,
49
+ FETCH_PREV_MESSAGES_FAILURE: FETCH_PREV_MESSAGES_FAILURE,
50
+ FETCH_NEXT_MESSAGES_SUCCESS: FETCH_NEXT_MESSAGES_SUCCESS,
51
+ FETCH_NEXT_MESSAGES_FAILURE: FETCH_NEXT_MESSAGES_FAILURE,
52
+ SEND_MESSAGEGE_START: SEND_MESSAGEGE_START,
53
+ SEND_MESSAGEGE_SUCESS: SEND_MESSAGEGE_SUCESS,
54
+ SEND_MESSAGEGE_FAILURE: SEND_MESSAGEGE_FAILURE,
55
+ RESEND_MESSAGEGE_START: RESEND_MESSAGEGE_START,
56
+ ON_MESSAGE_RECEIVED: ON_MESSAGE_RECEIVED,
57
+ ON_MESSAGE_UPDATED: ON_MESSAGE_UPDATED,
58
+ ON_MESSAGE_THREAD_INFO_UPDATED: ON_MESSAGE_THREAD_INFO_UPDATED,
59
+ ON_MESSAGE_DELETED: ON_MESSAGE_DELETED,
60
+ ON_MESSAGE_DELETED_BY_REQ_ID: ON_MESSAGE_DELETED_BY_REQ_ID,
61
+ SET_CURRENT_CHANNEL: SET_CURRENT_CHANNEL,
62
+ SET_CHANNEL_INVALID: SET_CHANNEL_INVALID,
63
+ MARK_AS_READ: MARK_AS_READ,
64
+ ON_REACTION_UPDATED: ON_REACTION_UPDATED,
65
+ SET_EMOJI_CONTAINER: SET_EMOJI_CONTAINER,
66
+ MESSAGE_LIST_PARAMS_CHANGED: MESSAGE_LIST_PARAMS_CHANGED
67
+ });
68
+
69
+ getOutgoingMessageStates();
70
+ var UNDEFINED = 'undefined';
71
+
72
+ var _getSendingMessageSta$1 = getSendingMessageStatus(),
73
+ SUCCEEDED$1 = _getSendingMessageSta$1.SUCCEEDED;
74
+ _getSendingMessageSta$1.FAILED;
75
+ var PENDING$1 = _getSendingMessageSta$1.PENDING;
76
+
77
+ var scrollIntoLast = function scrollIntoLast() {
78
+ var intialTry = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
79
+ var MAX_TRIES = 10;
80
+ var currentTry = intialTry;
81
+
82
+ if (currentTry > MAX_TRIES) {
83
+ return;
84
+ }
85
+
86
+ try {
87
+ var scrollDOM = document.querySelector('.sendbird-conversation__messages-padding'); // eslint-disable-next-line no-multi-assign
88
+
89
+ scrollDOM.scrollTop = scrollDOM.scrollHeight;
90
+ } catch (error) {
91
+ setTimeout(function () {
92
+ scrollIntoLast(currentTry + 1);
93
+ }, 500 * currentTry);
94
+ }
95
+ };
96
+ var pubSubHandleRemover = function pubSubHandleRemover(subscriber) {
97
+ subscriber.forEach(function (s) {
98
+ try {
99
+ s.remove();
100
+ } catch (_unused) {//
101
+ }
102
+ });
103
+ };
104
+ var pubSubHandler = function pubSubHandler(channelUrl, pubSub, dispatcher) {
105
+ var subscriber = new Map();
106
+ if (!pubSub || !pubSub.subscribe) return subscriber;
107
+ subscriber.set(SEND_USER_MESSAGE, pubSub.subscribe(SEND_USER_MESSAGE, function (msg) {
108
+ var channel = msg.channel,
109
+ message = msg.message;
110
+ scrollIntoLast();
111
+
112
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
113
+ dispatcher({
114
+ type: SEND_MESSAGEGE_SUCESS,
115
+ payload: message
116
+ });
117
+ }
118
+ }));
119
+ subscriber.set(SEND_MESSAGE_START, pubSub.subscribe(SEND_MESSAGE_START, function (msg) {
120
+ var channel = msg.channel,
121
+ message = msg.message;
122
+
123
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
124
+ dispatcher({
125
+ type: SEND_MESSAGEGE_START,
126
+ payload: message
127
+ });
128
+ }
129
+ }));
130
+ subscriber.set(SEND_FILE_MESSAGE, pubSub.subscribe(SEND_FILE_MESSAGE, function (msg) {
131
+ var channel = msg.channel,
132
+ message = msg.message;
133
+ scrollIntoLast();
134
+
135
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
136
+ dispatcher({
137
+ type: SEND_MESSAGEGE_SUCESS,
138
+ payload: message
139
+ });
140
+ }
141
+ }));
142
+ subscriber.set(UPDATE_USER_MESSAGE, pubSub.subscribe(UPDATE_USER_MESSAGE, function (msg) {
143
+ var channel = msg.channel,
144
+ message = msg.message,
145
+ fromSelector = msg.fromSelector;
146
+
147
+ if (fromSelector && channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
148
+ dispatcher({
149
+ type: ON_MESSAGE_UPDATED,
150
+ payload: {
151
+ channel: channel,
152
+ message: message
153
+ }
154
+ });
155
+ }
156
+ }));
157
+ subscriber.set(DELETE_MESSAGE, pubSub.subscribe(DELETE_MESSAGE, function (msg) {
158
+ var channel = msg.channel,
159
+ messageId = msg.messageId;
160
+
161
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
162
+ dispatcher({
163
+ type: ON_MESSAGE_DELETED,
164
+ payload: messageId
165
+ });
166
+ }
167
+ }));
168
+ return subscriber;
169
+ };
170
+ var isOperator = function isOperator() {
171
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
172
+ var myRole = groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.myRole;
173
+ return myRole === 'operator';
174
+ };
175
+ var isDisabledBecauseFrozen = function isDisabledBecauseFrozen() {
176
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
177
+ var isFrozen = groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.isFrozen;
178
+ return isFrozen && !isOperator(groupChannel);
179
+ };
180
+ var isDisabledBecauseMuted = function isDisabledBecauseMuted() {
181
+ var groupChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
182
+ var myMutedState = groupChannel === null || groupChannel === void 0 ? void 0 : groupChannel.myMutedState;
183
+ return myMutedState === 'muted';
184
+ };
185
+ var getAllEmojisFromEmojiContainer = function getAllEmojisFromEmojiContainer() {
186
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
187
+ var _emojiContainer$emoji = emojiContainer.emojiCategories,
188
+ emojiCategories = _emojiContainer$emoji === void 0 ? [] : _emojiContainer$emoji;
189
+ var allEmojis = [];
190
+
191
+ for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
192
+ var emojis = emojiCategories[categoryIndex].emojis;
193
+
194
+ for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
195
+ allEmojis.push(emojis[emojiIndex]);
196
+ }
197
+ }
198
+
199
+ return allEmojis;
200
+ };
201
+ var getAllEmojisMapFromEmojiContainer = function getAllEmojisMapFromEmojiContainer() {
202
+ var emojiContainer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
203
+ var _emojiContainer$emoji2 = emojiContainer.emojiCategories,
204
+ emojiCategories = _emojiContainer$emoji2 === void 0 ? [] : _emojiContainer$emoji2;
205
+ var allEmojisMap = new Map();
206
+
207
+ for (var categoryIndex = 0; categoryIndex < emojiCategories.length; categoryIndex += 1) {
208
+ var emojis = emojiCategories[categoryIndex].emojis;
209
+
210
+ for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex += 1) {
211
+ var _emojis$emojiIndex = emojis[emojiIndex],
212
+ key = _emojis$emojiIndex.key,
213
+ url = _emojis$emojiIndex.url;
214
+ allEmojisMap.set(key, url);
215
+ }
216
+ }
217
+
218
+ return allEmojisMap;
219
+ };
220
+ var getNicknamesMapFromMembers = function getNicknamesMapFromMembers() {
221
+ var members = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
222
+ var nicknamesMap = new Map();
223
+
224
+ for (var memberIndex = 0; memberIndex < members.length; memberIndex += 1) {
225
+ var _members$memberIndex = members[memberIndex],
226
+ userId = _members$memberIndex.userId,
227
+ nickname = _members$memberIndex.nickname;
228
+ nicknamesMap.set(userId, nickname);
229
+ }
230
+
231
+ return nicknamesMap;
232
+ };
233
+ var getMessageCreatedAt = function getMessageCreatedAt(message) {
234
+ return format(message.createdAt, 'p');
235
+ };
236
+ var isSameGroup = function isSameGroup(message, comparingMessage, currentChannel) {
237
+ var _message$sender, _comparingMessage$sen, _message$sender2, _comparingMessage$sen2;
238
+
239
+ 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)) {
240
+ return false;
241
+ }
242
+
243
+ 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);
244
+ };
245
+ var compareMessagesForGrouping = function compareMessagesForGrouping(prevMessage, currMessage, nextMessage, currentChannel) {
246
+ var sendingStatus = (currMessage === null || currMessage === void 0 ? void 0 : currMessage.sendingStatus) || '';
247
+ var isAcceptable = sendingStatus !== 'pending' && sendingStatus !== 'failed';
248
+ return [isSameGroup(prevMessage, currMessage, currentChannel) && isAcceptable, isSameGroup(currMessage, nextMessage, currentChannel) && isAcceptable];
249
+ };
250
+ var passUnsuccessfullMessages = function passUnsuccessfullMessages(allMessages, newMessage) {
251
+ var _newMessage$sendingSt = newMessage.sendingStatus,
252
+ sendingStatus = _newMessage$sendingSt === void 0 ? UNDEFINED : _newMessage$sendingSt;
253
+
254
+ if (sendingStatus === SUCCEEDED$1 || sendingStatus === PENDING$1) {
255
+ var lastIndexOfSucceededMessage = allMessages.map(function (message) {
256
+ return message.sendingStatus || (message.isAdminMessage && message.isAdminMessage() ? SUCCEEDED$1 : UNDEFINED);
257
+ }).lastIndexOf(SUCCEEDED$1);
258
+
259
+ if (lastIndexOfSucceededMessage + 1 < allMessages.length) {
260
+ var messages = _toConsumableArray(allMessages);
261
+
262
+ messages.splice(lastIndexOfSucceededMessage + 1, 0, newMessage);
263
+ return messages;
264
+ }
265
+ }
266
+
267
+ return [].concat(_toConsumableArray(allMessages), [newMessage]);
268
+ };
269
+ var pxToNumber = function pxToNumber(px) {
270
+ if (typeof px === 'number') {
271
+ return px;
272
+ }
273
+
274
+ if (typeof px === 'string') {
275
+ var parsed = Number.parseFloat(px);
276
+
277
+ if (!Number.isNaN(parsed)) {
278
+ return parsed;
279
+ }
280
+ }
281
+
282
+ return null;
283
+ };
284
+ var isAboutSame = function isAboutSame(a, b, px) {
285
+ return Math.abs(a - b) <= px;
286
+ };
287
+
288
+ var messagesInitialState = {
289
+ initialized: false,
290
+ loading: false,
291
+ allMessages: [],
292
+ currentGroupChannel: {
293
+ members: []
294
+ },
295
+ // for scrollup
296
+ hasMorePrev: false,
297
+ oldestMessageTimeStamp: 0,
298
+ // for scroll down
299
+ // onScrollDownCallback is added for navigation to different timestamps on messageSearch
300
+ // hasMorePrev, onScrollCallback -> scroll up(default behavior)
301
+ // hasMoreNext, onScrollDownCallback -> scroll down
302
+ hasMoreNext: false,
303
+ latestMessageTimeStamp: 0,
304
+ emojiContainer: {},
305
+ unreadSince: null,
306
+ isInvalid: false,
307
+ messageListParams: null
308
+ };
309
+
310
+ var _getSendingMessageSta = getSendingMessageStatus(),
311
+ SUCCEEDED = _getSendingMessageSta.SUCCEEDED,
312
+ FAILED = _getSendingMessageSta.FAILED,
313
+ PENDING = _getSendingMessageSta.PENDING;
314
+
315
+ var getOldestMessageTimeStamp = function getOldestMessageTimeStamp() {
316
+ var messages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
317
+ var oldestMessage = messages[0];
318
+ return oldestMessage && oldestMessage.createdAt || null;
319
+ };
320
+
321
+ var getLatestMessageTimeStamp = function getLatestMessageTimeStamp() {
322
+ var messages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
323
+ var latestMessage = messages[messages.length - 1];
324
+ return latestMessage && latestMessage.createdAt || null;
325
+ };
326
+
327
+ function reducer(state, action) {
328
+ var _state$currentGroupCh8, _action$payload7, _action$payload7$chan;
329
+
330
+ switch (action.type) {
331
+ case RESET_MESSAGES:
332
+ return _objectSpread2(_objectSpread2({}, state), {}, {
333
+ // when user switches channel, if the previous channel `hasMorePrev`
334
+ // the onScroll gets called twice, setting hasMorePrev false prevents this
335
+ hasMorePrev: false,
336
+ hasMoreNext: false,
337
+ allMessages: []
338
+ });
339
+
340
+ case FETCH_INITIAL_MESSAGES_START:
341
+ {
342
+ return _objectSpread2(_objectSpread2({}, state), {}, {
343
+ loading: true,
344
+ allMessages: _toConsumableArray(state.allMessages.filter(function (m) {
345
+ return m.sendingStatus !== SUCCEEDED;
346
+ }))
347
+ });
348
+ }
349
+
350
+ case FETCH_INITIAL_MESSAGES_SUCCESS:
351
+ {
352
+ var _state$currentGroupCh;
353
+
354
+ var _action$payload = action.payload,
355
+ currentGroupChannel = _action$payload.currentGroupChannel,
356
+ messages = _action$payload.messages;
357
+
358
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_state$currentGroupCh = state.currentGroupChannel) === null || _state$currentGroupCh === void 0 ? void 0 : _state$currentGroupCh.url))) {
359
+ return state;
360
+ }
361
+
362
+ var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
363
+ var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
364
+ return _objectSpread2(_objectSpread2({}, state), {}, {
365
+ loading: false,
366
+ initialized: true,
367
+ hasMorePrev: true,
368
+ hasMoreNext: true,
369
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
370
+ latestMessageTimeStamp: latestMessageTimeStamp,
371
+ allMessages: _toConsumableArray(messages)
372
+ });
373
+ }
374
+
375
+ case FETCH_PREV_MESSAGES_SUCCESS:
376
+ {
377
+ var _state$currentGroupCh2;
378
+
379
+ var _action$payload2 = action.payload,
380
+ _currentGroupChannel = _action$payload2.currentGroupChannel,
381
+ _messages = _action$payload2.messages;
382
+
383
+ if (!((_currentGroupChannel === null || _currentGroupChannel === void 0 ? void 0 : _currentGroupChannel.url) === ((_state$currentGroupCh2 = state.currentGroupChannel) === null || _state$currentGroupCh2 === void 0 ? void 0 : _state$currentGroupCh2.url))) {
384
+ return state;
385
+ }
386
+
387
+ var hasMorePrev = _messages && _messages.length === PREV_RESULT_SIZE + 1;
388
+
389
+ var _oldestMessageTimeStamp = getOldestMessageTimeStamp(_messages); // Remove duplicated messages
390
+
391
+
392
+ var duplicatedMessageIds = [];
393
+ var updatedOldMessages = state.allMessages.map(function (msg) {
394
+ var duplicatedMessage = _messages.find(function (_ref) {
395
+ var messageId = _ref.messageId;
396
+ return compareIds(messageId, msg.messageId);
397
+ });
398
+
399
+ if (!duplicatedMessage) {
400
+ return msg;
401
+ }
402
+
403
+ duplicatedMessageIds.push(duplicatedMessage.messageId);
404
+ return duplicatedMessage.updatedAt > msg.updatedAt ? duplicatedMessage : msg;
405
+ });
406
+ var filteredNewMessages = duplicatedMessageIds.length > 0 ? _messages.filter(function (msg) {
407
+ return !duplicatedMessageIds.find(function (messageId) {
408
+ return compareIds(messageId, msg.messageId);
409
+ });
410
+ }) : _messages;
411
+ return _objectSpread2(_objectSpread2({}, state), {}, {
412
+ hasMorePrev: hasMorePrev,
413
+ oldestMessageTimeStamp: _oldestMessageTimeStamp,
414
+ allMessages: [].concat(_toConsumableArray(filteredNewMessages), _toConsumableArray(updatedOldMessages))
415
+ });
416
+ }
417
+
418
+ case FETCH_NEXT_MESSAGES_SUCCESS:
419
+ {
420
+ var _state$currentGroupCh3;
421
+
422
+ var _action$payload3 = action.payload,
423
+ _currentGroupChannel2 = _action$payload3.currentGroupChannel,
424
+ _messages2 = _action$payload3.messages;
425
+
426
+ if (!((_currentGroupChannel2 === null || _currentGroupChannel2 === void 0 ? void 0 : _currentGroupChannel2.url) === ((_state$currentGroupCh3 = state.currentGroupChannel) === null || _state$currentGroupCh3 === void 0 ? void 0 : _state$currentGroupCh3.url))) {
427
+ return state;
428
+ }
429
+
430
+ var hasMoreNext = _messages2 && _messages2.length === NEXT_RESULT_SIZE + 1;
431
+
432
+ var _latestMessageTimeStamp = getLatestMessageTimeStamp(_messages2); // Remove duplicated messages
433
+
434
+
435
+ var _duplicatedMessageIds = [];
436
+
437
+ var _updatedOldMessages = state.allMessages.map(function (msg) {
438
+ var duplicatedMessage = _messages2.find(function (_ref2) {
439
+ var messageId = _ref2.messageId;
440
+ return compareIds(messageId, msg.messageId);
441
+ });
442
+
443
+ if (!duplicatedMessage) {
444
+ return msg;
445
+ }
446
+
447
+ _duplicatedMessageIds.push(duplicatedMessage.messageId);
448
+
449
+ return duplicatedMessage.updatedAt > msg.updatedAt ? duplicatedMessage : msg;
450
+ });
451
+
452
+ var _filteredNewMessages = _duplicatedMessageIds.length > 0 ? _messages2.filter(function (msg) {
453
+ return !_duplicatedMessageIds.find(function (messageId) {
454
+ return compareIds(messageId, msg.messageId);
455
+ });
456
+ }) : _messages2;
457
+
458
+ return _objectSpread2(_objectSpread2({}, state), {}, {
459
+ hasMoreNext: hasMoreNext,
460
+ latestMessageTimeStamp: _latestMessageTimeStamp,
461
+ allMessages: [].concat(_toConsumableArray(_updatedOldMessages), _toConsumableArray(_filteredNewMessages))
462
+ });
463
+ }
464
+
465
+ case FETCH_INITIAL_MESSAGES_FAILURE:
466
+ case FETCH_PREV_MESSAGES_FAILURE:
467
+ case FETCH_NEXT_MESSAGES_FAILURE:
468
+ {
469
+ var _state$currentGroupCh4;
470
+
471
+ var _currentGroupChannel3 = action.payload.currentGroupChannel;
472
+
473
+ if ((_currentGroupChannel3 === null || _currentGroupChannel3 === void 0 ? void 0 : _currentGroupChannel3.url) !== (state === null || state === void 0 ? void 0 : (_state$currentGroupCh4 = state.currentGroupChannel) === null || _state$currentGroupCh4 === void 0 ? void 0 : _state$currentGroupCh4.url)) {
474
+ return state;
475
+ }
476
+
477
+ return _objectSpread2(_objectSpread2({}, state), {}, {
478
+ loading: false,
479
+ initialized: false,
480
+ allMessages: [],
481
+ hasMorePrev: false,
482
+ hasMoreNext: false,
483
+ oldestMessageTimeStamp: null,
484
+ latestMessageTimeStamp: null
485
+ });
486
+ }
487
+
488
+ case SEND_MESSAGEGE_START:
489
+ return _objectSpread2(_objectSpread2({}, state), {}, {
490
+ allMessages: [].concat(_toConsumableArray(state.allMessages), [_objectSpread2({}, action.payload)])
491
+ });
492
+
493
+ case SEND_MESSAGEGE_SUCESS:
494
+ {
495
+ var newMessages = state.allMessages.map(function (m) {
496
+ return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
497
+ });
498
+
499
+ _toConsumableArray(newMessages).sort(function (a, b) {
500
+ return a.sendingStatus && b.sendingStatus && a.sendingStatus === SUCCEEDED && (b.sendingStatus === PENDING || b.sendingStatus === FAILED) ? -1 : 1;
501
+ });
502
+
503
+ return _objectSpread2(_objectSpread2({}, state), {}, {
504
+ allMessages: newMessages
505
+ });
506
+ }
507
+
508
+ case SEND_MESSAGEGE_FAILURE:
509
+ {
510
+ // eslint-disable-next-line no-param-reassign
511
+ action.payload.failed = true;
512
+ return _objectSpread2(_objectSpread2({}, state), {}, {
513
+ allMessages: state.allMessages.map(function (m) {
514
+ return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
515
+ })
516
+ });
517
+ }
518
+
519
+ case SET_CURRENT_CHANNEL:
520
+ {
521
+ return _objectSpread2(_objectSpread2({}, state), {}, {
522
+ currentGroupChannel: action.payload,
523
+ isInvalid: false
524
+ });
525
+ }
526
+
527
+ case SET_CHANNEL_INVALID:
528
+ {
529
+ return _objectSpread2(_objectSpread2({}, state), {}, {
530
+ isInvalid: true
531
+ });
532
+ }
533
+
534
+ case ON_MESSAGE_RECEIVED:
535
+ {
536
+ var _action$payload4 = action.payload,
537
+ channel = _action$payload4.channel,
538
+ message = _action$payload4.message;
539
+ var members = channel.members;
540
+ var sender = message.sender;
541
+
542
+ var _state$currentGroupCh5 = state.currentGroupChannel,
543
+ _currentGroupChannel4 = _state$currentGroupCh5 === void 0 ? {} : _state$currentGroupCh5,
544
+ unreadSince = state.unreadSince;
545
+
546
+ var currentGroupChannelUrl = _currentGroupChannel4 === null || _currentGroupChannel4 === void 0 ? void 0 : _currentGroupChannel4.url;
547
+
548
+ if (!compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
549
+ return state;
550
+ } // Excluded overlapping messages
551
+
552
+
553
+ if (state.allMessages.some(function (msg) {
554
+ return msg.messageId === message.messageId;
555
+ })) {
556
+ return state;
557
+ } // Filter by userFilledQuery
558
+
559
+
560
+ if (state.messageListParams && !filterMessageListParams(state.messageListParams, message)) {
561
+ return state;
562
+ }
563
+
564
+ if (message.isAdminMessage && message.isAdminMessage()) {
565
+ return _objectSpread2(_objectSpread2({}, state), {}, {
566
+ allMessages: passUnsuccessfullMessages(state.allMessages, message)
567
+ });
568
+ } // Update members when sender profileUrl, nickname, friendName has been changed
569
+
570
+
571
+ var senderMember = members === null || members === void 0 ? void 0 : members.find(function (m) {
572
+ return (m === null || m === void 0 ? void 0 : m.userId) === (sender === null || sender === void 0 ? void 0 : sender.userId);
573
+ });
574
+
575
+ if ((senderMember === null || senderMember === void 0 ? void 0 : senderMember.profileUrl) !== (sender === null || sender === void 0 ? void 0 : sender.profileUrl) || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.friendName) !== (sender === null || sender === void 0 ? void 0 : sender.friendName) || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.nickname) !== (sender === null || sender === void 0 ? void 0 : sender.nickname)) {
576
+ channel.members = members.map(function (member) {
577
+ if (member.userId === sender.userId) {
578
+ return sender;
579
+ }
580
+
581
+ return member;
582
+ });
583
+ }
584
+
585
+ return _objectSpread2(_objectSpread2({}, state), {}, {
586
+ currentGroupChannel: channel,
587
+ unreadSince: state !== null && state !== void 0 && state.unreadSince ? unreadSince : format(new Date(), 'p MMM dd'),
588
+ allMessages: passUnsuccessfullMessages(state.allMessages, message)
589
+ });
590
+ }
591
+
592
+ case ON_MESSAGE_UPDATED:
593
+ {
594
+ var _state$currentGroupCh6;
595
+
596
+ var _action$payload5 = action.payload,
597
+ _channel = _action$payload5.channel,
598
+ _message = _action$payload5.message;
599
+
600
+ var _currentGroupChannelUrl = (state === null || state === void 0 ? void 0 : (_state$currentGroupCh6 = state.currentGroupChannel) === null || _state$currentGroupCh6 === void 0 ? void 0 : _state$currentGroupCh6.url) || '';
601
+
602
+ if (!compareIds(_channel === null || _channel === void 0 ? void 0 : _channel.url, _currentGroupChannelUrl)) {
603
+ return state; // Ignore event when it is not for the current channel
604
+ }
605
+
606
+ if (state.messageListParams && !filterMessageListParams(state.messageListParams, _message)) {
607
+ // Delete the message if it doesn't match to the params anymore
608
+ return _objectSpread2(_objectSpread2({}, state), {}, {
609
+ allMessages: state.allMessages.filter(function (m) {
610
+ return !compareIds(m.messageId, _message === null || _message === void 0 ? void 0 : _message.messageId);
611
+ })
612
+ });
613
+ }
614
+
615
+ return _objectSpread2(_objectSpread2({}, state), {}, {
616
+ allMessages: state.allMessages.map(function (m) {
617
+ if (compareIds(m.messageId, _message.messageId)) {
618
+ return _message;
619
+ }
620
+
621
+ if (compareIds(m.parentMessageId, _message.messageId)) {
622
+ m.parentMessage = _message; // eslint-disable-line no-param-reassign
623
+ }
624
+
625
+ return m;
626
+ })
627
+ });
628
+ }
629
+
630
+ case ON_MESSAGE_THREAD_INFO_UPDATED:
631
+ {
632
+ var _state$currentGroupCh7;
633
+
634
+ var _action$payload6 = action.payload,
635
+ _channel2 = _action$payload6.channel,
636
+ event = _action$payload6.event;
637
+ var channelUrl = event.channelUrl,
638
+ threadInfo = event.threadInfo,
639
+ targetMessageId = event.targetMessageId;
640
+
641
+ var _currentGroupChannelUrl2 = (state === null || state === void 0 ? void 0 : (_state$currentGroupCh7 = state.currentGroupChannel) === null || _state$currentGroupCh7 === void 0 ? void 0 : _state$currentGroupCh7.url) || '';
642
+
643
+ if (!compareIds(_channel2 === null || _channel2 === void 0 ? void 0 : _channel2.url, _currentGroupChannelUrl2) || !compareIds(_channel2 === null || _channel2 === void 0 ? void 0 : _channel2.url, channelUrl)) {
644
+ return state; // Ignore event when it is not for the current channel
645
+ }
646
+
647
+ return _objectSpread2(_objectSpread2({}, state), {}, {
648
+ allMessages: state.allMessages.map(function (m) {
649
+ if (compareIds(m.messageId, targetMessageId)) {
650
+ // eslint-disable-next-line no-param-reassign
651
+ m.threadInfo = threadInfo; // Upsert threadInfo to the target message
652
+ }
653
+
654
+ return m;
655
+ })
656
+ });
657
+ }
658
+
659
+ case RESEND_MESSAGEGE_START:
660
+ return _objectSpread2(_objectSpread2({}, state), {}, {
661
+ allMessages: state.allMessages.map(function (m) {
662
+ return compareIds(m.reqId, action.payload.reqId) ? action.payload : m;
663
+ })
664
+ });
665
+
666
+ case MARK_AS_READ:
667
+ if (((_state$currentGroupCh8 = state.currentGroupChannel) === null || _state$currentGroupCh8 === void 0 ? void 0 : _state$currentGroupCh8.url) !== ((_action$payload7 = action.payload) === null || _action$payload7 === void 0 ? void 0 : (_action$payload7$chan = _action$payload7.channel) === null || _action$payload7$chan === void 0 ? void 0 : _action$payload7$chan.url)) {
668
+ return state;
669
+ }
670
+
671
+ return _objectSpread2(_objectSpread2({}, state), {}, {
672
+ unreadSince: null
673
+ });
674
+
675
+ case ON_MESSAGE_DELETED:
676
+ return _objectSpread2(_objectSpread2({}, state), {}, {
677
+ allMessages: state.allMessages.filter(function (m) {
678
+ return !compareIds(m.messageId, action.payload);
679
+ })
680
+ });
681
+
682
+ case ON_MESSAGE_DELETED_BY_REQ_ID:
683
+ return _objectSpread2(_objectSpread2({}, state), {}, {
684
+ allMessages: state.allMessages.filter(function (m) {
685
+ return !compareIds(m.reqId, action.payload);
686
+ })
687
+ });
688
+
689
+ case SET_EMOJI_CONTAINER:
690
+ {
691
+ return _objectSpread2(_objectSpread2({}, state), {}, {
692
+ emojiContainer: action.payload
693
+ });
694
+ }
695
+
696
+ case ON_REACTION_UPDATED:
697
+ {
698
+ return _objectSpread2(_objectSpread2({}, state), {}, {
699
+ allMessages: state.allMessages.map(function (m) {
700
+ if (compareIds(m.messageId, action.payload.messageId)) {
701
+ if (m.applyReactionEvent && typeof m.applyReactionEvent === 'function') {
702
+ m.applyReactionEvent(action.payload);
703
+ }
704
+
705
+ return m;
706
+ }
707
+
708
+ return m;
709
+ })
710
+ });
711
+ }
712
+
713
+ case MESSAGE_LIST_PARAMS_CHANGED:
714
+ {
715
+ return _objectSpread2(_objectSpread2({}, state), {}, {
716
+ messageListParams: action.payload
717
+ });
718
+ }
719
+
720
+ default:
721
+ return state;
722
+ }
723
+ }
724
+
725
+ function useHandleChannelEvents(_a, _b) {
726
+ var sdkInit = _a.sdkInit,
727
+ hasMoreNext = _a.hasMoreNext,
728
+ currentGroupChannel = _a.currentGroupChannel;
729
+ var sdk = _b.sdk,
730
+ logger = _b.logger,
731
+ scrollRef = _b.scrollRef,
732
+ setQuoteMessage = _b.setQuoteMessage,
733
+ messagesDispatcher = _b.messagesDispatcher;
734
+ useEffect(function () {
735
+ var _a;
736
+
737
+ var channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
738
+ var channelHandlerId = uuidv4();
739
+
740
+ if (channelUrl && sdkInit) {
741
+ var channelHandler = {
742
+ onMessageReceived: function onMessageReceived(channel, message) {
743
+ // Do not update when hasMoreNext
744
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl) && !hasMoreNext) {
745
+ var scrollToEnd = false;
746
+
747
+ try {
748
+ var current = scrollRef.current;
749
+ scrollToEnd = current.offsetHeight + current.scrollTop >= current.scrollHeight;
750
+ } catch (error) {//
751
+ }
752
+
753
+ logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
754
+ messagesDispatcher({
755
+ type: ON_MESSAGE_RECEIVED,
756
+ payload: {
757
+ channel: channel,
758
+ message: message
759
+ }
760
+ });
761
+
762
+ if (scrollToEnd) {
763
+ try {
764
+ setTimeout(function () {
765
+ var _a;
766
+
767
+ (_a = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.markAsRead) === null || _a === void 0 ? void 0 : _a.call(currentGroupChannel);
768
+ scrollIntoLast();
769
+ });
770
+ } catch (error) {
771
+ logger.warning('Channel | onMessageReceived | scroll to end failed');
772
+ }
773
+ }
774
+ }
775
+ },
776
+ onUnreadMemberStatusUpdated: function onUnreadMemberStatusUpdated(channel) {
777
+ logger.info('Channel | useHandleChannelEvents: onUnreadMemberStatusUpdated', channel);
778
+
779
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
780
+ messagesDispatcher({
781
+ type: SET_CURRENT_CHANNEL,
782
+ payload: channel
783
+ });
784
+ }
785
+ },
786
+ // before(onDeliveryReceiptUpdated)
787
+ onUndeliveredMemberStatusUpdated: function onUndeliveredMemberStatusUpdated(channel) {
788
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
789
+ logger.info('Channel | useHandleChannelEvents: onDeliveryReceiptUpdated', channel);
790
+ messagesDispatcher({
791
+ type: SET_CURRENT_CHANNEL,
792
+ payload: channel
793
+ });
794
+ }
795
+ },
796
+ onMessageUpdated: function onMessageUpdated(channel, message) {
797
+ logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
798
+ messagesDispatcher({
799
+ type: ON_MESSAGE_UPDATED,
800
+ payload: {
801
+ channel: channel,
802
+ message: message
803
+ }
804
+ });
805
+ },
806
+ onThreadInfoUpdated: function onThreadInfoUpdated(channel, threadInfoUpdateEvent) {
807
+ logger.info('Channel | useHandleChannelEvents: onThreadInfoUpdated', {
808
+ channel: channel,
809
+ threadInfoUpdateEvent: threadInfoUpdateEvent
810
+ });
811
+ messagesDispatcher({
812
+ type: ON_MESSAGE_THREAD_INFO_UPDATED,
813
+ payload: {
814
+ channel: channel,
815
+ event: threadInfoUpdateEvent
816
+ }
817
+ });
818
+ },
819
+ onMessageDeleted: function onMessageDeleted(channel, messageId) {
820
+ logger.info('Channel | useHandleChannelEvents: onMessageDeleted', {
821
+ channel: channel,
822
+ messageId: messageId
823
+ });
824
+ setQuoteMessage(null);
825
+ messagesDispatcher({
826
+ type: ON_MESSAGE_DELETED,
827
+ payload: messageId
828
+ });
829
+ },
830
+ onReactionUpdated: function onReactionUpdated(channel, reactionEvent) {
831
+ logger.info('Channel | useHandleChannelEvents: onReactionUpdated', {
832
+ channel: channel,
833
+ reactionEvent: reactionEvent
834
+ });
835
+ messagesDispatcher({
836
+ type: ON_REACTION_UPDATED,
837
+ payload: reactionEvent
838
+ });
839
+ },
840
+ onChannelChanged: function onChannelChanged(channel) {
841
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
842
+ logger.info('Channel | useHandleChannelEvents: onChannelChanged', channel);
843
+ messagesDispatcher({
844
+ type: SET_CURRENT_CHANNEL,
845
+ payload: channel
846
+ });
847
+ }
848
+ },
849
+ onChannelFrozen: function onChannelFrozen(channel) {
850
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
851
+ logger.info('Channel | useHandleChannelEvents: onChannelFrozen', channel);
852
+ messagesDispatcher({
853
+ type: SET_CURRENT_CHANNEL,
854
+ payload: channel
855
+ });
856
+ }
857
+ },
858
+ onChannelUnfrozen: function onChannelUnfrozen(channel) {
859
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
860
+ logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', channel);
861
+ messagesDispatcher({
862
+ type: SET_CURRENT_CHANNEL,
863
+ payload: channel
864
+ });
865
+ }
866
+ },
867
+ onUserMuted: function onUserMuted(channel, user) {
868
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
869
+ logger.info('Channel | useHandleChannelEvents: onUserMuted', {
870
+ channel: channel,
871
+ user: user
872
+ });
873
+ messagesDispatcher({
874
+ type: SET_CURRENT_CHANNEL,
875
+ payload: channel
876
+ });
877
+ }
878
+ },
879
+ onUserUnmuted: function onUserUnmuted(channel, user) {
880
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
881
+ logger.info('Channel | useHandleChannelEvents: onUserUnmuted', {
882
+ channel: channel,
883
+ user: user
884
+ });
885
+ messagesDispatcher({
886
+ type: SET_CURRENT_CHANNEL,
887
+ payload: channel
888
+ });
889
+ }
890
+ },
891
+ onUserBanned: function onUserBanned(channel, user) {
892
+ var _a;
893
+
894
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl) && (user === null || user === void 0 ? void 0 : user.userId) === ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.currentUser) === null || _a === void 0 ? void 0 : _a.userId)) {
895
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', {
896
+ channel: channel,
897
+ user: user
898
+ });
899
+ messagesDispatcher({
900
+ type: SET_CURRENT_CHANNEL,
901
+ payload: null
902
+ });
903
+ }
904
+ },
905
+ onOperatorUpdated: function onOperatorUpdated(channel, users) {
906
+ if (compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
907
+ logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', {
908
+ channel: channel,
909
+ users: users
910
+ });
911
+ messagesDispatcher({
912
+ type: SET_CURRENT_CHANNEL,
913
+ payload: channel
914
+ });
915
+ }
916
+ }
917
+ };
918
+ logger.info('Channel | useHandleChannelEvents: Setup event handler', channelHandlerId); // Add this group channel handler to the Sendbird chat instance
919
+
920
+ (_a = sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.addGroupChannelHandler(channelHandlerId, new Yr(channelHandler));
921
+ }
922
+
923
+ return function () {
924
+ var _a;
925
+
926
+ if ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.removeGroupChannelHandler) {
927
+ logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', channelHandlerId);
928
+ sdk.groupChannel.removeGroupChannelHandler(channelHandlerId);
929
+ } else if (sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) {
930
+ logger.error('Channel | useHandleChannelEvents: Not found the removeGroupChannelHandler');
931
+ }
932
+ };
933
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, sdkInit]);
934
+ }
935
+
936
+ function useSetChannel(_ref, _ref2) {
937
+ var channelUrl = _ref.channelUrl,
938
+ sdkInit = _ref.sdkInit;
939
+ var messagesDispatcher = _ref2.messagesDispatcher,
940
+ sdk = _ref2.sdk,
941
+ logger = _ref2.logger;
942
+ useEffect(function () {
943
+ if (channelUrl && sdkInit && sdk && sdk.groupChannel) {
944
+ logger.info('Channel | useSetChannel fetching channel', channelUrl);
945
+ sdk.groupChannel.getChannel(channelUrl).then(function (groupChannel) {
946
+ logger.info('Channel | useSetChannel fetched channel', groupChannel);
947
+ messagesDispatcher({
948
+ type: SET_CURRENT_CHANNEL,
949
+ payload: groupChannel
950
+ });
951
+ logger.info('Channel: Mark as read', groupChannel); // this order is important - this mark as read should update the event handler up above
952
+
953
+ groupChannel.markAsRead();
954
+ }).catch(function (e) {
955
+ logger.warning('Channel | useSetChannel fetch channel failed', {
956
+ channelUrl: channelUrl,
957
+ e: e
958
+ });
959
+ messagesDispatcher({
960
+ type: SET_CHANNEL_INVALID
961
+ });
962
+ });
963
+ sdk.getAllEmoji().then(function (emojiContainer_) {
964
+ logger.info('Channel: Getting emojis success', emojiContainer_);
965
+ messagesDispatcher({
966
+ type: SET_EMOJI_CONTAINER,
967
+ payload: emojiContainer_
968
+ });
969
+ }).catch(function (err) {
970
+ logger.error('Channel: Getting emojis failed', err);
971
+ });
972
+ sdk.getAllEmoji();
973
+ }
974
+ }, [channelUrl, sdkInit]);
975
+ }
976
+
977
+ function useInitialMessagesFetch(_ref, _ref2) {
978
+ var currentGroupChannel = _ref.currentGroupChannel,
979
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery,
980
+ initialTimeStamp = _ref.initialTimeStamp,
981
+ replyType = _ref.replyType;
982
+ var logger = _ref2.logger,
983
+ messagesDispatcher = _ref2.messagesDispatcher;
984
+ var channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
985
+ useEffect(function () {
986
+ logger.info('Channel useInitialMessagesFetch: Setup started', currentGroupChannel);
987
+ messagesDispatcher({
988
+ type: RESET_MESSAGES,
989
+ payload: null
990
+ });
991
+
992
+ if (currentGroupChannel && currentGroupChannel !== null && currentGroupChannel !== void 0 && currentGroupChannel.getMessagesByTimestamp) {
993
+ var messageListParams = {};
994
+ messageListParams.prevResultSize = PREV_RESULT_SIZE;
995
+
996
+ if (initialTimeStamp) {
997
+ messageListParams.nextResultSize = NEXT_RESULT_SIZE;
998
+ }
999
+
1000
+ messageListParams.isInclusive = true;
1001
+ messageListParams.includeReactions = true;
1002
+
1003
+ if (replyType && replyType === 'QUOTE_REPLY') {
1004
+ messageListParams.includeThreadInfo = true;
1005
+ messageListParams.includeParentMessageInfo = true;
1006
+ messageListParams.replyType = ue.ONLY_REPLY_TO_CHANNEL;
1007
+ }
1008
+
1009
+ if (userFilledMessageListQuery) {
1010
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
1011
+ messageListParams[key] = userFilledMessageListQuery[key];
1012
+ });
1013
+ }
1014
+
1015
+ if (replyType && replyType === 'QUOTE_REPLY' || userFilledMessageListQuery) {
1016
+ logger.info('Channel useInitialMessagesFetch: Setup messageListParams', messageListParams);
1017
+ messagesDispatcher({
1018
+ type: MESSAGE_LIST_PARAMS_CHANGED,
1019
+ payload: messageListParams
1020
+ });
1021
+ }
1022
+
1023
+ logger.info('Channel: Fetching messages', {
1024
+ currentGroupChannel: currentGroupChannel,
1025
+ userFilledMessageListQuery: userFilledMessageListQuery
1026
+ });
1027
+ messagesDispatcher({
1028
+ type: FETCH_INITIAL_MESSAGES_START,
1029
+ payload: null
1030
+ });
1031
+ currentGroupChannel.getMessagesByTimestamp(initialTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
1032
+ messagesDispatcher({
1033
+ type: FETCH_INITIAL_MESSAGES_SUCCESS,
1034
+ payload: {
1035
+ currentGroupChannel: currentGroupChannel,
1036
+ messages: messages
1037
+ }
1038
+ });
1039
+ }).catch(function (error) {
1040
+ logger.error('Channel: Fetching messages failed', error);
1041
+ messagesDispatcher({
1042
+ type: FETCH_INITIAL_MESSAGES_FAILURE,
1043
+ payload: {
1044
+ currentGroupChannel: currentGroupChannel
1045
+ }
1046
+ });
1047
+ }).finally(function () {
1048
+ if (!initialTimeStamp) {
1049
+ setTimeout(function () {
1050
+ return scrollIntoLast();
1051
+ });
1052
+ }
1053
+ });
1054
+ }
1055
+ }, [channelUrl, userFilledMessageListQuery, initialTimeStamp]);
1056
+ /**
1057
+ * Note - useEffect(() => {}, [currentGroupChannel])
1058
+ * was buggy, that is why we did
1059
+ * const channelUrl = currentGroupChannel && currentGroupChannel.url;
1060
+ * useEffect(() => {}, [channelUrl])
1061
+ * Again, this hook is supposed to execute when currentGroupChannel changes
1062
+ * The 'channelUrl' here is not the same memory reference from Conversation.props
1063
+ */
1064
+ }
1065
+
1066
+ function useHandleReconnect(_a, _b) {
1067
+ var isOnline = _a.isOnline,
1068
+ replyType = _a.replyType;
1069
+ var logger = _b.logger,
1070
+ sdk = _b.sdk,
1071
+ currentGroupChannel = _b.currentGroupChannel,
1072
+ messagesDispatcher = _b.messagesDispatcher,
1073
+ userFilledMessageListQuery = _b.userFilledMessageListQuery;
1074
+ useEffect(function () {
1075
+ var wasOffline = !isOnline;
1076
+ return function () {
1077
+ var _a, _b; // state changed from offline to online
1078
+
1079
+
1080
+ if (wasOffline && (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url)) {
1081
+ logger.info('Refreshing conversation state');
1082
+ var isReactionEnabled = ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) || false;
1083
+ var messageListParams_1 = {
1084
+ prevResultSize: PREV_RESULT_SIZE,
1085
+ isInclusive: true,
1086
+ includeReactions: isReactionEnabled,
1087
+ nextResultSize: NEXT_RESULT_SIZE
1088
+ };
1089
+
1090
+ if (replyType && replyType === 'QUOTE_REPLY') {
1091
+ messageListParams_1.includeThreadInfo = true;
1092
+ messageListParams_1.includeParentMessageInfo = true;
1093
+ messageListParams_1.replyType = ue.ONLY_REPLY_TO_CHANNEL;
1094
+ }
1095
+
1096
+ if (userFilledMessageListQuery) {
1097
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
1098
+ messageListParams_1[key] = userFilledMessageListQuery[key];
1099
+ });
1100
+ }
1101
+
1102
+ logger.info('Channel: Fetching messages', {
1103
+ currentGroupChannel: currentGroupChannel,
1104
+ userFilledMessageListQuery: userFilledMessageListQuery
1105
+ });
1106
+ messagesDispatcher({
1107
+ type: FETCH_INITIAL_MESSAGES_START,
1108
+ payload: null
1109
+ });
1110
+ (_b = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _b === void 0 ? void 0 : _b.getChannel(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url).then(function (groupChannel) {
1111
+ var lastMessageTime = new Date().getTime();
1112
+ groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams_1).then(function (messages) {
1113
+ messagesDispatcher({
1114
+ type: FETCH_INITIAL_MESSAGES_SUCCESS,
1115
+ payload: {
1116
+ currentGroupChannel: currentGroupChannel,
1117
+ messages: messages
1118
+ }
1119
+ });
1120
+ setTimeout(function () {
1121
+ return scrollIntoLast();
1122
+ });
1123
+ }).catch(function (error) {
1124
+ logger.error('Channel: Fetching messages failed', error);
1125
+ messagesDispatcher({
1126
+ type: FETCH_INITIAL_MESSAGES_FAILURE,
1127
+ payload: {
1128
+ currentGroupChannel: currentGroupChannel
1129
+ }
1130
+ });
1131
+ }).finally(function () {
1132
+ var _a;
1133
+
1134
+ (_a = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.markAsRead) === null || _a === void 0 ? void 0 : _a.call(currentGroupChannel);
1135
+ });
1136
+ });
1137
+ }
1138
+ };
1139
+ }, [isOnline, replyType]);
1140
+ }
1141
+
1142
+ function useScrollCallback(_ref, _ref2) {
1143
+ var currentGroupChannel = _ref.currentGroupChannel,
1144
+ oldestMessageTimeStamp = _ref.oldestMessageTimeStamp,
1145
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery,
1146
+ replyType = _ref.replyType;
1147
+ var hasMorePrev = _ref2.hasMorePrev,
1148
+ logger = _ref2.logger,
1149
+ messagesDispatcher = _ref2.messagesDispatcher,
1150
+ sdk = _ref2.sdk;
1151
+ return useCallback(function (cb) {
1152
+ if (!hasMorePrev) {
1153
+ return;
1154
+ }
1155
+
1156
+ var _sdk$appInfo = sdk.appInfo,
1157
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
1158
+ var isReactionEnabled = appInfo.useReaction || false;
1159
+ var messageListParams = {
1160
+ prevResultSize: PREV_RESULT_SIZE,
1161
+ isInclusive: true,
1162
+ includeReactions: isReactionEnabled
1163
+ };
1164
+
1165
+ if (replyType && replyType === 'QUOTE_REPLY') {
1166
+ messageListParams.includeThreadInfo = true;
1167
+ messageListParams.includeParentMessageInfo = true;
1168
+ messageListParams.replyType = ue.ONLY_REPLY_TO_CHANNEL;
1169
+ }
1170
+
1171
+ if (userFilledMessageListQuery) {
1172
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
1173
+ messageListParams[key] = userFilledMessageListQuery[key];
1174
+ });
1175
+ }
1176
+
1177
+ logger.info('Channel: Fetching messages', {
1178
+ currentGroupChannel: currentGroupChannel,
1179
+ userFilledMessageListQuery: userFilledMessageListQuery
1180
+ });
1181
+ currentGroupChannel.getMessagesByTimestamp(oldestMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
1182
+ messagesDispatcher({
1183
+ type: FETCH_PREV_MESSAGES_SUCCESS,
1184
+ payload: {
1185
+ currentGroupChannel: currentGroupChannel,
1186
+ messages: messages
1187
+ }
1188
+ });
1189
+ cb([messages, null]);
1190
+ }).catch(function (error) {
1191
+ logger.error('Channel: Fetching messages failed', error);
1192
+ messagesDispatcher({
1193
+ type: FETCH_PREV_MESSAGES_FAILURE,
1194
+ payload: {
1195
+ currentGroupChannel: currentGroupChannel
1196
+ }
1197
+ });
1198
+ cb([null, error]);
1199
+ });
1200
+ }, [currentGroupChannel, oldestMessageTimeStamp, replyType]);
1201
+ }
1202
+
1203
+ function useScrollDownCallback(_ref, _ref2) {
1204
+ var currentGroupChannel = _ref.currentGroupChannel,
1205
+ latestMessageTimeStamp = _ref.latestMessageTimeStamp,
1206
+ userFilledMessageListQuery = _ref.userFilledMessageListQuery,
1207
+ hasMoreNext = _ref.hasMoreNext,
1208
+ replyType = _ref.replyType;
1209
+ var logger = _ref2.logger,
1210
+ messagesDispatcher = _ref2.messagesDispatcher,
1211
+ sdk = _ref2.sdk;
1212
+ return useCallback(function (cb) {
1213
+ if (!hasMoreNext) {
1214
+ return;
1215
+ }
1216
+
1217
+ var _sdk$appInfo = sdk.appInfo,
1218
+ appInfo = _sdk$appInfo === void 0 ? {} : _sdk$appInfo;
1219
+ var isReactionEnabled = appInfo.useReaction || false;
1220
+ var messageListParams = {
1221
+ nextResultSize: NEXT_RESULT_SIZE,
1222
+ isInclusive: true,
1223
+ includeReactions: isReactionEnabled
1224
+ };
1225
+
1226
+ if (replyType && replyType === 'QUOTE_REPLY') {
1227
+ messageListParams.includeThreadInfo = true;
1228
+ messageListParams.includeParentMessageInfo = true;
1229
+ messageListParams.replyType = ue.ONLY_REPLY_TO_CHANNEL;
1230
+ }
1231
+
1232
+ if (userFilledMessageListQuery) {
1233
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
1234
+ messageListParams[key] = userFilledMessageListQuery[key];
1235
+ });
1236
+ }
1237
+
1238
+ logger.info('Channel: Fetching later messages', {
1239
+ currentGroupChannel: currentGroupChannel,
1240
+ userFilledMessageListQuery: userFilledMessageListQuery
1241
+ });
1242
+ currentGroupChannel.getMessagesByTimestamp(latestMessageTimeStamp || new Date().getTime(), messageListParams).then(function (messages) {
1243
+ messagesDispatcher({
1244
+ type: FETCH_NEXT_MESSAGES_SUCCESS,
1245
+ payload: {
1246
+ currentGroupChannel: currentGroupChannel,
1247
+ messages: messages
1248
+ }
1249
+ });
1250
+ cb([messages, null]);
1251
+ }).catch(function (error) {
1252
+ logger.error('Channel: Fetching later messages failed', error);
1253
+ messagesDispatcher({
1254
+ type: FETCH_NEXT_MESSAGES_FAILURE,
1255
+ payload: {
1256
+ currentGroupChannel: currentGroupChannel
1257
+ }
1258
+ });
1259
+ cb([null, error]);
1260
+ });
1261
+ }, [currentGroupChannel, latestMessageTimeStamp, hasMoreNext, replyType]);
1262
+ }
1263
+
1264
+ function useDeleteMessageCallback(_ref, _ref2) {
1265
+ var currentGroupChannel = _ref.currentGroupChannel,
1266
+ messagesDispatcher = _ref.messagesDispatcher;
1267
+ var logger = _ref2.logger;
1268
+ return useCallback(function (message) {
1269
+ logger.info('Channel | useDeleteMessageCallback: Deleting message', message);
1270
+ var requestState = message.requestState;
1271
+ return new Promise(function (resolve, reject) {
1272
+ logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', requestState); // Message is only on local
1273
+
1274
+ if (requestState === 'failed' || requestState === 'pending') {
1275
+ logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message);
1276
+ messagesDispatcher({
1277
+ type: ON_MESSAGE_DELETED_BY_REQ_ID,
1278
+ payload: message.reqId
1279
+ });
1280
+ resolve(message);
1281
+ }
1282
+
1283
+ logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', requestState);
1284
+ currentGroupChannel.deleteMessage(message).then(function () {
1285
+ logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message);
1286
+ messagesDispatcher({
1287
+ type: ON_MESSAGE_DELETED,
1288
+ payload: message.messageId
1289
+ });
1290
+ resolve(message);
1291
+ }).catch(function (err) {
1292
+ logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
1293
+ reject(err);
1294
+ });
1295
+ });
1296
+ }, [currentGroupChannel, messagesDispatcher]);
1297
+ }
1298
+
1299
+ function useUpdateMessageCallback(_ref, _ref2) {
1300
+ var currentGroupChannel = _ref.currentGroupChannel,
1301
+ messagesDispatcher = _ref.messagesDispatcher,
1302
+ onBeforeUpdateUserMessage = _ref.onBeforeUpdateUserMessage,
1303
+ isMentionEnabled = _ref.isMentionEnabled;
1304
+ var logger = _ref2.logger,
1305
+ pubSub = _ref2.pubSub;
1306
+ return useCallback(function (props, callback) {
1307
+ var messageId = props.messageId,
1308
+ message = props.message,
1309
+ mentionedUsers = props.mentionedUsers,
1310
+ mentionTemplate = props.mentionTemplate;
1311
+
1312
+ var createParamsDefault = function createParamsDefault() {
1313
+ var params = {};
1314
+ params.message = message;
1315
+
1316
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1317
+ params.mentionedUsers = mentionedUsers;
1318
+ }
1319
+
1320
+ if (isMentionEnabled && mentionTemplate) {
1321
+ params.mentionedMessageTemplate = mentionTemplate;
1322
+ } else {
1323
+ params.mentionedMessageTemplate = message;
1324
+ }
1325
+
1326
+ return params;
1327
+ };
1328
+
1329
+ var createCustomPrams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
1330
+
1331
+ if (createCustomPrams) {
1332
+ logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
1333
+ }
1334
+
1335
+ var params = onBeforeUpdateUserMessage ? onBeforeUpdateUserMessage(message) : createParamsDefault();
1336
+ logger.info('Channel: Updating message!', params);
1337
+ currentGroupChannel.updateUserMessage(messageId, params).then(function (msg, err) {
1338
+ if (callback) {
1339
+ callback(err, msg);
1340
+ }
1341
+
1342
+ logger.info('Channel: Updating message success!', msg);
1343
+ messagesDispatcher({
1344
+ type: ON_MESSAGE_UPDATED,
1345
+ payload: {
1346
+ channel: currentGroupChannel,
1347
+ message: msg
1348
+ }
1349
+ });
1350
+ pubSub.publish(UPDATE_USER_MESSAGE, {
1351
+ message: msg,
1352
+ channel: currentGroupChannel
1353
+ });
1354
+ });
1355
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
1356
+ }
1357
+
1358
+ function useResendMessageCallback(_ref, _ref2) {
1359
+ var currentGroupChannel = _ref.currentGroupChannel,
1360
+ messagesDispatcher = _ref.messagesDispatcher;
1361
+ var logger = _ref2.logger;
1362
+ return useCallback(function (failedMessage) {
1363
+ logger.info('Channel: Resending message has started', failedMessage);
1364
+ var messageType = failedMessage.messageType,
1365
+ file = failedMessage.file;
1366
+
1367
+ if (failedMessage && typeof failedMessage.isResendable === 'function' && failedMessage.isResendable()) {
1368
+ // Move the logic setting sendingStatus to pending into the reducer
1369
+ // eslint-disable-next-line no-param-reassign
1370
+ failedMessage.requestState = 'pending'; // eslint-disable-next-line no-param-reassign
1371
+
1372
+ failedMessage.sendingStatus = 'pending';
1373
+ messagesDispatcher({
1374
+ type: RESEND_MESSAGEGE_START,
1375
+ payload: failedMessage
1376
+ }); // userMessage
1377
+
1378
+ if (messageType === 'user') {
1379
+ currentGroupChannel.resendUserMessage(failedMessage).then(function (message) {
1380
+ logger.info('Channel: Resending message success!', message);
1381
+ messagesDispatcher({
1382
+ type: SEND_MESSAGEGE_SUCESS,
1383
+ payload: message
1384
+ });
1385
+ }).catch(function (e) {
1386
+ logger.warning('Channel: Resending message failed!', e); // eslint-disable-next-line no-param-reassign
1387
+
1388
+ failedMessage.requestState = 'failed'; // eslint-disable-next-line no-param-reassign
1389
+
1390
+ failedMessage.sendingStatus = 'failed';
1391
+ messagesDispatcher({
1392
+ type: SEND_MESSAGEGE_FAILURE,
1393
+ payload: failedMessage
1394
+ });
1395
+ }); // eslint-disable-next-line no-param-reassign
1396
+
1397
+ failedMessage.requestState = 'pending'; // eslint-disable-next-line no-param-reassign
1398
+
1399
+ failedMessage.sendingStatus = 'pending';
1400
+ messagesDispatcher({
1401
+ type: RESEND_MESSAGEGE_START,
1402
+ payload: failedMessage
1403
+ });
1404
+ return;
1405
+ }
1406
+
1407
+ if (messageType === 'file') {
1408
+ currentGroupChannel.resendFileMessage(failedMessage, file).then(function (message) {
1409
+ logger.info('Channel: Resending file message success!', message);
1410
+ messagesDispatcher({
1411
+ type: SEND_MESSAGEGE_SUCESS,
1412
+ payload: message
1413
+ });
1414
+ }).catch(function (e) {
1415
+ logger.warning('Channel: Resending file message failed!', e); // eslint-disable-next-line no-param-reassign
1416
+
1417
+ failedMessage.requestState = 'failed'; // eslint-disable-next-line no-param-reassign
1418
+
1419
+ failedMessage.sendingStatus = 'failed';
1420
+ messagesDispatcher({
1421
+ type: SEND_MESSAGEGE_FAILURE,
1422
+ payload: failedMessage
1423
+ });
1424
+ }); // eslint-disable-next-line no-param-reassign
1425
+
1426
+ failedMessage.requestState = 'pending'; // eslint-disable-next-line no-param-reassign
1427
+
1428
+ failedMessage.sendingStatus = 'pending';
1429
+ messagesDispatcher({
1430
+ type: RESEND_MESSAGEGE_START,
1431
+ payload: failedMessage
1432
+ });
1433
+ }
1434
+ } else {
1435
+ // to alert user on console
1436
+ // eslint-disable-next-line no-console
1437
+ console.error('Message is not resendable');
1438
+ logger.warning('Message is not resendable', failedMessage);
1439
+ }
1440
+ }, [currentGroupChannel, messagesDispatcher]);
1441
+ }
1442
+
1443
+ function useSendMessageCallback(_ref, _ref2) {
1444
+ var isMentionEnabled = _ref.isMentionEnabled,
1445
+ currentGroupChannel = _ref.currentGroupChannel,
1446
+ onBeforeSendUserMessage = _ref.onBeforeSendUserMessage;
1447
+ var logger = _ref2.logger,
1448
+ pubSub = _ref2.pubSub,
1449
+ messagesDispatcher = _ref2.messagesDispatcher;
1450
+ var messageInputRef = useRef(null);
1451
+ var sendMessage = useCallback(function (props) {
1452
+ var _props$quoteMessage = props.quoteMessage,
1453
+ quoteMessage = _props$quoteMessage === void 0 ? null : _props$quoteMessage,
1454
+ message = props.message,
1455
+ mentionTemplate = props.mentionTemplate,
1456
+ mentionedUsers = props.mentionedUsers;
1457
+
1458
+ var createParamsDefault = function createParamsDefault() {
1459
+ var params = {};
1460
+ params.message = (message === null || message === void 0 ? void 0 : message.trim()) || message; // if (isMentionEnabled && mentionedUserIds?.length > 0) {
1461
+
1462
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1463
+ // params.mentionedUserIds = mentionedUserIds;
1464
+ params.mentionedUsers = mentionedUsers;
1465
+ } // if (isMentionEnabled && mentionTemplate && mentionedUserIds?.length > 0) {
1466
+
1467
+
1468
+ if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
1469
+ params.mentionedMessageTemplate = (mentionTemplate === null || mentionTemplate === void 0 ? void 0 : mentionTemplate.trim()) || mentionTemplate;
1470
+ }
1471
+
1472
+ if (quoteMessage) {
1473
+ params.isReplyToChannel = true;
1474
+ params.parentMessageId = quoteMessage.messageId;
1475
+ }
1476
+
1477
+ return params;
1478
+ };
1479
+
1480
+ var createCustomPrams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
1481
+
1482
+ if (createCustomPrams) {
1483
+ logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
1484
+ }
1485
+
1486
+ var params = onBeforeSendUserMessage ? onBeforeSendUserMessage(message, quoteMessage) : createParamsDefault();
1487
+ logger.info('Channel: Sending message has started', params);
1488
+ currentGroupChannel.sendUserMessage(params).onPending(function (pendingMsg) {
1489
+ pubSub.publish(SEND_MESSAGE_START, {
1490
+ /* pubSub is used instead of messagesDispatcher
1491
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
1492
+ message: pendingMsg,
1493
+ channel: currentGroupChannel
1494
+ });
1495
+ setTimeout(function () {
1496
+ return scrollIntoLast();
1497
+ });
1498
+ }).onFailed(function (err, msg) {
1499
+ logger.warning('Channel: Sending message failed!', {
1500
+ message: msg,
1501
+ error: err
1502
+ });
1503
+ messagesDispatcher({
1504
+ type: SEND_MESSAGEGE_FAILURE,
1505
+ payload: msg
1506
+ });
1507
+ }).onSucceeded(function (msg) {
1508
+ logger.info('Channel: Sending message success!', msg);
1509
+ messagesDispatcher({
1510
+ type: SEND_MESSAGEGE_SUCESS,
1511
+ payload: msg
1512
+ });
1513
+ });
1514
+ }, [currentGroupChannel, onBeforeSendUserMessage]);
1515
+ return [messageInputRef, sendMessage];
1516
+ }
1517
+
1518
+ function useSendFileMessageCallback(_ref, _ref2) {
1519
+ var currentGroupChannel = _ref.currentGroupChannel,
1520
+ onBeforeSendFileMessage = _ref.onBeforeSendFileMessage,
1521
+ _ref$imageCompression = _ref.imageCompression,
1522
+ imageCompression = _ref$imageCompression === void 0 ? {} : _ref$imageCompression;
1523
+ var logger = _ref2.logger,
1524
+ pubSub = _ref2.pubSub,
1525
+ messagesDispatcher = _ref2.messagesDispatcher;
1526
+ var sendMessage = useCallback(function (file) {
1527
+ var quoteMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1528
+ var compressionRate = imageCompression.compressionRate,
1529
+ resizingWidth = imageCompression.resizingWidth,
1530
+ resizingHeight = imageCompression.resizingHeight;
1531
+ var createCustomParams = onBeforeSendFileMessage && typeof onBeforeSendFileMessage === 'function';
1532
+ var compressibleFileType = file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/jpeg';
1533
+ var compressibleRatio = compressionRate > 0 && compressionRate < 1; // pxToNumber returns null if values are invalid
1534
+
1535
+ var compressibleDiamensions = pxToNumber(resizingWidth) || pxToNumber(resizingHeight);
1536
+ var canCompressImage = compressibleFileType && (compressibleRatio || compressibleDiamensions);
1537
+
1538
+ var createParamsDefault = function createParamsDefault(file_) {
1539
+ var params = {};
1540
+ params.file = file_;
1541
+
1542
+ if (quoteMessage) {
1543
+ params.isReplyToChannel = true;
1544
+ params.parentMessageId = quoteMessage.messageId;
1545
+ }
1546
+
1547
+ return params;
1548
+ };
1549
+
1550
+ if (canCompressImage) {
1551
+ // Using image compression
1552
+ try {
1553
+ var image = document.createElement('img');
1554
+ image.src = URL.createObjectURL(file);
1555
+
1556
+ image.onload = function () {
1557
+ URL.revokeObjectURL(image.src);
1558
+ var canvas = document.createElement('canvas');
1559
+ var imageWdith = image.naturalWidth || image.width;
1560
+ var imageHeight = image.naturalHeight || image.height;
1561
+ var targetWidth = pxToNumber(resizingWidth) || imageWdith;
1562
+ var targetHeight = pxToNumber(resizingHeight) || imageHeight; // In canvas.toBlob(callback, mimeType, qualityArgument)
1563
+ // qualityArgument doesnt work
1564
+ // so in case compressibleDiamensions are not present, we use ratio
1565
+
1566
+ if (file.type === 'image/png' && !compressibleDiamensions) {
1567
+ targetWidth *= compressionRate;
1568
+ targetHeight *= compressionRate;
1569
+ }
1570
+
1571
+ canvas.width = targetWidth;
1572
+ canvas.height = targetHeight;
1573
+ var context = canvas.getContext('2d');
1574
+ context.drawImage(image, 0, 0, targetWidth, targetHeight);
1575
+ context.canvas.toBlob(function (newImageBlob) {
1576
+ var compressedFile = new File([newImageBlob], file.name, {
1577
+ type: file.type
1578
+ });
1579
+
1580
+ if (createCustomParams) {
1581
+ logger.info('Channel: Creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1582
+ }
1583
+
1584
+ var params = createCustomParams ? onBeforeSendFileMessage(compressedFile, quoteMessage) : createParamsDefault(compressedFile);
1585
+ logger.info('Channel: Uploading file message start!', params);
1586
+ currentGroupChannel.sendFileMessage(params).onPending(function (pendingMessage) {
1587
+ pubSub.publish(SEND_MESSAGE_START, {
1588
+ /* pubSub is used instead of messagesDispatcher
1589
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
1590
+ message: _objectSpread2(_objectSpread2({}, pendingMessage), {}, {
1591
+ url: URL.createObjectURL(compressedFile),
1592
+ // pending thumbnail message seems to be failed
1593
+ requestState: 'pending'
1594
+ }),
1595
+ channel: currentGroupChannel
1596
+ });
1597
+ setTimeout(function () {
1598
+ return scrollIntoLast();
1599
+ }, 1000);
1600
+ }).onFailed(function (err, failedMessage) {
1601
+ logger.error('Channel: Sending file message failed!', {
1602
+ failedMessage: failedMessage,
1603
+ err: err
1604
+ }); // eslint-disable-next-line no-param-reassign
1605
+
1606
+ failedMessage.localUrl = URL.createObjectURL(compressedFile); // eslint-disable-next-line no-param-reassign
1607
+
1608
+ failedMessage.file = compressedFile;
1609
+ messagesDispatcher({
1610
+ type: SEND_MESSAGEGE_FAILURE,
1611
+ payload: failedMessage
1612
+ });
1613
+ }).onSucceeded(function (succeededMessage) {
1614
+ logger.info('Channel: Sending file message success!', succeededMessage);
1615
+ messagesDispatcher({
1616
+ type: SEND_MESSAGEGE_SUCESS,
1617
+ payload: succeededMessage
1618
+ });
1619
+ });
1620
+ }, file.type, compressionRate);
1621
+ };
1622
+ } catch (error) {
1623
+ logger.error('Channel: Sending file message failed!', error);
1624
+ }
1625
+ } else {
1626
+ // Not using image compression
1627
+ if (createCustomParams) {
1628
+ logger.info('Channel: creating params using onBeforeSendFileMessage', onBeforeSendFileMessage);
1629
+ }
1630
+
1631
+ var params = onBeforeSendFileMessage ? onBeforeSendFileMessage(file, quoteMessage) : createParamsDefault(file);
1632
+ logger.info('Channel: Uploading file message start!', params);
1633
+ currentGroupChannel.sendFileMessage(params).onPending(function (pendingMsg) {
1634
+ pubSub.publish(SEND_MESSAGE_START, {
1635
+ /* pubSub is used instead of messagesDispatcher
1636
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGEGE_START` */
1637
+ message: _objectSpread2(_objectSpread2({}, pendingMsg), {}, {
1638
+ url: URL.createObjectURL(file),
1639
+ // pending thumbnail message seems to be failed
1640
+ requestState: 'pending'
1641
+ }),
1642
+ channel: currentGroupChannel
1643
+ });
1644
+ setTimeout(function () {
1645
+ return scrollIntoLast();
1646
+ }, 1000);
1647
+ }).onFailed(function (error, message) {
1648
+ logger.error('Channel: Sending file message failed!', {
1649
+ message: message,
1650
+ error: error
1651
+ }); // eslint-disable-next-line no-param-reassign
1652
+
1653
+ message.localUrl = URL.createObjectURL(file); // eslint-disable-next-line no-param-reassign
1654
+
1655
+ message.file = file;
1656
+ messagesDispatcher({
1657
+ type: SEND_MESSAGEGE_FAILURE,
1658
+ payload: message
1659
+ });
1660
+ }).onSucceeded(function (message) {
1661
+ logger.info('Channel: Sending message success!', message);
1662
+ messagesDispatcher({
1663
+ type: SEND_MESSAGEGE_SUCESS,
1664
+ payload: message
1665
+ });
1666
+ });
1667
+ }
1668
+ }, [currentGroupChannel, onBeforeSendFileMessage, imageCompression]);
1669
+ return [sendMessage];
1670
+ }
1671
+
1672
+ function useMemoizedEmojiListItems(_ref, _ref2) {
1673
+ var emojiContainer = _ref.emojiContainer,
1674
+ toggleReaction = _ref.toggleReaction;
1675
+ var isReactionEnabled = _ref2.isReactionEnabled,
1676
+ logger = _ref2.logger,
1677
+ userId = _ref2.userId,
1678
+ emojiAllList = _ref2.emojiAllList;
1679
+
1680
+ /* eslint-disable react/prop-types */
1681
+ return useMemo(function () {
1682
+ return function (_ref3) {
1683
+ var parentRef = _ref3.parentRef,
1684
+ parentContainRef = _ref3.parentContainRef,
1685
+ message = _ref3.message,
1686
+ closeDropdown = _ref3.closeDropdown,
1687
+ _ref3$spaceFromTrigge = _ref3.spaceFromTrigger,
1688
+ spaceFromTrigger = _ref3$spaceFromTrigge === void 0 ? {} : _ref3$spaceFromTrigge;
1689
+
1690
+ if (!isReactionEnabled || !(parentRef || parentContainRef || message || closeDropdown)) {
1691
+ logger.warning('Channel: Invalid Params in memoizedEmojiListItems');
1692
+ return null;
1693
+ }
1694
+
1695
+ return /*#__PURE__*/React__default.createElement(EmojiListItems, {
1696
+ parentRef: parentRef,
1697
+ parentContainRef: parentContainRef,
1698
+ closeDropdown: closeDropdown,
1699
+ spaceFromTrigger: spaceFromTrigger
1700
+ }, emojiAllList.map(function (emoji) {
1701
+ var reactedReaction = message.reactions.filter(function (reaction) {
1702
+ return reaction.key === emoji.key;
1703
+ })[0];
1704
+ var isReacted = reactedReaction ? !(reactedReaction.userIds.indexOf(userId) < 0) : false;
1705
+ return /*#__PURE__*/React__default.createElement(ReactionButton, {
1706
+ key: emoji.key,
1707
+ width: "36px",
1708
+ height: "36px",
1709
+ selected: isReacted,
1710
+ onClick: function onClick() {
1711
+ closeDropdown();
1712
+ toggleReaction(message, emoji.key, isReacted);
1713
+ }
1714
+ }, /*#__PURE__*/React__default.createElement(ImageRenderer, {
1715
+ url: emoji.url,
1716
+ width: "28px",
1717
+ height: "28px",
1718
+ defaultComponent: /*#__PURE__*/React__default.createElement(Icon, {
1719
+ width: "28px",
1720
+ height: "28px",
1721
+ type: IconTypes.QUESTION
1722
+ })
1723
+ }));
1724
+ }));
1725
+ };
1726
+ }, [emojiContainer, toggleReaction]);
1727
+ }
1728
+
1729
+ function useToggleReactionCallback(_ref, _ref2) {
1730
+ var currentGroupChannel = _ref.currentGroupChannel;
1731
+ var logger = _ref2.logger;
1732
+ return useCallback(function (message, key, isReacted) {
1733
+ if (isReacted) {
1734
+ currentGroupChannel.deleteReaction(message, key).then(function (res) {
1735
+ logger.info('Delete reaction success', res);
1736
+ }).catch(function (err) {
1737
+ logger.warning('Delete reaction failed', err);
1738
+ });
1739
+ return;
1740
+ }
1741
+
1742
+ currentGroupChannel.addReaction(message, key).then(function (res) {
1743
+ logger.info('Add reaction success', res);
1744
+ }).catch(function (err) {
1745
+ logger.warning('Add reaction failed', err);
1746
+ });
1747
+ }, [currentGroupChannel]);
1748
+ }
1749
+
1750
+ function useScrollToMessage(_a, _b) {
1751
+ var setInitialTimeStamp = _a.setInitialTimeStamp,
1752
+ setAnimatedMessageId = _a.setAnimatedMessageId,
1753
+ allMessages = _a.allMessages;
1754
+ var logger = _b.logger;
1755
+ return useCallback(function (createdAt, messageId) {
1756
+ var isPresent = allMessages.find(function (m) {
1757
+ return m.messageId === messageId;
1758
+ });
1759
+ setAnimatedMessageId(null);
1760
+ setTimeout(function () {
1761
+ if (isPresent) {
1762
+ logger.info('Channel: scroll to message - message is present');
1763
+ setAnimatedMessageId(messageId);
1764
+ } else {
1765
+ logger.info('Channel: scroll to message - fetching older messages');
1766
+ setInitialTimeStamp(null);
1767
+ setInitialTimeStamp(createdAt);
1768
+ setAnimatedMessageId(messageId);
1769
+ }
1770
+ });
1771
+ }, [setInitialTimeStamp, setAnimatedMessageId, allMessages]);
1772
+ }
1773
+
1774
+ var ChannelContext = /*#__PURE__*/React__default.createContext(undefined);
1775
+
1776
+ var ChannelProvider = function ChannelProvider(props) {
1777
+ var _a, _b, _c, _d;
1778
+
1779
+ var channelUrl = props.channelUrl,
1780
+ children = props.children,
1781
+ isReactionEnabled = props.isReactionEnabled,
1782
+ isMessageGroupingEnabled = props.isMessageGroupingEnabled,
1783
+ showSearchIcon = props.showSearchIcon,
1784
+ highlightedMessage = props.highlightedMessage,
1785
+ startingPoint = props.startingPoint,
1786
+ onBeforeSendUserMessage = props.onBeforeSendUserMessage,
1787
+ onBeforeSendFileMessage = props.onBeforeSendFileMessage,
1788
+ onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage,
1789
+ onChatHeaderActionClick = props.onChatHeaderActionClick,
1790
+ onSearchClick = props.onSearchClick,
1791
+ replyType = props.replyType,
1792
+ queries = props.queries;
1793
+ var globalStore = useSendbirdStateContext();
1794
+ var config = globalStore.config;
1795
+ var pubSub = config.pubSub,
1796
+ logger = config.logger,
1797
+ userId = config.userId,
1798
+ isOnline = config.isOnline,
1799
+ imageCompression = config.imageCompression,
1800
+ isMentionEnabled = config.isMentionEnabled;
1801
+ var sdk = (_b = (_a = globalStore === null || globalStore === void 0 ? void 0 : globalStore.stores) === null || _a === void 0 ? void 0 : _a.sdkStore) === null || _b === void 0 ? void 0 : _b.sdk;
1802
+ var sdkInit = (_d = (_c = globalStore === null || globalStore === void 0 ? void 0 : globalStore.stores) === null || _c === void 0 ? void 0 : _c.sdkStore) === null || _d === void 0 ? void 0 : _d.initialized;
1803
+
1804
+ var _e = useState(startingPoint),
1805
+ initialTimeStamp = _e[0],
1806
+ setInitialTimeStamp = _e[1];
1807
+
1808
+ useEffect(function () {
1809
+ setInitialTimeStamp(startingPoint);
1810
+ }, [startingPoint, channelUrl]);
1811
+
1812
+ var _f = useState(null),
1813
+ animatedMessageId = _f[0],
1814
+ setAnimatedMessageId = _f[1];
1815
+
1816
+ var _g = useState(highlightedMessage),
1817
+ highLightedMessageId = _g[0],
1818
+ setHighLightedMessageId = _g[1];
1819
+
1820
+ useEffect(function () {
1821
+ setHighLightedMessageId(highlightedMessage);
1822
+ }, [highlightedMessage]);
1823
+ var userFilledMessageListQuery = queries === null || queries === void 0 ? void 0 : queries.messageListParams;
1824
+
1825
+ var _h = useState(null),
1826
+ quoteMessage = _h[0],
1827
+ setQuoteMessage = _h[1];
1828
+
1829
+ var _j = useReducer(reducer, messagesInitialState),
1830
+ messagesStore = _j[0],
1831
+ messagesDispatcher = _j[1];
1832
+
1833
+ var scrollRef = useRef(null);
1834
+ var allMessages = messagesStore.allMessages,
1835
+ loading = messagesStore.loading,
1836
+ initialized = messagesStore.initialized,
1837
+ unreadSince = messagesStore.unreadSince,
1838
+ isInvalid = messagesStore.isInvalid,
1839
+ currentGroupChannel = messagesStore.currentGroupChannel,
1840
+ hasMorePrev = messagesStore.hasMorePrev,
1841
+ oldestMessageTimeStamp = messagesStore.oldestMessageTimeStamp,
1842
+ hasMoreNext = messagesStore.hasMoreNext,
1843
+ latestMessageTimeStamp = messagesStore.latestMessageTimeStamp,
1844
+ emojiContainer = messagesStore.emojiContainer,
1845
+ readStatus = messagesStore.readStatus;
1846
+ var isSuper = (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.isSuper) || false;
1847
+ var isBroadcast = (currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.isBroadcast) || false;
1848
+ var appInfo = sdk.appInfo;
1849
+ var usingReaction = (appInfo === null || appInfo === void 0 ? void 0 : appInfo.useReaction) && !isBroadcast && !isSuper && isReactionEnabled // TODO: Make isReactionEnabled independent from appInfo.useReaction
1850
+ ;
1851
+ var emojiAllMap = useMemo(function () {
1852
+ return usingReaction ? getAllEmojisMapFromEmojiContainer(emojiContainer) : new Map();
1853
+ }, [emojiContainer]);
1854
+ var emojiAllList = useMemo(function () {
1855
+ return usingReaction ? getAllEmojisFromEmojiContainer(emojiContainer) : [];
1856
+ }, [emojiContainer]);
1857
+ var nicknamesMap = useMemo(function () {
1858
+ return usingReaction && currentGroupChannel ? getNicknamesMapFromMembers(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members) : new Map();
1859
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members]); // Scrollup is default scroll for channel
1860
+
1861
+ var onScrollCallback = useScrollCallback({
1862
+ currentGroupChannel: currentGroupChannel,
1863
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
1864
+ userFilledMessageListQuery: userFilledMessageListQuery,
1865
+ replyType: replyType
1866
+ }, {
1867
+ hasMorePrev: hasMorePrev,
1868
+ logger: logger,
1869
+ messagesDispatcher: messagesDispatcher,
1870
+ sdk: sdk
1871
+ });
1872
+ var scrollToMessage = useScrollToMessage({
1873
+ setInitialTimeStamp: setInitialTimeStamp,
1874
+ setAnimatedMessageId: setAnimatedMessageId,
1875
+ allMessages: allMessages
1876
+ }, {
1877
+ logger: logger
1878
+ }); // onScrollDownCallback is added for navigation to different timestamps on messageSearch
1879
+ // hasMorePrev, onScrollCallback -> scroll up(default behavior)
1880
+ // hasMoreNext, onScrollDownCallback -> scroll down
1881
+
1882
+ var onScrollDownCallback = useScrollDownCallback({
1883
+ currentGroupChannel: currentGroupChannel,
1884
+ latestMessageTimeStamp: latestMessageTimeStamp,
1885
+ userFilledMessageListQuery: userFilledMessageListQuery,
1886
+ hasMoreNext: hasMoreNext,
1887
+ replyType: replyType
1888
+ }, {
1889
+ logger: logger,
1890
+ messagesDispatcher: messagesDispatcher,
1891
+ sdk: sdk
1892
+ });
1893
+ var toggleReaction = useToggleReactionCallback({
1894
+ currentGroupChannel: currentGroupChannel
1895
+ }, {
1896
+ logger: logger
1897
+ });
1898
+ var memoizedEmojiListItems = useMemoizedEmojiListItems({
1899
+ emojiContainer: emojiContainer,
1900
+ toggleReaction: toggleReaction
1901
+ }, {
1902
+ isReactionEnabled: usingReaction,
1903
+ logger: logger,
1904
+ userId: userId,
1905
+ emojiAllList: emojiAllList
1906
+ }); // to create message-datasource
1907
+ // this hook sets currentGroupChannel asynchronously
1908
+
1909
+ useSetChannel({
1910
+ channelUrl: channelUrl,
1911
+ sdkInit: sdkInit
1912
+ }, {
1913
+ messagesDispatcher: messagesDispatcher,
1914
+ sdk: sdk,
1915
+ logger: logger
1916
+ }); // to set quote message as null
1917
+
1918
+ useEffect(function () {
1919
+ setQuoteMessage(null);
1920
+ }, [channelUrl]); // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
1921
+
1922
+ useHandleChannelEvents({
1923
+ currentGroupChannel: currentGroupChannel,
1924
+ sdkInit: sdkInit,
1925
+ hasMoreNext: hasMoreNext
1926
+ }, {
1927
+ messagesDispatcher: messagesDispatcher,
1928
+ sdk: sdk,
1929
+ logger: logger,
1930
+ scrollRef: scrollRef,
1931
+ setQuoteMessage: setQuoteMessage
1932
+ }); // hook that fetches messages when channel changes
1933
+ // to be clear here useGetChannel sets currentGroupChannel
1934
+ // and useInitialMessagesFetch executes when currentGroupChannel changes
1935
+ // p.s This one executes on initialTimeStamp change too
1936
+
1937
+ useInitialMessagesFetch({
1938
+ currentGroupChannel: currentGroupChannel,
1939
+ userFilledMessageListQuery: userFilledMessageListQuery,
1940
+ initialTimeStamp: initialTimeStamp,
1941
+ latestMessageTimeStamp: latestMessageTimeStamp,
1942
+ replyType: replyType
1943
+ }, {
1944
+ logger: logger,
1945
+ messagesDispatcher: messagesDispatcher
1946
+ }); // handles API calls from withSendbird
1947
+
1948
+ useEffect(function () {
1949
+ var subScriber = pubSubHandler(channelUrl, pubSub, messagesDispatcher);
1950
+ return function () {
1951
+ pubSubHandleRemover(subScriber);
1952
+ };
1953
+ }, [channelUrl, sdkInit]); // handling connection breaks
1954
+
1955
+ useHandleReconnect({
1956
+ isOnline: isOnline,
1957
+ replyType: replyType
1958
+ }, {
1959
+ logger: logger,
1960
+ sdk: sdk,
1961
+ currentGroupChannel: currentGroupChannel,
1962
+ messagesDispatcher: messagesDispatcher,
1963
+ userFilledMessageListQuery: userFilledMessageListQuery
1964
+ }); // callbacks for Message CURD actions
1965
+
1966
+ var deleteMessage = useDeleteMessageCallback({
1967
+ currentGroupChannel: currentGroupChannel,
1968
+ messagesDispatcher: messagesDispatcher
1969
+ }, {
1970
+ logger: logger
1971
+ });
1972
+ var updateMessage = useUpdateMessageCallback({
1973
+ currentGroupChannel: currentGroupChannel,
1974
+ messagesDispatcher: messagesDispatcher,
1975
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage,
1976
+ isMentionEnabled: isMentionEnabled
1977
+ }, {
1978
+ logger: logger,
1979
+ pubSub: pubSub
1980
+ });
1981
+ var resendMessage = useResendMessageCallback({
1982
+ currentGroupChannel: currentGroupChannel,
1983
+ messagesDispatcher: messagesDispatcher
1984
+ }, {
1985
+ logger: logger
1986
+ });
1987
+
1988
+ var _k = useSendMessageCallback({
1989
+ currentGroupChannel: currentGroupChannel,
1990
+ onBeforeSendUserMessage: onBeforeSendUserMessage,
1991
+ isMentionEnabled: isMentionEnabled
1992
+ }, {
1993
+ logger: logger,
1994
+ pubSub: pubSub,
1995
+ messagesDispatcher: messagesDispatcher
1996
+ }),
1997
+ messageInputRef = _k[0],
1998
+ sendMessage = _k[1];
1999
+
2000
+ var sendFileMessage = useSendFileMessageCallback({
2001
+ currentGroupChannel: currentGroupChannel,
2002
+ onBeforeSendFileMessage: onBeforeSendFileMessage,
2003
+ imageCompression: imageCompression
2004
+ }, {
2005
+ logger: logger,
2006
+ pubSub: pubSub,
2007
+ messagesDispatcher: messagesDispatcher
2008
+ })[0];
2009
+ return /*#__PURE__*/React__default.createElement(ChannelContext.Provider, {
2010
+ value: {
2011
+ // props
2012
+ channelUrl: channelUrl,
2013
+ isReactionEnabled: usingReaction,
2014
+ isMessageGroupingEnabled: isMessageGroupingEnabled,
2015
+ showSearchIcon: showSearchIcon,
2016
+ highlightedMessage: highlightedMessage,
2017
+ startingPoint: startingPoint,
2018
+ onBeforeSendUserMessage: onBeforeSendUserMessage,
2019
+ onBeforeSendFileMessage: onBeforeSendFileMessage,
2020
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage,
2021
+ onChatHeaderActionClick: onChatHeaderActionClick,
2022
+ onSearchClick: onSearchClick,
2023
+ replyType: replyType,
2024
+ queries: queries,
2025
+ // messagesStore
2026
+ allMessages: allMessages,
2027
+ loading: loading,
2028
+ initialized: initialized,
2029
+ unreadSince: unreadSince,
2030
+ isInvalid: isInvalid,
2031
+ currentGroupChannel: currentGroupChannel,
2032
+ hasMorePrev: hasMorePrev,
2033
+ hasMoreNext: hasMoreNext,
2034
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
2035
+ latestMessageTimeStamp: latestMessageTimeStamp,
2036
+ emojiContainer: emojiContainer,
2037
+ readStatus: readStatus,
2038
+ // utils
2039
+ scrollToMessage: scrollToMessage,
2040
+ quoteMessage: quoteMessage,
2041
+ setQuoteMessage: setQuoteMessage,
2042
+ deleteMessage: deleteMessage,
2043
+ updateMessage: updateMessage,
2044
+ resendMessage: resendMessage,
2045
+ messageInputRef: messageInputRef,
2046
+ sendMessage: sendMessage,
2047
+ sendFileMessage: sendFileMessage,
2048
+ initialTimeStamp: initialTimeStamp,
2049
+ messageActionTypes: messageActionTypes,
2050
+ messagesDispatcher: messagesDispatcher,
2051
+ setInitialTimeStamp: setInitialTimeStamp,
2052
+ setAnimatedMessageId: setAnimatedMessageId,
2053
+ setHighLightedMessageId: setHighLightedMessageId,
2054
+ animatedMessageId: animatedMessageId,
2055
+ highLightedMessageId: highLightedMessageId,
2056
+ nicknamesMap: nicknamesMap,
2057
+ emojiAllMap: emojiAllMap,
2058
+ onScrollCallback: onScrollCallback,
2059
+ onScrollDownCallback: onScrollDownCallback,
2060
+ memoizedEmojiListItems: memoizedEmojiListItems,
2061
+ scrollRef: scrollRef,
2062
+ toggleReaction: toggleReaction
2063
+ }
2064
+ }, /*#__PURE__*/React__default.createElement(UserProfileProvider, {
2065
+ disableUserProfile: props === null || props === void 0 ? void 0 : props.disableUserProfile,
2066
+ renderUserProfile: props === null || props === void 0 ? void 0 : props.renderUserProfile
2067
+ }, children));
2068
+ };
2069
+
2070
+ var useChannelContext = function useChannelContext() {
2071
+ return React__default.useContext(ChannelContext);
2072
+ };
2073
+
2074
+ export { ChannelProvider as C, MARK_AS_READ as M, isDisabledBecauseFrozen as a, isDisabledBecauseMuted as b, compareMessagesForGrouping as c, isOperator as d, isAboutSame as i, useChannelContext as u };
2075
+ //# sourceMappingURL=ChannelProvider-c0ed5fae.js.map