@sendbird/uikit-react 3.14.3-rc.1 → 3.14.4

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 (1061) hide show
  1. package/App.js +377 -378
  2. package/App.js.map +1 -1
  3. package/CHANGELOG.md +38 -2
  4. package/Channel/components/ChannelHeader.js +36 -34
  5. package/Channel/components/ChannelHeader.js.map +1 -1
  6. package/Channel/components/ChannelUI.js +74 -74
  7. package/Channel/components/FileViewer.js +37 -33
  8. package/Channel/components/FileViewer.js.map +1 -1
  9. package/Channel/components/FrozenNotification.js +5 -5
  10. package/Channel/components/Message.js +80 -81
  11. package/Channel/components/Message.js.map +1 -1
  12. package/Channel/components/MessageInput.js +72 -70
  13. package/Channel/components/MessageInput.js.map +1 -1
  14. package/Channel/components/MessageInputWrapper.js +45 -43
  15. package/Channel/components/MessageInputWrapper.js.map +1 -1
  16. package/Channel/components/MessageList.js +249 -250
  17. package/Channel/components/MessageList.js.map +1 -1
  18. package/Channel/components/RemoveMessageModal.js +38 -33
  19. package/Channel/components/RemoveMessageModal.js.map +1 -1
  20. package/Channel/components/SuggestedMentionList.js +29 -30
  21. package/Channel/components/SuggestedMentionList.js.map +1 -1
  22. package/Channel/components/TypingIndicator.js +6 -6
  23. package/Channel/components/UnreadCount.js +7 -7
  24. package/Channel/context.js +1453 -1453
  25. package/Channel/hooks/useHandleUploadFiles.js +125 -120
  26. package/Channel/hooks/useHandleUploadFiles.js.map +1 -1
  27. package/Channel/hooks/useInitialMessagesFetch.js +6 -6
  28. package/Channel/utils/compareMessagesForGrouping.js +50 -51
  29. package/Channel/utils/compareMessagesForGrouping.js.map +1 -1
  30. package/Channel/utils/getMessagePartsInfo.js +26 -27
  31. package/Channel/utils/getMessagePartsInfo.js.map +1 -1
  32. package/Channel.js +71 -71
  33. package/ChannelList/components/AddChannel.js +29 -26
  34. package/ChannelList/components/AddChannel.js.map +1 -1
  35. package/ChannelList/components/ChannelListHeader.js +13 -8
  36. package/ChannelList/components/ChannelListHeader.js.map +1 -1
  37. package/ChannelList/components/ChannelListUI.js +109 -106
  38. package/ChannelList/components/ChannelListUI.js.map +1 -1
  39. package/ChannelList/components/ChannelPreview.js +43 -38
  40. package/ChannelList/components/ChannelPreview.js.map +1 -1
  41. package/ChannelList/components/ChannelPreviewAction.js +16 -12
  42. package/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  43. package/ChannelList/context.js +9 -10
  44. package/ChannelList/context.js.map +1 -1
  45. package/ChannelList.js +43 -40
  46. package/ChannelList.js.map +1 -1
  47. package/ChannelSettings/components/ChannelProfile.js +57 -47
  48. package/ChannelSettings/components/ChannelProfile.js.map +1 -1
  49. package/ChannelSettings/components/ChannelSettingsHeader.js +24 -21
  50. package/ChannelSettings/components/ChannelSettingsHeader.js.map +1 -1
  51. package/ChannelSettings/components/ChannelSettingsUI.js +78 -75
  52. package/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  53. package/ChannelSettings/components/EditDetailsModal.js +90 -80
  54. package/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  55. package/ChannelSettings/components/LeaveChannel.js +63 -53
  56. package/ChannelSettings/components/LeaveChannel.js.map +1 -1
  57. package/ChannelSettings/components/ModerationPanel.js +447 -445
  58. package/ChannelSettings/components/ModerationPanel.js.map +1 -1
  59. package/ChannelSettings/components/UserListItem.js +49 -49
  60. package/ChannelSettings/components/UserPanel.js +47 -45
  61. package/ChannelSettings/components/UserPanel.js.map +1 -1
  62. package/ChannelSettings/context.js +105 -105
  63. package/ChannelSettings.js +35 -32
  64. package/ChannelSettings.js.map +1 -1
  65. package/CreateChannel/components/CreateChannelUI.js +33 -29
  66. package/CreateChannel/components/CreateChannelUI.js.map +1 -1
  67. package/CreateChannel/components/InviteUsers.js +143 -139
  68. package/CreateChannel/components/InviteUsers.js.map +1 -1
  69. package/CreateChannel/components/SelectChannelType.js +76 -65
  70. package/CreateChannel/components/SelectChannelType.js.map +1 -1
  71. package/CreateChannel/context.js +4 -4
  72. package/CreateChannel.js +27 -23
  73. package/CreateChannel.js.map +1 -1
  74. package/CreateOpenChannel/components/CreateOpenChannelUI.js +63 -52
  75. package/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  76. package/CreateOpenChannel/context.js +41 -41
  77. package/CreateOpenChannel.js +28 -17
  78. package/CreateOpenChannel.js.map +1 -1
  79. package/EditUserProfile/components/EditUserProfileUI.js +110 -99
  80. package/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  81. package/EditUserProfile/context.js +12 -12
  82. package/EditUserProfile.js +27 -16
  83. package/EditUserProfile.js.map +1 -1
  84. package/GroupChannel/components/FileViewer.js +62 -58
  85. package/GroupChannel/components/FileViewer.js.map +1 -1
  86. package/GroupChannel/components/FrozenNotification.js +10 -10
  87. package/GroupChannel/components/GroupChannelHeader.js +30 -28
  88. package/GroupChannel/components/GroupChannelHeader.js.map +1 -1
  89. package/GroupChannel/components/GroupChannelUI.js +68 -68
  90. package/GroupChannel/components/Message.js +66 -77
  91. package/GroupChannel/components/Message.js.map +1 -1
  92. package/GroupChannel/components/MessageInputWrapper.js +63 -62
  93. package/GroupChannel/components/MessageInputWrapper.js.map +1 -1
  94. package/GroupChannel/components/MessageList.js +154 -155
  95. package/GroupChannel/components/MessageList.js.map +1 -1
  96. package/GroupChannel/components/RemoveMessageModal.js +32 -27
  97. package/GroupChannel/components/RemoveMessageModal.js.map +1 -1
  98. package/GroupChannel/components/SuggestedMentionList.js +14 -14
  99. package/GroupChannel/components/SuggestedReplies.js +15 -14
  100. package/GroupChannel/components/SuggestedReplies.js.map +1 -1
  101. package/GroupChannel/components/TypingIndicator.js +59 -59
  102. package/GroupChannel/components/UnreadCount.js +26 -26
  103. package/GroupChannel/context.js +568 -568
  104. package/GroupChannel.js +65 -65
  105. package/GroupChannelList/components/AddGroupChannel.js +30 -27
  106. package/GroupChannelList/components/AddGroupChannel.js.map +1 -1
  107. package/GroupChannelList/components/GroupChannelListHeader.js +34 -28
  108. package/GroupChannelList/components/GroupChannelListHeader.js.map +1 -1
  109. package/GroupChannelList/components/GroupChannelListItem.js +39 -35
  110. package/GroupChannelList/components/GroupChannelListItem.js.map +1 -1
  111. package/GroupChannelList/components/GroupChannelListUI.js +86 -83
  112. package/GroupChannelList/components/GroupChannelListUI.js.map +1 -1
  113. package/GroupChannelList/components/GroupChannelPreviewAction.js +48 -44
  114. package/GroupChannelList/components/GroupChannelPreviewAction.js.map +1 -1
  115. package/GroupChannelList/context.js +81 -97
  116. package/GroupChannelList/context.js.map +1 -1
  117. package/GroupChannelList.js +43 -40
  118. package/GroupChannelList.js.map +1 -1
  119. package/Message/context.js +21 -21
  120. package/Message/hooks/useDirtyGetMentions.js +52 -52
  121. package/MessageSearch/components/MessageSearchUI.js +71 -72
  122. package/MessageSearch/components/MessageSearchUI.js.map +1 -1
  123. package/MessageSearch/context.js +247 -247
  124. package/MessageSearch.js +59 -59
  125. package/OpenChannel/components/FrozenChannelNotification.js +9 -9
  126. package/OpenChannel/components/OpenChannelHeader.js +43 -38
  127. package/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  128. package/OpenChannel/components/OpenChannelInput.js +47 -45
  129. package/OpenChannel/components/OpenChannelInput.js.map +1 -1
  130. package/OpenChannel/components/OpenChannelMessage.js +158 -157
  131. package/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  132. package/OpenChannel/components/OpenChannelMessageList.js +95 -94
  133. package/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  134. package/OpenChannel/components/OpenChannelUI.js +71 -70
  135. package/OpenChannel/components/OpenChannelUI.js.map +1 -1
  136. package/OpenChannel/context.js +23 -18
  137. package/OpenChannel/context.js.map +1 -1
  138. package/OpenChannel.js +44 -43
  139. package/OpenChannel.js.map +1 -1
  140. package/OpenChannelList/components/OpenChannelListUI.js +102 -92
  141. package/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  142. package/OpenChannelList/components/OpenChannelPreview.js +20 -20
  143. package/OpenChannelList/context.js +3 -3
  144. package/OpenChannelList.js +34 -24
  145. package/OpenChannelList.js.map +1 -1
  146. package/OpenChannelSettings/components/EditDetailsModal.js +82 -73
  147. package/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  148. package/OpenChannelSettings/components/OpenChannelProfile.js +47 -38
  149. package/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  150. package/OpenChannelSettings/components/OpenChannelSettingsUI.js +61 -57
  151. package/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  152. package/OpenChannelSettings/components/OperatorUI.js +454 -450
  153. package/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  154. package/OpenChannelSettings/components/ParticipantUI.js +21 -17
  155. package/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  156. package/OpenChannelSettings/context.js +114 -114
  157. package/OpenChannelSettings.js +29 -25
  158. package/OpenChannelSettings.js.map +1 -1
  159. package/README.md +2 -13
  160. package/SendbirdProvider.js +1139 -1183
  161. package/SendbirdProvider.js.map +1 -1
  162. package/Thread/components/ParentMessageInfo.js +240 -239
  163. package/Thread/components/ParentMessageInfo.js.map +1 -1
  164. package/Thread/components/ParentMessageInfoItem.js +148 -148
  165. package/Thread/components/ThreadHeader.js +23 -26
  166. package/Thread/components/ThreadHeader.js.map +1 -1
  167. package/Thread/components/ThreadList.js +122 -122
  168. package/Thread/components/ThreadListItem.js +341 -340
  169. package/Thread/components/ThreadListItem.js.map +1 -1
  170. package/Thread/components/ThreadMessageInput.js +167 -165
  171. package/Thread/components/ThreadMessageInput.js.map +1 -1
  172. package/Thread/components/ThreadUI.js +207 -207
  173. package/Thread/context/types.js +21 -21
  174. package/Thread/context.js +1283 -1281
  175. package/Thread/context.js.map +1 -1
  176. package/Thread.js +73 -73
  177. package/VoicePlayer/context.js +3 -3
  178. package/VoicePlayer/useVoicePlayer.js +68 -60
  179. package/VoicePlayer/useVoicePlayer.js.map +1 -1
  180. package/VoiceRecorder/context.js +21 -127
  181. package/VoiceRecorder/context.js.map +1 -1
  182. package/VoiceRecorder/useVoiceRecorder.js +105 -96
  183. package/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  184. package/chunks/{bundle-CNVxTIOs.js → bundle--nVHk3fx.js} +161 -162
  185. package/chunks/{bundle-CNVxTIOs.js.map → bundle--nVHk3fx.js.map} +1 -1
  186. package/chunks/{bundle-BRaG5EHs.js → bundle-2uJIsyo2.js} +27 -27
  187. package/chunks/bundle-2uJIsyo2.js.map +1 -0
  188. package/chunks/bundle-3amhHjNa.js +120 -0
  189. package/chunks/bundle-3amhHjNa.js.map +1 -0
  190. package/chunks/{bundle-Dd7yWAzk.js → bundle-7oF7KbGv.js} +2 -2
  191. package/chunks/{bundle-Dd7yWAzk.js.map → bundle-7oF7KbGv.js.map} +1 -1
  192. package/chunks/{bundle-DVDuILQh.js → bundle-9MhshueU.js} +21 -21
  193. package/chunks/bundle-9MhshueU.js.map +1 -0
  194. package/chunks/{bundle-BRt6gbIr.js → bundle-B5N2u5f-.js} +1 -1
  195. package/chunks/bundle-B5N2u5f-.js.map +1 -0
  196. package/chunks/{bundle-BZt7yK_Y.js → bundle-B7barEsR.js} +19 -19
  197. package/chunks/bundle-B7barEsR.js.map +1 -0
  198. package/chunks/{bundle-DX0g6QGP.js → bundle-B8gKMDtp.js} +28 -28
  199. package/chunks/bundle-B8gKMDtp.js.map +1 -0
  200. package/chunks/{bundle-JfMKdEOr.js → bundle-BAvMd_j0.js} +45 -46
  201. package/chunks/bundle-BAvMd_j0.js.map +1 -0
  202. package/chunks/{bundle-CpmDD_qj.js → bundle-BHn3F_OF.js} +17 -17
  203. package/chunks/bundle-BHn3F_OF.js.map +1 -0
  204. package/chunks/{bundle-D7HxTsM2.js → bundle-BJ46V6XQ.js} +10 -10
  205. package/chunks/bundle-BJ46V6XQ.js.map +1 -0
  206. package/chunks/{bundle-E_q9aH_b.js → bundle-BKho3Uub.js} +11 -11
  207. package/chunks/bundle-BKho3Uub.js.map +1 -0
  208. package/chunks/{bundle-1Vgo9VWV.js → bundle-BOSnopxk.js} +8 -8
  209. package/chunks/bundle-BOSnopxk.js.map +1 -0
  210. package/chunks/{bundle-zd7rBmLl.js → bundle-BTD0sBED.js} +89 -89
  211. package/chunks/{bundle-zd7rBmLl.js.map → bundle-BTD0sBED.js.map} +1 -1
  212. package/chunks/{bundle-Dh8TY5YU.js → bundle-BTkRy0wv.js} +94 -94
  213. package/chunks/{bundle-Dh8TY5YU.js.map → bundle-BTkRy0wv.js.map} +1 -1
  214. package/chunks/{bundle-Cgpa9xMh.js → bundle-BWCGFXhj.js} +732 -731
  215. package/chunks/bundle-BWCGFXhj.js.map +1 -0
  216. package/chunks/{bundle-DtHyIHaJ.js → bundle-BWuyd0AD.js} +37 -37
  217. package/chunks/bundle-BWuyd0AD.js.map +1 -0
  218. package/chunks/{bundle-DCzxcNn2.js → bundle-BZd5IHBF.js} +83 -83
  219. package/chunks/{bundle-DCzxcNn2.js.map → bundle-BZd5IHBF.js.map} +1 -1
  220. package/chunks/{bundle-P4HvWTGS.js → bundle-B__zC9zD.js} +131 -132
  221. package/chunks/bundle-B__zC9zD.js.map +1 -0
  222. package/chunks/bundle-BbWD2VuS.js +93 -0
  223. package/chunks/bundle-BbWD2VuS.js.map +1 -0
  224. package/chunks/{bundle-Dkj6zqd4.js → bundle-Bi8Wfc2I.js} +1326 -1327
  225. package/chunks/{bundle-Dkj6zqd4.js.map → bundle-Bi8Wfc2I.js.map} +1 -1
  226. package/chunks/{bundle-Dgyb-yNN.js → bundle-BjrRhdgd.js} +258 -258
  227. package/chunks/{bundle-Dgyb-yNN.js.map → bundle-BjrRhdgd.js.map} +1 -1
  228. package/chunks/{bundle-D_MTREEI.js → bundle-BmTGlIgs.js} +920 -923
  229. package/chunks/{bundle-D_MTREEI.js.map → bundle-BmTGlIgs.js.map} +1 -1
  230. package/chunks/{bundle-D_o_gdug.js → bundle-BtY8jyVv.js} +26 -26
  231. package/chunks/{bundle-D_o_gdug.js.map → bundle-BtY8jyVv.js.map} +1 -1
  232. package/chunks/{bundle-HHlRp7vF.js → bundle-BvG71y_P.js} +31 -31
  233. package/chunks/bundle-BvG71y_P.js.map +1 -0
  234. package/chunks/{bundle-BADg8JRM.js → bundle-BvaqGh4L.js} +5 -5
  235. package/chunks/bundle-BvaqGh4L.js.map +1 -0
  236. package/chunks/{bundle-DW4HEvvh.js → bundle-Bx5vhTbU.js} +11 -11
  237. package/chunks/bundle-Bx5vhTbU.js.map +1 -0
  238. package/chunks/{bundle-Du8hBYjM.js → bundle-Byig85JJ.js} +185 -185
  239. package/chunks/{bundle-Du8hBYjM.js.map → bundle-Byig85JJ.js.map} +1 -1
  240. package/chunks/bundle-BymWz1lX.js +30 -0
  241. package/chunks/bundle-BymWz1lX.js.map +1 -0
  242. package/chunks/{bundle-ByTQtdFM.js → bundle-ByvmbZD0.js} +36 -29
  243. package/chunks/bundle-ByvmbZD0.js.map +1 -0
  244. package/chunks/{bundle-BCAy5wyj.js → bundle-C040958G.js} +2 -2
  245. package/chunks/{bundle-BCAy5wyj.js.map → bundle-C040958G.js.map} +1 -1
  246. package/chunks/{bundle-DD0CjCiu.js → bundle-C1ds4cil.js} +1 -1
  247. package/chunks/{bundle-DD0CjCiu.js.map → bundle-C1ds4cil.js.map} +1 -1
  248. package/chunks/{bundle-BnTt0CCZ.js → bundle-C1hw1sij.js} +26 -26
  249. package/chunks/bundle-C1hw1sij.js.map +1 -0
  250. package/chunks/bundle-C4Z-NWqF.js +279 -0
  251. package/chunks/bundle-C4Z-NWqF.js.map +1 -0
  252. package/chunks/{bundle-CwG4pj5M.js → bundle-C8im5l9B.js} +234 -234
  253. package/chunks/{bundle-CwG4pj5M.js.map → bundle-C8im5l9B.js.map} +1 -1
  254. package/chunks/{bundle-B7UQ7Txq.js → bundle-CD9AzC6s.js} +35 -35
  255. package/chunks/bundle-CD9AzC6s.js.map +1 -0
  256. package/chunks/{bundle-DnhvGgBr.js → bundle-CDwtSJbC.js} +210 -206
  257. package/chunks/{bundle-CJPOd0Zo.js.map → bundle-CDwtSJbC.js.map} +1 -1
  258. package/chunks/{bundle-Bs4dcOTC.js → bundle-CIwVkd-E.js} +234 -234
  259. package/chunks/{bundle-Bs4dcOTC.js.map → bundle-CIwVkd-E.js.map} +1 -1
  260. package/chunks/{bundle-oKpBi3n1.js → bundle-CJk_QDUV.js} +58 -58
  261. package/chunks/bundle-CJk_QDUV.js.map +1 -0
  262. package/chunks/{bundle-BeTPrbXl.js → bundle-CNJMLyGJ.js} +61 -61
  263. package/chunks/bundle-CNJMLyGJ.js.map +1 -0
  264. package/chunks/{bundle-BCL7kk-0.js → bundle-CT8ZXUi2.js} +12 -12
  265. package/chunks/bundle-CT8ZXUi2.js.map +1 -0
  266. package/chunks/{bundle-BV-Kx6li.js → bundle-C_Vyt_ii.js} +25 -25
  267. package/chunks/bundle-C_Vyt_ii.js.map +1 -0
  268. package/chunks/{bundle-DFyJYJtg.js → bundle-CaaUNO3F.js} +2 -2
  269. package/chunks/{bundle-DFyJYJtg.js.map → bundle-CaaUNO3F.js.map} +1 -1
  270. package/chunks/{bundle-CWegwbZe.js → bundle-Ci146LvO.js} +370 -368
  271. package/chunks/{bundle-CWegwbZe.js.map → bundle-Ci146LvO.js.map} +1 -1
  272. package/chunks/{bundle-DcJtM5WL.js → bundle-Clhqc2C_.js} +6 -6
  273. package/chunks/bundle-Clhqc2C_.js.map +1 -0
  274. package/chunks/{bundle-gMq6CHjL.js → bundle-D2i2ti1U.js} +36 -36
  275. package/chunks/bundle-D2i2ti1U.js.map +1 -0
  276. package/chunks/{bundle-C0EFwuDi.js → bundle-DDhhxSv0.js} +64 -65
  277. package/chunks/bundle-DDhhxSv0.js.map +1 -0
  278. package/chunks/{bundle-BP5nTWqh.js → bundle-DDkUg3Os.js} +118 -118
  279. package/chunks/{bundle-BP5nTWqh.js.map → bundle-DDkUg3Os.js.map} +1 -1
  280. package/chunks/{bundle-COdy8feS.js → bundle-DJTSztr0.js} +124 -124
  281. package/chunks/{bundle-COdy8feS.js.map → bundle-DJTSztr0.js.map} +1 -1
  282. package/chunks/{bundle-Bv_BYOoN.js → bundle-DNMURwG9.js} +120 -120
  283. package/chunks/{bundle-Bv_BYOoN.js.map → bundle-DNMURwG9.js.map} +1 -1
  284. package/chunks/{bundle-DhnGzV1K.js → bundle-DO1vNias.js} +244 -244
  285. package/chunks/{bundle-DhnGzV1K.js.map → bundle-DO1vNias.js.map} +1 -1
  286. package/chunks/{bundle-BlRZqe8T.js → bundle-DQ2q-zNM.js} +1 -1
  287. package/chunks/bundle-DQ2q-zNM.js.map +1 -0
  288. package/chunks/{bundle-DKHcEPfr.js → bundle-DQFIz2Zf.js} +11 -11
  289. package/chunks/bundle-DQFIz2Zf.js.map +1 -0
  290. package/chunks/{bundle-BDxgzOKZ.js → bundle-DSOf9RKe.js} +1 -1
  291. package/chunks/bundle-DSOf9RKe.js.map +1 -0
  292. package/chunks/{bundle-Cl6qrizD.js → bundle-DThbnyZd.js} +25 -25
  293. package/chunks/bundle-DThbnyZd.js.map +1 -0
  294. package/chunks/{bundle-CJPOd0Zo.js → bundle-DXCQovsu.js} +213 -213
  295. package/{cjs/chunks/bundle-V3DBpR8B.js.map → chunks/bundle-DXCQovsu.js.map} +1 -1
  296. package/chunks/{bundle-DvPYXQcP.js → bundle-D_eJq5Xk.js} +12 -12
  297. package/chunks/bundle-D_eJq5Xk.js.map +1 -0
  298. package/chunks/{bundle-BqkgxfCT.js → bundle-DaAoUDJk.js} +164 -164
  299. package/chunks/{bundle-BqkgxfCT.js.map → bundle-DaAoUDJk.js.map} +1 -1
  300. package/chunks/{bundle-C5KSa4Q_.js → bundle-DaoHZIZy.js} +51 -51
  301. package/chunks/bundle-DaoHZIZy.js.map +1 -0
  302. package/chunks/{bundle-BrPQ1xtW.js → bundle-Diqj6For.js} +71 -71
  303. package/chunks/bundle-Diqj6For.js.map +1 -0
  304. package/chunks/{bundle-fQ4S7LIZ.js → bundle-DlfN5GTa.js} +160 -160
  305. package/chunks/{bundle-fQ4S7LIZ.js.map → bundle-DlfN5GTa.js.map} +1 -1
  306. package/chunks/{bundle-Chv9JypP.js → bundle-DmYqVYeD.js} +6 -6
  307. package/chunks/bundle-DmYqVYeD.js.map +1 -0
  308. package/chunks/{bundle-DLIFpzrP.js → bundle-DpGWywZ5.js} +138 -138
  309. package/chunks/bundle-DpGWywZ5.js.map +1 -0
  310. package/chunks/{bundle-CQt1ONzj.js → bundle-DzxiMlgV.js} +11 -12
  311. package/chunks/bundle-DzxiMlgV.js.map +1 -0
  312. package/chunks/{bundle-DChZSw0N.js → bundle-Gx0ryc_f.js} +72 -72
  313. package/chunks/bundle-Gx0ryc_f.js.map +1 -0
  314. package/chunks/{bundle-Vk50O4-7.js → bundle-HoQqraNc.js} +23 -23
  315. package/chunks/bundle-HoQqraNc.js.map +1 -0
  316. package/chunks/{bundle-BvcFQzve.js → bundle-IGQYX_K1.js} +152 -1079
  317. package/chunks/bundle-IGQYX_K1.js.map +1 -0
  318. package/chunks/{bundle-B0WDmdBo.js → bundle-Jir4hfa9.js} +13 -13
  319. package/chunks/bundle-Jir4hfa9.js.map +1 -0
  320. package/chunks/{bundle-DjFflxR1.js → bundle-LYAWKk4n.js} +78 -79
  321. package/chunks/bundle-LYAWKk4n.js.map +1 -0
  322. package/chunks/{bundle-C2qp06Ad.js → bundle-QxUVt4Ms.js} +15 -15
  323. package/chunks/bundle-QxUVt4Ms.js.map +1 -0
  324. package/chunks/{bundle-BhZQFEcG.js → bundle-ZsYMd8JA.js} +192 -185
  325. package/chunks/{bundle-BhZQFEcG.js.map → bundle-ZsYMd8JA.js.map} +1 -1
  326. package/chunks/{bundle-D0Atuq2W.js → bundle-_-vntp1z.js} +28 -28
  327. package/chunks/bundle-_-vntp1z.js.map +1 -0
  328. package/chunks/{bundle-BQcc_8oI.js → bundle-afCfXO2C.js} +22 -22
  329. package/chunks/bundle-afCfXO2C.js.map +1 -0
  330. package/chunks/{bundle-BL0tKclB.js → bundle-dC3DwujZ.js} +18 -18
  331. package/chunks/bundle-dC3DwujZ.js.map +1 -0
  332. package/chunks/{bundle-BuRpKo8a.js → bundle-fRP_rTVb.js} +75 -74
  333. package/chunks/bundle-fRP_rTVb.js.map +1 -0
  334. package/chunks/{bundle-Cf0JIqFR.js → bundle-h3a36twH.js} +48 -48
  335. package/chunks/bundle-h3a36twH.js.map +1 -0
  336. package/chunks/{bundle-C4kW5GHa.js → bundle-k3XccyCm.js} +333 -333
  337. package/chunks/{bundle-C4kW5GHa.js.map → bundle-k3XccyCm.js.map} +1 -1
  338. package/chunks/{bundle-DSw2Wyv5.js → bundle-oCSRGy9i.js} +29 -29
  339. package/chunks/bundle-oCSRGy9i.js.map +1 -0
  340. package/chunks/{bundle-DvRNa17t.js → bundle-uBJzoaNT.js} +82 -82
  341. package/chunks/bundle-uBJzoaNT.js.map +1 -0
  342. package/chunks/{bundle-8xJ-Z5vU.js → bundle-yZ1rqvSQ.js} +3 -3
  343. package/chunks/{bundle-8xJ-Z5vU.js.map → bundle-yZ1rqvSQ.js.map} +1 -1
  344. package/cjs/App.js +377 -378
  345. package/cjs/App.js.map +1 -1
  346. package/cjs/Channel/components/ChannelHeader.js +36 -34
  347. package/cjs/Channel/components/ChannelHeader.js.map +1 -1
  348. package/cjs/Channel/components/ChannelUI.js +74 -74
  349. package/cjs/Channel/components/FileViewer.js +37 -33
  350. package/cjs/Channel/components/FileViewer.js.map +1 -1
  351. package/cjs/Channel/components/FrozenNotification.js +5 -5
  352. package/cjs/Channel/components/Message.js +80 -81
  353. package/cjs/Channel/components/Message.js.map +1 -1
  354. package/cjs/Channel/components/MessageInput.js +72 -70
  355. package/cjs/Channel/components/MessageInput.js.map +1 -1
  356. package/cjs/Channel/components/MessageInputWrapper.js +45 -43
  357. package/cjs/Channel/components/MessageInputWrapper.js.map +1 -1
  358. package/cjs/Channel/components/MessageList.js +249 -250
  359. package/cjs/Channel/components/MessageList.js.map +1 -1
  360. package/cjs/Channel/components/RemoveMessageModal.js +38 -33
  361. package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
  362. package/cjs/Channel/components/SuggestedMentionList.js +29 -30
  363. package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
  364. package/cjs/Channel/components/TypingIndicator.js +6 -6
  365. package/cjs/Channel/components/UnreadCount.js +7 -7
  366. package/cjs/Channel/context.js +1453 -1453
  367. package/cjs/Channel/hooks/useHandleUploadFiles.js +125 -120
  368. package/cjs/Channel/hooks/useHandleUploadFiles.js.map +1 -1
  369. package/cjs/Channel/hooks/useInitialMessagesFetch.js +6 -6
  370. package/cjs/Channel/utils/compareMessagesForGrouping.js +50 -51
  371. package/cjs/Channel/utils/compareMessagesForGrouping.js.map +1 -1
  372. package/cjs/Channel/utils/getMessagePartsInfo.js +26 -27
  373. package/cjs/Channel/utils/getMessagePartsInfo.js.map +1 -1
  374. package/cjs/Channel.js +71 -71
  375. package/cjs/ChannelList/components/AddChannel.js +29 -26
  376. package/cjs/ChannelList/components/AddChannel.js.map +1 -1
  377. package/cjs/ChannelList/components/ChannelListHeader.js +13 -8
  378. package/cjs/ChannelList/components/ChannelListHeader.js.map +1 -1
  379. package/cjs/ChannelList/components/ChannelListUI.js +109 -106
  380. package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
  381. package/cjs/ChannelList/components/ChannelPreview.js +43 -38
  382. package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
  383. package/cjs/ChannelList/components/ChannelPreviewAction.js +16 -12
  384. package/cjs/ChannelList/components/ChannelPreviewAction.js.map +1 -1
  385. package/cjs/ChannelList/context.js +9 -10
  386. package/cjs/ChannelList/context.js.map +1 -1
  387. package/cjs/ChannelList.js +43 -40
  388. package/cjs/ChannelList.js.map +1 -1
  389. package/cjs/ChannelSettings/components/ChannelProfile.js +57 -47
  390. package/cjs/ChannelSettings/components/ChannelProfile.js.map +1 -1
  391. package/cjs/ChannelSettings/components/ChannelSettingsHeader.js +23 -20
  392. package/cjs/ChannelSettings/components/ChannelSettingsHeader.js.map +1 -1
  393. package/cjs/ChannelSettings/components/ChannelSettingsUI.js +78 -75
  394. package/cjs/ChannelSettings/components/ChannelSettingsUI.js.map +1 -1
  395. package/cjs/ChannelSettings/components/EditDetailsModal.js +90 -80
  396. package/cjs/ChannelSettings/components/EditDetailsModal.js.map +1 -1
  397. package/cjs/ChannelSettings/components/LeaveChannel.js +63 -53
  398. package/cjs/ChannelSettings/components/LeaveChannel.js.map +1 -1
  399. package/cjs/ChannelSettings/components/ModerationPanel.js +447 -445
  400. package/cjs/ChannelSettings/components/ModerationPanel.js.map +1 -1
  401. package/cjs/ChannelSettings/components/UserListItem.js +49 -49
  402. package/cjs/ChannelSettings/components/UserPanel.js +47 -45
  403. package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
  404. package/cjs/ChannelSettings/context.js +105 -105
  405. package/cjs/ChannelSettings.js +35 -32
  406. package/cjs/ChannelSettings.js.map +1 -1
  407. package/cjs/CreateChannel/components/CreateChannelUI.js +33 -29
  408. package/cjs/CreateChannel/components/CreateChannelUI.js.map +1 -1
  409. package/cjs/CreateChannel/components/InviteUsers.js +143 -139
  410. package/cjs/CreateChannel/components/InviteUsers.js.map +1 -1
  411. package/cjs/CreateChannel/components/SelectChannelType.js +76 -65
  412. package/cjs/CreateChannel/components/SelectChannelType.js.map +1 -1
  413. package/cjs/CreateChannel/context.js +4 -4
  414. package/cjs/CreateChannel.js +27 -23
  415. package/cjs/CreateChannel.js.map +1 -1
  416. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +63 -52
  417. package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js.map +1 -1
  418. package/cjs/CreateOpenChannel/context.js +41 -41
  419. package/cjs/CreateOpenChannel.js +28 -17
  420. package/cjs/CreateOpenChannel.js.map +1 -1
  421. package/cjs/EditUserProfile/components/EditUserProfileUI.js +110 -99
  422. package/cjs/EditUserProfile/components/EditUserProfileUI.js.map +1 -1
  423. package/cjs/EditUserProfile/context.js +12 -12
  424. package/cjs/EditUserProfile.js +27 -16
  425. package/cjs/EditUserProfile.js.map +1 -1
  426. package/cjs/GroupChannel/components/FileViewer.js +62 -58
  427. package/cjs/GroupChannel/components/FileViewer.js.map +1 -1
  428. package/cjs/GroupChannel/components/FrozenNotification.js +10 -10
  429. package/cjs/GroupChannel/components/GroupChannelHeader.js +30 -28
  430. package/cjs/GroupChannel/components/GroupChannelHeader.js.map +1 -1
  431. package/cjs/GroupChannel/components/GroupChannelUI.js +68 -68
  432. package/cjs/GroupChannel/components/Message.js +66 -77
  433. package/cjs/GroupChannel/components/Message.js.map +1 -1
  434. package/cjs/GroupChannel/components/MessageInputWrapper.js +62 -61
  435. package/cjs/GroupChannel/components/MessageInputWrapper.js.map +1 -1
  436. package/cjs/GroupChannel/components/MessageList.js +154 -155
  437. package/cjs/GroupChannel/components/MessageList.js.map +1 -1
  438. package/cjs/GroupChannel/components/RemoveMessageModal.js +32 -27
  439. package/cjs/GroupChannel/components/RemoveMessageModal.js.map +1 -1
  440. package/cjs/GroupChannel/components/SuggestedMentionList.js +14 -14
  441. package/cjs/GroupChannel/components/SuggestedReplies.js +15 -14
  442. package/cjs/GroupChannel/components/SuggestedReplies.js.map +1 -1
  443. package/cjs/GroupChannel/components/TypingIndicator.js +59 -59
  444. package/cjs/GroupChannel/components/UnreadCount.js +26 -26
  445. package/cjs/GroupChannel/context.js +568 -568
  446. package/cjs/GroupChannel.js +65 -65
  447. package/cjs/GroupChannelList/components/AddGroupChannel.js +30 -27
  448. package/cjs/GroupChannelList/components/AddGroupChannel.js.map +1 -1
  449. package/cjs/GroupChannelList/components/GroupChannelListHeader.js +34 -28
  450. package/cjs/GroupChannelList/components/GroupChannelListHeader.js.map +1 -1
  451. package/cjs/GroupChannelList/components/GroupChannelListItem.js +39 -35
  452. package/cjs/GroupChannelList/components/GroupChannelListItem.js.map +1 -1
  453. package/cjs/GroupChannelList/components/GroupChannelListUI.js +86 -83
  454. package/cjs/GroupChannelList/components/GroupChannelListUI.js.map +1 -1
  455. package/cjs/GroupChannelList/components/GroupChannelPreviewAction.js +48 -44
  456. package/cjs/GroupChannelList/components/GroupChannelPreviewAction.js.map +1 -1
  457. package/cjs/GroupChannelList/context.js +81 -97
  458. package/cjs/GroupChannelList/context.js.map +1 -1
  459. package/cjs/GroupChannelList.js +43 -40
  460. package/cjs/GroupChannelList.js.map +1 -1
  461. package/cjs/Message/context.js +21 -21
  462. package/cjs/Message/hooks/useDirtyGetMentions.js +52 -52
  463. package/cjs/MessageSearch/components/MessageSearchUI.js +71 -72
  464. package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
  465. package/cjs/MessageSearch/context.js +247 -247
  466. package/cjs/MessageSearch.js +59 -59
  467. package/cjs/OpenChannel/components/FrozenChannelNotification.js +9 -9
  468. package/cjs/OpenChannel/components/OpenChannelHeader.js +43 -38
  469. package/cjs/OpenChannel/components/OpenChannelHeader.js.map +1 -1
  470. package/cjs/OpenChannel/components/OpenChannelInput.js +47 -45
  471. package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
  472. package/cjs/OpenChannel/components/OpenChannelMessage.js +158 -157
  473. package/cjs/OpenChannel/components/OpenChannelMessage.js.map +1 -1
  474. package/cjs/OpenChannel/components/OpenChannelMessageList.js +95 -94
  475. package/cjs/OpenChannel/components/OpenChannelMessageList.js.map +1 -1
  476. package/cjs/OpenChannel/components/OpenChannelUI.js +71 -70
  477. package/cjs/OpenChannel/components/OpenChannelUI.js.map +1 -1
  478. package/cjs/OpenChannel/context.js +23 -18
  479. package/cjs/OpenChannel/context.js.map +1 -1
  480. package/cjs/OpenChannel.js +44 -43
  481. package/cjs/OpenChannel.js.map +1 -1
  482. package/cjs/OpenChannelList/components/OpenChannelListUI.js +102 -92
  483. package/cjs/OpenChannelList/components/OpenChannelListUI.js.map +1 -1
  484. package/cjs/OpenChannelList/components/OpenChannelPreview.js +20 -20
  485. package/cjs/OpenChannelList/context.js +3 -3
  486. package/cjs/OpenChannelList.js +34 -24
  487. package/cjs/OpenChannelList.js.map +1 -1
  488. package/cjs/OpenChannelSettings/components/EditDetailsModal.js +82 -73
  489. package/cjs/OpenChannelSettings/components/EditDetailsModal.js.map +1 -1
  490. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +47 -38
  491. package/cjs/OpenChannelSettings/components/OpenChannelProfile.js.map +1 -1
  492. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +61 -57
  493. package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js.map +1 -1
  494. package/cjs/OpenChannelSettings/components/OperatorUI.js +454 -450
  495. package/cjs/OpenChannelSettings/components/OperatorUI.js.map +1 -1
  496. package/cjs/OpenChannelSettings/components/ParticipantUI.js +21 -17
  497. package/cjs/OpenChannelSettings/components/ParticipantUI.js.map +1 -1
  498. package/cjs/OpenChannelSettings/context.js +114 -114
  499. package/cjs/OpenChannelSettings.js +29 -25
  500. package/cjs/OpenChannelSettings.js.map +1 -1
  501. package/cjs/SendbirdProvider.js +1139 -1183
  502. package/cjs/SendbirdProvider.js.map +1 -1
  503. package/cjs/Thread/components/ParentMessageInfo.js +240 -239
  504. package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
  505. package/cjs/Thread/components/ParentMessageInfoItem.js +148 -148
  506. package/cjs/Thread/components/ThreadHeader.js +22 -25
  507. package/cjs/Thread/components/ThreadHeader.js.map +1 -1
  508. package/cjs/Thread/components/ThreadList.js +122 -122
  509. package/cjs/Thread/components/ThreadListItem.js +341 -340
  510. package/cjs/Thread/components/ThreadListItem.js.map +1 -1
  511. package/cjs/Thread/components/ThreadMessageInput.js +167 -165
  512. package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
  513. package/cjs/Thread/components/ThreadUI.js +207 -207
  514. package/cjs/Thread/context/types.js +21 -21
  515. package/cjs/Thread/context.js +1283 -1281
  516. package/cjs/Thread/context.js.map +1 -1
  517. package/cjs/Thread.js +73 -73
  518. package/cjs/VoicePlayer/context.js +3 -3
  519. package/cjs/VoicePlayer/useVoicePlayer.js +68 -60
  520. package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -1
  521. package/cjs/VoiceRecorder/context.js +25 -127
  522. package/cjs/VoiceRecorder/context.js.map +1 -1
  523. package/cjs/VoiceRecorder/useVoiceRecorder.js +105 -96
  524. package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -1
  525. package/cjs/chunks/{bundle-B0Cl8cKp.js → bundle-1XtsxT8L.js} +10 -10
  526. package/cjs/chunks/bundle-1XtsxT8L.js.map +1 -0
  527. package/cjs/chunks/{bundle-BGhSB8RW.js → bundle-4vdy6J5u.js} +17 -17
  528. package/cjs/chunks/bundle-4vdy6J5u.js.map +1 -0
  529. package/cjs/chunks/{bundle-Cm_quRwQ.js → bundle-5_kPn4wU.js} +77 -79
  530. package/cjs/chunks/bundle-5_kPn4wU.js.map +1 -0
  531. package/cjs/chunks/{bundle-DhgoVGKx.js → bundle-7UHC8ujA.js} +94 -94
  532. package/cjs/chunks/{bundle-DhgoVGKx.js.map → bundle-7UHC8ujA.js.map} +1 -1
  533. package/cjs/chunks/{bundle-DpiYQ60c.js → bundle-8VyIP0TE.js} +1 -1
  534. package/cjs/chunks/bundle-8VyIP0TE.js.map +1 -0
  535. package/cjs/chunks/{bundle-DiTafQuL.js → bundle-B-olJv7b.js} +1326 -1327
  536. package/cjs/chunks/{bundle-DiTafQuL.js.map → bundle-B-olJv7b.js.map} +1 -1
  537. package/cjs/chunks/{bundle-BeCXSzTg.js → bundle-B31bbem0.js} +192 -185
  538. package/cjs/chunks/bundle-B31bbem0.js.map +1 -0
  539. package/cjs/chunks/{bundle-ROscI12S.js → bundle-BBoPpUMg.js} +22 -22
  540. package/cjs/chunks/bundle-BBoPpUMg.js.map +1 -0
  541. package/cjs/chunks/{bundle-DTZwXpbk.js → bundle-BLc7P6Sp.js} +244 -244
  542. package/cjs/chunks/bundle-BLc7P6Sp.js.map +1 -0
  543. package/cjs/chunks/{bundle-BZcKIqEO.js → bundle-BOkZUm8a.js} +27 -27
  544. package/cjs/chunks/bundle-BOkZUm8a.js.map +1 -0
  545. package/cjs/chunks/{bundle-CMhCS1lF.js → bundle-BSAWCcb_.js} +920 -923
  546. package/cjs/chunks/{bundle-CMhCS1lF.js.map → bundle-BSAWCcb_.js.map} +1 -1
  547. package/cjs/chunks/bundle-BTU876jx.js +95 -0
  548. package/cjs/chunks/{bundle-xeBPrPlZ.js.map → bundle-BTU876jx.js.map} +1 -1
  549. package/cjs/chunks/{bundle-xeBPrPlZ.js → bundle-BTod-EOk.js} +83 -83
  550. package/cjs/chunks/bundle-BTod-EOk.js.map +1 -0
  551. package/cjs/chunks/{bundle-XPPVGabQ.js → bundle-BWGOXLHb.js} +1 -1
  552. package/cjs/chunks/{bundle-XPPVGabQ.js.map → bundle-BWGOXLHb.js.map} +1 -1
  553. package/cjs/chunks/{bundle-BVXtMOiP.js → bundle-BXEGf4g2.js} +164 -164
  554. package/cjs/chunks/{bundle-BVXtMOiP.js.map → bundle-BXEGf4g2.js.map} +1 -1
  555. package/cjs/chunks/{bundle-tVtQpJ4n.js → bundle-B_51Svr9.js} +3 -3
  556. package/cjs/chunks/{bundle-tVtQpJ4n.js.map → bundle-B_51Svr9.js.map} +1 -1
  557. package/cjs/chunks/{bundle-B5nh0Mif.js → bundle-BaAUvjl9.js} +6 -6
  558. package/cjs/chunks/bundle-BaAUvjl9.js.map +1 -0
  559. package/cjs/chunks/{bundle-tBlsssMV.js → bundle-BaM5Ed34.js} +160 -160
  560. package/cjs/chunks/{bundle-tBlsssMV.js.map → bundle-BaM5Ed34.js.map} +1 -1
  561. package/cjs/chunks/{bundle-DTzDEbe0.js → bundle-BaQc9oOW.js} +29 -29
  562. package/cjs/chunks/bundle-BaQc9oOW.js.map +1 -0
  563. package/cjs/chunks/{bundle-BrrYIsp-.js → bundle-BhCAlWKP.js} +11 -11
  564. package/cjs/chunks/bundle-BhCAlWKP.js.map +1 -0
  565. package/cjs/chunks/{bundle-DEOaRh_m.js → bundle-Bi-soOXA.js} +258 -258
  566. package/cjs/chunks/bundle-Bi-soOXA.js.map +1 -0
  567. package/cjs/chunks/{bundle-CYFSAQ2T.js → bundle-BjgfoBVC.js} +26 -26
  568. package/cjs/chunks/bundle-BjgfoBVC.js.map +1 -0
  569. package/cjs/chunks/{bundle-_VH8bxGE.js → bundle-BoLhr7Ko.js} +36 -28
  570. package/cjs/chunks/bundle-BoLhr7Ko.js.map +1 -0
  571. package/cjs/chunks/{bundle-DZl6cYvA.js → bundle-BrNoc2XZ.js} +185 -185
  572. package/cjs/chunks/bundle-BrNoc2XZ.js.map +1 -0
  573. package/cjs/chunks/{bundle-xpQ8gY1k.js → bundle-BwQ4BJif.js} +71 -71
  574. package/cjs/chunks/bundle-BwQ4BJif.js.map +1 -0
  575. package/cjs/chunks/{bundle-DYU6eNDJ.js → bundle-ByyccRIt.js} +210 -206
  576. package/cjs/chunks/{bundle-DXrpp6AJ.js.map → bundle-ByyccRIt.js.map} +1 -1
  577. package/cjs/chunks/{bundle-Dc_hFK8U.js → bundle-C1XVsHlE.js} +51 -51
  578. package/cjs/chunks/bundle-C1XVsHlE.js.map +1 -0
  579. package/cjs/chunks/{bundle-Dfqk1zRa.js → bundle-C3DKUT4Q.js} +26 -26
  580. package/cjs/chunks/bundle-C3DKUT4Q.js.map +1 -0
  581. package/cjs/chunks/{bundle-B2K8d_Kr.js → bundle-C3RFfU6_.js} +89 -89
  582. package/cjs/chunks/bundle-C3RFfU6_.js.map +1 -0
  583. package/cjs/chunks/{bundle-CFpokORf.js → bundle-C51HeaX4.js} +25 -25
  584. package/cjs/chunks/bundle-C51HeaX4.js.map +1 -0
  585. package/cjs/chunks/{bundle-DYdwn7HI.js → bundle-C6a-umLQ.js} +131 -132
  586. package/cjs/chunks/bundle-C6a-umLQ.js.map +1 -0
  587. package/cjs/chunks/{bundle-D1gE5kRR.js → bundle-C93-onMF.js} +12 -12
  588. package/cjs/chunks/bundle-C93-onMF.js.map +1 -0
  589. package/cjs/chunks/{bundle-CT33owD4.js → bundle-CAUMYdVU.js} +19 -19
  590. package/cjs/chunks/bundle-CAUMYdVU.js.map +1 -0
  591. package/cjs/chunks/{bundle-COwRojr8.js → bundle-CDIVI7bT.js} +146 -1073
  592. package/cjs/chunks/bundle-CDIVI7bT.js.map +1 -0
  593. package/cjs/chunks/{bundle-oEFvi6H_.js → bundle-CE6bFQmu.js} +118 -118
  594. package/cjs/chunks/bundle-CE6bFQmu.js.map +1 -0
  595. package/cjs/chunks/{bundle-DF9nQRmT.js → bundle-CLOaQmX9.js} +138 -138
  596. package/cjs/chunks/bundle-CLOaQmX9.js.map +1 -0
  597. package/cjs/chunks/{bundle-DRneqmmM.js → bundle-CQ34zxiR.js} +36 -36
  598. package/cjs/chunks/bundle-CQ34zxiR.js.map +1 -0
  599. package/cjs/chunks/{bundle-CUue3xhm.js → bundle-CR04Yhbr.js} +8 -8
  600. package/cjs/chunks/bundle-CR04Yhbr.js.map +1 -0
  601. package/cjs/chunks/bundle-CZfcXYaX.js +292 -0
  602. package/cjs/chunks/bundle-CZfcXYaX.js.map +1 -0
  603. package/cjs/chunks/{bundle-V3DBpR8B.js → bundle-Cgl5e8xs.js} +213 -213
  604. package/cjs/chunks/bundle-Cgl5e8xs.js.map +1 -0
  605. package/cjs/chunks/{bundle-xkYrx6pX.js → bundle-CmpLg1_S.js} +15 -15
  606. package/cjs/chunks/bundle-CmpLg1_S.js.map +1 -0
  607. package/cjs/chunks/{bundle-DxeOzVdw.js → bundle-Com-Z-XI.js} +82 -82
  608. package/cjs/chunks/bundle-Com-Z-XI.js.map +1 -0
  609. package/cjs/chunks/{bundle-ZtEjNaVg.js → bundle-CsJKON_3.js} +120 -120
  610. package/cjs/chunks/bundle-CsJKON_3.js.map +1 -0
  611. package/cjs/chunks/{bundle-C1XDY35t.js → bundle-D-qAbZhp.js} +48 -48
  612. package/cjs/chunks/bundle-D-qAbZhp.js.map +1 -0
  613. package/cjs/chunks/{bundle-BSV6l3PT.js → bundle-D4aDRH9m.js} +1 -1
  614. package/cjs/chunks/bundle-D4aDRH9m.js.map +1 -0
  615. package/cjs/chunks/{bundle-ADOJwNcx.js → bundle-D6E8Fmnl.js} +333 -333
  616. package/cjs/chunks/{bundle-ADOJwNcx.js.map → bundle-D6E8Fmnl.js.map} +1 -1
  617. package/cjs/chunks/{bundle-Bcgo-8Wz.js → bundle-D8gia2Hg.js} +11 -12
  618. package/cjs/chunks/bundle-D8gia2Hg.js.map +1 -0
  619. package/cjs/chunks/{bundle-DiMvAbrw.js → bundle-DAIf7fWo.js} +28 -28
  620. package/cjs/chunks/bundle-DAIf7fWo.js.map +1 -0
  621. package/cjs/chunks/{bundle-BEDFWZBT.js → bundle-DAj-1QVM.js} +2 -2
  622. package/cjs/chunks/{bundle-BEDFWZBT.js.map → bundle-DAj-1QVM.js.map} +1 -1
  623. package/cjs/chunks/{bundle-Bu7SLdLc.js → bundle-DAxedY0T.js} +23 -23
  624. package/cjs/chunks/bundle-DAxedY0T.js.map +1 -0
  625. package/cjs/chunks/{bundle-CFZ-HdZV.js → bundle-DMGpM9Ye.js} +370 -368
  626. package/cjs/chunks/{bundle-CFZ-HdZV.js.map → bundle-DMGpM9Ye.js.map} +1 -1
  627. package/cjs/chunks/{bundle-BWtc6aAL.js → bundle-DQy218lT.js} +31 -31
  628. package/cjs/chunks/bundle-DQy218lT.js.map +1 -0
  629. package/cjs/chunks/{bundle-CGNRfqfQ.js → bundle-DRp9IuV2.js} +28 -28
  630. package/cjs/chunks/bundle-DRp9IuV2.js.map +1 -0
  631. package/cjs/chunks/{bundle-C-sGYQWV.js → bundle-DRy7eNJ0.js} +11 -11
  632. package/cjs/chunks/bundle-DRy7eNJ0.js.map +1 -0
  633. package/cjs/chunks/{bundle-waMogQH7.js → bundle-DTCz0BH1.js} +161 -162
  634. package/cjs/chunks/bundle-DTCz0BH1.js.map +1 -0
  635. package/cjs/chunks/{bundle-Amd_tEFX.js → bundle-DcSTnNI0.js} +64 -65
  636. package/cjs/chunks/bundle-DcSTnNI0.js.map +1 -0
  637. package/cjs/chunks/{bundle-eHc2IloF.js → bundle-DdxJqNSP.js} +1 -1
  638. package/cjs/chunks/bundle-DdxJqNSP.js.map +1 -0
  639. package/cjs/chunks/{bundle-Vfq24KlC.js → bundle-DeQZn8GZ.js} +75 -74
  640. package/cjs/chunks/bundle-DeQZn8GZ.js.map +1 -0
  641. package/cjs/chunks/{bundle-CqfYJ2-A.js → bundle-Dehhi1FZ.js} +37 -37
  642. package/cjs/chunks/bundle-Dehhi1FZ.js.map +1 -0
  643. package/cjs/chunks/{bundle-BgJJI84U.js → bundle-DfcEln0Z.js} +34 -34
  644. package/cjs/chunks/bundle-DfcEln0Z.js.map +1 -0
  645. package/cjs/chunks/bundle-DmX69_-l.js +32 -0
  646. package/cjs/chunks/bundle-DmX69_-l.js.map +1 -0
  647. package/cjs/chunks/{bundle-Chvgl0tl.js → bundle-Dnq2YP_l.js} +6 -6
  648. package/cjs/chunks/bundle-Dnq2YP_l.js.map +1 -0
  649. package/cjs/chunks/{bundle-DU2DrCMu.js → bundle-Dww6fCVQ.js} +13 -13
  650. package/cjs/chunks/bundle-Dww6fCVQ.js.map +1 -0
  651. package/cjs/chunks/{bundle-BjHWj0YM.js → bundle-DxSB9NRz.js} +61 -61
  652. package/cjs/chunks/bundle-DxSB9NRz.js.map +1 -0
  653. package/cjs/chunks/{bundle-BwzMNAFs.js → bundle-HGbi-rCv.js} +1 -1
  654. package/cjs/chunks/bundle-HGbi-rCv.js.map +1 -0
  655. package/cjs/chunks/{bundle-CRtD-LF2.js → bundle-JtgSY0zB.js} +58 -58
  656. package/cjs/chunks/bundle-JtgSY0zB.js.map +1 -0
  657. package/cjs/chunks/{bundle-CZ-C_W9P.js → bundle-L3FEqZsK.js} +234 -234
  658. package/cjs/chunks/{bundle-CZ-C_W9P.js.map → bundle-L3FEqZsK.js.map} +1 -1
  659. package/cjs/chunks/{bundle-Dnrc5q_J.js → bundle-N_CwOE5a.js} +124 -124
  660. package/cjs/chunks/bundle-N_CwOE5a.js.map +1 -0
  661. package/cjs/chunks/bundle-Q4icQ1qH.js +122 -0
  662. package/cjs/chunks/bundle-Q4icQ1qH.js.map +1 -0
  663. package/cjs/chunks/{bundle-CkBOTPET.js → bundle-T4lp5F85.js} +25 -25
  664. package/cjs/chunks/bundle-T4lp5F85.js.map +1 -0
  665. package/cjs/chunks/{bundle-LJi0Ftvu.js → bundle-Tjx9wNAv.js} +21 -21
  666. package/cjs/chunks/bundle-Tjx9wNAv.js.map +1 -0
  667. package/cjs/chunks/{bundle-COM-Vp38.js → bundle-X03vJTEw.js} +45 -46
  668. package/cjs/chunks/bundle-X03vJTEw.js.map +1 -0
  669. package/cjs/chunks/{bundle-DhB9bJf0.js → bundle-_ekaw3iI.js} +18 -18
  670. package/cjs/chunks/bundle-_ekaw3iI.js.map +1 -0
  671. package/cjs/chunks/{bundle-B1UxSAT6.js → bundle-bqRlVm3u.js} +12 -12
  672. package/cjs/chunks/bundle-bqRlVm3u.js.map +1 -0
  673. package/cjs/chunks/{bundle-DXrpp6AJ.js → bundle-gtkPlUrw.js} +234 -234
  674. package/cjs/chunks/bundle-gtkPlUrw.js.map +1 -0
  675. package/cjs/chunks/{bundle-C0Gtok_c.js → bundle-miB6ue8g.js} +72 -72
  676. package/cjs/chunks/bundle-miB6ue8g.js.map +1 -0
  677. package/cjs/chunks/{bundle-Cg6exdly.js → bundle-oeWNUdCB.js} +11 -11
  678. package/cjs/chunks/bundle-oeWNUdCB.js.map +1 -0
  679. package/cjs/chunks/{bundle-BACbqv7X.js → bundle-qI5gnScC.js} +5 -5
  680. package/cjs/chunks/bundle-qI5gnScC.js.map +1 -0
  681. package/cjs/chunks/{bundle-m2yaPSNj.js → bundle-wMKhbE3c.js} +2 -2
  682. package/cjs/chunks/{bundle-m2yaPSNj.js.map → bundle-wMKhbE3c.js.map} +1 -1
  683. package/cjs/chunks/{bundle-BTEk9dhT.js → bundle-wl1uuzU7.js} +733 -730
  684. package/cjs/chunks/bundle-wl1uuzU7.js.map +1 -0
  685. package/cjs/handlers/OpenChannelHandler.js +2 -2
  686. package/cjs/handlers/SessionHandler.js +2 -2
  687. package/cjs/hooks/useModal.js +25 -48
  688. package/cjs/hooks/useModal.js.map +1 -1
  689. package/cjs/index.js +80 -81
  690. package/cjs/index.js.map +1 -1
  691. package/cjs/pubSub/topics.js +1 -1
  692. package/cjs/sendbirdSelectors.js +550 -550
  693. package/cjs/ui/Accordion.js +25 -25
  694. package/cjs/ui/AccordionGroup.js +40 -40
  695. package/cjs/ui/AdminMessage.js +13 -13
  696. package/cjs/ui/Avatar.js +4 -4
  697. package/cjs/ui/Badge.js +18 -18
  698. package/cjs/ui/BottomSheet.js +40 -26
  699. package/cjs/ui/BottomSheet.js.map +1 -1
  700. package/cjs/ui/Button.js +41 -41
  701. package/cjs/ui/ChannelAvatar.js +21 -21
  702. package/cjs/ui/Checkbox.js +15 -15
  703. package/cjs/ui/ConnectionStatus.js +11 -11
  704. package/cjs/ui/ContextMenu.js +180 -267
  705. package/cjs/ui/ContextMenu.js.map +1 -1
  706. package/cjs/ui/DateSeparator.js +13 -13
  707. package/cjs/ui/EmojiReactions.js +167 -164
  708. package/cjs/ui/EmojiReactions.js.map +1 -1
  709. package/cjs/ui/FallbackTemplateMessageItemBody.tsx.js +20 -21
  710. package/cjs/ui/FallbackTemplateMessageItemBody.tsx.js.map +1 -1
  711. package/cjs/ui/FeedbackIconButton.js +14 -14
  712. package/cjs/ui/FileMessageItemBody.js +65 -66
  713. package/cjs/ui/FileMessageItemBody.js.map +1 -1
  714. package/cjs/ui/FileViewer.js +23 -17
  715. package/cjs/ui/FileViewer.js.map +1 -1
  716. package/cjs/ui/Header.js +53 -0
  717. package/cjs/ui/Header.js.map +1 -0
  718. package/cjs/ui/Icon.js +844 -964
  719. package/cjs/ui/Icon.js.map +1 -1
  720. package/cjs/ui/IconButton.js +18 -18
  721. package/cjs/ui/ImageRenderer.js +151 -151
  722. package/cjs/ui/Input.js +15 -15
  723. package/cjs/ui/Label.js +4 -4
  724. package/cjs/ui/LinkLabel.js +21 -21
  725. package/cjs/ui/Loader.js +11 -11
  726. package/cjs/ui/LoadingTemplateMessageItemBody.tsx.js +13 -14
  727. package/cjs/ui/LoadingTemplateMessageItemBody.tsx.js.map +1 -1
  728. package/cjs/ui/MentionLabel.js +50 -50
  729. package/cjs/ui/MentionUserLabel.js +4 -4
  730. package/cjs/ui/MessageContent.js +586 -581
  731. package/cjs/ui/MessageContent.js.map +1 -1
  732. package/cjs/ui/MessageFeedbackFailedModal.js +34 -22
  733. package/cjs/ui/MessageFeedbackFailedModal.js.map +1 -1
  734. package/cjs/ui/MessageFeedbackModal.js +66 -54
  735. package/cjs/ui/MessageFeedbackModal.js.map +1 -1
  736. package/cjs/ui/MessageInput/hooks/usePaste.js +7 -7
  737. package/cjs/ui/MessageInput.js +423 -424
  738. package/cjs/ui/MessageInput.js.map +1 -1
  739. package/cjs/ui/MessageItemMenu.js +134 -134
  740. package/cjs/ui/MessageItemReactionMenu.js +42 -42
  741. package/cjs/ui/MessageSearchFileItem.js +77 -78
  742. package/cjs/ui/MessageSearchFileItem.js.map +1 -1
  743. package/cjs/ui/MessageSearchItem.js +50 -50
  744. package/cjs/ui/MessageStatus.js +11 -12
  745. package/cjs/ui/MessageStatus.js.map +1 -1
  746. package/cjs/ui/MessageTemplate.js +1 -2
  747. package/cjs/ui/MessageTemplate.js.map +1 -1
  748. package/cjs/ui/MobileFeedbackMenu.js +36 -25
  749. package/cjs/ui/MobileFeedbackMenu.js.map +1 -1
  750. package/cjs/ui/Modal.js +21 -8
  751. package/cjs/ui/Modal.js.map +1 -1
  752. package/cjs/ui/MutedAvatarOverlay.js +14 -14
  753. package/cjs/ui/OGMessageItemBody.js +76 -76
  754. package/cjs/ui/OpenChannelAdminMessage.js +9 -9
  755. package/cjs/ui/OpenChannelAvatar.js +15 -15
  756. package/cjs/ui/OpenchannelConversationHeader.js +22 -22
  757. package/cjs/ui/OpenchannelFileMessage.js +117 -117
  758. package/cjs/ui/OpenchannelOGMessage.js +146 -146
  759. package/cjs/ui/OpenchannelThumbnailMessage.js +155 -155
  760. package/cjs/ui/OpenchannelUserMessage.js +128 -128
  761. package/cjs/ui/PlaceHolder.js +45 -45
  762. package/cjs/ui/PlaybackTime.js +11 -11
  763. package/cjs/ui/ProgressBar.js +12 -12
  764. package/cjs/ui/QuoteMessage.js +69 -70
  765. package/cjs/ui/QuoteMessage.js.map +1 -1
  766. package/cjs/ui/QuoteMessageInput.js +66 -67
  767. package/cjs/ui/QuoteMessageInput.js.map +1 -1
  768. package/cjs/ui/ReactionBadge.js +20 -20
  769. package/cjs/ui/ReactionButton.js +17 -17
  770. package/cjs/ui/SortByRow.js +23 -23
  771. package/cjs/ui/TemplateMessageItemBody.js +423 -424
  772. package/cjs/ui/TemplateMessageItemBody.js.map +1 -1
  773. package/cjs/ui/TextButton.js +9 -9
  774. package/cjs/ui/TextMessageItemBody.js +44 -44
  775. package/cjs/ui/ThreadReplies.js +34 -34
  776. package/cjs/ui/ThumbnailMessageItemBody.js +36 -37
  777. package/cjs/ui/ThumbnailMessageItemBody.js.map +1 -1
  778. package/cjs/ui/Toggle.js +110 -110
  779. package/cjs/ui/Tooltip.js +9 -9
  780. package/cjs/ui/TooltipWrapper.js +13 -13
  781. package/cjs/ui/TypingIndicatorBubble.js +56 -56
  782. package/cjs/ui/UnknownMessageItemBody.js +19 -20
  783. package/cjs/ui/UnknownMessageItemBody.js.map +1 -1
  784. package/cjs/ui/UserListItem.js +56 -56
  785. package/cjs/ui/UserProfile.js +45 -45
  786. package/cjs/ui/VoiceMessageInput.js +9 -9
  787. package/cjs/ui/VoiceMessageItemBody.js +62 -54
  788. package/cjs/ui/VoiceMessageItemBody.js.map +1 -1
  789. package/cjs/ui/Word.js +41 -41
  790. package/cjs/useSendbirdStateContext.js +15 -15
  791. package/cjs/utils/message/getOutgoingMessageState.js +32 -32
  792. package/cjs/utils/message/isVoiceMessage.js +2 -3
  793. package/cjs/utils/message/isVoiceMessage.js.map +1 -1
  794. package/cjs/withSendbird.js +17 -17
  795. package/dist/index.css +195 -169
  796. package/dist/index.css.map +1 -1
  797. package/handlers/OpenChannelHandler.js +2 -2
  798. package/handlers/SessionHandler.js +2 -2
  799. package/hooks/useModal.js +22 -50
  800. package/hooks/useModal.js.map +1 -1
  801. package/index.js +80 -81
  802. package/index.js.map +1 -1
  803. package/package.json +13 -5
  804. package/pubSub/topics.js +1 -1
  805. package/sendbirdSelectors.js +550 -550
  806. package/types/lib/pubSub/topics.d.ts +2 -2
  807. package/types/lib/types.d.ts +50 -15
  808. package/types/modules/App/index.d.ts +17 -10
  809. package/types/modules/Channel/context/ChannelProvider.d.ts +1 -4
  810. package/types/modules/ChannelList/components/ChannelPreviewAction.d.ts +2 -2
  811. package/types/modules/ChannelSettings/components/ChannelSettingsUI/ChannelSettingsHeader.d.ts +4 -3
  812. package/types/modules/GroupChannel/components/FileViewer/FileViewerView.d.ts +2 -2
  813. package/types/modules/GroupChannel/components/GroupChannelHeader/GroupChannelHeaderView.d.ts +3 -2
  814. package/types/modules/GroupChannel/components/GroupChannelHeader/index.d.ts +3 -2
  815. package/types/modules/GroupChannel/components/MessageInputWrapper/MessageInputWrapperView.d.ts +1 -1
  816. package/types/modules/GroupChannel/components/MessageInputWrapper/VoiceMessageInputWrapper.d.ts +2 -2
  817. package/types/modules/GroupChannel/components/MessageInputWrapper/index.d.ts +1 -1
  818. package/types/modules/GroupChannel/components/SuggestedReplies/index.d.ts +3 -1
  819. package/types/modules/GroupChannelList/components/GroupChannelListHeader/index.d.ts +4 -2
  820. package/types/modules/MessageSearch/context/MessageSearchProvider.d.ts +1 -1
  821. package/types/modules/OpenChannelApp/index.d.ts +3 -3
  822. package/types/modules/Thread/components/ThreadHeader/index.d.ts +2 -2
  823. package/types/ui/Header/index.d.ts +45 -0
  824. package/types/ui/Icon/index.d.ts +2 -3
  825. package/types/ui/Label/index.d.ts +3 -4
  826. package/types/ui/MessageInput/hooks/usePaste/consts.d.ts +1 -1
  827. package/types/ui/Modal/index.d.ts +2 -4
  828. package/types/ui/TextButton/index.d.ts +1 -1
  829. package/types/ui/Toggle/ToggleContainer.d.ts +2 -1
  830. package/types/utils/index.d.ts +0 -1
  831. package/types/utils/utils.d.ts +2 -0
  832. package/ui/Accordion.js +25 -25
  833. package/ui/AccordionGroup.js +40 -40
  834. package/ui/AdminMessage.js +13 -13
  835. package/ui/Avatar.js +4 -4
  836. package/ui/Badge.js +18 -18
  837. package/ui/BottomSheet.js +40 -26
  838. package/ui/BottomSheet.js.map +1 -1
  839. package/ui/Button.js +41 -41
  840. package/ui/ChannelAvatar.js +21 -21
  841. package/ui/Checkbox.js +15 -15
  842. package/ui/ConnectionStatus.js +11 -11
  843. package/ui/ContextMenu.js +180 -267
  844. package/ui/ContextMenu.js.map +1 -1
  845. package/ui/DateSeparator.js +13 -13
  846. package/ui/EmojiReactions.js +167 -164
  847. package/ui/EmojiReactions.js.map +1 -1
  848. package/ui/FallbackTemplateMessageItemBody.tsx.js +20 -21
  849. package/ui/FallbackTemplateMessageItemBody.tsx.js.map +1 -1
  850. package/ui/FeedbackIconButton.js +14 -14
  851. package/ui/FileMessageItemBody.js +65 -66
  852. package/ui/FileMessageItemBody.js.map +1 -1
  853. package/ui/FileViewer.js +23 -17
  854. package/ui/FileViewer.js.map +1 -1
  855. package/ui/Header.js +45 -0
  856. package/ui/Header.js.map +1 -0
  857. package/ui/Icon.js +845 -965
  858. package/ui/Icon.js.map +1 -1
  859. package/ui/IconButton.js +18 -18
  860. package/ui/ImageRenderer.js +151 -151
  861. package/ui/Input.js +15 -15
  862. package/ui/Label.js +3 -3
  863. package/ui/LinkLabel.js +21 -21
  864. package/ui/Loader.js +11 -11
  865. package/ui/LoadingTemplateMessageItemBody.tsx.js +13 -14
  866. package/ui/LoadingTemplateMessageItemBody.tsx.js.map +1 -1
  867. package/ui/MentionLabel.js +50 -50
  868. package/ui/MentionUserLabel.js +4 -4
  869. package/ui/MessageContent.js +586 -581
  870. package/ui/MessageContent.js.map +1 -1
  871. package/ui/MessageFeedbackFailedModal.js +34 -22
  872. package/ui/MessageFeedbackFailedModal.js.map +1 -1
  873. package/ui/MessageFeedbackModal.js +66 -54
  874. package/ui/MessageFeedbackModal.js.map +1 -1
  875. package/ui/MessageInput/hooks/usePaste.js +7 -7
  876. package/ui/MessageInput.js +423 -424
  877. package/ui/MessageInput.js.map +1 -1
  878. package/ui/MessageItemMenu.js +134 -134
  879. package/ui/MessageItemReactionMenu.js +42 -42
  880. package/ui/MessageSearchFileItem.js +77 -78
  881. package/ui/MessageSearchFileItem.js.map +1 -1
  882. package/ui/MessageSearchItem.js +50 -50
  883. package/ui/MessageStatus.js +11 -12
  884. package/ui/MessageStatus.js.map +1 -1
  885. package/ui/MessageTemplate.js +1 -2
  886. package/ui/MessageTemplate.js.map +1 -1
  887. package/ui/MobileFeedbackMenu.js +36 -25
  888. package/ui/MobileFeedbackMenu.js.map +1 -1
  889. package/ui/Modal.js +21 -8
  890. package/ui/Modal.js.map +1 -1
  891. package/ui/MutedAvatarOverlay.js +14 -14
  892. package/ui/OGMessageItemBody.js +76 -76
  893. package/ui/OpenChannelAdminMessage.js +9 -9
  894. package/ui/OpenChannelAvatar.js +15 -15
  895. package/ui/OpenchannelConversationHeader.js +22 -22
  896. package/ui/OpenchannelFileMessage.js +117 -117
  897. package/ui/OpenchannelOGMessage.js +146 -146
  898. package/ui/OpenchannelThumbnailMessage.js +155 -155
  899. package/ui/OpenchannelUserMessage.js +128 -128
  900. package/ui/PlaceHolder.js +45 -45
  901. package/ui/PlaybackTime.js +11 -11
  902. package/ui/ProgressBar.js +12 -12
  903. package/ui/QuoteMessage.js +69 -70
  904. package/ui/QuoteMessage.js.map +1 -1
  905. package/ui/QuoteMessageInput.js +66 -67
  906. package/ui/QuoteMessageInput.js.map +1 -1
  907. package/ui/ReactionBadge.js +20 -20
  908. package/ui/ReactionButton.js +17 -17
  909. package/ui/SortByRow.js +23 -23
  910. package/ui/TemplateMessageItemBody.js +423 -424
  911. package/ui/TemplateMessageItemBody.js.map +1 -1
  912. package/ui/TextButton.js +9 -9
  913. package/ui/TextMessageItemBody.js +44 -44
  914. package/ui/ThreadReplies.js +34 -34
  915. package/ui/ThumbnailMessageItemBody.js +36 -37
  916. package/ui/ThumbnailMessageItemBody.js.map +1 -1
  917. package/ui/Toggle.js +110 -110
  918. package/ui/Tooltip.js +9 -9
  919. package/ui/TooltipWrapper.js +13 -13
  920. package/ui/TypingIndicatorBubble.js +56 -56
  921. package/ui/UnknownMessageItemBody.js +19 -20
  922. package/ui/UnknownMessageItemBody.js.map +1 -1
  923. package/ui/UserListItem.js +56 -56
  924. package/ui/UserProfile.js +45 -45
  925. package/ui/VoiceMessageInput.js +9 -9
  926. package/ui/VoiceMessageItemBody.js +62 -54
  927. package/ui/VoiceMessageItemBody.js.map +1 -1
  928. package/ui/Word.js +41 -41
  929. package/useSendbirdStateContext.js +15 -15
  930. package/utils/message/getOutgoingMessageState.js +32 -32
  931. package/utils/message/isVoiceMessage.js +2 -3
  932. package/utils/message/isVoiceMessage.js.map +1 -1
  933. package/withSendbird.js +17 -17
  934. package/chunks/bundle-1Vgo9VWV.js.map +0 -1
  935. package/chunks/bundle-58U1RLA2.js +0 -4
  936. package/chunks/bundle-58U1RLA2.js.map +0 -1
  937. package/chunks/bundle-B0WDmdBo.js.map +0 -1
  938. package/chunks/bundle-B7UQ7Txq.js.map +0 -1
  939. package/chunks/bundle-BADg8JRM.js.map +0 -1
  940. package/chunks/bundle-BCL7kk-0.js.map +0 -1
  941. package/chunks/bundle-BDxgzOKZ.js.map +0 -1
  942. package/chunks/bundle-BL0tKclB.js.map +0 -1
  943. package/chunks/bundle-BQcc_8oI.js.map +0 -1
  944. package/chunks/bundle-BRaG5EHs.js.map +0 -1
  945. package/chunks/bundle-BRt6gbIr.js.map +0 -1
  946. package/chunks/bundle-BV-Kx6li.js.map +0 -1
  947. package/chunks/bundle-BZt7yK_Y.js.map +0 -1
  948. package/chunks/bundle-BeTPrbXl.js.map +0 -1
  949. package/chunks/bundle-BlRZqe8T.js.map +0 -1
  950. package/chunks/bundle-BnTt0CCZ.js.map +0 -1
  951. package/chunks/bundle-BrPQ1xtW.js.map +0 -1
  952. package/chunks/bundle-BuRpKo8a.js.map +0 -1
  953. package/chunks/bundle-BvcFQzve.js.map +0 -1
  954. package/chunks/bundle-ByTQtdFM.js.map +0 -1
  955. package/chunks/bundle-C0EFwuDi.js.map +0 -1
  956. package/chunks/bundle-C2qp06Ad.js.map +0 -1
  957. package/chunks/bundle-C5KSa4Q_.js.map +0 -1
  958. package/chunks/bundle-CQt1ONzj.js.map +0 -1
  959. package/chunks/bundle-Cf0JIqFR.js.map +0 -1
  960. package/chunks/bundle-Cgpa9xMh.js.map +0 -1
  961. package/chunks/bundle-Chv9JypP.js.map +0 -1
  962. package/chunks/bundle-Cl6qrizD.js.map +0 -1
  963. package/chunks/bundle-CpmDD_qj.js.map +0 -1
  964. package/chunks/bundle-D0Atuq2W.js.map +0 -1
  965. package/chunks/bundle-D7HxTsM2.js.map +0 -1
  966. package/chunks/bundle-DChZSw0N.js.map +0 -1
  967. package/chunks/bundle-DKHcEPfr.js.map +0 -1
  968. package/chunks/bundle-DLIFpzrP.js.map +0 -1
  969. package/chunks/bundle-DSw2Wyv5.js.map +0 -1
  970. package/chunks/bundle-DVDuILQh.js.map +0 -1
  971. package/chunks/bundle-DW4HEvvh.js.map +0 -1
  972. package/chunks/bundle-DX0g6QGP.js.map +0 -1
  973. package/chunks/bundle-DcJtM5WL.js.map +0 -1
  974. package/chunks/bundle-DjFflxR1.js.map +0 -1
  975. package/chunks/bundle-DnhvGgBr.js.map +0 -1
  976. package/chunks/bundle-DtHyIHaJ.js.map +0 -1
  977. package/chunks/bundle-DvPYXQcP.js.map +0 -1
  978. package/chunks/bundle-DvRNa17t.js.map +0 -1
  979. package/chunks/bundle-E_q9aH_b.js.map +0 -1
  980. package/chunks/bundle-HHlRp7vF.js.map +0 -1
  981. package/chunks/bundle-JfMKdEOr.js.map +0 -1
  982. package/chunks/bundle-P4HvWTGS.js.map +0 -1
  983. package/chunks/bundle-Vk50O4-7.js.map +0 -1
  984. package/chunks/bundle-bTVomhqp.js +0 -65
  985. package/chunks/bundle-bTVomhqp.js.map +0 -1
  986. package/chunks/bundle-cldHLNQX.js +0 -36
  987. package/chunks/bundle-cldHLNQX.js.map +0 -1
  988. package/chunks/bundle-gMq6CHjL.js.map +0 -1
  989. package/chunks/bundle-iSiw-_HL.js +0 -129
  990. package/chunks/bundle-iSiw-_HL.js.map +0 -1
  991. package/chunks/bundle-oKpBi3n1.js.map +0 -1
  992. package/cjs/chunks/bundle-Amd_tEFX.js.map +0 -1
  993. package/cjs/chunks/bundle-B0Cl8cKp.js.map +0 -1
  994. package/cjs/chunks/bundle-B1UxSAT6.js.map +0 -1
  995. package/cjs/chunks/bundle-B2K8d_Kr.js.map +0 -1
  996. package/cjs/chunks/bundle-B5nh0Mif.js.map +0 -1
  997. package/cjs/chunks/bundle-BACbqv7X.js.map +0 -1
  998. package/cjs/chunks/bundle-BGhSB8RW.js.map +0 -1
  999. package/cjs/chunks/bundle-BSV6l3PT.js.map +0 -1
  1000. package/cjs/chunks/bundle-BTEk9dhT.js.map +0 -1
  1001. package/cjs/chunks/bundle-BWtc6aAL.js.map +0 -1
  1002. package/cjs/chunks/bundle-BZcKIqEO.js.map +0 -1
  1003. package/cjs/chunks/bundle-Bcgo-8Wz.js.map +0 -1
  1004. package/cjs/chunks/bundle-BeCXSzTg.js.map +0 -1
  1005. package/cjs/chunks/bundle-BgJJI84U.js.map +0 -1
  1006. package/cjs/chunks/bundle-BhbVr0qd.js +0 -72
  1007. package/cjs/chunks/bundle-BhbVr0qd.js.map +0 -1
  1008. package/cjs/chunks/bundle-BjHWj0YM.js.map +0 -1
  1009. package/cjs/chunks/bundle-BrrYIsp-.js.map +0 -1
  1010. package/cjs/chunks/bundle-Bu7SLdLc.js.map +0 -1
  1011. package/cjs/chunks/bundle-BwzMNAFs.js.map +0 -1
  1012. package/cjs/chunks/bundle-C-sGYQWV.js.map +0 -1
  1013. package/cjs/chunks/bundle-C0Gtok_c.js.map +0 -1
  1014. package/cjs/chunks/bundle-C1XDY35t.js.map +0 -1
  1015. package/cjs/chunks/bundle-CFpokORf.js.map +0 -1
  1016. package/cjs/chunks/bundle-CGKSHSXZ.js +0 -131
  1017. package/cjs/chunks/bundle-CGKSHSXZ.js.map +0 -1
  1018. package/cjs/chunks/bundle-CGNRfqfQ.js.map +0 -1
  1019. package/cjs/chunks/bundle-CN-HA7zS.js +0 -7
  1020. package/cjs/chunks/bundle-CN-HA7zS.js.map +0 -1
  1021. package/cjs/chunks/bundle-COM-Vp38.js.map +0 -1
  1022. package/cjs/chunks/bundle-COwRojr8.js.map +0 -1
  1023. package/cjs/chunks/bundle-CRtD-LF2.js.map +0 -1
  1024. package/cjs/chunks/bundle-CT33owD4.js.map +0 -1
  1025. package/cjs/chunks/bundle-CUue3xhm.js.map +0 -1
  1026. package/cjs/chunks/bundle-CYFSAQ2T.js.map +0 -1
  1027. package/cjs/chunks/bundle-Cc053_Sp.js +0 -38
  1028. package/cjs/chunks/bundle-Cc053_Sp.js.map +0 -1
  1029. package/cjs/chunks/bundle-Cg6exdly.js.map +0 -1
  1030. package/cjs/chunks/bundle-Chvgl0tl.js.map +0 -1
  1031. package/cjs/chunks/bundle-CkBOTPET.js.map +0 -1
  1032. package/cjs/chunks/bundle-Cm_quRwQ.js.map +0 -1
  1033. package/cjs/chunks/bundle-CqfYJ2-A.js.map +0 -1
  1034. package/cjs/chunks/bundle-D1gE5kRR.js.map +0 -1
  1035. package/cjs/chunks/bundle-DEOaRh_m.js.map +0 -1
  1036. package/cjs/chunks/bundle-DF9nQRmT.js.map +0 -1
  1037. package/cjs/chunks/bundle-DRneqmmM.js.map +0 -1
  1038. package/cjs/chunks/bundle-DTZwXpbk.js.map +0 -1
  1039. package/cjs/chunks/bundle-DTzDEbe0.js.map +0 -1
  1040. package/cjs/chunks/bundle-DU2DrCMu.js.map +0 -1
  1041. package/cjs/chunks/bundle-DYU6eNDJ.js.map +0 -1
  1042. package/cjs/chunks/bundle-DYdwn7HI.js.map +0 -1
  1043. package/cjs/chunks/bundle-DZl6cYvA.js.map +0 -1
  1044. package/cjs/chunks/bundle-Dc_hFK8U.js.map +0 -1
  1045. package/cjs/chunks/bundle-Dfqk1zRa.js.map +0 -1
  1046. package/cjs/chunks/bundle-DhB9bJf0.js.map +0 -1
  1047. package/cjs/chunks/bundle-DiMvAbrw.js.map +0 -1
  1048. package/cjs/chunks/bundle-Dnrc5q_J.js.map +0 -1
  1049. package/cjs/chunks/bundle-DpiYQ60c.js.map +0 -1
  1050. package/cjs/chunks/bundle-DxeOzVdw.js.map +0 -1
  1051. package/cjs/chunks/bundle-LJi0Ftvu.js.map +0 -1
  1052. package/cjs/chunks/bundle-ROscI12S.js.map +0 -1
  1053. package/cjs/chunks/bundle-Vfq24KlC.js.map +0 -1
  1054. package/cjs/chunks/bundle-ZtEjNaVg.js.map +0 -1
  1055. package/cjs/chunks/bundle-_VH8bxGE.js.map +0 -1
  1056. package/cjs/chunks/bundle-eHc2IloF.js.map +0 -1
  1057. package/cjs/chunks/bundle-oEFvi6H_.js.map +0 -1
  1058. package/cjs/chunks/bundle-waMogQH7.js.map +0 -1
  1059. package/cjs/chunks/bundle-xkYrx6pX.js.map +0 -1
  1060. package/cjs/chunks/bundle-xpQ8gY1k.js.map +0 -1
  1061. package/types/modules/OpenChannelApp/stories/utils.d.ts +0 -6
@@ -1,1495 +1,1495 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var UserProfileContext = require('../chunks/bundle-CT33owD4.js');
4
+ var UserProfileContext = require('../chunks/bundle-CAUMYdVU.js');
5
5
  var useSendbirdStateContext = require('../useSendbirdStateContext.js');
6
- var _const = require('../chunks/bundle-CUue3xhm.js');
7
- var utils = require('../chunks/bundle-oEFvi6H_.js');
8
- var getIsReactionEnabled = require('../chunks/bundle-DU2DrCMu.js');
9
- var _tslib = require('../chunks/bundle-BwzMNAFs.js');
10
- var index$2 = require('../chunks/bundle-BEDFWZBT.js');
6
+ var _const = require('../chunks/bundle-CR04Yhbr.js');
7
+ var utils = require('../chunks/bundle-CE6bFQmu.js');
8
+ var getIsReactionEnabled = require('../chunks/bundle-Dww6fCVQ.js');
9
+ var _tslib = require('../chunks/bundle-HGbi-rCv.js');
10
+ var index$1 = require('../chunks/bundle-DAj-1QVM.js');
11
11
  var message = require('@sendbird/chat/message');
12
- var index = require('../chunks/bundle-CN-HA7zS.js');
13
- var actionTypes = require('../chunks/bundle-CkBOTPET.js');
14
- var compareIds = require('../chunks/bundle-C-sGYQWV.js');
15
- var Channel_hooks_useInitialMessagesFetch = require('../chunks/bundle-DhgoVGKx.js');
16
- var index$1 = require('../chunks/bundle-BTEk9dhT.js');
12
+ var index = require('../chunks/bundle-wl1uuzU7.js');
13
+ var actionTypes = require('../chunks/bundle-T4lp5F85.js');
14
+ var compareIds = require('../chunks/bundle-DRy7eNJ0.js');
15
+ var Channel_hooks_useInitialMessagesFetch = require('../chunks/bundle-7UHC8ujA.js');
17
16
  var groupChannel = require('@sendbird/chat/groupChannel');
18
- var uuid = require('../chunks/bundle-B0Cl8cKp.js');
19
- var useReconnectOnIdle = require('../chunks/bundle-DhB9bJf0.js');
20
- var consts = require('../chunks/bundle-BgJJI84U.js');
21
- var pubSub_topics = require('../chunks/bundle-CqfYJ2-A.js');
22
- var useToggleReactionCallback = require('../chunks/bundle-DTzDEbe0.js');
23
- var resolvedReplyType = require('../chunks/bundle-CYFSAQ2T.js');
24
- var useSendMultipleFilesMessage = require('../chunks/bundle-BVXtMOiP.js');
17
+ var uuid = require('../chunks/bundle-1XtsxT8L.js');
18
+ var useReconnectOnIdle = require('../chunks/bundle-_ekaw3iI.js');
19
+ var consts = require('../chunks/bundle-DfcEln0Z.js');
20
+ var pubSub_topics = require('../chunks/bundle-Dehhi1FZ.js');
21
+ var useToggleReactionCallback = require('../chunks/bundle-BaQc9oOW.js');
22
+ var resolvedReplyType = require('../chunks/bundle-BjgfoBVC.js');
23
+ var useSendMultipleFilesMessage = require('../chunks/bundle-BXEGf4g2.js');
25
24
  require('../withSendbird.js');
26
- require('../chunks/bundle-XPPVGabQ.js');
25
+ require('../chunks/bundle-BWGOXLHb.js');
27
26
  require('../utils/message/getOutgoingMessageState.js');
28
27
 
29
- var initialState = {
30
- initialized: false,
31
- loading: true,
32
- allMessages: [],
33
- /**
34
- * localMessages: pending & failed messages
35
- */
36
- localMessages: [],
37
- currentGroupChannel: null,
38
- // for scrollup
39
- hasMorePrev: false,
40
- oldestMessageTimeStamp: 0,
41
- // for scroll down
42
- // onScrollDownCallback is added for navigation to different timestamps on messageSearch
43
- // hasMorePrev, onScrollCallback -> scroll up(default behavior)
44
- // hasMoreNext, onScrollDownCallback -> scroll down
45
- hasMoreNext: false,
46
- latestMessageTimeStamp: 0,
47
- emojiContainer: { emojiCategories: [], emojiHash: '' },
48
- /** @deprecated Please use `unreadSinceDate` instead. * */
49
- unreadSince: null,
50
- /**
51
- * unreadSinceDate is a date information about message unread.
52
- * It's used only for the {unreadSinceDate && <UnreadCount unreadSinceDate={unreadSinceDate} />}
53
- */
54
- unreadSinceDate: null,
55
- isInvalid: false,
56
- readStatus: null,
57
- messageListParams: null,
58
- typingMembers: [],
28
+ var initialState = {
29
+ initialized: false,
30
+ loading: true,
31
+ allMessages: [],
32
+ /**
33
+ * localMessages: pending & failed messages
34
+ */
35
+ localMessages: [],
36
+ currentGroupChannel: null,
37
+ // for scrollup
38
+ hasMorePrev: false,
39
+ oldestMessageTimeStamp: 0,
40
+ // for scroll down
41
+ // onScrollDownCallback is added for navigation to different timestamps on messageSearch
42
+ // hasMorePrev, onScrollCallback -> scroll up(default behavior)
43
+ // hasMoreNext, onScrollDownCallback -> scroll down
44
+ hasMoreNext: false,
45
+ latestMessageTimeStamp: 0,
46
+ emojiContainer: { emojiCategories: [], emojiHash: '' },
47
+ /** @deprecated Please use `unreadSinceDate` instead. * */
48
+ unreadSince: null,
49
+ /**
50
+ * unreadSinceDate is a date information about message unread.
51
+ * It's used only for the {unreadSinceDate && <UnreadCount unreadSinceDate={unreadSinceDate} />}
52
+ */
53
+ unreadSinceDate: null,
54
+ isInvalid: false,
55
+ readStatus: null,
56
+ messageListParams: null,
57
+ typingMembers: [],
59
58
  };
60
59
 
61
- var getOldestMessageTimeStamp = function (messages) {
62
- if (messages === void 0) { messages = []; }
63
- var oldestMessage = messages[0];
64
- return (oldestMessage && oldestMessage.createdAt) || null;
65
- };
66
- var getLatestMessageTimeStamp = function (messages) {
67
- if (messages === void 0) { messages = []; }
68
- var latestMessage = messages[messages.length - 1];
69
- return (latestMessage && latestMessage.createdAt) || null;
70
- };
71
- function hasReqId(message) {
72
- return 'reqId' in message;
73
- }
74
- function channelReducer(state, action) {
75
- return index.K(action)
76
- .with({ type: actionTypes.RESET_MESSAGES }, function () {
77
- return _tslib.__assign(_tslib.__assign({}, state), {
78
- // when user switches channel, if the previous channel `hasMorePrev`
79
- // the onScroll gets called twice, setting hasMorePrev false prevents this
80
- hasMorePrev: false, hasMoreNext: false, allMessages: [], localMessages: [] });
81
- })
82
- .with({ type: actionTypes.FETCH_INITIAL_MESSAGES_START }, function () {
83
- return _tslib.__assign(_tslib.__assign({}, state), { loading: true, allMessages: state.allMessages.filter(function (m) { return index$1.isSendableMessage(m)
84
- ? m.sendingStatus !== message.SendingStatus.SUCCEEDED
85
- : true; }), localMessages: [] });
86
- })
87
- .with({ type: actionTypes.FETCH_INITIAL_MESSAGES_SUCCESS }, function (action) {
88
- var _a;
89
- var _b = action.payload, currentGroupChannel = _b.currentGroupChannel, messages = _b.messages;
90
- if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
91
- return state;
92
- }
93
- var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
94
- var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
95
- return _tslib.__assign(_tslib.__assign({}, state), { loading: false, initialized: true, hasMorePrev: true, hasMoreNext: true, oldestMessageTimeStamp: oldestMessageTimeStamp, latestMessageTimeStamp: latestMessageTimeStamp, allMessages: _tslib.__spreadArray([], messages, true) });
96
- })
97
- .with({ type: actionTypes.FETCH_PREV_MESSAGES_SUCCESS }, function (action) {
98
- var _a, _b, _c, _d;
99
- var _e = action.payload, currentGroupChannel = _e.currentGroupChannel, messages = _e.messages;
100
- if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
101
- return state;
102
- }
103
- var hasMorePrev = ((_b = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _b !== void 0 ? _b : 0)
104
- >= ((_d = (_c = state === null || state === void 0 ? void 0 : state.messageListParams) === null || _c === void 0 ? void 0 : _c.prevResultSize) !== null && _d !== void 0 ? _d : Channel_hooks_useInitialMessagesFetch.PREV_RESULT_SIZE) + 1;
105
- var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
106
- // Remove duplicated messages
107
- var duplicatedMessageIds = [];
108
- var updatedOldMessages = state.allMessages.map(function (msg) {
109
- var duplicatedMessage = messages.find(function (_a) {
110
- var messageId = _a.messageId;
111
- return compareIds.compareIds(messageId, msg.messageId);
112
- });
113
- if (!duplicatedMessage) {
114
- return msg;
115
- }
116
- duplicatedMessageIds.push(duplicatedMessage.messageId);
117
- return duplicatedMessage.updatedAt > msg.updatedAt
118
- ? duplicatedMessage
119
- : msg;
120
- });
121
- var filteredNewMessages = duplicatedMessageIds.length > 0
122
- ? messages.filter(function (msg) { return !duplicatedMessageIds.find(function (messageId) { return compareIds.compareIds(messageId, msg.messageId); }); })
123
- : messages;
124
- return _tslib.__assign(_tslib.__assign({}, state), { hasMorePrev: hasMorePrev, oldestMessageTimeStamp: oldestMessageTimeStamp, allMessages: _tslib.__spreadArray(_tslib.__spreadArray([], filteredNewMessages, true), updatedOldMessages, true) });
125
- })
126
- .with({ type: actionTypes.FETCH_NEXT_MESSAGES_SUCCESS }, function (action) {
127
- var _a, _b, _c, _d;
128
- var _e = action.payload, currentGroupChannel = _e.currentGroupChannel, messages = _e.messages;
129
- if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
130
- return state;
131
- }
132
- var hasMoreNext = ((_b = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _b !== void 0 ? _b : 0)
133
- === ((_d = (_c = state === null || state === void 0 ? void 0 : state.messageListParams) === null || _c === void 0 ? void 0 : _c.nextResultSize) !== null && _d !== void 0 ? _d : Channel_hooks_useInitialMessagesFetch.NEXT_RESULT_SIZE) + 1;
134
- var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
135
- // sort ~
136
- var sortedMessages = utils.mergeAndSortMessages(state.allMessages, messages);
137
- return _tslib.__assign(_tslib.__assign({}, state), { hasMoreNext: hasMoreNext, latestMessageTimeStamp: latestMessageTimeStamp, allMessages: sortedMessages });
138
- })
139
- .with({
140
- type: index.S.union(actionTypes.FETCH_INITIAL_MESSAGES_FAILURE, actionTypes.FETCH_PREV_MESSAGES_FAILURE, actionTypes.FETCH_NEXT_MESSAGES_FAILURE),
141
- }, function (action) {
142
- var _a;
143
- var currentGroupChannel = action.payload.currentGroupChannel;
144
- if ((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) !== ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))
145
- return state;
146
- // It shows something went wrong screen when fetching initial messages failed.
147
- var shouldInvalid = [actionTypes.FETCH_INITIAL_MESSAGES_FAILURE].includes(action.type);
148
- return _tslib.__assign(_tslib.__assign({}, state), { loading: false, isInvalid: shouldInvalid, initialized: false, allMessages: [], hasMorePrev: false, hasMoreNext: false, oldestMessageTimeStamp: null, latestMessageTimeStamp: null });
149
- })
150
- .with({ type: actionTypes.SEND_MESSAGE_START }, function (action) {
151
- // Message should not be spread here
152
- // it will loose some methods like `isUserMessage`
153
- return _tslib.__assign(_tslib.__assign({}, state), { localMessages: _tslib.__spreadArray(_tslib.__spreadArray([], state.localMessages, true), [action.payload], false) });
154
- })
155
- .with({ type: actionTypes.SEND_MESSAGE_SUCCESS }, function (action) {
156
- var message = action.payload;
157
- /**
158
- * Admin messages do not have reqId. We need to include them.
159
- */
160
- var filteredMessages = state.allMessages.filter(function (m) { return !hasReqId(m) || (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId); });
161
- // [Policy] Pending messages and failed messages
162
- // must always be at the end of the message list
163
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: _tslib.__spreadArray(_tslib.__spreadArray([], filteredMessages, true), [message], false), localMessages: state.localMessages.filter(function (m) { return hasReqId(m) && (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId); }) });
164
- })
165
- .with({ type: actionTypes.SEND_MESSAGE_FAILURE }, function (action) {
166
- // @ts-ignore
167
- action.payload.failed = true;
168
- return _tslib.__assign(_tslib.__assign({}, state), { localMessages: state.localMessages.map(function (m) { return compareIds.compareIds(hasReqId(m) && m.reqId, action.payload.reqId)
169
- ? action.payload
170
- : m; }) });
171
- })
172
- .with({ type: actionTypes.SET_CURRENT_CHANNEL }, function (action) {
173
- return _tslib.__assign(_tslib.__assign({}, state), { currentGroupChannel: action.payload, isInvalid: false });
174
- })
175
- .with({ type: actionTypes.SET_CHANNEL_INVALID }, function () {
176
- return _tslib.__assign(_tslib.__assign({}, state), { currentGroupChannel: null, allMessages: [], localMessages: [], isInvalid: true });
177
- })
178
- .with({ type: actionTypes.ON_MESSAGE_RECEIVED }, function (action) {
179
- var _a, _b;
180
- var _c = action.payload, channel = _c.channel, message = _c.message;
181
- var members = channel.members;
182
- var sender = message.sender;
183
- var currentGroupChannel = state.currentGroupChannel;
184
- var currentGroupChannelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
185
- if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
186
- return state;
187
- }
188
- // Excluded overlapping messages
189
- if (state.allMessages.some(function (msg) { return msg.messageId === message.messageId; })) {
190
- return state;
191
- }
192
- // Filter by userFilledQuery
193
- if (state.messageListParams
194
- && !index$1.filterMessageListParams(state.messageListParams, message)) {
195
- return state;
196
- }
197
- if (message.isAdminMessage && message.isAdminMessage()) {
198
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: utils.passUnsuccessfullMessages(state.allMessages, message) });
199
- }
200
- // Update members when sender profileUrl, nickname, friendName has been changed
201
- var senderMember = members === null || members === void 0 ? void 0 : members.find(function (m) { return (m === null || m === void 0 ? void 0 : m.userId) === (sender === null || sender === void 0 ? void 0 : sender.userId); });
202
- if ((senderMember === null || senderMember === void 0 ? void 0 : senderMember.profileUrl) !== (sender === null || sender === void 0 ? void 0 : sender.profileUrl)
203
- || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.friendName) !== (sender === null || sender === void 0 ? void 0 : sender.friendName)
204
- || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.nickname) !== (sender === null || sender === void 0 ? void 0 : sender.nickname)) {
205
- // @ts-ignore
206
- channel.members = members.map(function (member) {
207
- if (member.userId === sender.userId) {
208
- return sender;
209
- }
210
- return member;
211
- });
212
- }
213
- return _tslib.__assign(_tslib.__assign({}, state), { currentGroupChannel: channel, unreadSince: (_a = state.unreadSince) !== null && _a !== void 0 ? _a : index$2.format(new Date(), 'p MMM dd'), unreadSinceDate: (_b = state.unreadSinceDate) !== null && _b !== void 0 ? _b : new Date(), allMessages: utils.passUnsuccessfullMessages(state.allMessages, message) });
214
- })
215
- .with({ type: actionTypes.ON_MESSAGE_UPDATED }, function (action) {
216
- var _a;
217
- var _b = action.payload, channel = _b.channel, message = _b.message;
218
- var currentGroupChannelUrl = ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) || '';
219
- if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
220
- return state; // Ignore event when it is not for the current channel
221
- }
222
- if (state.messageListParams
223
- && !index$1.filterMessageListParams(state.messageListParams, message)) {
224
- // Delete the message if it doesn't match to the params anymore
225
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.filter(function (m) { return !compareIds.compareIds(m.messageId, message === null || message === void 0 ? void 0 : message.messageId); }) });
226
- }
227
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.map(function (m) {
228
- if (compareIds.compareIds(m.messageId, message.messageId)) {
229
- return message;
230
- }
231
- if (compareIds.compareIds(m.parentMessageId, message.messageId)) {
232
- m.parentMessage = message; // eslint-disable-line no-param-reassign
233
- }
234
- return m;
235
- }) });
236
- })
237
- .with({ type: actionTypes.ON_MESSAGE_THREAD_INFO_UPDATED }, function (action) {
238
- var _a;
239
- var _b = action.payload, channel = _b.channel, event = _b.event;
240
- var channelUrl = event.channelUrl, threadInfo = event.threadInfo, targetMessageId = event.targetMessageId;
241
- var currentGroupChannelUrl = ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) || '';
242
- if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)
243
- || !compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
244
- return state; // Ignore event when it is not for the current channel
245
- }
246
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.map(function (m) {
247
- if (compareIds.compareIds(m.messageId, targetMessageId)) {
248
- // eslint-disable-next-line no-param-reassign
249
- m.threadInfo = threadInfo; // Upsert threadInfo to the target message
250
- }
251
- return m;
252
- }) });
253
- })
254
- .with({ type: actionTypes.RESEND_MESSAGE_START }, function (action) {
255
- return _tslib.__assign(_tslib.__assign({}, state), { localMessages: state.localMessages.map(function (m) { return compareIds.compareIds(hasReqId(m) && m.reqId, action.payload.reqId)
256
- ? action.payload
257
- : m; }) });
258
- })
259
- .with({ type: actionTypes.MARK_AS_READ }, function (action) {
260
- var _a, _b, _c;
261
- if (((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) !== ((_c = (_b = action.payload) === null || _b === void 0 ? void 0 : _b.channel) === null || _c === void 0 ? void 0 : _c.url)) {
262
- return state;
263
- }
264
- return _tslib.__assign(_tslib.__assign({}, state), { unreadSince: null, unreadSinceDate: null });
265
- })
266
- .with({ type: actionTypes.ON_MESSAGE_DELETED }, function (action) {
267
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.filter(function (m) { return !compareIds.compareIds(m.messageId, action.payload); }) });
268
- })
269
- .with({ type: actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID }, function (action) {
270
- return _tslib.__assign(_tslib.__assign({}, state), { localMessages: state.localMessages.filter(function (m) { return !compareIds.compareIds(hasReqId(m) && m.reqId, action.payload); }) });
271
- })
272
- .with({ type: actionTypes.SET_EMOJI_CONTAINER }, function (action) {
273
- return _tslib.__assign(_tslib.__assign({}, state), { emojiContainer: action.payload });
274
- })
275
- .with({ type: actionTypes.ON_REACTION_UPDATED }, function (action) {
276
- return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.map(function (m) {
277
- if (compareIds.compareIds(m.messageId, action.payload.messageId)) {
278
- if (m.applyReactionEvent
279
- && typeof m.applyReactionEvent === 'function') {
280
- m.applyReactionEvent(action.payload);
281
- }
282
- return m;
283
- }
284
- return m;
285
- }) });
286
- })
287
- .with({ type: actionTypes.MESSAGE_LIST_PARAMS_CHANGED }, function (action) {
288
- return _tslib.__assign(_tslib.__assign({}, state), { messageListParams: action.payload });
289
- })
290
- .with({ type: actionTypes.ON_FILE_INFO_UPLOADED }, function (action) {
291
- var _a, _b;
292
- var _c = action.payload, channelUrl = _c.channelUrl, requestId = _c.requestId, index = _c.index, uploadableFileInfo = _c.uploadableFileInfo, error = _c.error;
293
- if (!compareIds.compareIds(channelUrl, (_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url)) {
294
- return state;
295
- }
296
- /**
297
- * We don't have to do anything here because
298
- * onFailed() will be called so handle error there instead.
299
- */
300
- if (error)
301
- return state;
302
- var localMessages = state.localMessages;
303
- var messageToUpdate = localMessages.find(function (message) { return compareIds.compareIds(hasReqId(message) && message.reqId, requestId); });
304
- var fileInfoList = (_b = messageToUpdate
305
- .messageParams) === null || _b === void 0 ? void 0 : _b.fileInfoList;
306
- if (Array.isArray(fileInfoList)) {
307
- fileInfoList[index] = uploadableFileInfo;
308
- }
309
- return _tslib.__assign(_tslib.__assign({}, state), { localMessages: localMessages });
310
- })
311
- .with({ type: actionTypes.ON_TYPING_STATUS_UPDATED }, function (action) {
312
- var _a;
313
- var _b = action.payload, channel = _b.channel, typingMembers = _b.typingMembers;
314
- if (!compareIds.compareIds(channel.url, (_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url)) {
315
- return state;
316
- }
317
- return _tslib.__assign(_tslib.__assign({}, state), { typingMembers: typingMembers });
318
- })
319
- .otherwise(function () { return state; });
60
+ var getOldestMessageTimeStamp = function (messages) {
61
+ if (messages === void 0) { messages = []; }
62
+ var oldestMessage = messages[0];
63
+ return (oldestMessage && oldestMessage.createdAt) || null;
64
+ };
65
+ var getLatestMessageTimeStamp = function (messages) {
66
+ if (messages === void 0) { messages = []; }
67
+ var latestMessage = messages[messages.length - 1];
68
+ return (latestMessage && latestMessage.createdAt) || null;
69
+ };
70
+ function hasReqId(message) {
71
+ return 'reqId' in message;
72
+ }
73
+ function channelReducer(state, action) {
74
+ return index.K(action)
75
+ .with({ type: actionTypes.RESET_MESSAGES }, function () {
76
+ return _tslib.__assign(_tslib.__assign({}, state), {
77
+ // when user switches channel, if the previous channel `hasMorePrev`
78
+ // the onScroll gets called twice, setting hasMorePrev false prevents this
79
+ hasMorePrev: false, hasMoreNext: false, allMessages: [], localMessages: [] });
80
+ })
81
+ .with({ type: actionTypes.FETCH_INITIAL_MESSAGES_START }, function () {
82
+ return _tslib.__assign(_tslib.__assign({}, state), { loading: true, allMessages: state.allMessages.filter(function (m) { return index.isSendableMessage(m)
83
+ ? m.sendingStatus !== message.SendingStatus.SUCCEEDED
84
+ : true; }), localMessages: [] });
85
+ })
86
+ .with({ type: actionTypes.FETCH_INITIAL_MESSAGES_SUCCESS }, function (action) {
87
+ var _a;
88
+ var _b = action.payload, currentGroupChannel = _b.currentGroupChannel, messages = _b.messages;
89
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
90
+ return state;
91
+ }
92
+ var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
93
+ var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
94
+ return _tslib.__assign(_tslib.__assign({}, state), { loading: false, initialized: true, hasMorePrev: true, hasMoreNext: true, oldestMessageTimeStamp: oldestMessageTimeStamp, latestMessageTimeStamp: latestMessageTimeStamp, allMessages: _tslib.__spreadArray([], messages, true) });
95
+ })
96
+ .with({ type: actionTypes.FETCH_PREV_MESSAGES_SUCCESS }, function (action) {
97
+ var _a, _b, _c, _d;
98
+ var _e = action.payload, currentGroupChannel = _e.currentGroupChannel, messages = _e.messages;
99
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
100
+ return state;
101
+ }
102
+ var hasMorePrev = ((_b = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _b !== void 0 ? _b : 0)
103
+ >= ((_d = (_c = state === null || state === void 0 ? void 0 : state.messageListParams) === null || _c === void 0 ? void 0 : _c.prevResultSize) !== null && _d !== void 0 ? _d : Channel_hooks_useInitialMessagesFetch.PREV_RESULT_SIZE) + 1;
104
+ var oldestMessageTimeStamp = getOldestMessageTimeStamp(messages);
105
+ // Remove duplicated messages
106
+ var duplicatedMessageIds = [];
107
+ var updatedOldMessages = state.allMessages.map(function (msg) {
108
+ var duplicatedMessage = messages.find(function (_a) {
109
+ var messageId = _a.messageId;
110
+ return compareIds.compareIds(messageId, msg.messageId);
111
+ });
112
+ if (!duplicatedMessage) {
113
+ return msg;
114
+ }
115
+ duplicatedMessageIds.push(duplicatedMessage.messageId);
116
+ return duplicatedMessage.updatedAt > msg.updatedAt
117
+ ? duplicatedMessage
118
+ : msg;
119
+ });
120
+ var filteredNewMessages = duplicatedMessageIds.length > 0
121
+ ? messages.filter(function (msg) { return !duplicatedMessageIds.find(function (messageId) { return compareIds.compareIds(messageId, msg.messageId); }); })
122
+ : messages;
123
+ return _tslib.__assign(_tslib.__assign({}, state), { hasMorePrev: hasMorePrev, oldestMessageTimeStamp: oldestMessageTimeStamp, allMessages: _tslib.__spreadArray(_tslib.__spreadArray([], filteredNewMessages, true), updatedOldMessages, true) });
124
+ })
125
+ .with({ type: actionTypes.FETCH_NEXT_MESSAGES_SUCCESS }, function (action) {
126
+ var _a, _b, _c, _d;
127
+ var _e = action.payload, currentGroupChannel = _e.currentGroupChannel, messages = _e.messages;
128
+ if (!((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) === ((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))) {
129
+ return state;
130
+ }
131
+ var hasMoreNext = ((_b = messages === null || messages === void 0 ? void 0 : messages.length) !== null && _b !== void 0 ? _b : 0)
132
+ === ((_d = (_c = state === null || state === void 0 ? void 0 : state.messageListParams) === null || _c === void 0 ? void 0 : _c.nextResultSize) !== null && _d !== void 0 ? _d : Channel_hooks_useInitialMessagesFetch.NEXT_RESULT_SIZE) + 1;
133
+ var latestMessageTimeStamp = getLatestMessageTimeStamp(messages);
134
+ // sort ~
135
+ var sortedMessages = utils.mergeAndSortMessages(state.allMessages, messages);
136
+ return _tslib.__assign(_tslib.__assign({}, state), { hasMoreNext: hasMoreNext, latestMessageTimeStamp: latestMessageTimeStamp, allMessages: sortedMessages });
137
+ })
138
+ .with({
139
+ type: index.S.union(actionTypes.FETCH_INITIAL_MESSAGES_FAILURE, actionTypes.FETCH_PREV_MESSAGES_FAILURE, actionTypes.FETCH_NEXT_MESSAGES_FAILURE),
140
+ }, function (action) {
141
+ var _a;
142
+ var currentGroupChannel = action.payload.currentGroupChannel;
143
+ if ((currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url) !== ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url))
144
+ return state;
145
+ // It shows something went wrong screen when fetching initial messages failed.
146
+ var shouldInvalid = [actionTypes.FETCH_INITIAL_MESSAGES_FAILURE].includes(action.type);
147
+ return _tslib.__assign(_tslib.__assign({}, state), { loading: false, isInvalid: shouldInvalid, initialized: false, allMessages: [], hasMorePrev: false, hasMoreNext: false, oldestMessageTimeStamp: null, latestMessageTimeStamp: null });
148
+ })
149
+ .with({ type: actionTypes.SEND_MESSAGE_START }, function (action) {
150
+ // Message should not be spread here
151
+ // it will loose some methods like `isUserMessage`
152
+ return _tslib.__assign(_tslib.__assign({}, state), { localMessages: _tslib.__spreadArray(_tslib.__spreadArray([], state.localMessages, true), [action.payload], false) });
153
+ })
154
+ .with({ type: actionTypes.SEND_MESSAGE_SUCCESS }, function (action) {
155
+ var message = action.payload;
156
+ /**
157
+ * Admin messages do not have reqId. We need to include them.
158
+ */
159
+ var filteredMessages = state.allMessages.filter(function (m) { return !hasReqId(m) || (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId); });
160
+ // [Policy] Pending messages and failed messages
161
+ // must always be at the end of the message list
162
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: _tslib.__spreadArray(_tslib.__spreadArray([], filteredMessages, true), [message], false), localMessages: state.localMessages.filter(function (m) { return hasReqId(m) && (m === null || m === void 0 ? void 0 : m.reqId) !== (message === null || message === void 0 ? void 0 : message.reqId); }) });
163
+ })
164
+ .with({ type: actionTypes.SEND_MESSAGE_FAILURE }, function (action) {
165
+ // @ts-ignore
166
+ action.payload.failed = true;
167
+ return _tslib.__assign(_tslib.__assign({}, state), { localMessages: state.localMessages.map(function (m) { return compareIds.compareIds(hasReqId(m) && m.reqId, action.payload.reqId)
168
+ ? action.payload
169
+ : m; }) });
170
+ })
171
+ .with({ type: actionTypes.SET_CURRENT_CHANNEL }, function (action) {
172
+ return _tslib.__assign(_tslib.__assign({}, state), { currentGroupChannel: action.payload, isInvalid: false });
173
+ })
174
+ .with({ type: actionTypes.SET_CHANNEL_INVALID }, function () {
175
+ return _tslib.__assign(_tslib.__assign({}, state), { currentGroupChannel: null, allMessages: [], localMessages: [], isInvalid: true });
176
+ })
177
+ .with({ type: actionTypes.ON_MESSAGE_RECEIVED }, function (action) {
178
+ var _a, _b;
179
+ var _c = action.payload, channel = _c.channel, message = _c.message;
180
+ var members = channel.members;
181
+ var sender = message.sender;
182
+ var currentGroupChannel = state.currentGroupChannel;
183
+ var currentGroupChannelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
184
+ if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
185
+ return state;
186
+ }
187
+ // Excluded overlapping messages
188
+ if (state.allMessages.some(function (msg) { return msg.messageId === message.messageId; })) {
189
+ return state;
190
+ }
191
+ // Filter by userFilledQuery
192
+ if (state.messageListParams
193
+ && !index.filterMessageListParams(state.messageListParams, message)) {
194
+ return state;
195
+ }
196
+ if (message.isAdminMessage && message.isAdminMessage()) {
197
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: utils.passUnsuccessfullMessages(state.allMessages, message) });
198
+ }
199
+ // Update members when sender profileUrl, nickname, friendName has been changed
200
+ var senderMember = members === null || members === void 0 ? void 0 : members.find(function (m) { return (m === null || m === void 0 ? void 0 : m.userId) === (sender === null || sender === void 0 ? void 0 : sender.userId); });
201
+ if ((senderMember === null || senderMember === void 0 ? void 0 : senderMember.profileUrl) !== (sender === null || sender === void 0 ? void 0 : sender.profileUrl)
202
+ || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.friendName) !== (sender === null || sender === void 0 ? void 0 : sender.friendName)
203
+ || (senderMember === null || senderMember === void 0 ? void 0 : senderMember.nickname) !== (sender === null || sender === void 0 ? void 0 : sender.nickname)) {
204
+ // @ts-ignore
205
+ channel.members = members.map(function (member) {
206
+ if (member.userId === sender.userId) {
207
+ return sender;
208
+ }
209
+ return member;
210
+ });
211
+ }
212
+ return _tslib.__assign(_tslib.__assign({}, state), { currentGroupChannel: channel, unreadSince: (_a = state.unreadSince) !== null && _a !== void 0 ? _a : index$1.format(new Date(), 'p MMM dd'), unreadSinceDate: (_b = state.unreadSinceDate) !== null && _b !== void 0 ? _b : new Date(), allMessages: utils.passUnsuccessfullMessages(state.allMessages, message) });
213
+ })
214
+ .with({ type: actionTypes.ON_MESSAGE_UPDATED }, function (action) {
215
+ var _a;
216
+ var _b = action.payload, channel = _b.channel, message = _b.message;
217
+ var currentGroupChannelUrl = ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) || '';
218
+ if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)) {
219
+ return state; // Ignore event when it is not for the current channel
220
+ }
221
+ if (state.messageListParams
222
+ && !index.filterMessageListParams(state.messageListParams, message)) {
223
+ // Delete the message if it doesn't match to the params anymore
224
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.filter(function (m) { return !compareIds.compareIds(m.messageId, message === null || message === void 0 ? void 0 : message.messageId); }) });
225
+ }
226
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.map(function (m) {
227
+ if (compareIds.compareIds(m.messageId, message.messageId)) {
228
+ return message;
229
+ }
230
+ if (compareIds.compareIds(m.parentMessageId, message.messageId)) {
231
+ m.parentMessage = message; // eslint-disable-line no-param-reassign
232
+ }
233
+ return m;
234
+ }) });
235
+ })
236
+ .with({ type: actionTypes.ON_MESSAGE_THREAD_INFO_UPDATED }, function (action) {
237
+ var _a;
238
+ var _b = action.payload, channel = _b.channel, event = _b.event;
239
+ var channelUrl = event.channelUrl, threadInfo = event.threadInfo, targetMessageId = event.targetMessageId;
240
+ var currentGroupChannelUrl = ((_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) || '';
241
+ if (!compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, currentGroupChannelUrl)
242
+ || !compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
243
+ return state; // Ignore event when it is not for the current channel
244
+ }
245
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.map(function (m) {
246
+ if (compareIds.compareIds(m.messageId, targetMessageId)) {
247
+ // eslint-disable-next-line no-param-reassign
248
+ m.threadInfo = threadInfo; // Upsert threadInfo to the target message
249
+ }
250
+ return m;
251
+ }) });
252
+ })
253
+ .with({ type: actionTypes.RESEND_MESSAGE_START }, function (action) {
254
+ return _tslib.__assign(_tslib.__assign({}, state), { localMessages: state.localMessages.map(function (m) { return compareIds.compareIds(hasReqId(m) && m.reqId, action.payload.reqId)
255
+ ? action.payload
256
+ : m; }) });
257
+ })
258
+ .with({ type: actionTypes.MARK_AS_READ }, function (action) {
259
+ var _a, _b, _c;
260
+ if (((_a = state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url) !== ((_c = (_b = action.payload) === null || _b === void 0 ? void 0 : _b.channel) === null || _c === void 0 ? void 0 : _c.url)) {
261
+ return state;
262
+ }
263
+ return _tslib.__assign(_tslib.__assign({}, state), { unreadSince: null, unreadSinceDate: null });
264
+ })
265
+ .with({ type: actionTypes.ON_MESSAGE_DELETED }, function (action) {
266
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.filter(function (m) { return !compareIds.compareIds(m.messageId, action.payload); }) });
267
+ })
268
+ .with({ type: actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID }, function (action) {
269
+ return _tslib.__assign(_tslib.__assign({}, state), { localMessages: state.localMessages.filter(function (m) { return !compareIds.compareIds(hasReqId(m) && m.reqId, action.payload); }) });
270
+ })
271
+ .with({ type: actionTypes.SET_EMOJI_CONTAINER }, function (action) {
272
+ return _tslib.__assign(_tslib.__assign({}, state), { emojiContainer: action.payload });
273
+ })
274
+ .with({ type: actionTypes.ON_REACTION_UPDATED }, function (action) {
275
+ return _tslib.__assign(_tslib.__assign({}, state), { allMessages: state.allMessages.map(function (m) {
276
+ if (compareIds.compareIds(m.messageId, action.payload.messageId)) {
277
+ if (m.applyReactionEvent
278
+ && typeof m.applyReactionEvent === 'function') {
279
+ m.applyReactionEvent(action.payload);
280
+ }
281
+ return m;
282
+ }
283
+ return m;
284
+ }) });
285
+ })
286
+ .with({ type: actionTypes.MESSAGE_LIST_PARAMS_CHANGED }, function (action) {
287
+ return _tslib.__assign(_tslib.__assign({}, state), { messageListParams: action.payload });
288
+ })
289
+ .with({ type: actionTypes.ON_FILE_INFO_UPLOADED }, function (action) {
290
+ var _a, _b;
291
+ var _c = action.payload, channelUrl = _c.channelUrl, requestId = _c.requestId, index = _c.index, uploadableFileInfo = _c.uploadableFileInfo, error = _c.error;
292
+ if (!compareIds.compareIds(channelUrl, (_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url)) {
293
+ return state;
294
+ }
295
+ /**
296
+ * We don't have to do anything here because
297
+ * onFailed() will be called so handle error there instead.
298
+ */
299
+ if (error)
300
+ return state;
301
+ var localMessages = state.localMessages;
302
+ var messageToUpdate = localMessages.find(function (message) { return compareIds.compareIds(hasReqId(message) && message.reqId, requestId); });
303
+ var fileInfoList = (_b = messageToUpdate
304
+ .messageParams) === null || _b === void 0 ? void 0 : _b.fileInfoList;
305
+ if (Array.isArray(fileInfoList)) {
306
+ fileInfoList[index] = uploadableFileInfo;
307
+ }
308
+ return _tslib.__assign(_tslib.__assign({}, state), { localMessages: localMessages });
309
+ })
310
+ .with({ type: actionTypes.ON_TYPING_STATUS_UPDATED }, function (action) {
311
+ var _a;
312
+ var _b = action.payload, channel = _b.channel, typingMembers = _b.typingMembers;
313
+ if (!compareIds.compareIds(channel.url, (_a = state === null || state === void 0 ? void 0 : state.currentGroupChannel) === null || _a === void 0 ? void 0 : _a.url)) {
314
+ return state;
315
+ }
316
+ return _tslib.__assign(_tslib.__assign({}, state), { typingMembers: typingMembers });
317
+ })
318
+ .otherwise(function () { return state; });
320
319
  }
321
320
 
322
- var DELIVERY_RECEIPT = 'delivery_receipt';
323
- function useHandleChannelEvents(_a, _b) {
324
- var _c, _d, _e;
325
- var sdkInit = _a.sdkInit, currentGroupChannel = _a.currentGroupChannel, disableMarkAsRead = _a.disableMarkAsRead;
326
- var sdk = _b.sdk, logger = _b.logger, scrollRef = _b.scrollRef, setQuoteMessage = _b.setQuoteMessage, messagesDispatcher = _b.messagesDispatcher;
327
- var store = useSendbirdStateContext.useSendbirdStateContext();
328
- var _f = store.config, markAsReadScheduler = _f.markAsReadScheduler, markAsDeliveredScheduler = _f.markAsDeliveredScheduler, disableMarkAsDelivered = _f.disableMarkAsDelivered;
329
- var canSetMarkAsDelivered = (_e = (_d = (_c = store.stores.sdkStore.sdk) === null || _c === void 0 ? void 0 : _c.appInfo) === null || _d === void 0 ? void 0 : _d.premiumFeatureList) === null || _e === void 0 ? void 0 : _e.find(function (feature) { return (feature === DELIVERY_RECEIPT); });
330
- React.useEffect(function () {
331
- var _a;
332
- var channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
333
- var channelHandlerId = uuid.uuidv4();
334
- if (channelUrl && sdkInit) {
335
- var channelHandler = {
336
- onMessageReceived: function (channel, message) {
337
- var _a, _b;
338
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
339
- var scrollToEnd = false;
340
- try {
341
- var current = scrollRef.current;
342
- scrollToEnd = current.offsetHeight + current.scrollTop >= current.scrollHeight - 10;
343
- // 10 is a buffer
344
- }
345
- catch (error) {
346
- //
347
- }
348
- logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
349
- messagesDispatcher({
350
- type: actionTypes.ON_MESSAGE_RECEIVED,
351
- payload: { channel: channel, message: message },
352
- });
353
- if (scrollToEnd
354
- && ((_a = document.getElementById('sendbird-dropdown-portal')) === null || _a === void 0 ? void 0 : _a.childElementCount) === 0
355
- && ((_b = document.getElementById('sendbird-emoji-list-portal')) === null || _b === void 0 ? void 0 : _b.childElementCount) === 0) {
356
- // and !openContextMenu
357
- try {
358
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); });
359
- if (!disableMarkAsRead) {
360
- markAsReadScheduler.push(currentGroupChannel);
361
- }
362
- if (canSetMarkAsDelivered && !disableMarkAsDelivered) {
363
- markAsDeliveredScheduler.push(currentGroupChannel);
364
- }
365
- }
366
- catch (error) {
367
- logger.warning('Channel | onMessageReceived | scroll to end failed');
368
- }
369
- }
370
- }
371
- },
372
- onUnreadMemberStatusUpdated: function (channel) {
373
- logger.info('Channel | useHandleChannelEvents: onUnreadMemberStatusUpdated', channel);
374
- if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
375
- messagesDispatcher({
376
- type: actionTypes.SET_CURRENT_CHANNEL,
377
- payload: channel,
378
- });
379
- }
380
- },
381
- // before(onDeliveryReceiptUpdated)
382
- onUndeliveredMemberStatusUpdated: function (channel) {
383
- if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
384
- logger.info('Channel | useHandleChannelEvents: onDeliveryReceiptUpdated', channel);
385
- messagesDispatcher({
386
- type: actionTypes.SET_CURRENT_CHANNEL,
387
- payload: channel,
388
- });
389
- }
390
- },
391
- onMessageUpdated: function (channel, message) {
392
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
393
- logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
394
- messagesDispatcher({
395
- type: actionTypes.ON_MESSAGE_UPDATED,
396
- payload: { channel: channel, message: message },
397
- });
398
- }
399
- },
400
- onThreadInfoUpdated: function (channel, threadInfoUpdateEvent) {
401
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
402
- logger.info('Channel | useHandleChannelEvents: onThreadInfoUpdated', { channel: channel, threadInfoUpdateEvent: threadInfoUpdateEvent });
403
- messagesDispatcher({
404
- type: actionTypes.ON_MESSAGE_THREAD_INFO_UPDATED,
405
- payload: { channel: channel, event: threadInfoUpdateEvent },
406
- });
407
- }
408
- },
409
- onMessageDeleted: function (channel, messageId) {
410
- logger.info('Channel | useHandleChannelEvents: onMessageDeleted', { channel: channel, messageId: messageId });
411
- setQuoteMessage(null);
412
- messagesDispatcher({
413
- type: actionTypes.ON_MESSAGE_DELETED,
414
- payload: messageId,
415
- });
416
- },
417
- onReactionUpdated: function (channel, reactionEvent) {
418
- logger.info('Channel | useHandleChannelEvents: onReactionUpdated', { channel: channel, reactionEvent: reactionEvent });
419
- messagesDispatcher({
420
- type: actionTypes.ON_REACTION_UPDATED,
421
- payload: reactionEvent,
422
- });
423
- },
424
- onChannelChanged: function (channel) {
425
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
426
- logger.info('Channel | useHandleChannelEvents: onChannelChanged', channel);
427
- messagesDispatcher({
428
- type: actionTypes.SET_CURRENT_CHANNEL,
429
- payload: channel,
430
- });
431
- }
432
- },
433
- onChannelFrozen: function (channel) {
434
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
435
- logger.info('Channel | useHandleChannelEvents: onChannelFrozen', channel);
436
- messagesDispatcher({
437
- type: actionTypes.SET_CURRENT_CHANNEL,
438
- payload: channel,
439
- });
440
- }
441
- },
442
- onChannelUnfrozen: function (channel) {
443
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
444
- logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', channel);
445
- messagesDispatcher({
446
- type: actionTypes.SET_CURRENT_CHANNEL,
447
- payload: channel,
448
- });
449
- }
450
- },
451
- onUserMuted: function (channel, user) {
452
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
453
- logger.info('Channel | useHandleChannelEvents: onUserMuted', { channel: channel, user: user });
454
- messagesDispatcher({
455
- type: actionTypes.SET_CURRENT_CHANNEL,
456
- payload: channel,
457
- });
458
- }
459
- },
460
- onUserUnmuted: function (channel, user) {
461
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
462
- logger.info('Channel | useHandleChannelEvents: onUserUnmuted', { channel: channel, user: user });
463
- messagesDispatcher({
464
- type: actionTypes.SET_CURRENT_CHANNEL,
465
- payload: channel,
466
- });
467
- }
468
- },
469
- onUserBanned: function (channel, user) {
470
- var _a;
471
- if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
472
- logger.info('Channel | useHandleChannelEvents: onUserBanned', { channel: channel, user: user });
473
- var isByMe = (user === null || user === void 0 ? void 0 : user.userId) === ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.currentUser) === null || _a === void 0 ? void 0 : _a.userId);
474
- messagesDispatcher({
475
- type: actionTypes.SET_CURRENT_CHANNEL,
476
- payload: isByMe ? null : channel,
477
- });
478
- }
479
- },
480
- onOperatorUpdated: function (channel, users) {
481
- if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
482
- logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', { channel: channel, users: users });
483
- messagesDispatcher({
484
- type: actionTypes.SET_CURRENT_CHANNEL,
485
- payload: channel,
486
- });
487
- }
488
- },
489
- onUserLeft: function (channel, user) {
490
- var _a;
491
- if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
492
- logger.info('Channel | useHandleChannelEvents: onUserLeft', { channel: channel, user: user });
493
- var isByMe = (user === null || user === void 0 ? void 0 : user.userId) === ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.currentUser) === null || _a === void 0 ? void 0 : _a.userId);
494
- messagesDispatcher({
495
- type: actionTypes.SET_CURRENT_CHANNEL,
496
- payload: isByMe ? null : channel,
497
- });
498
- }
499
- },
500
- onTypingStatusUpdated: function (channel) {
501
- if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
502
- logger.info('Channel | onTypingStatusUpdated', { channel: channel });
503
- var typingMembers = channel.getTypingUsers();
504
- messagesDispatcher({
505
- type: actionTypes.ON_TYPING_STATUS_UPDATED,
506
- payload: {
507
- channel: channel,
508
- typingMembers: typingMembers,
509
- },
510
- });
511
- }
512
- },
513
- };
514
- logger.info('Channel | useHandleChannelEvents: Setup event handler', { channelHandlerId: channelHandlerId, channelHandler: channelHandler });
515
- // Add this group channel handler to the Sendbird chat instance
516
- (_a = sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.addGroupChannelHandler(channelHandlerId, new groupChannel.GroupChannelHandler(channelHandler));
517
- }
518
- return function () {
519
- var _a;
520
- if ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.removeGroupChannelHandler) {
521
- logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', channelHandlerId);
522
- sdk.groupChannel.removeGroupChannelHandler(channelHandlerId);
523
- }
524
- else if (sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) {
525
- logger.error('Channel | useHandleChannelEvents: Not found the removeGroupChannelHandler');
526
- }
527
- };
528
- }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, sdkInit]);
321
+ var DELIVERY_RECEIPT = 'delivery_receipt';
322
+ function useHandleChannelEvents(_a, _b) {
323
+ var _c, _d, _e;
324
+ var sdkInit = _a.sdkInit, currentGroupChannel = _a.currentGroupChannel, disableMarkAsRead = _a.disableMarkAsRead;
325
+ var sdk = _b.sdk, logger = _b.logger, scrollRef = _b.scrollRef, setQuoteMessage = _b.setQuoteMessage, messagesDispatcher = _b.messagesDispatcher;
326
+ var store = useSendbirdStateContext.useSendbirdStateContext();
327
+ var _f = store.config, markAsReadScheduler = _f.markAsReadScheduler, markAsDeliveredScheduler = _f.markAsDeliveredScheduler, disableMarkAsDelivered = _f.disableMarkAsDelivered;
328
+ var canSetMarkAsDelivered = (_e = (_d = (_c = store.stores.sdkStore.sdk) === null || _c === void 0 ? void 0 : _c.appInfo) === null || _d === void 0 ? void 0 : _d.premiumFeatureList) === null || _e === void 0 ? void 0 : _e.find(function (feature) { return (feature === DELIVERY_RECEIPT); });
329
+ React.useEffect(function () {
330
+ var _a;
331
+ var channelUrl = currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url;
332
+ var channelHandlerId = uuid.uuidv4();
333
+ if (channelUrl && sdkInit) {
334
+ var channelHandler = {
335
+ onMessageReceived: function (channel, message) {
336
+ var _a, _b;
337
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
338
+ var scrollToEnd = false;
339
+ try {
340
+ var current = scrollRef.current;
341
+ scrollToEnd = current.offsetHeight + current.scrollTop >= current.scrollHeight - 10;
342
+ // 10 is a buffer
343
+ }
344
+ catch (error) {
345
+ //
346
+ }
347
+ logger.info('Channel | useHandleChannelEvents: onMessageReceived', message);
348
+ messagesDispatcher({
349
+ type: actionTypes.ON_MESSAGE_RECEIVED,
350
+ payload: { channel: channel, message: message },
351
+ });
352
+ if (scrollToEnd
353
+ && ((_a = document.getElementById('sendbird-dropdown-portal')) === null || _a === void 0 ? void 0 : _a.childElementCount) === 0
354
+ && ((_b = document.getElementById('sendbird-emoji-list-portal')) === null || _b === void 0 ? void 0 : _b.childElementCount) === 0) {
355
+ // and !openContextMenu
356
+ try {
357
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); });
358
+ if (!disableMarkAsRead) {
359
+ markAsReadScheduler.push(currentGroupChannel);
360
+ }
361
+ if (canSetMarkAsDelivered && !disableMarkAsDelivered) {
362
+ markAsDeliveredScheduler.push(currentGroupChannel);
363
+ }
364
+ }
365
+ catch (error) {
366
+ logger.warning('Channel | onMessageReceived | scroll to end failed');
367
+ }
368
+ }
369
+ }
370
+ },
371
+ onUnreadMemberStatusUpdated: function (channel) {
372
+ logger.info('Channel | useHandleChannelEvents: onUnreadMemberStatusUpdated', channel);
373
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
374
+ messagesDispatcher({
375
+ type: actionTypes.SET_CURRENT_CHANNEL,
376
+ payload: channel,
377
+ });
378
+ }
379
+ },
380
+ // before(onDeliveryReceiptUpdated)
381
+ onUndeliveredMemberStatusUpdated: function (channel) {
382
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
383
+ logger.info('Channel | useHandleChannelEvents: onDeliveryReceiptUpdated', channel);
384
+ messagesDispatcher({
385
+ type: actionTypes.SET_CURRENT_CHANNEL,
386
+ payload: channel,
387
+ });
388
+ }
389
+ },
390
+ onMessageUpdated: function (channel, message) {
391
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
392
+ logger.info('Channel | useHandleChannelEvents: onMessageUpdated', message);
393
+ messagesDispatcher({
394
+ type: actionTypes.ON_MESSAGE_UPDATED,
395
+ payload: { channel: channel, message: message },
396
+ });
397
+ }
398
+ },
399
+ onThreadInfoUpdated: function (channel, threadInfoUpdateEvent) {
400
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
401
+ logger.info('Channel | useHandleChannelEvents: onThreadInfoUpdated', { channel: channel, threadInfoUpdateEvent: threadInfoUpdateEvent });
402
+ messagesDispatcher({
403
+ type: actionTypes.ON_MESSAGE_THREAD_INFO_UPDATED,
404
+ payload: { channel: channel, event: threadInfoUpdateEvent },
405
+ });
406
+ }
407
+ },
408
+ onMessageDeleted: function (channel, messageId) {
409
+ logger.info('Channel | useHandleChannelEvents: onMessageDeleted', { channel: channel, messageId: messageId });
410
+ setQuoteMessage(null);
411
+ messagesDispatcher({
412
+ type: actionTypes.ON_MESSAGE_DELETED,
413
+ payload: messageId,
414
+ });
415
+ },
416
+ onReactionUpdated: function (channel, reactionEvent) {
417
+ logger.info('Channel | useHandleChannelEvents: onReactionUpdated', { channel: channel, reactionEvent: reactionEvent });
418
+ messagesDispatcher({
419
+ type: actionTypes.ON_REACTION_UPDATED,
420
+ payload: reactionEvent,
421
+ });
422
+ },
423
+ onChannelChanged: function (channel) {
424
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
425
+ logger.info('Channel | useHandleChannelEvents: onChannelChanged', channel);
426
+ messagesDispatcher({
427
+ type: actionTypes.SET_CURRENT_CHANNEL,
428
+ payload: channel,
429
+ });
430
+ }
431
+ },
432
+ onChannelFrozen: function (channel) {
433
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
434
+ logger.info('Channel | useHandleChannelEvents: onChannelFrozen', channel);
435
+ messagesDispatcher({
436
+ type: actionTypes.SET_CURRENT_CHANNEL,
437
+ payload: channel,
438
+ });
439
+ }
440
+ },
441
+ onChannelUnfrozen: function (channel) {
442
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
443
+ logger.info('Channel | useHandleChannelEvents: onChannelUnFrozen', channel);
444
+ messagesDispatcher({
445
+ type: actionTypes.SET_CURRENT_CHANNEL,
446
+ payload: channel,
447
+ });
448
+ }
449
+ },
450
+ onUserMuted: function (channel, user) {
451
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
452
+ logger.info('Channel | useHandleChannelEvents: onUserMuted', { channel: channel, user: user });
453
+ messagesDispatcher({
454
+ type: actionTypes.SET_CURRENT_CHANNEL,
455
+ payload: channel,
456
+ });
457
+ }
458
+ },
459
+ onUserUnmuted: function (channel, user) {
460
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
461
+ logger.info('Channel | useHandleChannelEvents: onUserUnmuted', { channel: channel, user: user });
462
+ messagesDispatcher({
463
+ type: actionTypes.SET_CURRENT_CHANNEL,
464
+ payload: channel,
465
+ });
466
+ }
467
+ },
468
+ onUserBanned: function (channel, user) {
469
+ var _a;
470
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
471
+ logger.info('Channel | useHandleChannelEvents: onUserBanned', { channel: channel, user: user });
472
+ var isByMe = (user === null || user === void 0 ? void 0 : user.userId) === ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.currentUser) === null || _a === void 0 ? void 0 : _a.userId);
473
+ messagesDispatcher({
474
+ type: actionTypes.SET_CURRENT_CHANNEL,
475
+ payload: isByMe ? null : channel,
476
+ });
477
+ }
478
+ },
479
+ onOperatorUpdated: function (channel, users) {
480
+ if (channel.isGroupChannel() && compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
481
+ logger.info('Channel | useHandleChannelEvents: onOperatorUpdated', { channel: channel, users: users });
482
+ messagesDispatcher({
483
+ type: actionTypes.SET_CURRENT_CHANNEL,
484
+ payload: channel,
485
+ });
486
+ }
487
+ },
488
+ onUserLeft: function (channel, user) {
489
+ var _a;
490
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
491
+ logger.info('Channel | useHandleChannelEvents: onUserLeft', { channel: channel, user: user });
492
+ var isByMe = (user === null || user === void 0 ? void 0 : user.userId) === ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.currentUser) === null || _a === void 0 ? void 0 : _a.userId);
493
+ messagesDispatcher({
494
+ type: actionTypes.SET_CURRENT_CHANNEL,
495
+ payload: isByMe ? null : channel,
496
+ });
497
+ }
498
+ },
499
+ onTypingStatusUpdated: function (channel) {
500
+ if (compareIds.compareIds(channel === null || channel === void 0 ? void 0 : channel.url, channelUrl)) {
501
+ logger.info('Channel | onTypingStatusUpdated', { channel: channel });
502
+ var typingMembers = channel.getTypingUsers();
503
+ messagesDispatcher({
504
+ type: actionTypes.ON_TYPING_STATUS_UPDATED,
505
+ payload: {
506
+ channel: channel,
507
+ typingMembers: typingMembers,
508
+ },
509
+ });
510
+ }
511
+ },
512
+ };
513
+ logger.info('Channel | useHandleChannelEvents: Setup event handler', { channelHandlerId: channelHandlerId, channelHandler: channelHandler });
514
+ // Add this group channel handler to the Sendbird chat instance
515
+ (_a = sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.addGroupChannelHandler(channelHandlerId, new groupChannel.GroupChannelHandler(channelHandler));
516
+ }
517
+ return function () {
518
+ var _a;
519
+ if ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _a === void 0 ? void 0 : _a.removeGroupChannelHandler) {
520
+ logger.info('Channel | useHandleChannelEvents: Removing message reciver handler', channelHandlerId);
521
+ sdk.groupChannel.removeGroupChannelHandler(channelHandlerId);
522
+ }
523
+ else if (sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) {
524
+ logger.error('Channel | useHandleChannelEvents: Not found the removeGroupChannelHandler');
525
+ }
526
+ };
527
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, sdkInit]);
529
528
  }
530
529
 
531
- function useGetChannel(_a, _b) {
532
- var channelUrl = _a.channelUrl, sdkInit = _a.sdkInit, disableMarkAsRead = _a.disableMarkAsRead;
533
- var messagesDispatcher = _b.messagesDispatcher, sdk = _b.sdk, logger = _b.logger, markAsReadScheduler = _b.markAsReadScheduler;
534
- React.useEffect(function () {
535
- if (channelUrl && sdkInit && sdk && sdk.groupChannel) {
536
- logger.info('Channel | useSetChannel fetching channel', channelUrl);
537
- sdk.groupChannel
538
- .getChannel(channelUrl)
539
- .then(function (groupChannel) {
540
- logger.info('Channel | useSetChannel fetched channel', groupChannel);
541
- messagesDispatcher({
542
- type: actionTypes.SET_CURRENT_CHANNEL,
543
- payload: groupChannel,
544
- });
545
- logger.info('Channel: Mark as read', groupChannel);
546
- if (!disableMarkAsRead) {
547
- markAsReadScheduler.push(groupChannel);
548
- }
549
- })
550
- .catch(function (e) {
551
- logger.warning('Channel | useSetChannel fetch channel failed', { channelUrl: channelUrl, e: e });
552
- messagesDispatcher({
553
- type: actionTypes.SET_CHANNEL_INVALID,
554
- });
555
- });
556
- sdk
557
- .getAllEmoji()
558
- .then(function (emojiContainer_) {
559
- logger.info('Channel: Getting emojis success', emojiContainer_);
560
- messagesDispatcher({
561
- type: actionTypes.SET_EMOJI_CONTAINER,
562
- payload: emojiContainer_,
563
- });
564
- })
565
- .catch(function (err) {
566
- logger.error('Channel: Getting emojis failed', err);
567
- });
568
- }
569
- }, [channelUrl, sdkInit]);
530
+ function useGetChannel(_a, _b) {
531
+ var channelUrl = _a.channelUrl, sdkInit = _a.sdkInit, disableMarkAsRead = _a.disableMarkAsRead;
532
+ var messagesDispatcher = _b.messagesDispatcher, sdk = _b.sdk, logger = _b.logger, markAsReadScheduler = _b.markAsReadScheduler;
533
+ React.useEffect(function () {
534
+ if (channelUrl && sdkInit && sdk && sdk.groupChannel) {
535
+ logger.info('Channel | useSetChannel fetching channel', channelUrl);
536
+ sdk.groupChannel
537
+ .getChannel(channelUrl)
538
+ .then(function (groupChannel) {
539
+ logger.info('Channel | useSetChannel fetched channel', groupChannel);
540
+ messagesDispatcher({
541
+ type: actionTypes.SET_CURRENT_CHANNEL,
542
+ payload: groupChannel,
543
+ });
544
+ logger.info('Channel: Mark as read', groupChannel);
545
+ if (!disableMarkAsRead) {
546
+ markAsReadScheduler.push(groupChannel);
547
+ }
548
+ })
549
+ .catch(function (e) {
550
+ logger.warning('Channel | useSetChannel fetch channel failed', { channelUrl: channelUrl, e: e });
551
+ messagesDispatcher({
552
+ type: actionTypes.SET_CHANNEL_INVALID,
553
+ });
554
+ });
555
+ sdk
556
+ .getAllEmoji()
557
+ .then(function (emojiContainer_) {
558
+ logger.info('Channel: Getting emojis success', emojiContainer_);
559
+ messagesDispatcher({
560
+ type: actionTypes.SET_EMOJI_CONTAINER,
561
+ payload: emojiContainer_,
562
+ });
563
+ })
564
+ .catch(function (err) {
565
+ logger.error('Channel: Getting emojis failed', err);
566
+ });
567
+ }
568
+ }, [channelUrl, sdkInit]);
570
569
  }
571
570
 
572
- function useHandleReconnect(_a, _b) {
573
- var isOnline = _a.isOnline, replyType = _a.replyType, disableMarkAsRead = _a.disableMarkAsRead, reconnectOnIdle = _a.reconnectOnIdle;
574
- var logger = _b.logger, sdk = _b.sdk, scrollRef = _b.scrollRef, currentGroupChannel = _b.currentGroupChannel, messagesDispatcher = _b.messagesDispatcher, markAsReadScheduler = _b.markAsReadScheduler, userFilledMessageListQuery = _b.userFilledMessageListQuery;
575
- var shouldReconnect = useReconnectOnIdle.useReconnectOnIdle(isOnline, currentGroupChannel, reconnectOnIdle).shouldReconnect;
576
- React.useEffect(function () {
577
- return function () {
578
- var _a, _b;
579
- // state changed from offline to online AND tab is visible
580
- if (shouldReconnect) {
581
- logger.info('Refreshing conversation state');
582
- var isReactionEnabled = ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) || false;
583
- var messageListParams_1 = {
584
- prevResultSize: Channel_hooks_useInitialMessagesFetch.PREV_RESULT_SIZE,
585
- isInclusive: true,
586
- includeReactions: isReactionEnabled,
587
- includeMetaArray: true,
588
- nextResultSize: Channel_hooks_useInitialMessagesFetch.NEXT_RESULT_SIZE,
589
- };
590
- if (replyType && replyType === 'QUOTE_REPLY') {
591
- messageListParams_1.includeThreadInfo = true;
592
- messageListParams_1.includeParentMessageInfo = true;
593
- messageListParams_1.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
594
- }
595
- if (userFilledMessageListQuery) {
596
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
597
- messageListParams_1[key] = userFilledMessageListQuery[key];
598
- });
599
- }
600
- logger.info('Channel: Fetching messages', { currentGroupChannel: currentGroupChannel, userFilledMessageListQuery: userFilledMessageListQuery });
601
- messagesDispatcher({
602
- type: actionTypes.FETCH_INITIAL_MESSAGES_START,
603
- payload: null,
604
- });
605
- (_b = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _b === void 0 ? void 0 : _b.getChannel(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url).then(function (groupChannel) {
606
- var lastMessageTime = new Date().getTime();
607
- groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams_1)
608
- .then(function (messages) {
609
- messagesDispatcher({
610
- type: actionTypes.FETCH_INITIAL_MESSAGES_SUCCESS,
611
- payload: {
612
- currentGroupChannel: currentGroupChannel,
613
- messages: messages,
614
- },
615
- });
616
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_FETCH);
617
- })
618
- .catch(function (error) {
619
- logger.error('Channel: Fetching messages failed', error);
620
- messagesDispatcher({
621
- type: actionTypes.FETCH_INITIAL_MESSAGES_FAILURE,
622
- payload: { currentGroupChannel: currentGroupChannel },
623
- });
624
- });
625
- if (!disableMarkAsRead) {
626
- markAsReadScheduler.push(currentGroupChannel);
627
- }
628
- });
629
- }
630
- };
631
- }, [shouldReconnect, replyType]);
571
+ function useHandleReconnect(_a, _b) {
572
+ var isOnline = _a.isOnline, replyType = _a.replyType, disableMarkAsRead = _a.disableMarkAsRead, reconnectOnIdle = _a.reconnectOnIdle;
573
+ var logger = _b.logger, sdk = _b.sdk, scrollRef = _b.scrollRef, currentGroupChannel = _b.currentGroupChannel, messagesDispatcher = _b.messagesDispatcher, markAsReadScheduler = _b.markAsReadScheduler, userFilledMessageListQuery = _b.userFilledMessageListQuery;
574
+ var shouldReconnect = useReconnectOnIdle.useReconnectOnIdle(isOnline, currentGroupChannel, reconnectOnIdle).shouldReconnect;
575
+ React.useEffect(function () {
576
+ return function () {
577
+ var _a, _b;
578
+ // state changed from offline to online AND tab is visible
579
+ if (shouldReconnect) {
580
+ logger.info('Refreshing conversation state');
581
+ var isReactionEnabled = ((_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) || false;
582
+ var messageListParams_1 = {
583
+ prevResultSize: Channel_hooks_useInitialMessagesFetch.PREV_RESULT_SIZE,
584
+ isInclusive: true,
585
+ includeReactions: isReactionEnabled,
586
+ includeMetaArray: true,
587
+ nextResultSize: Channel_hooks_useInitialMessagesFetch.NEXT_RESULT_SIZE,
588
+ };
589
+ if (replyType && replyType === 'QUOTE_REPLY') {
590
+ messageListParams_1.includeThreadInfo = true;
591
+ messageListParams_1.includeParentMessageInfo = true;
592
+ messageListParams_1.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
593
+ }
594
+ if (userFilledMessageListQuery) {
595
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
596
+ messageListParams_1[key] = userFilledMessageListQuery[key];
597
+ });
598
+ }
599
+ logger.info('Channel: Fetching messages', { currentGroupChannel: currentGroupChannel, userFilledMessageListQuery: userFilledMessageListQuery });
600
+ messagesDispatcher({
601
+ type: actionTypes.FETCH_INITIAL_MESSAGES_START,
602
+ payload: null,
603
+ });
604
+ (_b = sdk === null || sdk === void 0 ? void 0 : sdk.groupChannel) === null || _b === void 0 ? void 0 : _b.getChannel(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url).then(function (groupChannel) {
605
+ var lastMessageTime = new Date().getTime();
606
+ groupChannel.getMessagesByTimestamp(lastMessageTime, messageListParams_1)
607
+ .then(function (messages) {
608
+ messagesDispatcher({
609
+ type: actionTypes.FETCH_INITIAL_MESSAGES_SUCCESS,
610
+ payload: {
611
+ currentGroupChannel: currentGroupChannel,
612
+ messages: messages,
613
+ },
614
+ });
615
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_FETCH);
616
+ })
617
+ .catch(function (error) {
618
+ logger.error('Channel: Fetching messages failed', error);
619
+ messagesDispatcher({
620
+ type: actionTypes.FETCH_INITIAL_MESSAGES_FAILURE,
621
+ payload: { currentGroupChannel: currentGroupChannel },
622
+ });
623
+ });
624
+ if (!disableMarkAsRead) {
625
+ markAsReadScheduler.push(currentGroupChannel);
626
+ }
627
+ });
628
+ }
629
+ };
630
+ }, [shouldReconnect, replyType]);
632
631
  }
633
632
 
634
- function useScrollCallback(_a, _b) {
635
- var currentGroupChannel = _a.currentGroupChannel, oldestMessageTimeStamp = _a.oldestMessageTimeStamp, userFilledMessageListQuery = _a.userFilledMessageListQuery, replyType = _a.replyType;
636
- var hasMorePrev = _b.hasMorePrev, logger = _b.logger, messagesDispatcher = _b.messagesDispatcher, sdk = _b.sdk;
637
- return React.useCallback(function (callback) {
638
- var _a, _b;
639
- if (!hasMorePrev) {
640
- return;
641
- }
642
- var messageListParams = {
643
- prevResultSize: Channel_hooks_useInitialMessagesFetch.PREV_RESULT_SIZE,
644
- isInclusive: true,
645
- includeMetaArray: true,
646
- includeReactions: (_b = (_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) !== null && _b !== void 0 ? _b : false,
647
- };
648
- if (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') {
649
- messageListParams.includeThreadInfo = true;
650
- messageListParams.includeParentMessageInfo = true;
651
- messageListParams.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
652
- }
653
- if (userFilledMessageListQuery) {
654
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
655
- messageListParams[key] = userFilledMessageListQuery[key];
656
- });
657
- }
658
- logger.info('Channel: Fetching messages', {
659
- currentGroupChannel: currentGroupChannel,
660
- userFilledMessageListQuery: userFilledMessageListQuery,
661
- });
662
- currentGroupChannel
663
- .getMessagesByTimestamp(oldestMessageTimeStamp || new Date().getTime(), messageListParams)
664
- .then(function (messages) {
665
- messagesDispatcher({
666
- type: actionTypes.FETCH_PREV_MESSAGES_SUCCESS,
667
- payload: { currentGroupChannel: currentGroupChannel, messages: messages },
668
- });
669
- if (callback)
670
- setTimeout(function () { return callback(); });
671
- })
672
- .catch(function () {
673
- messagesDispatcher({
674
- type: actionTypes.FETCH_PREV_MESSAGES_FAILURE,
675
- payload: { currentGroupChannel: currentGroupChannel },
676
- });
677
- });
678
- }, [currentGroupChannel, oldestMessageTimeStamp, replyType]);
633
+ function useScrollCallback(_a, _b) {
634
+ var currentGroupChannel = _a.currentGroupChannel, oldestMessageTimeStamp = _a.oldestMessageTimeStamp, userFilledMessageListQuery = _a.userFilledMessageListQuery, replyType = _a.replyType;
635
+ var hasMorePrev = _b.hasMorePrev, logger = _b.logger, messagesDispatcher = _b.messagesDispatcher, sdk = _b.sdk;
636
+ return React.useCallback(function (callback) {
637
+ var _a, _b;
638
+ if (!hasMorePrev) {
639
+ return;
640
+ }
641
+ var messageListParams = {
642
+ prevResultSize: Channel_hooks_useInitialMessagesFetch.PREV_RESULT_SIZE,
643
+ isInclusive: true,
644
+ includeMetaArray: true,
645
+ includeReactions: (_b = (_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) !== null && _b !== void 0 ? _b : false,
646
+ };
647
+ if (replyType === 'QUOTE_REPLY' || replyType === 'THREAD') {
648
+ messageListParams.includeThreadInfo = true;
649
+ messageListParams.includeParentMessageInfo = true;
650
+ messageListParams.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
651
+ }
652
+ if (userFilledMessageListQuery) {
653
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
654
+ messageListParams[key] = userFilledMessageListQuery[key];
655
+ });
656
+ }
657
+ logger.info('Channel: Fetching messages', {
658
+ currentGroupChannel: currentGroupChannel,
659
+ userFilledMessageListQuery: userFilledMessageListQuery,
660
+ });
661
+ currentGroupChannel
662
+ .getMessagesByTimestamp(oldestMessageTimeStamp || new Date().getTime(), messageListParams)
663
+ .then(function (messages) {
664
+ messagesDispatcher({
665
+ type: actionTypes.FETCH_PREV_MESSAGES_SUCCESS,
666
+ payload: { currentGroupChannel: currentGroupChannel, messages: messages },
667
+ });
668
+ if (callback)
669
+ setTimeout(function () { return callback(); });
670
+ })
671
+ .catch(function () {
672
+ messagesDispatcher({
673
+ type: actionTypes.FETCH_PREV_MESSAGES_FAILURE,
674
+ payload: { currentGroupChannel: currentGroupChannel },
675
+ });
676
+ });
677
+ }, [currentGroupChannel, oldestMessageTimeStamp, replyType]);
679
678
  }
680
679
 
681
- function useScrollDownCallback(_a, _b) {
682
- var currentGroupChannel = _a.currentGroupChannel, latestMessageTimeStamp = _a.latestMessageTimeStamp, userFilledMessageListQuery = _a.userFilledMessageListQuery, hasMoreNext = _a.hasMoreNext, replyType = _a.replyType;
683
- var logger = _b.logger, messagesDispatcher = _b.messagesDispatcher, sdk = _b.sdk;
684
- return React.useCallback(function (cb) {
685
- var _a, _b;
686
- if (!hasMoreNext) {
687
- return;
688
- }
689
- var isReactionEnabled = (_b = (_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) !== null && _b !== void 0 ? _b : false;
690
- var messageListParams = {
691
- nextResultSize: Channel_hooks_useInitialMessagesFetch.NEXT_RESULT_SIZE,
692
- isInclusive: true,
693
- includeReactions: isReactionEnabled,
694
- includeMetaArray: true,
695
- };
696
- if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD')) {
697
- messageListParams.includeThreadInfo = true;
698
- messageListParams.includeParentMessageInfo = true;
699
- messageListParams.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
700
- }
701
- if (userFilledMessageListQuery) {
702
- Object.keys(userFilledMessageListQuery).forEach(function (key) {
703
- messageListParams[key] = userFilledMessageListQuery[key];
704
- });
705
- }
706
- logger.info('Channel: Fetching later messages', { currentGroupChannel: currentGroupChannel, userFilledMessageListQuery: userFilledMessageListQuery });
707
- currentGroupChannel
708
- .getMessagesByTimestamp(latestMessageTimeStamp || new Date().getTime(), messageListParams)
709
- .then(function (messages) {
710
- messagesDispatcher({
711
- type: actionTypes.FETCH_NEXT_MESSAGES_SUCCESS,
712
- payload: { currentGroupChannel: currentGroupChannel, messages: messages },
713
- });
714
- setTimeout(function () { return cb([messages, null]); });
715
- })
716
- .catch(function (error) {
717
- logger.error('Channel: Fetching later messages failed', error);
718
- messagesDispatcher({
719
- type: actionTypes.FETCH_NEXT_MESSAGES_FAILURE,
720
- payload: { currentGroupChannel: currentGroupChannel },
721
- });
722
- setTimeout(function () { return cb([null, error]); });
723
- });
724
- }, [currentGroupChannel, latestMessageTimeStamp, hasMoreNext, replyType]);
680
+ function useScrollDownCallback(_a, _b) {
681
+ var currentGroupChannel = _a.currentGroupChannel, latestMessageTimeStamp = _a.latestMessageTimeStamp, userFilledMessageListQuery = _a.userFilledMessageListQuery, hasMoreNext = _a.hasMoreNext, replyType = _a.replyType;
682
+ var logger = _b.logger, messagesDispatcher = _b.messagesDispatcher, sdk = _b.sdk;
683
+ return React.useCallback(function (cb) {
684
+ var _a, _b;
685
+ if (!hasMoreNext) {
686
+ return;
687
+ }
688
+ var isReactionEnabled = (_b = (_a = sdk === null || sdk === void 0 ? void 0 : sdk.appInfo) === null || _a === void 0 ? void 0 : _a.useReaction) !== null && _b !== void 0 ? _b : false;
689
+ var messageListParams = {
690
+ nextResultSize: Channel_hooks_useInitialMessagesFetch.NEXT_RESULT_SIZE,
691
+ isInclusive: true,
692
+ includeReactions: isReactionEnabled,
693
+ includeMetaArray: true,
694
+ };
695
+ if (replyType && (replyType === 'QUOTE_REPLY' || replyType === 'THREAD')) {
696
+ messageListParams.includeThreadInfo = true;
697
+ messageListParams.includeParentMessageInfo = true;
698
+ messageListParams.replyType = message.ReplyType.ONLY_REPLY_TO_CHANNEL;
699
+ }
700
+ if (userFilledMessageListQuery) {
701
+ Object.keys(userFilledMessageListQuery).forEach(function (key) {
702
+ messageListParams[key] = userFilledMessageListQuery[key];
703
+ });
704
+ }
705
+ logger.info('Channel: Fetching later messages', { currentGroupChannel: currentGroupChannel, userFilledMessageListQuery: userFilledMessageListQuery });
706
+ currentGroupChannel
707
+ .getMessagesByTimestamp(latestMessageTimeStamp || new Date().getTime(), messageListParams)
708
+ .then(function (messages) {
709
+ messagesDispatcher({
710
+ type: actionTypes.FETCH_NEXT_MESSAGES_SUCCESS,
711
+ payload: { currentGroupChannel: currentGroupChannel, messages: messages },
712
+ });
713
+ setTimeout(function () { return cb([messages, null]); });
714
+ })
715
+ .catch(function (error) {
716
+ logger.error('Channel: Fetching later messages failed', error);
717
+ messagesDispatcher({
718
+ type: actionTypes.FETCH_NEXT_MESSAGES_FAILURE,
719
+ payload: { currentGroupChannel: currentGroupChannel },
720
+ });
721
+ setTimeout(function () { return cb([null, error]); });
722
+ });
723
+ }, [currentGroupChannel, latestMessageTimeStamp, hasMoreNext, replyType]);
725
724
  }
726
725
 
727
- function useDeleteMessageCallback(_a, _b) {
728
- var currentGroupChannel = _a.currentGroupChannel, messagesDispatcher = _a.messagesDispatcher;
729
- var logger = _b.logger;
730
- return React.useCallback(function (message$1) {
731
- logger.info('Channel | useDeleteMessageCallback: Deleting message', message$1);
732
- var sendingStatus = index$1.isSendableMessage(message$1) ? message$1.sendingStatus : undefined;
733
- return new Promise(function (resolve, reject) {
734
- logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', sendingStatus);
735
- // Message is only on local
736
- if ((sendingStatus === message.SendingStatus.FAILED || sendingStatus === message.SendingStatus.PENDING) && 'reqId' in message$1) {
737
- logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message$1);
738
- messagesDispatcher({
739
- type: actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,
740
- payload: message$1.reqId,
741
- });
742
- resolve();
743
- }
744
- else {
745
- logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', sendingStatus);
746
- currentGroupChannel
747
- .deleteMessage(message$1)
748
- .then(function () {
749
- logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message$1);
750
- messagesDispatcher({
751
- type: actionTypes.ON_MESSAGE_DELETED,
752
- payload: message$1.messageId,
753
- });
754
- resolve();
755
- })
756
- .catch(function (err) {
757
- logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
758
- reject(err);
759
- });
760
- }
761
- });
762
- }, [currentGroupChannel, messagesDispatcher]);
726
+ function useDeleteMessageCallback(_a, _b) {
727
+ var currentGroupChannel = _a.currentGroupChannel, messagesDispatcher = _a.messagesDispatcher;
728
+ var logger = _b.logger;
729
+ return React.useCallback(function (message$1) {
730
+ logger.info('Channel | useDeleteMessageCallback: Deleting message', message$1);
731
+ var sendingStatus = index.isSendableMessage(message$1) ? message$1.sendingStatus : undefined;
732
+ return new Promise(function (resolve, reject) {
733
+ logger.info('Channel | useDeleteMessageCallback: Deleting message requestState:', sendingStatus);
734
+ // Message is only on local
735
+ if ((sendingStatus === message.SendingStatus.FAILED || sendingStatus === message.SendingStatus.PENDING) && 'reqId' in message$1) {
736
+ logger.info('Channel | useDeleteMessageCallback: Deleted message from local:', message$1);
737
+ messagesDispatcher({
738
+ type: actionTypes.ON_MESSAGE_DELETED_BY_REQ_ID,
739
+ payload: message$1.reqId,
740
+ });
741
+ resolve();
742
+ }
743
+ else {
744
+ logger.info('Channel | useDeleteMessageCallback: Deleting message from remote:', sendingStatus);
745
+ currentGroupChannel
746
+ .deleteMessage(message$1)
747
+ .then(function () {
748
+ logger.info('Channel | useDeleteMessageCallback: Deleting message success!', message$1);
749
+ messagesDispatcher({
750
+ type: actionTypes.ON_MESSAGE_DELETED,
751
+ payload: message$1.messageId,
752
+ });
753
+ resolve();
754
+ })
755
+ .catch(function (err) {
756
+ logger.warning('Channel | useDeleteMessageCallback: Deleting message failed!', err);
757
+ reject(err);
758
+ });
759
+ }
760
+ });
761
+ }, [currentGroupChannel, messagesDispatcher]);
763
762
  }
764
763
 
765
- function useUpdateMessageCallback(_a, _b) {
766
- var currentGroupChannel = _a.currentGroupChannel, messagesDispatcher = _a.messagesDispatcher, onBeforeUpdateUserMessage = _a.onBeforeUpdateUserMessage, isMentionEnabled = _a.isMentionEnabled;
767
- var logger = _b.logger, pubSub = _b.pubSub;
768
- return React.useCallback(function (props, callback) {
769
- var messageId = props.messageId, message = props.message, mentionedUsers = props.mentionedUsers, mentionTemplate = props.mentionTemplate;
770
- var createParamsDefault = function (message) {
771
- var params = {
772
- message: message,
773
- };
774
- if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
775
- params.mentionedUsers = mentionedUsers;
776
- }
777
- if (isMentionEnabled && mentionTemplate) {
778
- params.mentionedMessageTemplate = mentionTemplate;
779
- }
780
- else {
781
- params.mentionedMessageTemplate = message;
782
- }
783
- return params;
784
- };
785
- var shouldCreateCustomParams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
786
- if (shouldCreateCustomParams) {
787
- logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
788
- }
789
- var params = shouldCreateCustomParams ? onBeforeUpdateUserMessage(message) : createParamsDefault(message);
790
- logger.info('Channel: Updating message!', params);
791
- currentGroupChannel
792
- .updateUserMessage(messageId, params)
793
- .then(function (msg) {
794
- if (callback) {
795
- callback(null, msg);
796
- }
797
- logger.info('Channel: Updating message success!', msg);
798
- messagesDispatcher({
799
- type: actionTypes.ON_MESSAGE_UPDATED,
800
- payload: {
801
- channel: currentGroupChannel,
802
- message: msg,
803
- },
804
- });
805
- pubSub.publish(pubSub_topics.pubSubTopics.UPDATE_USER_MESSAGE, {
806
- message: msg,
807
- channel: currentGroupChannel,
808
- publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
809
- });
810
- })
811
- .catch(function (err) {
812
- if (callback) {
813
- callback(err, null);
814
- }
815
- });
816
- }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
764
+ function useUpdateMessageCallback(_a, _b) {
765
+ var currentGroupChannel = _a.currentGroupChannel, messagesDispatcher = _a.messagesDispatcher, onBeforeUpdateUserMessage = _a.onBeforeUpdateUserMessage, isMentionEnabled = _a.isMentionEnabled;
766
+ var logger = _b.logger, pubSub = _b.pubSub;
767
+ return React.useCallback(function (props, callback) {
768
+ var messageId = props.messageId, message = props.message, mentionedUsers = props.mentionedUsers, mentionTemplate = props.mentionTemplate;
769
+ var createParamsDefault = function (message) {
770
+ var params = {
771
+ message: message,
772
+ };
773
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
774
+ params.mentionedUsers = mentionedUsers;
775
+ }
776
+ if (isMentionEnabled && mentionTemplate) {
777
+ params.mentionedMessageTemplate = mentionTemplate;
778
+ }
779
+ else {
780
+ params.mentionedMessageTemplate = message;
781
+ }
782
+ return params;
783
+ };
784
+ var shouldCreateCustomParams = onBeforeUpdateUserMessage && typeof onBeforeUpdateUserMessage === 'function';
785
+ if (shouldCreateCustomParams) {
786
+ logger.info('Channel: creating params using onBeforeUpdateUserMessage', onBeforeUpdateUserMessage);
787
+ }
788
+ var params = shouldCreateCustomParams ? onBeforeUpdateUserMessage(message) : createParamsDefault(message);
789
+ logger.info('Channel: Updating message!', params);
790
+ currentGroupChannel
791
+ .updateUserMessage(messageId, params)
792
+ .then(function (msg) {
793
+ if (callback) {
794
+ callback(null, msg);
795
+ }
796
+ logger.info('Channel: Updating message success!', msg);
797
+ messagesDispatcher({
798
+ type: actionTypes.ON_MESSAGE_UPDATED,
799
+ payload: {
800
+ channel: currentGroupChannel,
801
+ message: msg,
802
+ },
803
+ });
804
+ pubSub.publish(pubSub_topics.pubSubTopics.UPDATE_USER_MESSAGE, {
805
+ message: msg,
806
+ channel: currentGroupChannel,
807
+ publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
808
+ });
809
+ })
810
+ .catch(function (err) {
811
+ if (callback) {
812
+ callback(err, null);
813
+ }
814
+ });
815
+ }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.url, messagesDispatcher, onBeforeUpdateUserMessage]);
817
816
  }
818
817
 
819
- function useResendMessageCallback(_a, _b) {
820
- var currentGroupChannel = _a.currentGroupChannel, messagesDispatcher = _a.messagesDispatcher;
821
- var logger = _b.logger, pubSub = _b.pubSub;
822
- return React.useCallback(function (failedMessage) {
823
- logger.info('Channel: Resending message has started', failedMessage);
824
- if (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.isResendable) {
825
- // userMessage
826
- if (failedMessage.isUserMessage()) {
827
- currentGroupChannel
828
- .resendMessage(failedMessage)
829
- .onPending(function (message) {
830
- logger.info('Channel: Resending message start!', message);
831
- messagesDispatcher({
832
- type: actionTypes.RESEND_MESSAGE_START,
833
- payload: message,
834
- });
835
- })
836
- .onSucceeded(function (message) {
837
- logger.info('Channel: Resending message success!', message);
838
- messagesDispatcher({
839
- type: actionTypes.SEND_MESSAGE_SUCCESS,
840
- payload: message,
841
- });
842
- })
843
- .onFailed(function (e, message) {
844
- logger.warning('Channel: Resending message failed!', e);
845
- messagesDispatcher({
846
- type: actionTypes.SEND_MESSAGE_FAILURE,
847
- payload: message,
848
- });
849
- });
850
- }
851
- else if (failedMessage.isFileMessage()) {
852
- currentGroupChannel
853
- .resendMessage(failedMessage)
854
- .onPending(function (message) {
855
- logger.info('Channel: Resending file message start!', message);
856
- messagesDispatcher({
857
- type: actionTypes.RESEND_MESSAGE_START,
858
- payload: message,
859
- });
860
- })
861
- .onSucceeded(function (message) {
862
- logger.info('Channel: Resending file message success!', message);
863
- messagesDispatcher({
864
- type: actionTypes.SEND_MESSAGE_SUCCESS,
865
- payload: message,
866
- });
867
- })
868
- .onFailed(function (e, message) {
869
- logger.warning('Channel: Resending file message failed!', e);
870
- messagesDispatcher({
871
- type: actionTypes.SEND_MESSAGE_FAILURE,
872
- payload: message,
873
- });
874
- });
875
- }
876
- else if (failedMessage.isMultipleFilesMessage()) {
877
- currentGroupChannel
878
- .resendMessage(failedMessage)
879
- .onPending(function (message) {
880
- logger.info('Channel: Resending multiple files message start!', message);
881
- messagesDispatcher({
882
- type: actionTypes.RESEND_MESSAGE_START,
883
- payload: message,
884
- });
885
- })
886
- .onFileUploaded(function (requestId, index, uploadableFileInfo, error) {
887
- logger.info('Channel: Resending multiple files message file uploaded!', {
888
- requestId: requestId,
889
- index: index,
890
- error: error,
891
- uploadableFileInfo: uploadableFileInfo,
892
- });
893
- pubSub.publish(pubSub_topics.pubSubTopics.ON_FILE_INFO_UPLOADED, {
894
- response: {
895
- channelUrl: currentGroupChannel.url,
896
- requestId: requestId,
897
- index: index,
898
- uploadableFileInfo: uploadableFileInfo,
899
- error: error,
900
- },
901
- publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
902
- });
903
- })
904
- .onSucceeded(function (message) {
905
- logger.info('Channel: Resending multiple files message success!', message);
906
- messagesDispatcher({
907
- type: actionTypes.SEND_MESSAGE_SUCCESS,
908
- payload: message,
909
- });
910
- })
911
- .onFailed(function (e, message) {
912
- logger.warning('Channel: Resending multiple files message failed!', e);
913
- messagesDispatcher({
914
- type: actionTypes.SEND_MESSAGE_FAILURE,
915
- payload: message,
916
- });
917
- });
918
- }
919
- }
920
- else {
921
- logger.error('Message is not resendable', failedMessage);
922
- }
923
- }, [currentGroupChannel, messagesDispatcher]);
818
+ function useResendMessageCallback(_a, _b) {
819
+ var currentGroupChannel = _a.currentGroupChannel, messagesDispatcher = _a.messagesDispatcher;
820
+ var logger = _b.logger, pubSub = _b.pubSub;
821
+ return React.useCallback(function (failedMessage) {
822
+ logger.info('Channel: Resending message has started', failedMessage);
823
+ if (failedMessage === null || failedMessage === void 0 ? void 0 : failedMessage.isResendable) {
824
+ // userMessage
825
+ if (failedMessage.isUserMessage()) {
826
+ currentGroupChannel
827
+ .resendMessage(failedMessage)
828
+ .onPending(function (message) {
829
+ logger.info('Channel: Resending message start!', message);
830
+ messagesDispatcher({
831
+ type: actionTypes.RESEND_MESSAGE_START,
832
+ payload: message,
833
+ });
834
+ })
835
+ .onSucceeded(function (message) {
836
+ logger.info('Channel: Resending message success!', message);
837
+ messagesDispatcher({
838
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
839
+ payload: message,
840
+ });
841
+ })
842
+ .onFailed(function (e, message) {
843
+ logger.warning('Channel: Resending message failed!', e);
844
+ messagesDispatcher({
845
+ type: actionTypes.SEND_MESSAGE_FAILURE,
846
+ payload: message,
847
+ });
848
+ });
849
+ }
850
+ else if (failedMessage.isFileMessage()) {
851
+ currentGroupChannel
852
+ .resendMessage(failedMessage)
853
+ .onPending(function (message) {
854
+ logger.info('Channel: Resending file message start!', message);
855
+ messagesDispatcher({
856
+ type: actionTypes.RESEND_MESSAGE_START,
857
+ payload: message,
858
+ });
859
+ })
860
+ .onSucceeded(function (message) {
861
+ logger.info('Channel: Resending file message success!', message);
862
+ messagesDispatcher({
863
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
864
+ payload: message,
865
+ });
866
+ })
867
+ .onFailed(function (e, message) {
868
+ logger.warning('Channel: Resending file message failed!', e);
869
+ messagesDispatcher({
870
+ type: actionTypes.SEND_MESSAGE_FAILURE,
871
+ payload: message,
872
+ });
873
+ });
874
+ }
875
+ else if (failedMessage.isMultipleFilesMessage()) {
876
+ currentGroupChannel
877
+ .resendMessage(failedMessage)
878
+ .onPending(function (message) {
879
+ logger.info('Channel: Resending multiple files message start!', message);
880
+ messagesDispatcher({
881
+ type: actionTypes.RESEND_MESSAGE_START,
882
+ payload: message,
883
+ });
884
+ })
885
+ .onFileUploaded(function (requestId, index, uploadableFileInfo, error) {
886
+ logger.info('Channel: Resending multiple files message file uploaded!', {
887
+ requestId: requestId,
888
+ index: index,
889
+ error: error,
890
+ uploadableFileInfo: uploadableFileInfo,
891
+ });
892
+ pubSub.publish(pubSub_topics.pubSubTopics.ON_FILE_INFO_UPLOADED, {
893
+ response: {
894
+ channelUrl: currentGroupChannel.url,
895
+ requestId: requestId,
896
+ index: index,
897
+ uploadableFileInfo: uploadableFileInfo,
898
+ error: error,
899
+ },
900
+ publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
901
+ });
902
+ })
903
+ .onSucceeded(function (message) {
904
+ logger.info('Channel: Resending multiple files message success!', message);
905
+ messagesDispatcher({
906
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
907
+ payload: message,
908
+ });
909
+ })
910
+ .onFailed(function (e, message) {
911
+ logger.warning('Channel: Resending multiple files message failed!', e);
912
+ messagesDispatcher({
913
+ type: actionTypes.SEND_MESSAGE_FAILURE,
914
+ payload: message,
915
+ });
916
+ });
917
+ }
918
+ }
919
+ else {
920
+ logger.error('Message is not resendable', failedMessage);
921
+ }
922
+ }, [currentGroupChannel, messagesDispatcher]);
924
923
  }
925
924
 
926
- function useSendMessageCallback(_a, _b) {
927
- var isMentionEnabled = _a.isMentionEnabled, currentGroupChannel = _a.currentGroupChannel, onBeforeSendUserMessage = _a.onBeforeSendUserMessage;
928
- var logger = _b.logger, pubSub = _b.pubSub, scrollRef = _b.scrollRef, messagesDispatcher = _b.messagesDispatcher;
929
- var messageInputRef = React.useRef(null);
930
- var sendMessage = React.useCallback(function (_a) {
931
- var quoteMessage = _a.quoteMessage, message = _a.message, mentionTemplate = _a.mentionTemplate,
932
- // mentionedUserIds,
933
- mentionedUsers = _a.mentionedUsers;
934
- var createParamsDefault = function () {
935
- var params = {
936
- message: message,
937
- };
938
- // if (isMentionEnabled && mentionedUserIds?.length > 0) {
939
- if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
940
- // params.mentionedUserIds = mentionedUserIds;
941
- params.mentionedUsers = mentionedUsers;
942
- }
943
- // if (isMentionEnabled && mentionTemplate && mentionedUserIds?.length > 0) {
944
- if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
945
- params.mentionedMessageTemplate = mentionTemplate;
946
- }
947
- if (quoteMessage) {
948
- params.isReplyToChannel = true;
949
- params.parentMessageId = quoteMessage.messageId;
950
- }
951
- return params;
952
- };
953
- var shouldCreateCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
954
- if (shouldCreateCustomParams) {
955
- logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
956
- }
957
- var params = shouldCreateCustomParams ? onBeforeSendUserMessage(message, quoteMessage) : createParamsDefault();
958
- logger.info('Channel: Sending message has started', params);
959
- currentGroupChannel
960
- .sendUserMessage(params)
961
- .onPending(function (pendingMsg) {
962
- pubSub.publish(pubSub_topics.pubSubTopics.SEND_MESSAGE_START, {
963
- /* pubSub is used instead of messagesDispatcher
964
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
965
- message: pendingMsg,
966
- channel: currentGroupChannel,
967
- publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
968
- });
969
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
970
- })
971
- .onFailed(function (err, msg) {
972
- logger.warning('Channel: Sending message failed!', { message: msg, error: err });
973
- messagesDispatcher({
974
- type: actionTypes.SEND_MESSAGE_FAILURE,
975
- payload: msg,
976
- });
977
- })
978
- .onSucceeded(function (msg) {
979
- logger.info('Channel: Sending message success!', msg);
980
- messagesDispatcher({
981
- type: actionTypes.SEND_MESSAGE_SUCCESS,
982
- payload: msg,
983
- });
984
- });
985
- }, [currentGroupChannel, onBeforeSendUserMessage]);
986
- return [messageInputRef, sendMessage];
925
+ function useSendMessageCallback(_a, _b) {
926
+ var isMentionEnabled = _a.isMentionEnabled, currentGroupChannel = _a.currentGroupChannel, onBeforeSendUserMessage = _a.onBeforeSendUserMessage;
927
+ var logger = _b.logger, pubSub = _b.pubSub, scrollRef = _b.scrollRef, messagesDispatcher = _b.messagesDispatcher;
928
+ var messageInputRef = React.useRef(null);
929
+ var sendMessage = React.useCallback(function (_a) {
930
+ var quoteMessage = _a.quoteMessage, message = _a.message, mentionTemplate = _a.mentionTemplate,
931
+ // mentionedUserIds,
932
+ mentionedUsers = _a.mentionedUsers;
933
+ var createParamsDefault = function () {
934
+ var params = {
935
+ message: message,
936
+ };
937
+ // if (isMentionEnabled && mentionedUserIds?.length > 0) {
938
+ if (isMentionEnabled && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
939
+ // params.mentionedUserIds = mentionedUserIds;
940
+ params.mentionedUsers = mentionedUsers;
941
+ }
942
+ // if (isMentionEnabled && mentionTemplate && mentionedUserIds?.length > 0) {
943
+ if (isMentionEnabled && mentionTemplate && (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) > 0) {
944
+ params.mentionedMessageTemplate = mentionTemplate;
945
+ }
946
+ if (quoteMessage) {
947
+ params.isReplyToChannel = true;
948
+ params.parentMessageId = quoteMessage.messageId;
949
+ }
950
+ return params;
951
+ };
952
+ var shouldCreateCustomParams = onBeforeSendUserMessage && typeof onBeforeSendUserMessage === 'function';
953
+ if (shouldCreateCustomParams) {
954
+ logger.info('Channel: creating params using onBeforeSendUserMessage', onBeforeSendUserMessage);
955
+ }
956
+ var params = shouldCreateCustomParams ? onBeforeSendUserMessage(message, quoteMessage) : createParamsDefault();
957
+ logger.info('Channel: Sending message has started', params);
958
+ currentGroupChannel
959
+ .sendUserMessage(params)
960
+ .onPending(function (pendingMsg) {
961
+ pubSub.publish(pubSub_topics.pubSubTopics.SEND_MESSAGE_START, {
962
+ /* pubSub is used instead of messagesDispatcher
963
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
964
+ message: pendingMsg,
965
+ channel: currentGroupChannel,
966
+ publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
967
+ });
968
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
969
+ })
970
+ .onFailed(function (err, msg) {
971
+ logger.warning('Channel: Sending message failed!', { message: msg, error: err });
972
+ messagesDispatcher({
973
+ type: actionTypes.SEND_MESSAGE_FAILURE,
974
+ payload: msg,
975
+ });
976
+ })
977
+ .onSucceeded(function (msg) {
978
+ logger.info('Channel: Sending message success!', msg);
979
+ messagesDispatcher({
980
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
981
+ payload: msg,
982
+ });
983
+ });
984
+ }, [currentGroupChannel, onBeforeSendUserMessage]);
985
+ return [messageInputRef, sendMessage];
987
986
  }
988
987
 
989
- function useSendFileMessageCallback(_a, _b) {
990
- var currentGroupChannel = _a.currentGroupChannel, onBeforeSendFileMessage = _a.onBeforeSendFileMessage, imageCompression = _a.imageCompression;
991
- var logger = _b.logger, pubSub = _b.pubSub, scrollRef = _b.scrollRef, messagesDispatcher = _b.messagesDispatcher;
992
- var sendMessage = React.useCallback(function (compressedFile, quoteMessage) {
993
- if (quoteMessage === void 0) { quoteMessage = null; }
994
- return new Promise(function (resolve, reject) {
995
- // Create FileMessageParams
996
- var params = onBeforeSendFileMessage === null || onBeforeSendFileMessage === void 0 ? void 0 : onBeforeSendFileMessage(compressedFile, quoteMessage);
997
- if (!params) {
998
- params = { file: compressedFile };
999
- if (quoteMessage) {
1000
- params.isReplyToChannel = true;
1001
- params.parentMessageId = quoteMessage.messageId;
1002
- }
1003
- }
1004
- // Send FileMessage
1005
- logger.info('Channel: Uploading file message start!', params);
1006
- currentGroupChannel
1007
- .sendFileMessage(params)
1008
- .onPending(function (pendingMessage) {
1009
- pubSub.publish(pubSub_topics.pubSubTopics.SEND_MESSAGE_START, {
1010
- /* pubSub is used instead of messagesDispatcher
1011
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1012
- // TODO: remove data pollution
1013
- message: _tslib.__assign(_tslib.__assign({}, pendingMessage), { url: URL.createObjectURL(compressedFile),
1014
- // pending thumbnail message seems to be failed
1015
- requestState: 'pending', isUserMessage: pendingMessage.isUserMessage, isFileMessage: pendingMessage.isFileMessage, isAdminMessage: pendingMessage.isAdminMessage, isMultipleFilesMessage: pendingMessage.isMultipleFilesMessage }),
1016
- channel: currentGroupChannel,
1017
- publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
1018
- });
1019
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1020
- })
1021
- .onFailed(function (err, failedMessage) {
1022
- logger.error('Channel: Sending file message failed!', { failedMessage: failedMessage, err: err });
1023
- // TODO: v4 - remove logic that modifies the original object.
1024
- // It makes the code difficult to track, likely causing unpredictable side effects.
1025
- // @ts-ignore eslint-disable-next-line no-param-reassign
1026
- failedMessage.localUrl = URL.createObjectURL(compressedFile);
1027
- // @ts-ignore eslint-disable-next-line no-param-reassign
1028
- failedMessage.file = compressedFile;
1029
- messagesDispatcher({
1030
- type: actionTypes.SEND_MESSAGE_FAILURE,
1031
- payload: failedMessage,
1032
- });
1033
- reject(err);
1034
- })
1035
- .onSucceeded(function (succeededMessage) {
1036
- logger.info('Channel: Sending file message success!', succeededMessage);
1037
- messagesDispatcher({
1038
- type: actionTypes.SEND_MESSAGE_SUCCESS,
1039
- payload: succeededMessage,
1040
- });
1041
- resolve(succeededMessage);
1042
- });
1043
- });
1044
- }, [currentGroupChannel, onBeforeSendFileMessage, imageCompression]);
1045
- return [sendMessage];
988
+ function useSendFileMessageCallback(_a, _b) {
989
+ var currentGroupChannel = _a.currentGroupChannel, onBeforeSendFileMessage = _a.onBeforeSendFileMessage, imageCompression = _a.imageCompression;
990
+ var logger = _b.logger, pubSub = _b.pubSub, scrollRef = _b.scrollRef, messagesDispatcher = _b.messagesDispatcher;
991
+ var sendMessage = React.useCallback(function (compressedFile, quoteMessage) {
992
+ if (quoteMessage === void 0) { quoteMessage = null; }
993
+ return new Promise(function (resolve, reject) {
994
+ // Create FileMessageParams
995
+ var params = onBeforeSendFileMessage === null || onBeforeSendFileMessage === void 0 ? void 0 : onBeforeSendFileMessage(compressedFile, quoteMessage);
996
+ if (!params) {
997
+ params = { file: compressedFile };
998
+ if (quoteMessage) {
999
+ params.isReplyToChannel = true;
1000
+ params.parentMessageId = quoteMessage.messageId;
1001
+ }
1002
+ }
1003
+ // Send FileMessage
1004
+ logger.info('Channel: Uploading file message start!', params);
1005
+ currentGroupChannel
1006
+ .sendFileMessage(params)
1007
+ .onPending(function (pendingMessage) {
1008
+ pubSub.publish(pubSub_topics.pubSubTopics.SEND_MESSAGE_START, {
1009
+ /* pubSub is used instead of messagesDispatcher
1010
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1011
+ // TODO: remove data pollution
1012
+ message: _tslib.__assign(_tslib.__assign({}, pendingMessage), { url: URL.createObjectURL(compressedFile),
1013
+ // pending thumbnail message seems to be failed
1014
+ requestState: 'pending', isUserMessage: pendingMessage.isUserMessage, isFileMessage: pendingMessage.isFileMessage, isAdminMessage: pendingMessage.isAdminMessage, isMultipleFilesMessage: pendingMessage.isMultipleFilesMessage }),
1015
+ channel: currentGroupChannel,
1016
+ publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
1017
+ });
1018
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1019
+ })
1020
+ .onFailed(function (err, failedMessage) {
1021
+ logger.error('Channel: Sending file message failed!', { failedMessage: failedMessage, err: err });
1022
+ // TODO: v4 - remove logic that modifies the original object.
1023
+ // It makes the code difficult to track, likely causing unpredictable side effects.
1024
+ // @ts-ignore eslint-disable-next-line no-param-reassign
1025
+ failedMessage.localUrl = URL.createObjectURL(compressedFile);
1026
+ // @ts-ignore eslint-disable-next-line no-param-reassign
1027
+ failedMessage.file = compressedFile;
1028
+ messagesDispatcher({
1029
+ type: actionTypes.SEND_MESSAGE_FAILURE,
1030
+ payload: failedMessage,
1031
+ });
1032
+ reject(err);
1033
+ })
1034
+ .onSucceeded(function (succeededMessage) {
1035
+ logger.info('Channel: Sending file message success!', succeededMessage);
1036
+ messagesDispatcher({
1037
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
1038
+ payload: succeededMessage,
1039
+ });
1040
+ resolve(succeededMessage);
1041
+ });
1042
+ });
1043
+ }, [currentGroupChannel, onBeforeSendFileMessage, imageCompression]);
1044
+ return [sendMessage];
1046
1045
  }
1047
1046
 
1048
- // To prevent multiple clicks on the message in the channel while scrolling
1049
- function deactivateClick(scrollRef) {
1050
- var element = scrollRef.current;
1051
- var parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1052
- if (element && parentNode) {
1053
- element.style.pointerEvents = 'none';
1054
- parentNode.style.cursor = 'wait';
1055
- }
1056
- }
1057
- function activateClick(scrollRef) {
1058
- var element = scrollRef.current;
1059
- var parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1060
- if (element && parentNode) {
1061
- element.style.pointerEvents = 'auto';
1062
- parentNode.style.cursor = 'auto';
1063
- }
1064
- }
1065
- function useScrollToMessage(_a, _b) {
1066
- var setInitialTimeStamp = _a.setInitialTimeStamp, setAnimatedMessageId = _a.setAnimatedMessageId, allMessages = _a.allMessages, scrollRef = _a.scrollRef;
1067
- var logger = _b.logger;
1068
- return React.useCallback(function (createdAt, messageId) {
1069
- var isPresent = allMessages.find(function (m) { return (m.messageId === messageId); });
1070
- setAnimatedMessageId(null);
1071
- setTimeout(function () {
1072
- try {
1073
- logger.info('Channel: scroll to message - disabling mouse events');
1074
- deactivateClick(scrollRef);
1075
- if (isPresent) {
1076
- logger.info('Channel: scroll to message - message is present');
1077
- setAnimatedMessageId(messageId);
1078
- utils.scrollToRenderedMessage(scrollRef, createdAt);
1079
- }
1080
- else {
1081
- logger.info('Channel: scroll to message - fetching older messages');
1082
- setInitialTimeStamp(null);
1083
- setInitialTimeStamp(createdAt);
1084
- setAnimatedMessageId(messageId);
1085
- }
1086
- }
1087
- finally {
1088
- logger.info('Channel: scroll to message - enabled mouse events');
1089
- activateClick(scrollRef);
1090
- }
1091
- });
1092
- }, [
1093
- setInitialTimeStamp,
1094
- setAnimatedMessageId,
1095
- allMessages,
1096
- ]);
1047
+ // To prevent multiple clicks on the message in the channel while scrolling
1048
+ function deactivateClick(scrollRef) {
1049
+ var element = scrollRef.current;
1050
+ var parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1051
+ if (element && parentNode) {
1052
+ element.style.pointerEvents = 'none';
1053
+ parentNode.style.cursor = 'wait';
1054
+ }
1055
+ }
1056
+ function activateClick(scrollRef) {
1057
+ var element = scrollRef.current;
1058
+ var parentNode = element === null || element === void 0 ? void 0 : element.parentNode;
1059
+ if (element && parentNode) {
1060
+ element.style.pointerEvents = 'auto';
1061
+ parentNode.style.cursor = 'auto';
1062
+ }
1063
+ }
1064
+ function useScrollToMessage(_a, _b) {
1065
+ var setInitialTimeStamp = _a.setInitialTimeStamp, setAnimatedMessageId = _a.setAnimatedMessageId, allMessages = _a.allMessages, scrollRef = _a.scrollRef;
1066
+ var logger = _b.logger;
1067
+ return React.useCallback(function (createdAt, messageId) {
1068
+ var isPresent = allMessages.find(function (m) { return (m.messageId === messageId); });
1069
+ setAnimatedMessageId(null);
1070
+ setTimeout(function () {
1071
+ try {
1072
+ logger.info('Channel: scroll to message - disabling mouse events');
1073
+ deactivateClick(scrollRef);
1074
+ if (isPresent) {
1075
+ logger.info('Channel: scroll to message - message is present');
1076
+ setAnimatedMessageId(messageId);
1077
+ utils.scrollToRenderedMessage(scrollRef, createdAt);
1078
+ }
1079
+ else {
1080
+ logger.info('Channel: scroll to message - fetching older messages');
1081
+ setInitialTimeStamp(null);
1082
+ setInitialTimeStamp(createdAt);
1083
+ setAnimatedMessageId(messageId);
1084
+ }
1085
+ }
1086
+ finally {
1087
+ logger.info('Channel: scroll to message - enabled mouse events');
1088
+ activateClick(scrollRef);
1089
+ }
1090
+ });
1091
+ }, [
1092
+ setInitialTimeStamp,
1093
+ setAnimatedMessageId,
1094
+ allMessages,
1095
+ ]);
1097
1096
  }
1098
1097
 
1099
- var useSendVoiceMessageCallback = function (_a, _b) {
1100
- var currentGroupChannel = _a.currentGroupChannel, onBeforeSendVoiceMessage = _a.onBeforeSendVoiceMessage;
1101
- var logger = _b.logger, pubSub = _b.pubSub, scrollRef = _b.scrollRef, messagesDispatcher = _b.messagesDispatcher;
1102
- var sendMessage = React.useCallback(function (file, duration, quoteMessage) { return new Promise(function (resolve, reject) {
1103
- if (!currentGroupChannel) {
1104
- return;
1105
- }
1106
- var messageParams = (onBeforeSendVoiceMessage
1107
- && typeof onBeforeSendVoiceMessage === 'function')
1108
- ? onBeforeSendVoiceMessage(file, quoteMessage)
1109
- : {
1110
- file: file,
1111
- fileName: consts.VOICE_MESSAGE_FILE_NAME,
1112
- mimeType: consts.VOICE_MESSAGE_MIME_TYPE,
1113
- metaArrays: [
1114
- new message.MessageMetaArray({
1115
- key: consts.META_ARRAY_VOICE_DURATION_KEY,
1116
- value: ["".concat(duration)],
1117
- }),
1118
- new message.MessageMetaArray({
1119
- key: consts.META_ARRAY_MESSAGE_TYPE_KEY,
1120
- value: [consts.META_ARRAY_MESSAGE_TYPE_VALUE__VOICE],
1121
- }),
1122
- ],
1123
- };
1124
- if (quoteMessage) {
1125
- messageParams.isReplyToChannel = true;
1126
- messageParams.parentMessageId = quoteMessage.messageId;
1127
- }
1128
- logger.info('Channel: Start sending voice message', messageParams);
1129
- currentGroupChannel.sendFileMessage(messageParams)
1130
- .onPending(function (pendingMessage) {
1131
- pubSub.publish(pubSub_topics.pubSubTopics.SEND_MESSAGE_START, {
1132
- /* pubSub is used instead of messagesDispatcher
1133
- to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1134
- message: pendingMessage,
1135
- channel: currentGroupChannel,
1136
- publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
1137
- });
1138
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1139
- })
1140
- .onFailed(function (err, failedMessage) {
1141
- logger.error('Channel: Sending voice message failed!', { failedMessage: failedMessage, err: err });
1142
- messagesDispatcher({
1143
- type: actionTypes.SEND_MESSAGE_FAILURE,
1144
- payload: failedMessage,
1145
- });
1146
- reject(err);
1147
- })
1148
- .onSucceeded(function (succeededMessage) {
1149
- logger.info('Channel: Sending voice message success!', succeededMessage);
1150
- messagesDispatcher({
1151
- type: actionTypes.SEND_MESSAGE_SUCCESS,
1152
- payload: succeededMessage,
1153
- });
1154
- resolve(succeededMessage);
1155
- });
1156
- }); }, [
1157
- currentGroupChannel,
1158
- onBeforeSendVoiceMessage,
1159
- ]);
1160
- return [sendMessage];
1098
+ var useSendVoiceMessageCallback = function (_a, _b) {
1099
+ var currentGroupChannel = _a.currentGroupChannel, onBeforeSendVoiceMessage = _a.onBeforeSendVoiceMessage;
1100
+ var logger = _b.logger, pubSub = _b.pubSub, scrollRef = _b.scrollRef, messagesDispatcher = _b.messagesDispatcher;
1101
+ var sendMessage = React.useCallback(function (file, duration, quoteMessage) { return new Promise(function (resolve, reject) {
1102
+ if (!currentGroupChannel) {
1103
+ return;
1104
+ }
1105
+ var messageParams = (onBeforeSendVoiceMessage
1106
+ && typeof onBeforeSendVoiceMessage === 'function')
1107
+ ? onBeforeSendVoiceMessage(file, quoteMessage)
1108
+ : {
1109
+ file: file,
1110
+ fileName: consts.VOICE_MESSAGE_FILE_NAME,
1111
+ mimeType: consts.VOICE_MESSAGE_MIME_TYPE,
1112
+ metaArrays: [
1113
+ new message.MessageMetaArray({
1114
+ key: consts.META_ARRAY_VOICE_DURATION_KEY,
1115
+ value: ["".concat(duration)],
1116
+ }),
1117
+ new message.MessageMetaArray({
1118
+ key: consts.META_ARRAY_MESSAGE_TYPE_KEY,
1119
+ value: [consts.META_ARRAY_MESSAGE_TYPE_VALUE__VOICE],
1120
+ }),
1121
+ ],
1122
+ };
1123
+ if (quoteMessage) {
1124
+ messageParams.isReplyToChannel = true;
1125
+ messageParams.parentMessageId = quoteMessage.messageId;
1126
+ }
1127
+ logger.info('Channel: Start sending voice message', messageParams);
1128
+ currentGroupChannel.sendFileMessage(messageParams)
1129
+ .onPending(function (pendingMessage) {
1130
+ pubSub.publish(pubSub_topics.pubSubTopics.SEND_MESSAGE_START, {
1131
+ /* pubSub is used instead of messagesDispatcher
1132
+ to avoid redundantly calling `messageActionTypes.SEND_MESSAGE_START` */
1133
+ message: pendingMessage,
1134
+ channel: currentGroupChannel,
1135
+ publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
1136
+ });
1137
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1138
+ })
1139
+ .onFailed(function (err, failedMessage) {
1140
+ logger.error('Channel: Sending voice message failed!', { failedMessage: failedMessage, err: err });
1141
+ messagesDispatcher({
1142
+ type: actionTypes.SEND_MESSAGE_FAILURE,
1143
+ payload: failedMessage,
1144
+ });
1145
+ reject(err);
1146
+ })
1147
+ .onSucceeded(function (succeededMessage) {
1148
+ logger.info('Channel: Sending voice message success!', succeededMessage);
1149
+ messagesDispatcher({
1150
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
1151
+ payload: succeededMessage,
1152
+ });
1153
+ resolve(succeededMessage);
1154
+ });
1155
+ }); }, [
1156
+ currentGroupChannel,
1157
+ onBeforeSendVoiceMessage,
1158
+ ]);
1159
+ return [sendMessage];
1161
1160
  };
1162
1161
 
1163
- var useHandleChannelPubsubEvents = function (_a) {
1164
- var channelUrl = _a.channelUrl, sdkInit = _a.sdkInit, pubSub = _a.pubSub, dispatcher = _a.dispatcher, scrollRef = _a.scrollRef;
1165
- React.useEffect(function () {
1166
- var subscriber = new Map();
1167
- if (pubSub === null || pubSub === void 0 ? void 0 : pubSub.subscribe) {
1168
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, function (props) {
1169
- var channel = props.channel, message = props.message;
1170
- if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1171
- dispatcher({
1172
- type: actionTypes.SEND_MESSAGE_SUCCESS,
1173
- payload: message,
1174
- });
1175
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1176
- }
1177
- }));
1178
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, function (props) {
1179
- var channel = props.channel, message = props.message, publishingModules = props.publishingModules;
1180
- if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url) && pubSub_topics.shouldPubSubPublishToChannel(publishingModules)) {
1181
- dispatcher({
1182
- type: actionTypes.SEND_MESSAGE_START,
1183
- payload: message,
1184
- });
1185
- }
1186
- }));
1187
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.ON_FILE_INFO_UPLOADED, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.ON_FILE_INFO_UPLOADED, function (props) {
1188
- var response = props.response, publishingModules = props.publishingModules;
1189
- if (channelUrl === response.channelUrl && pubSub_topics.shouldPubSubPublishToChannel(publishingModules)) {
1190
- dispatcher({
1191
- type: actionTypes.ON_FILE_INFO_UPLOADED,
1192
- payload: response,
1193
- });
1194
- }
1195
- }));
1196
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_FAILED, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_FAILED, function (props) {
1197
- var channel = props.channel, message = props.message, publishingModules = props.publishingModules;
1198
- if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url) && pubSub_topics.shouldPubSubPublishToChannel(publishingModules)) {
1199
- dispatcher({
1200
- type: actionTypes.SEND_MESSAGE_FAILURE,
1201
- payload: message,
1202
- });
1203
- }
1204
- }));
1205
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, function (props) {
1206
- var channel = props.channel, message = props.message;
1207
- if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1208
- dispatcher({
1209
- type: actionTypes.SEND_MESSAGE_SUCCESS,
1210
- payload: message,
1211
- });
1212
- setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1213
- }
1214
- }));
1215
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, function (props) {
1216
- var channel = props.channel, message = props.message, fromSelector = props.fromSelector;
1217
- if (fromSelector && (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) && channel.isGroupChannel()) {
1218
- dispatcher({
1219
- type: actionTypes.ON_MESSAGE_UPDATED,
1220
- payload: { channel: channel, message: message },
1221
- });
1222
- }
1223
- }));
1224
- subscriber.set(pubSub_topics.PUBSUB_TOPICS.DELETE_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.DELETE_MESSAGE, function (props) {
1225
- var channel = props.channel, messageId = props.messageId;
1226
- if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1227
- dispatcher({
1228
- type: actionTypes.ON_MESSAGE_DELETED,
1229
- payload: messageId,
1230
- });
1231
- }
1232
- }));
1233
- }
1234
- return function () {
1235
- subscriber.forEach(function (s) {
1236
- try {
1237
- s.remove();
1238
- }
1239
- catch (_a) {
1240
- //
1241
- }
1242
- });
1243
- };
1244
- }, [
1245
- channelUrl,
1246
- sdkInit,
1247
- ]);
1162
+ var useHandleChannelPubsubEvents = function (_a) {
1163
+ var channelUrl = _a.channelUrl, sdkInit = _a.sdkInit, pubSub = _a.pubSub, dispatcher = _a.dispatcher, scrollRef = _a.scrollRef;
1164
+ React.useEffect(function () {
1165
+ var subscriber = new Map();
1166
+ if (pubSub === null || pubSub === void 0 ? void 0 : pubSub.subscribe) {
1167
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_USER_MESSAGE, function (props) {
1168
+ var channel = props.channel, message = props.message;
1169
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1170
+ dispatcher({
1171
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
1172
+ payload: message,
1173
+ });
1174
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1175
+ }
1176
+ }));
1177
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_START, function (props) {
1178
+ var channel = props.channel, message = props.message, publishingModules = props.publishingModules;
1179
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url) && pubSub_topics.shouldPubSubPublishToChannel(publishingModules)) {
1180
+ dispatcher({
1181
+ type: actionTypes.SEND_MESSAGE_START,
1182
+ payload: message,
1183
+ });
1184
+ }
1185
+ }));
1186
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.ON_FILE_INFO_UPLOADED, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.ON_FILE_INFO_UPLOADED, function (props) {
1187
+ var response = props.response, publishingModules = props.publishingModules;
1188
+ if (channelUrl === response.channelUrl && pubSub_topics.shouldPubSubPublishToChannel(publishingModules)) {
1189
+ dispatcher({
1190
+ type: actionTypes.ON_FILE_INFO_UPLOADED,
1191
+ payload: response,
1192
+ });
1193
+ }
1194
+ }));
1195
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_FAILED, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_MESSAGE_FAILED, function (props) {
1196
+ var channel = props.channel, message = props.message, publishingModules = props.publishingModules;
1197
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url) && pubSub_topics.shouldPubSubPublishToChannel(publishingModules)) {
1198
+ dispatcher({
1199
+ type: actionTypes.SEND_MESSAGE_FAILURE,
1200
+ payload: message,
1201
+ });
1202
+ }
1203
+ }));
1204
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.SEND_FILE_MESSAGE, function (props) {
1205
+ var channel = props.channel, message = props.message;
1206
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1207
+ dispatcher({
1208
+ type: actionTypes.SEND_MESSAGE_SUCCESS,
1209
+ payload: message,
1210
+ });
1211
+ setTimeout(function () { return utils.scrollIntoLast(0, scrollRef); }, consts.SCROLL_BOTTOM_DELAY_FOR_SEND);
1212
+ }
1213
+ }));
1214
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.UPDATE_USER_MESSAGE, function (props) {
1215
+ var channel = props.channel, message = props.message, fromSelector = props.fromSelector;
1216
+ if (fromSelector && (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) && channel.isGroupChannel()) {
1217
+ dispatcher({
1218
+ type: actionTypes.ON_MESSAGE_UPDATED,
1219
+ payload: { channel: channel, message: message },
1220
+ });
1221
+ }
1222
+ }));
1223
+ subscriber.set(pubSub_topics.PUBSUB_TOPICS.DELETE_MESSAGE, pubSub.subscribe(pubSub_topics.PUBSUB_TOPICS.DELETE_MESSAGE, function (props) {
1224
+ var channel = props.channel, messageId = props.messageId;
1225
+ if (channelUrl === (channel === null || channel === void 0 ? void 0 : channel.url)) {
1226
+ dispatcher({
1227
+ type: actionTypes.ON_MESSAGE_DELETED,
1228
+ payload: messageId,
1229
+ });
1230
+ }
1231
+ }));
1232
+ }
1233
+ return function () {
1234
+ subscriber.forEach(function (s) {
1235
+ try {
1236
+ s.remove();
1237
+ }
1238
+ catch (_a) {
1239
+ //
1240
+ }
1241
+ });
1242
+ };
1243
+ }, [
1244
+ channelUrl,
1245
+ sdkInit,
1246
+ ]);
1248
1247
  };
1249
1248
 
1250
- var ChannelContext = React.createContext(undefined);
1251
- var ChannelProvider = function (props) {
1252
- var _a, _b, _c, _d, _e, _f;
1253
- var channelUrl = props.channelUrl, children = props.children, isReactionEnabled = props.isReactionEnabled, _g = props.isMessageGroupingEnabled, isMessageGroupingEnabled = _g === void 0 ? true : _g, isMultipleFilesMessageEnabled = props.isMultipleFilesMessageEnabled, showSearchIcon = props.showSearchIcon, animatedMessage = props.animatedMessage, highlightedMessage = props.highlightedMessage, startingPoint = props.startingPoint, onBeforeSendUserMessage = props.onBeforeSendUserMessage, onBeforeSendFileMessage = props.onBeforeSendFileMessage, onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage, onBeforeSendVoiceMessage = props.onBeforeSendVoiceMessage, onBeforeSendMultipleFilesMessage = props.onBeforeSendMultipleFilesMessage, onChatHeaderActionClick = props.onChatHeaderActionClick, onSearchClick = props.onSearchClick, onBackClick = props.onBackClick, channelReplyType = props.replyType, threadReplySelectType = props.threadReplySelectType, queries = props.queries, filterMessageList = props.filterMessageList, _h = props.disableMarkAsRead, disableMarkAsRead = _h === void 0 ? false : _h, onReplyInThread = props.onReplyInThread, onQuoteMessageClick = props.onQuoteMessageClick, onMessageAnimated = props.onMessageAnimated, onMessageHighlighted = props.onMessageHighlighted, _j = props.scrollBehavior, scrollBehavior = _j === void 0 ? 'auto' : _j, _k = props.reconnectOnIdle, reconnectOnIdle = _k === void 0 ? true : _k;
1254
- var globalStore = useSendbirdStateContext.useSendbirdStateContext();
1255
- var config = globalStore.config;
1256
- var replyType = channelReplyType !== null && channelReplyType !== void 0 ? channelReplyType : config.replyType;
1257
- var pubSub = config.pubSub, logger = config.logger, userId = config.userId, isOnline = config.isOnline, imageCompression = config.imageCompression, isMentionEnabled = config.isMentionEnabled, onUserProfileMessage = config.onUserProfileMessage, markAsReadScheduler = config.markAsReadScheduler, groupChannel = config.groupChannel;
1258
- 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;
1259
- 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;
1260
- var globalConfigs = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config;
1261
- var _l = React.useState(startingPoint), initialTimeStamp = _l[0], setInitialTimeStamp = _l[1];
1262
- React.useEffect(function () {
1263
- setInitialTimeStamp(startingPoint);
1264
- }, [startingPoint, channelUrl]);
1265
- var _m = React.useState(null), animatedMessageId = _m[0], setAnimatedMessageId = _m[1];
1266
- var _o = React.useState(highlightedMessage), highLightedMessageId = _o[0], setHighLightedMessageId = _o[1];
1267
- React.useEffect(function () {
1268
- setHighLightedMessageId(highlightedMessage);
1269
- }, [highlightedMessage]);
1270
- var userFilledMessageListQuery = queries === null || queries === void 0 ? void 0 : queries.messageListParams;
1271
- var _p = React.useState(null), quoteMessage = _p[0], setQuoteMessage = _p[1];
1272
- var _q = React.useState(false), isScrolled = _q[0], setIsScrolled = _q[1];
1273
- var _r = React.useReducer(channelReducer, initialState), messagesStore = _r[0], messagesDispatcher = _r[1];
1274
- var scrollRef = React.useRef(null);
1275
- var allMessages = messagesStore.allMessages, localMessages = messagesStore.localMessages, loading = messagesStore.loading, initialized = messagesStore.initialized, unreadSince = messagesStore.unreadSince, unreadSinceDate = messagesStore.unreadSinceDate, isInvalid = messagesStore.isInvalid, currentGroupChannel = messagesStore.currentGroupChannel, hasMorePrev = messagesStore.hasMorePrev, oldestMessageTimeStamp = messagesStore.oldestMessageTimeStamp, hasMoreNext = messagesStore.hasMoreNext, latestMessageTimeStamp = messagesStore.latestMessageTimeStamp, emojiContainer = messagesStore.emojiContainer, readStatus = messagesStore.readStatus, typingMembers = messagesStore.typingMembers;
1276
- var usingReaction = getIsReactionEnabled.getIsReactionEnabled({
1277
- channel: currentGroupChannel,
1278
- config: config,
1279
- moduleLevel: isReactionEnabled,
1280
- });
1281
- var emojiAllMap = React.useMemo(function () { return (usingReaction
1282
- ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer)
1283
- : new Map()); }, [emojiContainer]);
1284
- var nicknamesMap = React.useMemo(function () { return ((usingReaction && currentGroupChannel)
1285
- ? utils.getNicknamesMapFromMembers(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members)
1286
- : new Map()); }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members]);
1287
- // Animate message
1288
- React.useEffect(function () {
1289
- if (animatedMessage) {
1290
- setAnimatedMessageId(animatedMessage);
1291
- }
1292
- }, [animatedMessage]);
1293
- // Scrollup is default scroll for channel
1294
- var onScrollCallback = useScrollCallback({
1295
- currentGroupChannel: currentGroupChannel,
1296
- oldestMessageTimeStamp: oldestMessageTimeStamp,
1297
- userFilledMessageListQuery: userFilledMessageListQuery,
1298
- replyType: replyType,
1299
- }, {
1300
- hasMorePrev: hasMorePrev,
1301
- logger: logger,
1302
- messagesDispatcher: messagesDispatcher,
1303
- sdk: sdk,
1304
- });
1305
- var scrollToMessage = useScrollToMessage({
1306
- setInitialTimeStamp: setInitialTimeStamp,
1307
- setAnimatedMessageId: setAnimatedMessageId,
1308
- allMessages: allMessages,
1309
- scrollRef: scrollRef,
1310
- }, { logger: logger });
1311
- // onScrollDownCallback is added for navigation to different timestamps on messageSearch
1312
- // hasMorePrev, onScrollCallback -> scroll up(default behavior)
1313
- // hasMoreNext, onScrollDownCallback -> scroll down
1314
- var onScrollDownCallback = useScrollDownCallback({
1315
- currentGroupChannel: currentGroupChannel,
1316
- latestMessageTimeStamp: latestMessageTimeStamp,
1317
- userFilledMessageListQuery: userFilledMessageListQuery,
1318
- hasMoreNext: hasMoreNext,
1319
- replyType: replyType,
1320
- }, {
1321
- logger: logger,
1322
- messagesDispatcher: messagesDispatcher,
1323
- sdk: sdk,
1324
- });
1325
- var toggleReaction = useToggleReactionCallback.useToggleReactionCallback(currentGroupChannel, logger);
1326
- // to create message-datasource
1327
- // this hook sets currentGroupChannel asynchronously
1328
- useGetChannel({ channelUrl: channelUrl, sdkInit: sdkInit, disableMarkAsRead: disableMarkAsRead }, { messagesDispatcher: messagesDispatcher, sdk: sdk, logger: logger, markAsReadScheduler: markAsReadScheduler });
1329
- // to set quote message as null
1330
- React.useEffect(function () {
1331
- setQuoteMessage(null);
1332
- }, [channelUrl]);
1333
- // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
1334
- useHandleChannelEvents({
1335
- currentGroupChannel: currentGroupChannel,
1336
- sdkInit: sdkInit,
1337
- currentUserId: userId,
1338
- disableMarkAsRead: disableMarkAsRead,
1339
- }, {
1340
- messagesDispatcher: messagesDispatcher,
1341
- sdk: sdk,
1342
- logger: logger,
1343
- scrollRef: scrollRef,
1344
- setQuoteMessage: setQuoteMessage,
1345
- });
1346
- // hook that fetches messages when channel changes
1347
- // to be clear here useGetChannel sets currentGroupChannel
1348
- // and useInitialMessagesFetch executes when currentGroupChannel changes
1349
- // p.s This one executes on initialTimeStamp change too
1350
- Channel_hooks_useInitialMessagesFetch.useInitialMessagesFetch({
1351
- currentGroupChannel: currentGroupChannel,
1352
- userFilledMessageListQuery: userFilledMessageListQuery,
1353
- initialTimeStamp: initialTimeStamp,
1354
- replyType: replyType,
1355
- setIsScrolled: setIsScrolled,
1356
- }, {
1357
- logger: logger,
1358
- scrollRef: scrollRef,
1359
- messagesDispatcher: messagesDispatcher,
1360
- });
1361
- // handles API calls from withSendbird
1362
- useHandleChannelPubsubEvents({
1363
- channelUrl: channelUrl,
1364
- sdkInit: sdkInit,
1365
- pubSub: pubSub,
1366
- dispatcher: messagesDispatcher,
1367
- scrollRef: scrollRef,
1368
- });
1369
- // handling connection breaks
1370
- useHandleReconnect({ isOnline: isOnline, replyType: replyType, disableMarkAsRead: disableMarkAsRead, reconnectOnIdle: reconnectOnIdle }, {
1371
- logger: logger,
1372
- sdk: sdk,
1373
- scrollRef: scrollRef,
1374
- currentGroupChannel: currentGroupChannel,
1375
- messagesDispatcher: messagesDispatcher,
1376
- userFilledMessageListQuery: userFilledMessageListQuery,
1377
- markAsReadScheduler: markAsReadScheduler,
1378
- });
1379
- // callbacks for Message CURD actions
1380
- var deleteMessage = useDeleteMessageCallback({ currentGroupChannel: currentGroupChannel, messagesDispatcher: messagesDispatcher }, { logger: logger });
1381
- var updateMessage = useUpdateMessageCallback({ currentGroupChannel: currentGroupChannel, messagesDispatcher: messagesDispatcher, onBeforeUpdateUserMessage: onBeforeUpdateUserMessage, isMentionEnabled: isMentionEnabled }, { logger: logger, pubSub: pubSub });
1382
- var resendMessage = useResendMessageCallback({ currentGroupChannel: currentGroupChannel, messagesDispatcher: messagesDispatcher }, { logger: logger, pubSub: pubSub });
1383
- var _s = useSendMessageCallback({
1384
- currentGroupChannel: currentGroupChannel,
1385
- isMentionEnabled: isMentionEnabled,
1386
- onBeforeSendUserMessage: onBeforeSendUserMessage,
1387
- }, {
1388
- logger: logger,
1389
- pubSub: pubSub,
1390
- scrollRef: scrollRef,
1391
- messagesDispatcher: messagesDispatcher,
1392
- }), messageInputRef = _s[0], sendMessage = _s[1];
1393
- var sendFileMessage = useSendFileMessageCallback({
1394
- currentGroupChannel: currentGroupChannel,
1395
- imageCompression: imageCompression,
1396
- onBeforeSendFileMessage: onBeforeSendFileMessage,
1397
- }, {
1398
- logger: logger,
1399
- pubSub: pubSub,
1400
- scrollRef: scrollRef,
1401
- messagesDispatcher: messagesDispatcher,
1402
- })[0];
1403
- var sendVoiceMessage = useSendVoiceMessageCallback({
1404
- currentGroupChannel: currentGroupChannel,
1405
- onBeforeSendVoiceMessage: onBeforeSendVoiceMessage,
1406
- }, {
1407
- logger: logger,
1408
- pubSub: pubSub,
1409
- scrollRef: scrollRef,
1410
- messagesDispatcher: messagesDispatcher,
1411
- })[0];
1412
- var sendMultipleFilesMessage = useSendMultipleFilesMessage.useSendMultipleFilesMessage({
1413
- currentChannel: currentGroupChannel,
1414
- onBeforeSendMultipleFilesMessage: onBeforeSendMultipleFilesMessage,
1415
- publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
1416
- }, {
1417
- logger: logger,
1418
- pubSub: pubSub,
1419
- scrollRef: scrollRef,
1420
- })[0];
1421
- return (React.createElement(ChannelContext.Provider, { value: {
1422
- // props
1423
- channelUrl: channelUrl,
1424
- isReactionEnabled: usingReaction,
1425
- isMessageGroupingEnabled: isMessageGroupingEnabled,
1426
- isMultipleFilesMessageEnabled: isMultipleFilesMessageEnabled,
1427
- showSearchIcon: showSearchIcon !== null && showSearchIcon !== void 0 ? showSearchIcon : globalConfigs.showSearchIcon,
1428
- highlightedMessage: highlightedMessage,
1429
- startingPoint: startingPoint,
1430
- onBeforeSendUserMessage: onBeforeSendUserMessage,
1431
- onBeforeSendFileMessage: onBeforeSendFileMessage,
1432
- onBeforeUpdateUserMessage: onBeforeUpdateUserMessage,
1433
- onChatHeaderActionClick: onChatHeaderActionClick,
1434
- onSearchClick: onSearchClick,
1435
- onBackClick: onBackClick,
1436
- replyType: replyType,
1437
- threadReplySelectType: (_e = threadReplySelectType !== null && threadReplySelectType !== void 0 ? threadReplySelectType : resolvedReplyType.getCaseResolvedThreadReplySelectType(groupChannel.threadReplySelectType).upperCase) !== null && _e !== void 0 ? _e : _const.ThreadReplySelectType.THREAD,
1438
- queries: queries,
1439
- filterMessageList: filterMessageList,
1440
- disableMarkAsRead: disableMarkAsRead,
1441
- onReplyInThread: onReplyInThread,
1442
- onQuoteMessageClick: onQuoteMessageClick,
1443
- onMessageAnimated: onMessageAnimated,
1444
- onMessageHighlighted: onMessageHighlighted,
1445
- // messagesStore
1446
- allMessages: allMessages,
1447
- localMessages: localMessages,
1448
- loading: loading,
1449
- initialized: initialized,
1450
- unreadSince: unreadSince,
1451
- unreadSinceDate: unreadSinceDate,
1452
- isInvalid: isInvalid,
1453
- currentGroupChannel: currentGroupChannel,
1454
- hasMorePrev: hasMorePrev,
1455
- hasMoreNext: hasMoreNext,
1456
- oldestMessageTimeStamp: oldestMessageTimeStamp,
1457
- latestMessageTimeStamp: latestMessageTimeStamp,
1458
- emojiContainer: emojiContainer,
1459
- readStatus: readStatus,
1460
- typingMembers: typingMembers,
1461
- // utils
1462
- scrollToMessage: scrollToMessage,
1463
- quoteMessage: quoteMessage,
1464
- setQuoteMessage: setQuoteMessage,
1465
- deleteMessage: deleteMessage,
1466
- updateMessage: updateMessage,
1467
- resendMessage: resendMessage,
1468
- messageInputRef: messageInputRef,
1469
- sendMessage: sendMessage,
1470
- sendFileMessage: sendFileMessage,
1471
- sendVoiceMessage: sendVoiceMessage,
1472
- sendMultipleFilesMessage: sendMultipleFilesMessage,
1473
- initialTimeStamp: initialTimeStamp,
1474
- messageActionTypes: actionTypes.channelActions,
1475
- messagesDispatcher: messagesDispatcher,
1476
- setInitialTimeStamp: setInitialTimeStamp,
1477
- setAnimatedMessageId: setAnimatedMessageId,
1478
- setHighLightedMessageId: setHighLightedMessageId,
1479
- animatedMessageId: animatedMessageId,
1480
- highLightedMessageId: highLightedMessageId,
1481
- nicknamesMap: nicknamesMap,
1482
- emojiAllMap: emojiAllMap,
1483
- onScrollCallback: onScrollCallback,
1484
- onScrollDownCallback: onScrollDownCallback,
1485
- scrollRef: scrollRef,
1486
- scrollBehavior: scrollBehavior,
1487
- toggleReaction: toggleReaction,
1488
- isScrolled: isScrolled,
1489
- setIsScrolled: setIsScrolled,
1490
- } },
1491
- React.createElement(UserProfileContext.UserProfileProvider, { disableUserProfile: (_f = props === null || props === void 0 ? void 0 : props.disableUserProfile) !== null && _f !== void 0 ? _f : config === null || config === void 0 ? void 0 : config.disableUserProfile, renderUserProfile: props === null || props === void 0 ? void 0 : props.renderUserProfile, onUserProfileMessage: onUserProfileMessage }, children)));
1492
- };
1249
+ var ChannelContext = React.createContext(undefined);
1250
+ var ChannelProvider = function (props) {
1251
+ var _a, _b, _c, _d, _e, _f, _g;
1252
+ var channelUrl = props.channelUrl, children = props.children, isReactionEnabled = props.isReactionEnabled, _h = props.isMessageGroupingEnabled, isMessageGroupingEnabled = _h === void 0 ? true : _h, isMultipleFilesMessageEnabled = props.isMultipleFilesMessageEnabled, showSearchIcon = props.showSearchIcon, animatedMessage = props.animatedMessage, highlightedMessage = props.highlightedMessage, startingPoint = props.startingPoint, onBeforeSendUserMessage = props.onBeforeSendUserMessage, onBeforeSendFileMessage = props.onBeforeSendFileMessage, onBeforeUpdateUserMessage = props.onBeforeUpdateUserMessage, onBeforeSendVoiceMessage = props.onBeforeSendVoiceMessage, onBeforeSendMultipleFilesMessage = props.onBeforeSendMultipleFilesMessage, onChatHeaderActionClick = props.onChatHeaderActionClick, onSearchClick = props.onSearchClick, onBackClick = props.onBackClick, threadReplySelectType = props.threadReplySelectType, queries = props.queries, filterMessageList = props.filterMessageList, _j = props.disableMarkAsRead, disableMarkAsRead = _j === void 0 ? false : _j, onReplyInThread = props.onReplyInThread, onQuoteMessageClick = props.onQuoteMessageClick, onMessageAnimated = props.onMessageAnimated, onMessageHighlighted = props.onMessageHighlighted, _k = props.scrollBehavior, scrollBehavior = _k === void 0 ? 'auto' : _k, _l = props.reconnectOnIdle, reconnectOnIdle = _l === void 0 ? true : _l;
1253
+ var globalStore = useSendbirdStateContext.useSendbirdStateContext();
1254
+ var config = globalStore.config;
1255
+ var replyType = (_a = props.replyType) !== null && _a !== void 0 ? _a : resolvedReplyType.getCaseResolvedReplyType(config.groupChannel.replyType).upperCase;
1256
+ var pubSub = config.pubSub, logger = config.logger, userId = config.userId, isOnline = config.isOnline, imageCompression = config.imageCompression, onUserProfileMessage = config.onUserProfileMessage, markAsReadScheduler = config.markAsReadScheduler, groupChannel = config.groupChannel;
1257
+ var sdk = (_c = (_b = globalStore === null || globalStore === void 0 ? void 0 : globalStore.stores) === null || _b === void 0 ? void 0 : _b.sdkStore) === null || _c === void 0 ? void 0 : _c.sdk;
1258
+ var sdkInit = (_e = (_d = globalStore === null || globalStore === void 0 ? void 0 : globalStore.stores) === null || _d === void 0 ? void 0 : _d.sdkStore) === null || _e === void 0 ? void 0 : _e.initialized;
1259
+ var globalConfigs = globalStore === null || globalStore === void 0 ? void 0 : globalStore.config;
1260
+ var _m = React.useState(startingPoint), initialTimeStamp = _m[0], setInitialTimeStamp = _m[1];
1261
+ React.useEffect(function () {
1262
+ setInitialTimeStamp(startingPoint);
1263
+ }, [startingPoint, channelUrl]);
1264
+ var _o = React.useState(null), animatedMessageId = _o[0], setAnimatedMessageId = _o[1];
1265
+ var _p = React.useState(highlightedMessage), highLightedMessageId = _p[0], setHighLightedMessageId = _p[1];
1266
+ React.useEffect(function () {
1267
+ setHighLightedMessageId(highlightedMessage);
1268
+ }, [highlightedMessage]);
1269
+ var userFilledMessageListQuery = queries === null || queries === void 0 ? void 0 : queries.messageListParams;
1270
+ var _q = React.useState(null), quoteMessage = _q[0], setQuoteMessage = _q[1];
1271
+ var _r = React.useState(false), isScrolled = _r[0], setIsScrolled = _r[1];
1272
+ var _s = React.useReducer(channelReducer, initialState), messagesStore = _s[0], messagesDispatcher = _s[1];
1273
+ var scrollRef = React.useRef(null);
1274
+ var isMentionEnabled = groupChannel.enableMention;
1275
+ var allMessages = messagesStore.allMessages, localMessages = messagesStore.localMessages, loading = messagesStore.loading, initialized = messagesStore.initialized, unreadSince = messagesStore.unreadSince, unreadSinceDate = messagesStore.unreadSinceDate, isInvalid = messagesStore.isInvalid, currentGroupChannel = messagesStore.currentGroupChannel, hasMorePrev = messagesStore.hasMorePrev, oldestMessageTimeStamp = messagesStore.oldestMessageTimeStamp, hasMoreNext = messagesStore.hasMoreNext, latestMessageTimeStamp = messagesStore.latestMessageTimeStamp, emojiContainer = messagesStore.emojiContainer, readStatus = messagesStore.readStatus, typingMembers = messagesStore.typingMembers;
1276
+ var usingReaction = getIsReactionEnabled.getIsReactionEnabled({
1277
+ channel: currentGroupChannel,
1278
+ config: config,
1279
+ moduleLevel: isReactionEnabled,
1280
+ });
1281
+ var emojiAllMap = React.useMemo(function () { return (usingReaction
1282
+ ? utils.getAllEmojisMapFromEmojiContainer(emojiContainer)
1283
+ : new Map()); }, [emojiContainer]);
1284
+ var nicknamesMap = React.useMemo(function () { return ((usingReaction && currentGroupChannel)
1285
+ ? utils.getNicknamesMapFromMembers(currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members)
1286
+ : new Map()); }, [currentGroupChannel === null || currentGroupChannel === void 0 ? void 0 : currentGroupChannel.members]);
1287
+ // Animate message
1288
+ React.useEffect(function () {
1289
+ if (animatedMessage) {
1290
+ setAnimatedMessageId(animatedMessage);
1291
+ }
1292
+ }, [animatedMessage]);
1293
+ // Scrollup is default scroll for channel
1294
+ var onScrollCallback = useScrollCallback({
1295
+ currentGroupChannel: currentGroupChannel,
1296
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
1297
+ userFilledMessageListQuery: userFilledMessageListQuery,
1298
+ replyType: replyType,
1299
+ }, {
1300
+ hasMorePrev: hasMorePrev,
1301
+ logger: logger,
1302
+ messagesDispatcher: messagesDispatcher,
1303
+ sdk: sdk,
1304
+ });
1305
+ var scrollToMessage = useScrollToMessage({
1306
+ setInitialTimeStamp: setInitialTimeStamp,
1307
+ setAnimatedMessageId: setAnimatedMessageId,
1308
+ allMessages: allMessages,
1309
+ scrollRef: scrollRef,
1310
+ }, { logger: logger });
1311
+ // onScrollDownCallback is added for navigation to different timestamps on messageSearch
1312
+ // hasMorePrev, onScrollCallback -> scroll up(default behavior)
1313
+ // hasMoreNext, onScrollDownCallback -> scroll down
1314
+ var onScrollDownCallback = useScrollDownCallback({
1315
+ currentGroupChannel: currentGroupChannel,
1316
+ latestMessageTimeStamp: latestMessageTimeStamp,
1317
+ userFilledMessageListQuery: userFilledMessageListQuery,
1318
+ hasMoreNext: hasMoreNext,
1319
+ replyType: replyType,
1320
+ }, {
1321
+ logger: logger,
1322
+ messagesDispatcher: messagesDispatcher,
1323
+ sdk: sdk,
1324
+ });
1325
+ var toggleReaction = useToggleReactionCallback.useToggleReactionCallback(currentGroupChannel, logger);
1326
+ // to create message-datasource
1327
+ // this hook sets currentGroupChannel asynchronously
1328
+ useGetChannel({ channelUrl: channelUrl, sdkInit: sdkInit, disableMarkAsRead: disableMarkAsRead }, { messagesDispatcher: messagesDispatcher, sdk: sdk, logger: logger, markAsReadScheduler: markAsReadScheduler });
1329
+ // to set quote message as null
1330
+ React.useEffect(function () {
1331
+ setQuoteMessage(null);
1332
+ }, [channelUrl]);
1333
+ // Hook to handle ChannelEvents and send values to useReducer using messagesDispatcher
1334
+ useHandleChannelEvents({
1335
+ currentGroupChannel: currentGroupChannel,
1336
+ sdkInit: sdkInit,
1337
+ currentUserId: userId,
1338
+ disableMarkAsRead: disableMarkAsRead,
1339
+ }, {
1340
+ messagesDispatcher: messagesDispatcher,
1341
+ sdk: sdk,
1342
+ logger: logger,
1343
+ scrollRef: scrollRef,
1344
+ setQuoteMessage: setQuoteMessage,
1345
+ });
1346
+ // hook that fetches messages when channel changes
1347
+ // to be clear here useGetChannel sets currentGroupChannel
1348
+ // and useInitialMessagesFetch executes when currentGroupChannel changes
1349
+ // p.s This one executes on initialTimeStamp change too
1350
+ Channel_hooks_useInitialMessagesFetch.useInitialMessagesFetch({
1351
+ currentGroupChannel: currentGroupChannel,
1352
+ userFilledMessageListQuery: userFilledMessageListQuery,
1353
+ initialTimeStamp: initialTimeStamp,
1354
+ replyType: replyType,
1355
+ setIsScrolled: setIsScrolled,
1356
+ }, {
1357
+ logger: logger,
1358
+ scrollRef: scrollRef,
1359
+ messagesDispatcher: messagesDispatcher,
1360
+ });
1361
+ // handles API calls from withSendbird
1362
+ useHandleChannelPubsubEvents({
1363
+ channelUrl: channelUrl,
1364
+ sdkInit: sdkInit,
1365
+ pubSub: pubSub,
1366
+ dispatcher: messagesDispatcher,
1367
+ scrollRef: scrollRef,
1368
+ });
1369
+ // handling connection breaks
1370
+ useHandleReconnect({ isOnline: isOnline, replyType: replyType, disableMarkAsRead: disableMarkAsRead, reconnectOnIdle: reconnectOnIdle }, {
1371
+ logger: logger,
1372
+ sdk: sdk,
1373
+ scrollRef: scrollRef,
1374
+ currentGroupChannel: currentGroupChannel,
1375
+ messagesDispatcher: messagesDispatcher,
1376
+ userFilledMessageListQuery: userFilledMessageListQuery,
1377
+ markAsReadScheduler: markAsReadScheduler,
1378
+ });
1379
+ // callbacks for Message CURD actions
1380
+ var deleteMessage = useDeleteMessageCallback({ currentGroupChannel: currentGroupChannel, messagesDispatcher: messagesDispatcher }, { logger: logger });
1381
+ var updateMessage = useUpdateMessageCallback({ currentGroupChannel: currentGroupChannel, messagesDispatcher: messagesDispatcher, onBeforeUpdateUserMessage: onBeforeUpdateUserMessage, isMentionEnabled: isMentionEnabled }, { logger: logger, pubSub: pubSub });
1382
+ var resendMessage = useResendMessageCallback({ currentGroupChannel: currentGroupChannel, messagesDispatcher: messagesDispatcher }, { logger: logger, pubSub: pubSub });
1383
+ var _t = useSendMessageCallback({
1384
+ currentGroupChannel: currentGroupChannel,
1385
+ isMentionEnabled: isMentionEnabled,
1386
+ onBeforeSendUserMessage: onBeforeSendUserMessage,
1387
+ }, {
1388
+ logger: logger,
1389
+ pubSub: pubSub,
1390
+ scrollRef: scrollRef,
1391
+ messagesDispatcher: messagesDispatcher,
1392
+ }), messageInputRef = _t[0], sendMessage = _t[1];
1393
+ var sendFileMessage = useSendFileMessageCallback({
1394
+ currentGroupChannel: currentGroupChannel,
1395
+ imageCompression: imageCompression,
1396
+ onBeforeSendFileMessage: onBeforeSendFileMessage,
1397
+ }, {
1398
+ logger: logger,
1399
+ pubSub: pubSub,
1400
+ scrollRef: scrollRef,
1401
+ messagesDispatcher: messagesDispatcher,
1402
+ })[0];
1403
+ var sendVoiceMessage = useSendVoiceMessageCallback({
1404
+ currentGroupChannel: currentGroupChannel,
1405
+ onBeforeSendVoiceMessage: onBeforeSendVoiceMessage,
1406
+ }, {
1407
+ logger: logger,
1408
+ pubSub: pubSub,
1409
+ scrollRef: scrollRef,
1410
+ messagesDispatcher: messagesDispatcher,
1411
+ })[0];
1412
+ var sendMultipleFilesMessage = useSendMultipleFilesMessage.useSendMultipleFilesMessage({
1413
+ currentChannel: currentGroupChannel,
1414
+ onBeforeSendMultipleFilesMessage: onBeforeSendMultipleFilesMessage,
1415
+ publishingModules: [pubSub_topics.PublishingModuleType.CHANNEL],
1416
+ }, {
1417
+ logger: logger,
1418
+ pubSub: pubSub,
1419
+ scrollRef: scrollRef,
1420
+ })[0];
1421
+ return (React.createElement(ChannelContext.Provider, { value: {
1422
+ // props
1423
+ channelUrl: channelUrl,
1424
+ isReactionEnabled: usingReaction,
1425
+ isMessageGroupingEnabled: isMessageGroupingEnabled,
1426
+ isMultipleFilesMessageEnabled: isMultipleFilesMessageEnabled,
1427
+ showSearchIcon: showSearchIcon !== null && showSearchIcon !== void 0 ? showSearchIcon : globalConfigs.groupChannelSettings.enableMessageSearch,
1428
+ highlightedMessage: highlightedMessage,
1429
+ startingPoint: startingPoint,
1430
+ onBeforeSendUserMessage: onBeforeSendUserMessage,
1431
+ onBeforeSendFileMessage: onBeforeSendFileMessage,
1432
+ onBeforeUpdateUserMessage: onBeforeUpdateUserMessage,
1433
+ onChatHeaderActionClick: onChatHeaderActionClick,
1434
+ onSearchClick: onSearchClick,
1435
+ onBackClick: onBackClick,
1436
+ replyType: replyType,
1437
+ threadReplySelectType: (_f = threadReplySelectType !== null && threadReplySelectType !== void 0 ? threadReplySelectType : resolvedReplyType.getCaseResolvedThreadReplySelectType(groupChannel.threadReplySelectType).upperCase) !== null && _f !== void 0 ? _f : _const.ThreadReplySelectType.THREAD,
1438
+ queries: queries,
1439
+ filterMessageList: filterMessageList,
1440
+ disableMarkAsRead: disableMarkAsRead,
1441
+ onReplyInThread: onReplyInThread,
1442
+ onQuoteMessageClick: onQuoteMessageClick,
1443
+ onMessageAnimated: onMessageAnimated,
1444
+ onMessageHighlighted: onMessageHighlighted,
1445
+ // messagesStore
1446
+ allMessages: allMessages,
1447
+ localMessages: localMessages,
1448
+ loading: loading,
1449
+ initialized: initialized,
1450
+ unreadSince: unreadSince,
1451
+ unreadSinceDate: unreadSinceDate,
1452
+ isInvalid: isInvalid,
1453
+ currentGroupChannel: currentGroupChannel,
1454
+ hasMorePrev: hasMorePrev,
1455
+ hasMoreNext: hasMoreNext,
1456
+ oldestMessageTimeStamp: oldestMessageTimeStamp,
1457
+ latestMessageTimeStamp: latestMessageTimeStamp,
1458
+ emojiContainer: emojiContainer,
1459
+ readStatus: readStatus,
1460
+ typingMembers: typingMembers,
1461
+ // utils
1462
+ scrollToMessage: scrollToMessage,
1463
+ quoteMessage: quoteMessage,
1464
+ setQuoteMessage: setQuoteMessage,
1465
+ deleteMessage: deleteMessage,
1466
+ updateMessage: updateMessage,
1467
+ resendMessage: resendMessage,
1468
+ messageInputRef: messageInputRef,
1469
+ sendMessage: sendMessage,
1470
+ sendFileMessage: sendFileMessage,
1471
+ sendVoiceMessage: sendVoiceMessage,
1472
+ sendMultipleFilesMessage: sendMultipleFilesMessage,
1473
+ initialTimeStamp: initialTimeStamp,
1474
+ messageActionTypes: actionTypes.channelActions,
1475
+ messagesDispatcher: messagesDispatcher,
1476
+ setInitialTimeStamp: setInitialTimeStamp,
1477
+ setAnimatedMessageId: setAnimatedMessageId,
1478
+ setHighLightedMessageId: setHighLightedMessageId,
1479
+ animatedMessageId: animatedMessageId,
1480
+ highLightedMessageId: highLightedMessageId,
1481
+ nicknamesMap: nicknamesMap,
1482
+ emojiAllMap: emojiAllMap,
1483
+ onScrollCallback: onScrollCallback,
1484
+ onScrollDownCallback: onScrollDownCallback,
1485
+ scrollRef: scrollRef,
1486
+ scrollBehavior: scrollBehavior,
1487
+ toggleReaction: toggleReaction,
1488
+ isScrolled: isScrolled,
1489
+ setIsScrolled: setIsScrolled,
1490
+ } },
1491
+ React.createElement(UserProfileContext.UserProfileProvider, { disableUserProfile: (_g = props === null || props === void 0 ? void 0 : props.disableUserProfile) !== null && _g !== void 0 ? _g : !config.common.enableUsingDefaultUserProfile, renderUserProfile: props === null || props === void 0 ? void 0 : props.renderUserProfile, onUserProfileMessage: onUserProfileMessage }, children)));
1492
+ };
1493
1493
  var useChannelContext = function () { return React.useContext(ChannelContext); };
1494
1494
 
1495
1495
  exports.ChannelProvider = ChannelProvider;