@sendbird/uikit-react 3.0.0-alpha.1 → 3.0.0-beta.2

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