stream-chat-react-native-core 6.0.0-rc.9 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js +53 -0
  3. package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -0
  4. package/lib/commonjs/components/AITypingIndicatorView/hooks/useAIState.js +59 -0
  5. package/lib/commonjs/components/AITypingIndicatorView/hooks/useAIState.js.map +1 -0
  6. package/lib/commonjs/components/AITypingIndicatorView/index.js +26 -0
  7. package/lib/commonjs/components/AITypingIndicatorView/index.js.map +1 -0
  8. package/lib/commonjs/components/Attachment/AudioAttachment.js +27 -22
  9. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  10. package/lib/commonjs/components/Attachment/Gallery.js +3 -1
  11. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  12. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +2 -2
  13. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  14. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +37 -133
  15. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  16. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +6 -4
  17. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  18. package/lib/commonjs/components/Channel/Channel.js +478 -1045
  19. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  20. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js +174 -0
  21. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -0
  22. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  23. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  24. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +4 -0
  25. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  26. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +3 -3
  27. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  28. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +324 -0
  29. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -0
  30. package/lib/commonjs/components/ChannelList/Skeleton.js +7 -3
  31. package/lib/commonjs/components/ChannelList/Skeleton.js.map +1 -1
  32. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +85 -45
  33. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  34. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +17 -91
  35. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  36. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +3 -24
  37. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  38. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +2 -2
  39. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
  40. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewData.js +121 -0
  41. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewData.js.map +1 -0
  42. package/lib/commonjs/components/ChannelPreview/hooks/useIsChannelMuted.js +35 -0
  43. package/lib/commonjs/components/ChannelPreview/hooks/useIsChannelMuted.js.map +1 -0
  44. package/lib/commonjs/components/Chat/Chat.js +5 -1
  45. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  46. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +15 -9
  47. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
  48. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -0
  49. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  50. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +0 -4
  51. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  52. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  53. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +46 -46
  54. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  55. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +3 -4
  56. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  57. package/lib/commonjs/components/ImageGallery/hooks/useAnimatedGalleryStyle.js +2 -2
  58. package/lib/commonjs/components/ImageGallery/hooks/useAnimatedGalleryStyle.js.map +1 -1
  59. package/lib/commonjs/components/Message/Message.js +7 -0
  60. package/lib/commonjs/components/Message/Message.js.map +1 -1
  61. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +17 -4
  62. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  63. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +15 -6
  64. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  65. package/lib/commonjs/components/Message/MessageSimple/StreamingMessageView.js +36 -0
  66. package/lib/commonjs/components/Message/MessageSimple/StreamingMessageView.js.map +1 -0
  67. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js +9 -1
  68. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  69. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +209 -23
  70. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  71. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +2 -0
  72. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  73. package/lib/commonjs/components/Message/hooks/useStreamingMessage.js +43 -0
  74. package/lib/commonjs/components/Message/hooks/useStreamingMessage.js.map +1 -0
  75. package/lib/commonjs/components/MessageInput/MessageInput.js +41 -21
  76. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  77. package/lib/commonjs/components/MessageInput/StopMessageStreamingButton.js +39 -0
  78. package/lib/commonjs/components/MessageInput/StopMessageStreamingButton.js.map +1 -0
  79. package/lib/commonjs/components/MessageList/MessageList.js +74 -73
  80. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  81. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  82. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
  83. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  84. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
  85. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +1 -1
  86. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -1
  87. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  88. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  89. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js +3 -2
  90. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  91. package/lib/commonjs/components/Poll/CreatePollContent.js +14 -9
  92. package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
  93. package/lib/commonjs/components/Poll/Poll.js +2 -8
  94. package/lib/commonjs/components/Poll/Poll.js.map +1 -1
  95. package/lib/commonjs/components/Poll/components/Button.js +9 -474
  96. package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
  97. package/lib/commonjs/components/Poll/components/CreatePollIcon.js +2 -2
  98. package/lib/commonjs/components/Poll/components/CreatePollIcon.js.map +1 -1
  99. package/lib/commonjs/components/Poll/components/CreatePollOptions.js +9 -4
  100. package/lib/commonjs/components/Poll/components/CreatePollOptions.js.map +1 -1
  101. package/lib/commonjs/components/Poll/components/PollAnswersList.js +99 -26
  102. package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
  103. package/lib/commonjs/components/Poll/components/PollButtons.js +291 -0
  104. package/lib/commonjs/components/Poll/components/PollButtons.js.map +1 -0
  105. package/lib/commonjs/components/Poll/components/PollInputDialog.js +14 -4
  106. package/lib/commonjs/components/Poll/components/PollInputDialog.js.map +1 -1
  107. package/lib/commonjs/components/Poll/components/PollModalHeader.js +7 -1
  108. package/lib/commonjs/components/Poll/components/PollModalHeader.js.map +1 -1
  109. package/lib/commonjs/components/Poll/components/PollOption.js +88 -6
  110. package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
  111. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +2 -2
  112. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  113. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js +62 -67
  114. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  115. package/lib/commonjs/components/Poll/components/PollResults/PollVote.js +89 -0
  116. package/lib/commonjs/components/Poll/components/PollResults/PollVote.js.map +1 -0
  117. package/lib/commonjs/components/Poll/components/index.js +11 -0
  118. package/lib/commonjs/components/Poll/components/index.js.map +1 -1
  119. package/lib/commonjs/components/ThreadList/ThreadList.js +0 -3
  120. package/lib/commonjs/components/ThreadList/ThreadList.js.map +1 -1
  121. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +11 -5
  122. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
  123. package/lib/commonjs/components/index.js +66 -0
  124. package/lib/commonjs/components/index.js.map +1 -1
  125. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  126. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +0 -35
  127. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  128. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +7 -84
  129. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  130. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  131. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  132. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +4 -2
  133. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  134. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -0
  135. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  136. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  137. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  138. package/lib/commonjs/contexts/themeContext/utils/theme.js +15 -0
  139. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  140. package/lib/commonjs/i18n/en.json +2 -0
  141. package/lib/commonjs/i18n/es.json +2 -0
  142. package/lib/commonjs/i18n/fr.json +2 -0
  143. package/lib/commonjs/i18n/he.json +2 -0
  144. package/lib/commonjs/i18n/hi.json +2 -0
  145. package/lib/commonjs/i18n/it.json +2 -0
  146. package/lib/commonjs/i18n/ja.json +2 -0
  147. package/lib/commonjs/i18n/ko.json +2 -0
  148. package/lib/commonjs/i18n/nl.json +2 -0
  149. package/lib/commonjs/i18n/pt-br.json +2 -0
  150. package/lib/commonjs/i18n/ru.json +2 -0
  151. package/lib/commonjs/i18n/tr.json +2 -0
  152. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js +14 -0
  153. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -0
  154. package/lib/commonjs/mock-builders/event/notificationMarkRead.js +14 -0
  155. package/lib/commonjs/mock-builders/event/notificationMarkRead.js.map +1 -0
  156. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js +17 -0
  157. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js.map +1 -0
  158. package/lib/commonjs/mock-builders/generator/channel.js +1 -0
  159. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  160. package/lib/commonjs/store/SqliteClient.js +11 -2
  161. package/lib/commonjs/store/SqliteClient.js.map +1 -1
  162. package/lib/commonjs/utils/getTrimmedAttachmentTitle.js +8 -2
  163. package/lib/commonjs/utils/getTrimmedAttachmentTitle.js.map +1 -1
  164. package/lib/commonjs/utils/utils.js +3 -2
  165. package/lib/commonjs/utils/utils.js.map +1 -1
  166. package/lib/commonjs/version.json +1 -1
  167. package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js +53 -0
  168. package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -0
  169. package/lib/module/components/AITypingIndicatorView/hooks/useAIState.js +59 -0
  170. package/lib/module/components/AITypingIndicatorView/hooks/useAIState.js.map +1 -0
  171. package/lib/module/components/AITypingIndicatorView/index.js +26 -0
  172. package/lib/module/components/AITypingIndicatorView/index.js.map +1 -0
  173. package/lib/module/components/Attachment/AudioAttachment.js +27 -22
  174. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  175. package/lib/module/components/Attachment/Gallery.js +3 -1
  176. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  177. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +2 -2
  178. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  179. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +37 -133
  180. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  181. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +6 -4
  182. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  183. package/lib/module/components/Channel/Channel.js +478 -1045
  184. package/lib/module/components/Channel/Channel.js.map +1 -1
  185. package/lib/module/components/Channel/hooks/useChannelDataState.js +174 -0
  186. package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -0
  187. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  188. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  189. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +4 -0
  190. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  191. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +3 -3
  192. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  193. package/lib/module/components/Channel/hooks/useMessageListPagination.js +324 -0
  194. package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -0
  195. package/lib/module/components/ChannelList/Skeleton.js +7 -3
  196. package/lib/module/components/ChannelList/Skeleton.js.map +1 -1
  197. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +85 -45
  198. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  199. package/lib/module/components/ChannelPreview/ChannelPreview.js +17 -91
  200. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  201. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +3 -24
  202. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  203. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +2 -2
  204. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
  205. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewData.js +121 -0
  206. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewData.js.map +1 -0
  207. package/lib/module/components/ChannelPreview/hooks/useIsChannelMuted.js +35 -0
  208. package/lib/module/components/ChannelPreview/hooks/useIsChannelMuted.js.map +1 -0
  209. package/lib/module/components/Chat/Chat.js +5 -1
  210. package/lib/module/components/Chat/Chat.js.map +1 -1
  211. package/lib/module/components/Chat/hooks/useAppSettings.js +15 -9
  212. package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
  213. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -0
  214. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  215. package/lib/module/components/Chat/hooks/useIsOnline.js +0 -4
  216. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  217. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  218. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +46 -46
  219. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  220. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +3 -4
  221. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  222. package/lib/module/components/ImageGallery/hooks/useAnimatedGalleryStyle.js +2 -2
  223. package/lib/module/components/ImageGallery/hooks/useAnimatedGalleryStyle.js.map +1 -1
  224. package/lib/module/components/Message/Message.js +7 -0
  225. package/lib/module/components/Message/Message.js.map +1 -1
  226. package/lib/module/components/Message/MessageSimple/MessageContent.js +17 -4
  227. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  228. package/lib/module/components/Message/MessageSimple/MessageFooter.js +15 -6
  229. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  230. package/lib/module/components/Message/MessageSimple/StreamingMessageView.js +36 -0
  231. package/lib/module/components/Message/MessageSimple/StreamingMessageView.js.map +1 -0
  232. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +9 -1
  233. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  234. package/lib/module/components/Message/MessageSimple/utils/renderText.js +209 -23
  235. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  236. package/lib/module/components/Message/hooks/useCreateMessageContext.js +2 -0
  237. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  238. package/lib/module/components/Message/hooks/useStreamingMessage.js +43 -0
  239. package/lib/module/components/Message/hooks/useStreamingMessage.js.map +1 -0
  240. package/lib/module/components/MessageInput/MessageInput.js +41 -21
  241. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  242. package/lib/module/components/MessageInput/StopMessageStreamingButton.js +39 -0
  243. package/lib/module/components/MessageInput/StopMessageStreamingButton.js.map +1 -0
  244. package/lib/module/components/MessageList/MessageList.js +74 -73
  245. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  246. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  247. package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
  248. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  249. package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
  250. package/lib/module/components/MessageMenu/MessageUserReactions.js +1 -1
  251. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -1
  252. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  253. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  254. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js +3 -2
  255. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  256. package/lib/module/components/Poll/CreatePollContent.js +14 -9
  257. package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
  258. package/lib/module/components/Poll/Poll.js +2 -8
  259. package/lib/module/components/Poll/Poll.js.map +1 -1
  260. package/lib/module/components/Poll/components/Button.js +9 -474
  261. package/lib/module/components/Poll/components/Button.js.map +1 -1
  262. package/lib/module/components/Poll/components/CreatePollIcon.js +2 -2
  263. package/lib/module/components/Poll/components/CreatePollIcon.js.map +1 -1
  264. package/lib/module/components/Poll/components/CreatePollOptions.js +9 -4
  265. package/lib/module/components/Poll/components/CreatePollOptions.js.map +1 -1
  266. package/lib/module/components/Poll/components/PollAnswersList.js +99 -26
  267. package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
  268. package/lib/module/components/Poll/components/PollButtons.js +291 -0
  269. package/lib/module/components/Poll/components/PollButtons.js.map +1 -0
  270. package/lib/module/components/Poll/components/PollInputDialog.js +14 -4
  271. package/lib/module/components/Poll/components/PollInputDialog.js.map +1 -1
  272. package/lib/module/components/Poll/components/PollModalHeader.js +7 -1
  273. package/lib/module/components/Poll/components/PollModalHeader.js.map +1 -1
  274. package/lib/module/components/Poll/components/PollOption.js +88 -6
  275. package/lib/module/components/Poll/components/PollOption.js.map +1 -1
  276. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +2 -2
  277. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  278. package/lib/module/components/Poll/components/PollResults/PollResultItem.js +62 -67
  279. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  280. package/lib/module/components/Poll/components/PollResults/PollVote.js +89 -0
  281. package/lib/module/components/Poll/components/PollResults/PollVote.js.map +1 -0
  282. package/lib/module/components/Poll/components/index.js +11 -0
  283. package/lib/module/components/Poll/components/index.js.map +1 -1
  284. package/lib/module/components/ThreadList/ThreadList.js +0 -3
  285. package/lib/module/components/ThreadList/ThreadList.js.map +1 -1
  286. package/lib/module/components/UIComponents/BottomSheetModal.js +11 -5
  287. package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
  288. package/lib/module/components/index.js +66 -0
  289. package/lib/module/components/index.js.map +1 -1
  290. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  291. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +0 -35
  292. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  293. package/lib/module/contexts/channelsStateContext/useChannelState.js +7 -84
  294. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  295. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  296. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  297. package/lib/module/contexts/messageInputContext/MessageInputContext.js +4 -2
  298. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  299. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -0
  300. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  301. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  302. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  303. package/lib/module/contexts/themeContext/utils/theme.js +15 -0
  304. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  305. package/lib/module/i18n/en.json +2 -0
  306. package/lib/module/i18n/es.json +2 -0
  307. package/lib/module/i18n/fr.json +2 -0
  308. package/lib/module/i18n/he.json +2 -0
  309. package/lib/module/i18n/hi.json +2 -0
  310. package/lib/module/i18n/it.json +2 -0
  311. package/lib/module/i18n/ja.json +2 -0
  312. package/lib/module/i18n/ko.json +2 -0
  313. package/lib/module/i18n/nl.json +2 -0
  314. package/lib/module/i18n/pt-br.json +2 -0
  315. package/lib/module/i18n/ru.json +2 -0
  316. package/lib/module/i18n/tr.json +2 -0
  317. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js +14 -0
  318. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -0
  319. package/lib/module/mock-builders/event/notificationMarkRead.js +14 -0
  320. package/lib/module/mock-builders/event/notificationMarkRead.js.map +1 -0
  321. package/lib/module/mock-builders/event/notificationMarkUnread.js +17 -0
  322. package/lib/module/mock-builders/event/notificationMarkUnread.js.map +1 -0
  323. package/lib/module/mock-builders/generator/channel.js +1 -0
  324. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  325. package/lib/module/store/SqliteClient.js +11 -2
  326. package/lib/module/store/SqliteClient.js.map +1 -1
  327. package/lib/module/utils/getTrimmedAttachmentTitle.js +8 -2
  328. package/lib/module/utils/getTrimmedAttachmentTitle.js.map +1 -1
  329. package/lib/module/utils/utils.js +3 -2
  330. package/lib/module/utils/utils.js.map +1 -1
  331. package/lib/module/version.json +1 -1
  332. package/lib/typescript/components/AITypingIndicatorView/AITypingIndicatorView.d.ts +11 -0
  333. package/lib/typescript/components/AITypingIndicatorView/AITypingIndicatorView.d.ts.map +1 -0
  334. package/lib/typescript/components/AITypingIndicatorView/hooks/useAIState.d.ts +18 -0
  335. package/lib/typescript/components/AITypingIndicatorView/hooks/useAIState.d.ts.map +1 -0
  336. package/lib/typescript/components/AITypingIndicatorView/index.d.ts +3 -0
  337. package/lib/typescript/components/AITypingIndicatorView/index.d.ts.map +1 -0
  338. package/lib/typescript/components/Attachment/AudioAttachment.d.ts.map +1 -1
  339. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  340. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
  341. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerSelectionBar.d.ts.map +1 -1
  342. package/lib/typescript/components/Channel/Channel.d.ts +7 -6
  343. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  344. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +75 -0
  345. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -0
  346. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  347. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  348. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +128 -1
  349. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  350. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +1 -1
  351. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts.map +1 -1
  352. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +28 -0
  353. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -0
  354. package/lib/typescript/components/ChannelList/Skeleton.d.ts.map +1 -1
  355. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  356. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +1 -2
  357. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  358. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -0
  359. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  360. package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts.map +1 -1
  361. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +8 -0
  362. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts.map +1 -0
  363. package/lib/typescript/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +8 -0
  364. package/lib/typescript/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -0
  365. package/lib/typescript/components/Chat/Chat.d.ts +7 -1
  366. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  367. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts.map +1 -1
  368. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  369. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  370. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts.map +1 -1
  371. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
  372. package/lib/typescript/components/Message/Message.d.ts +1 -1
  373. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  374. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  375. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts.map +1 -1
  376. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
  377. package/lib/typescript/components/Message/MessageSimple/StreamingMessageView.d.ts +12 -0
  378. package/lib/typescript/components/Message/MessageSimple/StreamingMessageView.d.ts.map +1 -0
  379. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts.map +1 -1
  380. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +16 -1
  381. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts.map +1 -1
  382. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  383. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  384. package/lib/typescript/components/Message/hooks/useStreamingMessage.d.ts +17 -0
  385. package/lib/typescript/components/Message/hooks/useStreamingMessage.d.ts.map +1 -0
  386. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  387. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  388. package/lib/typescript/components/MessageInput/StopMessageStreamingButton.d.ts +10 -0
  389. package/lib/typescript/components/MessageInput/StopMessageStreamingButton.d.ts.map +1 -0
  390. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  391. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  392. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  393. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +1 -1
  394. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +1 -1
  395. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +1 -1
  396. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts +3 -2
  397. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
  398. package/lib/typescript/components/Poll/Poll.d.ts +0 -1
  399. package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
  400. package/lib/typescript/components/Poll/components/Button.d.ts +0 -17
  401. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
  402. package/lib/typescript/components/Poll/components/CreatePollOptions.d.ts.map +1 -1
  403. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +2 -0
  404. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
  405. package/lib/typescript/components/Poll/components/PollButtons.d.ts +10 -0
  406. package/lib/typescript/components/Poll/components/PollButtons.d.ts.map +1 -0
  407. package/lib/typescript/components/Poll/components/PollInputDialog.d.ts.map +1 -1
  408. package/lib/typescript/components/Poll/components/PollOption.d.ts +2 -0
  409. package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
  410. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +11 -4
  411. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
  412. package/lib/typescript/components/Poll/components/PollResults/PollVote.d.ts +6 -0
  413. package/lib/typescript/components/Poll/components/PollResults/PollVote.d.ts.map +1 -0
  414. package/lib/typescript/components/Poll/components/index.d.ts +1 -0
  415. package/lib/typescript/components/Poll/components/index.d.ts.map +1 -1
  416. package/lib/typescript/components/ThreadList/ThreadList.d.ts.map +1 -1
  417. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
  418. package/lib/typescript/components/index.d.ts +6 -0
  419. package/lib/typescript/components/index.d.ts.map +1 -1
  420. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +27 -25
  421. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  422. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +0 -16
  423. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts.map +1 -1
  424. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +7 -13
  425. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
  426. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +2 -1
  427. package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
  428. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +4 -0
  429. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  430. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +2 -1
  431. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  432. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  433. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  434. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +8 -4
  435. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  436. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +17 -16
  437. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts.map +1 -1
  438. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +16 -1
  439. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  440. package/lib/typescript/i18n/en.json +2 -0
  441. package/lib/typescript/i18n/es.json +2 -0
  442. package/lib/typescript/i18n/fr.json +2 -0
  443. package/lib/typescript/i18n/he.json +2 -0
  444. package/lib/typescript/i18n/hi.json +2 -0
  445. package/lib/typescript/i18n/it.json +2 -0
  446. package/lib/typescript/i18n/ja.json +2 -0
  447. package/lib/typescript/i18n/ko.json +2 -0
  448. package/lib/typescript/i18n/nl.json +2 -0
  449. package/lib/typescript/i18n/pt-br.json +2 -0
  450. package/lib/typescript/i18n/ru.json +2 -0
  451. package/lib/typescript/i18n/tr.json +2 -0
  452. package/lib/typescript/store/SqliteClient.d.ts.map +1 -1
  453. package/lib/typescript/types/types.d.ts +3 -0
  454. package/lib/typescript/types/types.d.ts.map +1 -1
  455. package/lib/typescript/utils/getTrimmedAttachmentTitle.d.ts.map +1 -1
  456. package/lib/typescript/utils/i18n/Streami18n.d.ts +2 -0
  457. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  458. package/lib/typescript/utils/utils.d.ts.map +1 -1
  459. package/package.json +5 -5
  460. package/src/components/AITypingIndicatorView/AITypingIndicatorView.tsx +50 -0
  461. package/src/components/AITypingIndicatorView/hooks/useAIState.ts +68 -0
  462. package/src/components/AITypingIndicatorView/index.ts +2 -0
  463. package/src/components/Attachment/AudioAttachment.tsx +20 -19
  464. package/src/components/Attachment/Gallery.tsx +1 -1
  465. package/src/components/AttachmentPicker/AttachmentPicker.tsx +7 -2
  466. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +16 -32
  467. package/src/components/AttachmentPicker/components/AttachmentPickerSelectionBar.tsx +3 -5
  468. package/src/components/Channel/Channel.tsx +262 -821
  469. package/src/components/Channel/__tests__/Channel.test.js +244 -13
  470. package/src/components/Channel/__tests__/useMessageListPagination.test.js +419 -0
  471. package/src/components/Channel/hooks/useChannelDataState.ts +235 -0
  472. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -0
  473. package/src/components/Channel/hooks/useCreateMessagesContext.ts +4 -0
  474. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +3 -10
  475. package/src/components/Channel/hooks/useMessageListPagination.tsx +246 -0
  476. package/src/components/ChannelList/Skeleton.tsx +9 -1
  477. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +37 -30
  478. package/src/components/ChannelPreview/ChannelPreview.tsx +28 -107
  479. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +5 -15
  480. package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +2 -7
  481. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +226 -10
  482. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayName.test.tsx +1 -1
  483. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewMuted.test.tsx +62 -0
  484. package/src/components/ChannelPreview/hooks/useChannelPreviewData.ts +138 -0
  485. package/src/components/ChannelPreview/hooks/useIsChannelMuted.ts +29 -0
  486. package/src/components/Chat/Chat.tsx +11 -2
  487. package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +1 -0
  488. package/src/components/Chat/hooks/useAppSettings.ts +2 -0
  489. package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
  490. package/src/components/Chat/hooks/useIsOnline.ts +0 -5
  491. package/src/components/ImageGallery/ImageGallery.tsx +1 -0
  492. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +32 -32
  493. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +5 -6
  494. package/src/components/ImageGallery/hooks/useAnimatedGalleryStyle.tsx +2 -2
  495. package/src/components/Message/Message.tsx +16 -2
  496. package/src/components/Message/MessageSimple/MessageContent.tsx +22 -2
  497. package/src/components/Message/MessageSimple/MessageFooter.tsx +16 -5
  498. package/src/components/Message/MessageSimple/StreamingMessageView.tsx +34 -0
  499. package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +15 -1
  500. package/src/components/Message/MessageSimple/utils/renderText.tsx +207 -3
  501. package/src/components/Message/hooks/useCreateMessageContext.ts +2 -0
  502. package/src/components/Message/hooks/useStreamingMessage.ts +54 -0
  503. package/src/components/MessageInput/MessageInput.tsx +38 -20
  504. package/src/components/MessageInput/StopMessageStreamingButton.tsx +34 -0
  505. package/src/components/MessageInput/__tests__/MessageInput.test.js +116 -2
  506. package/src/components/MessageList/MessageList.tsx +53 -85
  507. package/src/components/MessageList/ScrollToBottomButton.tsx +1 -1
  508. package/src/components/MessageList/__tests__/MessageList.test.js +174 -2
  509. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
  510. package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.js.snap +1 -1
  511. package/src/components/MessageList/hooks/useMessageList.ts +2 -5
  512. package/src/components/MessageList/utils/getReadStates.ts +3 -2
  513. package/src/components/MessageMenu/MessageUserReactions.tsx +1 -1
  514. package/src/components/MessageMenu/MessageUserReactionsItem.tsx +4 -2
  515. package/src/components/MessageMenu/hooks/useFetchReactions.ts +6 -3
  516. package/src/components/Poll/CreatePollContent.tsx +4 -4
  517. package/src/components/Poll/Poll.tsx +1 -20
  518. package/src/components/Poll/components/Button.tsx +8 -420
  519. package/src/components/Poll/components/CreatePollIcon.tsx +1 -1
  520. package/src/components/Poll/components/CreatePollOptions.tsx +9 -4
  521. package/src/components/Poll/components/PollAnswersList.tsx +66 -3
  522. package/src/components/Poll/components/PollButtons.tsx +241 -0
  523. package/src/components/Poll/components/PollInputDialog.tsx +9 -6
  524. package/src/components/Poll/components/PollModalHeader.tsx +3 -3
  525. package/src/components/Poll/components/PollOption.tsx +74 -4
  526. package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +1 -1
  527. package/src/components/Poll/components/PollResults/PollResultItem.tsx +68 -52
  528. package/src/components/Poll/components/PollResults/PollVote.tsx +68 -0
  529. package/src/components/Poll/components/index.ts +1 -0
  530. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +37 -4
  531. package/src/components/ThreadList/ThreadList.tsx +0 -2
  532. package/src/components/UIComponents/BottomSheetModal.tsx +7 -3
  533. package/src/components/index.ts +7 -0
  534. package/src/contexts/channelContext/ChannelContext.tsx +35 -25
  535. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +1 -67
  536. package/src/contexts/channelsStateContext/useChannelState.ts +6 -108
  537. package/src/contexts/chatContext/ChatContext.tsx +2 -1
  538. package/src/contexts/messageContext/MessageContext.tsx +4 -0
  539. package/src/contexts/messageInputContext/MessageInputContext.tsx +5 -1
  540. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +2 -0
  541. package/src/contexts/messagesContext/MessagesContext.tsx +8 -3
  542. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +17 -16
  543. package/src/contexts/themeContext/utils/theme.ts +30 -1
  544. package/src/i18n/en.json +2 -0
  545. package/src/i18n/es.json +2 -0
  546. package/src/i18n/fr.json +2 -0
  547. package/src/i18n/he.json +2 -0
  548. package/src/i18n/hi.json +2 -0
  549. package/src/i18n/it.json +2 -0
  550. package/src/i18n/ja.json +2 -0
  551. package/src/i18n/ko.json +2 -0
  552. package/src/i18n/nl.json +2 -0
  553. package/src/i18n/pt-br.json +2 -0
  554. package/src/i18n/ru.json +2 -0
  555. package/src/i18n/tr.json +2 -0
  556. package/src/mock-builders/event/notificationChannelMutesUpdated.js +7 -0
  557. package/src/mock-builders/event/notificationMarkRead.js +7 -0
  558. package/src/mock-builders/event/notificationMarkUnread.js +9 -0
  559. package/src/mock-builders/generator/channel.ts +1 -0
  560. package/src/store/SqliteClient.ts +5 -1
  561. package/src/types/types.ts +3 -0
  562. package/src/utils/getTrimmedAttachmentTitle.ts +10 -2
  563. package/src/utils/utils.ts +5 -2
  564. package/src/version.json +1 -1
@@ -16,6 +16,7 @@ var _omit = _interopRequireDefault(require("lodash/omit"));
16
16
  var _throttle = _interopRequireDefault(require("lodash/throttle"));
17
17
  var _mimeTypes = require("mime-types");
18
18
  var _streamChat = require("stream-chat");
19
+ var _useChannelDataState2 = require("./hooks/useChannelDataState");
19
20
  var _useCreateChannelContext = require("./hooks/useCreateChannelContext");
20
21
  var _useCreateInputMessageInputContext = require("./hooks/useCreateInputMessageInputContext");
21
22
  var _useCreateMessagesContext = require("./hooks/useCreateMessagesContext");
@@ -23,6 +24,7 @@ var _useCreateOwnCapabilitiesContext = require("./hooks/useCreateOwnCapabilities
23
24
  var _useCreatePaginatedMessageListContext = require("./hooks/useCreatePaginatedMessageListContext");
24
25
  var _useCreateThreadContext = require("./hooks/useCreateThreadContext");
25
26
  var _useCreateTypingContext = require("./hooks/useCreateTypingContext");
27
+ var _useMessageListPagination = require("./hooks/useMessageListPagination");
26
28
  var _useTargetedMessage2 = require("./hooks/useTargetedMessage");
27
29
  var _ChannelContext = require("../../contexts/channelContext/ChannelContext");
28
30
  var _useChannelState2 = require("../../contexts/channelsStateContext/useChannelState");
@@ -83,6 +85,7 @@ var _MessageStatus = require("../Message/MessageSimple/MessageStatus");
83
85
  var _MessageTimestamp = require("../Message/MessageSimple/MessageTimestamp");
84
86
  var _ReactionListBottom = require("../Message/MessageSimple/ReactionList/ReactionListBottom");
85
87
  var _ReactionListTop = require("../Message/MessageSimple/ReactionList/ReactionListTop");
88
+ var _StreamingMessageView = require("../Message/MessageSimple/StreamingMessageView");
86
89
  var _AttachButton = require("../MessageInput/AttachButton");
87
90
  var _CommandsButton = require("../MessageInput/CommandsButton");
88
91
  var _AudioRecorder = require("../MessageInput/components/AudioRecorder/AudioRecorder");
@@ -102,6 +105,7 @@ var _MoreOptionsButton = require("../MessageInput/MoreOptionsButton");
102
105
  var _SendButton = require("../MessageInput/SendButton");
103
106
  var _SendMessageDisallowedIndicator = require("../MessageInput/SendMessageDisallowedIndicator");
104
107
  var _ShowThreadMessageInChannelButton = require("../MessageInput/ShowThreadMessageInChannelButton");
108
+ var _StopMessageStreamingButton = require("../MessageInput/StopMessageStreamingButton");
105
109
  var _UploadProgressIndicator = require("../MessageInput/UploadProgressIndicator");
106
110
  var _DateHeader = require("../MessageList/DateHeader");
107
111
  var _InlineDateSeparator = require("../MessageList/InlineDateSeparator");
@@ -163,7 +167,7 @@ var debounceOptions = {
163
167
  trailing: true
164
168
  };
165
169
  var ChannelWithContext = function ChannelWithContext(props) {
166
- var _channel$getConfig, _channel$data2, _ref25, _ref26;
170
+ var _channel$getConfig, _channel$data, _ref17, _channelState$members, _channelState$read, _ref18, _channelMessagesState3, _channelState$typing, _channelMessagesState4;
167
171
  var additionalKeyboardAvoidingViewProps = props.additionalKeyboardAvoidingViewProps,
168
172
  additionalPressableProps = props.additionalPressableProps,
169
173
  additionalTextInputProps = props.additionalTextInputProps,
@@ -225,8 +229,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
225
229
  DateHeader = _props$DateHeader === void 0 ? _DateHeader.DateHeader : _props$DateHeader,
226
230
  _props$deletedMessage = props.deletedMessagesVisibilityType,
227
231
  deletedMessagesVisibilityType = _props$deletedMessage === void 0 ? 'always' : _props$deletedMessage,
228
- _props$disableIfFroze = props.disableIfFrozenChannel,
229
- disableIfFrozenChannel = _props$disableIfFroze === void 0 ? true : _props$disableIfFroze,
230
232
  _props$disableKeyboar = props.disableKeyboardCompatibleView,
231
233
  disableKeyboardCompatibleView = _props$disableKeyboar === void 0 ? false : _props$disableKeyboar,
232
234
  disableTypingIndicator = props.disableTypingIndicator,
@@ -313,6 +315,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
313
315
  _props$InputReplyStat = props.InputReplyStateHeader,
314
316
  InputReplyStateHeader = _props$InputReplyStat === void 0 ? _InputReplyStateHeader.InputReplyStateHeader : _props$InputReplyStat,
315
317
  isAttachmentEqual = props.isAttachmentEqual,
318
+ _props$isMessageAIGen = props.isMessageAIGenerated,
319
+ isMessageAIGenerated = _props$isMessageAIGen === void 0 ? function () {
320
+ return false;
321
+ } : _props$isMessageAIGen,
316
322
  keyboardBehavior = props.keyboardBehavior,
317
323
  _props$KeyboardCompat = props.KeyboardCompatibleView,
318
324
  KeyboardCompatibleView = _props$KeyboardCompat === void 0 ? _KeyboardCompatibleView.KeyboardCompatibleView : _props$KeyboardCompat,
@@ -330,7 +336,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
330
336
  _props$maxNumberOfFil = props.maxNumberOfFiles,
331
337
  maxNumberOfFiles = _props$maxNumberOfFil === void 0 ? 10 : _props$maxNumberOfFil,
332
338
  maxTimeBetweenGroupedMessages = props.maxTimeBetweenGroupedMessages,
333
- members = props.members,
334
339
  _props$mentionAllAppU = props.mentionAllAppUsersEnabled,
335
340
  mentionAllAppUsersEnabled = _props$mentionAllAppU === void 0 ? false : _props$mentionAllAppU,
336
341
  mentionAllAppUsersQuery = props.mentionAllAppUsersQuery,
@@ -348,7 +353,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
348
353
  _props$MessageContent = props.MessageContent,
349
354
  MessageContent = _props$MessageContent === void 0 ? _MessageContent.MessageContent : _props$MessageContent,
350
355
  _props$messageContent = props.messageContentOrder,
351
- messageContentOrder = _props$messageContent === void 0 ? ['quoted_reply', 'gallery', 'files', 'poll', 'text', 'attachments'] : _props$messageContent,
356
+ messageContentOrder = _props$messageContent === void 0 ? ['quoted_reply', 'gallery', 'files', 'poll', 'ai_text', 'text', 'attachments'] : _props$messageContent,
352
357
  _props$MessageDeleted = props.MessageDeleted,
353
358
  MessageDeleted = _props$MessageDeleted === void 0 ? _MessageDeleted.MessageDeleted : _props$MessageDeleted,
354
359
  _props$MessageEditedT = props.MessageEditedTimestamp,
@@ -371,7 +376,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
371
376
  MessageReplies = _props$MessageReplies === void 0 ? _MessageReplies.MessageReplies : _props$MessageReplies,
372
377
  _props$MessageReplies2 = props.MessageRepliesAvatars,
373
378
  MessageRepliesAvatars = _props$MessageReplies2 === void 0 ? _MessageRepliesAvatars.MessageRepliesAvatars : _props$MessageReplies2,
374
- messages = props.messages,
375
379
  _props$MessageSimple = props.MessageSimple,
376
380
  MessageSimple = _props$MessageSimple === void 0 ? _MessageSimple.MessageSimple : _props$MessageSimple,
377
381
  _props$MessageStatus = props.MessageStatus,
@@ -379,8 +383,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
379
383
  _props$MessageSystem = props.MessageSystem,
380
384
  MessageSystem = _props$MessageSystem === void 0 ? _MessageSystem.MessageSystem : _props$MessageSystem,
381
385
  MessageText = props.MessageText,
382
- _props$messageTextNum = props.messageTextNumberOfLines,
383
- messageTextNumberOfLines = _props$messageTextNum === void 0 ? 5 : _props$messageTextNum,
386
+ messageTextNumberOfLines = props.messageTextNumberOfLines,
384
387
  _props$MessageTimesta = props.MessageTimestamp,
385
388
  MessageTimestamp = _props$MessageTimesta === void 0 ? _MessageTimestamp.MessageTimestamp : _props$MessageTimesta,
386
389
  _props$MessageUserRea = props.MessageUserReactions,
@@ -411,7 +414,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
411
414
  reactionListPosition = _props$reactionListPo === void 0 ? 'top' : _props$reactionListPo,
412
415
  _props$ReactionListTo = props.ReactionListTop,
413
416
  ReactionListTop = _props$ReactionListTo === void 0 ? _ReactionListTop.ReactionListTop : _props$ReactionListTo,
414
- read = props.read,
415
417
  _props$Reply = props.Reply,
416
418
  Reply = _props$Reply === void 0 ? _Reply.Reply : _props$Reply,
417
419
  _props$ScrollToBottom = props.ScrollToBottomButton,
@@ -424,13 +426,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
424
426
  _props$SendMessageDis = props.SendMessageDisallowedIndicator,
425
427
  SendMessageDisallowedIndicator = _props$SendMessageDis === void 0 ? _SendMessageDisallowedIndicator.SendMessageDisallowedIndicator : _props$SendMessageDis,
426
428
  setInputRef = props.setInputRef,
427
- setMembers = props.setMembers,
428
- setMessages = props.setMessages,
429
- setRead = props.setRead,
430
429
  setThreadMessages = props.setThreadMessages,
431
- setTyping = props.setTyping,
432
- setWatcherCount = props.setWatcherCount,
433
- setWatchers = props.setWatchers,
434
430
  _props$shouldShowUnre = props.shouldShowUnreadUnderlay,
435
431
  shouldShowUnreadUnderlay = _props$shouldShowUnre === void 0 ? true : _props$shouldShowUnre,
436
432
  shouldSyncChannel = props.shouldSyncChannel,
@@ -442,13 +438,15 @@ var ChannelWithContext = function ChannelWithContext(props) {
442
438
  stateUpdateThrottleInterval = _props$stateUpdateThr === void 0 ? defaultThrottleInterval : _props$stateUpdateThr,
443
439
  _props$StickyHeader = props.StickyHeader,
444
440
  StickyHeader = _props$StickyHeader === void 0 ? _StickyHeader.StickyHeader : _props$StickyHeader,
441
+ StopMessageStreamingButtonOverride = props.StopMessageStreamingButton,
442
+ _props$StreamingMessa = props.StreamingMessageView,
443
+ StreamingMessageView = _props$StreamingMessa === void 0 ? _StreamingMessageView.StreamingMessageView : _props$StreamingMessa,
445
444
  _props$supportedReact = props.supportedReactions,
446
445
  supportedReactions = _props$supportedReact === void 0 ? reactionData : _props$supportedReact,
447
446
  t = props.t,
448
447
  threadFromProps = props.thread,
449
448
  threadList = props.threadList,
450
449
  threadMessages = props.threadMessages,
451
- typing = props.typing,
452
450
  _props$TypingIndicato = props.TypingIndicator,
453
451
  TypingIndicator = _props$TypingIndicato === void 0 ? _TypingIndicator.TypingIndicator : _props$TypingIndicato,
454
452
  _props$TypingIndicato2 = props.TypingIndicatorContainer,
@@ -458,11 +456,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
458
456
  _props$UrlPreview = props.UrlPreview,
459
457
  UrlPreview = _props$UrlPreview === void 0 ? _Card.Card : _props$UrlPreview,
460
458
  _props$VideoThumbnail = props.VideoThumbnail,
461
- VideoThumbnail = _props$VideoThumbnail === void 0 ? _VideoThumbnail.VideoThumbnail : _props$VideoThumbnail,
462
- watcherCount = props.watcherCount,
463
- watchers = props.watchers;
459
+ VideoThumbnail = _props$VideoThumbnail === void 0 ? _VideoThumbnail.VideoThumbnail : _props$VideoThumbnail;
464
460
  var threadProps = threadFromProps.thread,
465
461
  threadInstance = threadFromProps.threadInstance;
462
+ var StopMessageStreamingButton = StopMessageStreamingButtonOverride === undefined ? _StopMessageStreamingButton.StopMessageStreamingButton : StopMessageStreamingButtonOverride;
466
463
  var _useTheme = (0, _ThemeContext.useTheme)(),
467
464
  _useTheme$theme = _useTheme.theme,
468
465
  selectChannel = _useTheme$theme.channel.selectChannel,
@@ -479,59 +476,84 @@ var ChannelWithContext = function ChannelWithContext(props) {
479
476
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
480
477
  error = _useState6[0],
481
478
  setError = _useState6[1];
482
- var _useState7 = (0, _react.useState)(true),
479
+ var _useState7 = (0, _react.useState)(),
483
480
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
484
- hasMore = _useState8[0],
485
- setHasMore = _useState8[1];
486
- var _useState9 = (0, _react.useState)(),
481
+ lastRead = _useState8[0],
482
+ setLastRead = _useState8[1];
483
+ var _useState9 = (0, _react.useState)(undefined),
487
484
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
488
- lastRead = _useState10[0],
489
- setLastRead = _useState10[1];
490
- var _useState11 = (0, _react.useState)(false),
485
+ quotedMessage = _useState10[0],
486
+ setQuotedMessage = _useState10[1];
487
+ var _useState11 = (0, _react.useState)(threadProps || null),
491
488
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
492
- loading = _useState12[0],
493
- setLoading = _useState12[1];
494
- var _useState13 = (0, _react.useState)(false),
489
+ thread = _useState12[0],
490
+ setThread = _useState12[1];
491
+ var _useState13 = (0, _react.useState)(true),
495
492
  _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
496
- loadingMore = _useState14[0],
497
- setLoadingMore = _useState14[1];
493
+ threadHasMore = _useState14[0],
494
+ setThreadHasMore = _useState14[1];
498
495
  var _useState15 = (0, _react.useState)(false),
499
496
  _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
500
- loadingMoreRecent = _useState16[0],
501
- setLoadingMoreRecent = _useState16[1];
502
- var _useState17 = (0, _react.useState)(undefined),
503
- _useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
504
- quotedMessage = _useState18[0],
505
- setQuotedMessage = _useState18[1];
506
- var _useState19 = (0, _react.useState)(threadProps || null),
507
- _useState20 = (0, _slicedToArray2["default"])(_useState19, 2),
508
- thread = _useState20[0],
509
- setThread = _useState20[1];
510
- var _useState21 = (0, _react.useState)(true),
511
- _useState22 = (0, _slicedToArray2["default"])(_useState21, 2),
512
- threadHasMore = _useState22[0],
513
- setThreadHasMore = _useState22[1];
514
- var _useState23 = (0, _react.useState)(false),
515
- _useState24 = (0, _slicedToArray2["default"])(_useState23, 2),
516
- threadLoadingMore = _useState24[0],
517
- setThreadLoadingMore = _useState24[1];
497
+ threadLoadingMore = _useState16[0],
498
+ setThreadLoadingMore = _useState16[1];
518
499
  var syncingChannelRef = (0, _react.useRef)(false);
519
- var _useState25 = (0, _react.useState)(true),
520
- _useState26 = (0, _slicedToArray2["default"])(_useState25, 2),
521
- hasNoMoreRecentMessagesToLoad = _useState26[0],
522
- setHasNoMoreRecentMessagesToLoad = _useState26[1];
523
500
  var _useTargetedMessage = (0, _useTargetedMessage2.useTargetedMessage)(),
524
- prevTargetedMessage = _useTargetedMessage.prevTargetedMessage,
525
501
  setTargetedMessage = _useTargetedMessage.setTargetedMessage,
526
502
  targetedMessage = _useTargetedMessage.targetedMessage;
527
- var hasOverlappingRecentMessagesRef = (0, _react.useRef)(false);
528
503
  var uploadAbortControllerRef = (0, _react.useRef)(new Map());
529
504
  var channelId = (channel == null ? void 0 : channel.id) || '';
530
505
  var pollCreationEnabled = !channel.disconnected && !!(channel != null && channel.id) && (channel == null ? void 0 : (_channel$getConfig = channel.getConfig()) == null ? void 0 : _channel$getConfig.polls);
506
+ var _useChannelDataState = (0, _useChannelDataState2.useChannelDataState)(channel),
507
+ copyStateFromChannel = _useChannelDataState.copyStateFromChannel,
508
+ initStateFromChannel = _useChannelDataState.initStateFromChannel,
509
+ setTyping = _useChannelDataState.setTyping,
510
+ channelState = _useChannelDataState.state;
511
+ var _useMessageListPagina = (0, _useMessageListPagination.useMessageListPagination)({
512
+ channel: channel
513
+ }),
514
+ copyMessagesStateFromChannel = _useMessageListPagina.copyMessagesStateFromChannel,
515
+ loadChannelAroundMessageFn = _useMessageListPagina.loadChannelAroundMessage,
516
+ loadChannelAtFirstUnreadMessage = _useMessageListPagina.loadChannelAtFirstUnreadMessage,
517
+ loadInitialMessagesStateFromChannel = _useMessageListPagina.loadInitialMessagesStateFromChannel,
518
+ loadLatestMessages = _useMessageListPagina.loadLatestMessages,
519
+ loadMore = _useMessageListPagina.loadMore,
520
+ loadMoreRecent = _useMessageListPagina.loadMoreRecent,
521
+ channelMessagesState = _useMessageListPagina.state;
522
+ var copyChannelStateThrottlingTime = newMessageStateUpdateThrottleInterval > stateUpdateThrottleInterval ? newMessageStateUpdateThrottleInterval : stateUpdateThrottleInterval;
523
+ var copyChannelState = (0, _react.useRef)((0, _throttle["default"])(function () {
524
+ if (channel) {
525
+ copyStateFromChannel(channel);
526
+ copyMessagesStateFromChannel(channel);
527
+ }
528
+ }, copyChannelStateThrottlingTime, throttleOptions)).current;
529
+ var handleEvent = function handleEvent(event) {
530
+ if (shouldSyncChannel) {
531
+ var ignorableEvents = ['user.watching.start', 'user.watching.stop'];
532
+ if (ignorableEvents.includes(event.type)) return;
533
+ var isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';
534
+ if (isTypingEvent) {
535
+ setTyping(channel);
536
+ } else {
537
+ if (thread != null && thread.id) {
538
+ var _event$message;
539
+ var updatedThreadMessages = thread.id && channel && channel.state.threads[thread.id] || threadMessages;
540
+ setThreadMessages(updatedThreadMessages);
541
+ if (channel && ((_event$message = event.message) == null ? void 0 : _event$message.id) === thread.id && !threadInstance) {
542
+ var updatedThread = channel.state.formatMessage(event.message);
543
+ setThread(updatedThread);
544
+ }
545
+ }
546
+ }
547
+ if (channel && channel.initialized) {
548
+ copyChannelState();
549
+ }
550
+ }
551
+ };
531
552
  (0, _react.useEffect)(function () {
553
+ var listener;
532
554
  var initChannel = function () {
533
555
  var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
534
- var _channel$state$messag, _channel$state$messag2, _channel$state$latest, _channel$state$latest2;
556
+ var errored;
535
557
  return _regenerator["default"].wrap(function _callee$(_context) {
536
558
  while (1) switch (_context.prev = _context.next) {
537
559
  case 0:
@@ -541,42 +563,56 @@ var ChannelWithContext = function ChannelWithContext(props) {
541
563
  }
542
564
  return _context.abrupt("return");
543
565
  case 2:
544
- if (channel.initialized) {
545
- _context.next = 5;
566
+ errored = false;
567
+ if (!(!channel.initialized || !channel.state.isUpToDate)) {
568
+ _context.next = 14;
546
569
  break;
547
570
  }
548
- _context.next = 5;
549
- return loadChannel();
550
- case 5:
571
+ _context.prev = 4;
572
+ _context.next = 7;
573
+ return channel == null ? void 0 : channel.watch();
574
+ case 7:
575
+ _context.next = 14;
576
+ break;
577
+ case 9:
578
+ _context.prev = 9;
579
+ _context.t0 = _context["catch"](4);
580
+ console.warn('Channel watch request failed with error:', _context.t0);
581
+ setError(true);
582
+ errored = true;
583
+ case 14:
584
+ if (!errored) {
585
+ initStateFromChannel(channel);
586
+ loadInitialMessagesStateFromChannel(channel, channel.state.messagePagination.hasPrev);
587
+ }
551
588
  if (!messageId) {
552
- _context.next = 9;
589
+ _context.next = 20;
553
590
  break;
554
591
  }
555
- loadChannelAroundMessage({
556
- messageId: messageId
592
+ _context.next = 18;
593
+ return loadChannelAroundMessage({
594
+ messageId: messageId,
595
+ setTargetedMessage: setTargetedMessage
557
596
  });
558
- _context.next = 16;
597
+ case 18:
598
+ _context.next = 23;
559
599
  break;
560
- case 9:
600
+ case 20:
561
601
  if (!(initialScrollToFirstUnreadMessage && channel.countUnread() > scrollToFirstUnreadThreshold)) {
562
- _context.next = 13;
602
+ _context.next = 23;
563
603
  break;
564
604
  }
565
- loadChannelAtFirstUnreadMessage();
566
- _context.next = 16;
567
- break;
568
- case 13:
569
- if (!(((_channel$state$messag = channel.state.messages) == null ? void 0 : (_channel$state$messag2 = _channel$state$messag[channel.state.messages.length - 1]) == null ? void 0 : _channel$state$messag2.id) !== ((_channel$state$latest = channel.state.latestMessages) == null ? void 0 : (_channel$state$latest2 = _channel$state$latest[channel.state.latestMessages.length - 1]) == null ? void 0 : _channel$state$latest2.id) && !messageId)) {
570
- _context.next = 16;
571
- break;
572
- }
573
- _context.next = 16;
574
- return loadChannel();
575
- case 16:
605
+ _context.next = 23;
606
+ return loadChannelAtFirstUnreadMessage({
607
+ setTargetedMessage: setTargetedMessage
608
+ });
609
+ case 23:
610
+ listener = channel.on(handleEvent);
611
+ case 24:
576
612
  case "end":
577
613
  return _context.stop();
578
614
  }
579
- }, _callee);
615
+ }, _callee, null, [[4, 9]]);
580
616
  }));
581
617
  return function initChannel() {
582
618
  return _ref.apply(this, arguments);
@@ -584,13 +620,29 @@ var ChannelWithContext = function ChannelWithContext(props) {
584
620
  }();
585
621
  initChannel();
586
622
  return function () {
623
+ var _listener;
587
624
  copyChannelState.cancel();
588
- copyReadState.cancel();
589
- copyTypingState.cancel();
590
- loadMoreFinished.cancel();
591
625
  loadMoreThreadFinished.cancel();
626
+ (_listener = listener) == null ? void 0 : _listener.unsubscribe();
627
+ };
628
+ }, [channel.cid, messageId, shouldSyncChannel]);
629
+ (0, _react.useEffect)(function () {
630
+ var _client$on = client.on('channel.deleted', function (event) {
631
+ if (event.cid === (channel == null ? void 0 : channel.cid)) {
632
+ setDeleted(true);
633
+ }
634
+ }),
635
+ unsubscribe = _client$on.unsubscribe;
636
+ return unsubscribe;
637
+ }, [channel == null ? void 0 : channel.cid, client]);
638
+ (0, _react.useEffect)(function () {
639
+ var handleEvent = function handleEvent(event) {
640
+ if (channel.cid === event.cid) copyChannelState();
592
641
  };
593
- }, [channelId, messageId]);
642
+ var _client$on2 = client.on('notification.mark_read', handleEvent),
643
+ unsubscribe = _client$on2.unsubscribe;
644
+ return unsubscribe;
645
+ }, [channel.cid, client, copyChannelState]);
594
646
  var threadPropsExists = !!threadProps;
595
647
  (0, _react.useEffect)(function () {
596
648
  if (threadProps && shouldSyncChannel) {
@@ -624,550 +676,79 @@ var ChannelWithContext = function ChannelWithContext(props) {
624
676
  (0, _streamChat.logChatPromiseExecution)(channel.markRead(), 'mark read');
625
677
  }
626
678
  }, defaultThrottleInterval, throttleOptions)).current;
627
- var copyMessagesState = (0, _react.useRef)((0, _throttle["default"])(function () {
628
- if (channel) {
629
- clearInterval(mergeSetsIntervalRef.current);
630
- setMessages(channel.state.messages);
631
- restartSetsMergeFuncRef.current();
632
- }
633
- }, newMessageStateUpdateThrottleInterval, throttleOptions)).current;
634
- var copyTypingState = (0, _react.useRef)((0, _throttle["default"])(function () {
635
- if (channel) {
636
- setTyping(Object.assign({}, channel.state.typing));
637
- }
638
- }, stateUpdateThrottleInterval, throttleOptions)).current;
639
- var copyReadState = (0, _react.useRef)((0, _throttle["default"])(function () {
640
- if (channel) {
641
- setRead(Object.assign({}, channel.state.read));
642
- }
643
- }, stateUpdateThrottleInterval, throttleOptions)).current;
644
- var copyChannelState = (0, _react.useRef)((0, _throttle["default"])(function () {
645
- setLoading(false);
646
- if (channel) {
647
- setMembers(Object.assign({}, channel.state.members));
648
- setMessages((0, _toConsumableArray2["default"])(channel.state.messages));
649
- setRead(Object.assign({}, channel.state.read));
650
- setTyping(Object.assign({}, channel.state.typing));
651
- setWatcherCount(channel.state.watcher_count);
652
- setWatchers(Object.assign({}, channel.state.watchers));
653
- }
654
- }, stateUpdateThrottleInterval, throttleOptions)).current;
655
- (0, _react.useEffect)(function () {
656
- var channelSubscriptions = [];
657
- if (channel && shouldSyncChannel) {
658
- channelSubscriptions.push(channel.on('message.new', copyMessagesState));
659
- channelSubscriptions.push(channel.on('message.read', copyReadState));
660
- channelSubscriptions.push(channel.on('typing.start', copyTypingState));
661
- channelSubscriptions.push(channel.on('typing.stop', copyTypingState));
662
- }
663
- return function () {
664
- channelSubscriptions.forEach(function (s) {
665
- return s.unsubscribe();
666
- });
667
- };
668
- }, [channelId, shouldSyncChannel]);
669
- (0, _react.useEffect)(function () {
670
- var handleEvent = function handleEvent(event) {
671
- var ignorableEvents = ['user.watching.start', 'user.watching.stop'];
672
- if (ignorableEvents.includes(event.type)) return;
673
- if (shouldSyncChannel) {
674
- var isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';
675
- if (!isTypingEvent) {
676
- var _event$message;
677
- if (thread != null && thread.id) {
678
- var updatedThreadMessages = thread.id && channel && channel.state.threads[thread.id] || threadMessages;
679
- setThreadMessages(updatedThreadMessages);
680
- }
681
- if (channel && thread != null && thread.id && ((_event$message = event.message) == null ? void 0 : _event$message.id) === thread.id && !threadInstance) {
682
- var updatedThread = channel.state.formatMessage(event.message);
683
- setThread(updatedThread);
684
- }
685
- }
686
- if (channel && channel.initialized && event.type !== 'message.new' && event.type !== 'message.read' && event.type !== 'typing.start' && event.type !== 'typing.stop') {
687
- copyChannelState();
688
- }
689
- }
690
- };
691
- var _channel$on = channel.on(handleEvent),
692
- unsubscribe = _channel$on.unsubscribe;
693
- return unsubscribe;
694
- }, [channelId, thread == null ? void 0 : thread.id, shouldSyncChannel]);
695
- (0, _react.useEffect)(function () {
696
- var _client$on = client.on('channel.deleted', function (event) {
697
- if (event.cid === (channel == null ? void 0 : channel.cid)) {
698
- setDeleted(true);
699
- }
700
- }),
701
- unsubscribe = _client$on.unsubscribe;
702
- return unsubscribe;
703
- }, [channelId]);
704
- (0, _react.useEffect)(function () {
705
- var handleEvent = function handleEvent(event) {
706
- if (channel.cid === event.cid) copyChannelState();
707
- };
708
- var _client$on2 = client.on('notification.mark_read', handleEvent),
709
- unsubscribe = _client$on2.unsubscribe;
710
- return unsubscribe;
711
- }, []);
712
- var channelQueryCallRef = (0, _react.useRef)(function () {
713
- var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(queryCall) {
714
- var onAfterQueryCall,
715
- scrollToMessageId,
716
- currentMessages,
717
- hadCurrentLatestMessages,
718
- scrollToMessageIndex,
719
- limitAfter,
720
- currentLength,
721
- noOfMessagesAfter,
722
- endIndex,
723
- restOfMessages,
724
- latestSet,
725
- hasLatestMessages,
726
- _args2 = arguments;
679
+ var reloadThread = function () {
680
+ var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
681
+ var parentID, limit, queryResponse, updatedHasMore, updatedThreadMessages, _yield$channel$getMes, messages, _messages, threadMessage, formattedMessage;
727
682
  return _regenerator["default"].wrap(function _callee2$(_context2) {
728
683
  while (1) switch (_context2.prev = _context2.next) {
729
- case 0:
730
- onAfterQueryCall = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : undefined;
731
- scrollToMessageId = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : undefined;
732
- setError(false);
733
- _context2.prev = 3;
734
- clearInterval(mergeSetsIntervalRef.current);
735
- _context2.next = 7;
736
- return queryCall();
737
- case 7:
738
- setLastRead(new Date());
739
- setHasMore(true);
740
- currentMessages = channel.state.messages;
741
- hadCurrentLatestMessages = currentMessages.length > 0 && currentMessages === channel.state.latestMessages;
742
- if (typeof scrollToMessageId === 'function') {
743
- scrollToMessageId = scrollToMessageId();
744
- }
745
- scrollToMessageIndex = scrollToMessageId ? currentMessages.findIndex(function (_ref3) {
746
- var id = _ref3.id;
747
- return id === scrollToMessageId;
748
- }) : -1;
749
- if (channel && scrollToMessageIndex !== -1) {
750
- copyChannelState.cancel();
751
- limitAfter = 4;
752
- currentLength = currentMessages.length;
753
- noOfMessagesAfter = currentLength - scrollToMessageIndex - 1;
754
- if (noOfMessagesAfter > limitAfter) {
755
- endIndex = scrollToMessageIndex + limitAfter;
756
- channel.state.clearMessages();
757
- channel.state.messages = currentMessages.slice(0, endIndex + 1);
758
- splitLatestCurrentMessageSetRef.current();
759
- restOfMessages = currentMessages.slice(endIndex + 1);
760
- if (hadCurrentLatestMessages) {
761
- latestSet = channel.state.messageSets.find(function (set) {
762
- return set.isLatest;
763
- });
764
- if (latestSet) {
765
- latestSet.messages = restOfMessages;
766
- hasOverlappingRecentMessagesRef.current = true;
767
- }
768
- }
769
- }
770
- }
771
- hasLatestMessages = channel.state.latestMessages.length > 0;
772
- channel.state.setIsUpToDate(hasLatestMessages);
773
- setHasNoMoreRecentMessagesToLoad(hasLatestMessages);
774
- copyChannelState();
775
- if (scrollToMessageIndex !== -1) {
776
- copyChannelState.flush();
777
- }
778
- onAfterQueryCall == null ? void 0 : onAfterQueryCall();
779
- _context2.next = 27;
780
- break;
781
- case 22:
782
- _context2.prev = 22;
783
- _context2.t0 = _context2["catch"](3);
784
- if (_context2.t0 instanceof Error) {
785
- setError(_context2.t0);
786
- } else {
787
- setError(true);
788
- }
789
- setLoading(false);
790
- setLastRead(new Date());
791
- case 27:
792
- case "end":
793
- return _context2.stop();
794
- }
795
- }, _callee2, null, [[3, 22]]);
796
- }));
797
- return function (_x) {
798
- return _ref2.apply(this, arguments);
799
- };
800
- }());
801
- var loadChannelAtFirstUnreadMessage = function loadChannelAtFirstUnreadMessage() {
802
- if (!channel) return;
803
- var unreadMessageIdToScrollTo;
804
- return channelQueryCallRef.current((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
805
- var unreadCount, isLatestMessageSetShown, lastReadDate, _res$messages$find, res;
806
- return _regenerator["default"].wrap(function _callee3$(_context3) {
807
- while (1) switch (_context3.prev = _context3.next) {
808
- case 0:
809
- unreadCount = channel.countUnread();
810
- if (!(unreadCount === 0)) {
811
- _context3.next = 3;
812
- break;
813
- }
814
- return _context3.abrupt("return");
815
- case 3:
816
- isLatestMessageSetShown = !!channel.state.messageSets.find(function (set) {
817
- return set.isCurrent && set.isLatest;
818
- });
819
- if (!(isLatestMessageSetShown && unreadCount <= channel.state.messages.length)) {
820
- _context3.next = 7;
821
- break;
822
- }
823
- unreadMessageIdToScrollTo = channel.state.messages[channel.state.messages.length - unreadCount].id;
824
- return _context3.abrupt("return");
825
- case 7:
826
- lastReadDate = channel.lastRead();
827
- if (!lastReadDate) {
828
- _context3.next = 17;
829
- break;
830
- }
831
- setLoading(true);
832
- _context3.next = 12;
833
- return channel.query({
834
- messages: {
835
- created_at_around: lastReadDate,
836
- limit: 30
837
- },
838
- watch: true
839
- }, 'new');
840
- case 12:
841
- res = _context3.sent;
842
- unreadMessageIdToScrollTo = (_res$messages$find = res.messages.find(function (m) {
843
- return lastReadDate < (m.created_at ? new Date(m.created_at) : new Date());
844
- })) == null ? void 0 : _res$messages$find.id;
845
- if (unreadMessageIdToScrollTo) {
846
- channel.state.loadMessageIntoState(unreadMessageIdToScrollTo);
847
- }
848
- _context3.next = 19;
849
- break;
850
- case 17:
851
- _context3.next = 19;
852
- return loadLatestMessagesRef.current();
853
- case 19:
854
- case "end":
855
- return _context3.stop();
856
- }
857
- }, _callee3);
858
- })), function () {
859
- if (unreadMessageIdToScrollTo) {
860
- restartSetsMergeFuncRef.current();
861
- }
862
- }, function () {
863
- return unreadMessageIdToScrollTo;
864
- });
865
- };
866
- var loadChannelAroundMessage = function () {
867
- var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(_ref5) {
868
- var messageIdToLoadAround;
869
- return _regenerator["default"].wrap(function _callee5$(_context5) {
870
- while (1) switch (_context5.prev = _context5.next) {
871
- case 0:
872
- messageIdToLoadAround = _ref5.messageId;
873
- if (!thread) {
874
- _context5.next = 18;
875
- break;
876
- }
877
- if (!messageIdToLoadAround) {
878
- _context5.next = 16;
879
- break;
880
- }
881
- setThreadLoadingMore(true);
882
- _context5.prev = 4;
883
- _context5.next = 7;
884
- return channel.state.loadMessageIntoState(messageIdToLoadAround, thread.id);
885
- case 7:
886
- setThreadLoadingMore(false);
887
- setThreadMessages(channel.state.threads[thread.id]);
888
- setTargetedMessage(messageIdToLoadAround);
889
- _context5.next = 16;
890
- break;
891
- case 12:
892
- _context5.prev = 12;
893
- _context5.t0 = _context5["catch"](4);
894
- if (_context5.t0 instanceof Error) {
895
- setError(_context5.t0);
896
- } else {
897
- setError(true);
898
- }
899
- setThreadLoadingMore(false);
900
- case 16:
901
- _context5.next = 20;
902
- break;
903
- case 18:
904
- _context5.next = 20;
905
- return channelQueryCallRef.current((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
906
- var currentMessageSet, recentCurrentSetMsgId;
907
- return _regenerator["default"].wrap(function _callee4$(_context4) {
908
- while (1) switch (_context4.prev = _context4.next) {
909
- case 0:
910
- setLoading(true);
911
- if (!messageIdToLoadAround) {
912
- _context4.next = 10;
913
- break;
914
- }
915
- setMessages([]);
916
- _context4.next = 5;
917
- return channel.state.loadMessageIntoState(messageIdToLoadAround);
918
- case 5:
919
- currentMessageSet = channel.state.messageSets.find(function (set) {
920
- return set.isCurrent;
921
- });
922
- if (!(currentMessageSet && !(currentMessageSet != null && currentMessageSet.isLatest))) {
923
- _context4.next = 10;
924
- break;
925
- }
926
- recentCurrentSetMsgId = currentMessageSet.messages[currentMessageSet.messages.length - 1].id;
927
- _context4.next = 10;
928
- return channel.query({
929
- messages: {
930
- id_gte: recentCurrentSetMsgId,
931
- limit: 25
932
- }
933
- }, 'current');
934
- case 10:
935
- case "end":
936
- return _context4.stop();
937
- }
938
- }, _callee4);
939
- })), function () {
940
- if (messageIdToLoadAround) {
941
- clearInterval(mergeSetsIntervalRef.current);
942
- setTargetedMessage(messageIdToLoadAround);
943
- }
944
- }, messageIdToLoadAround);
945
- case 20:
946
- case "end":
947
- return _context5.stop();
948
- }
949
- }, _callee5, null, [[4, 12]]);
950
- }));
951
- return function loadChannelAroundMessage(_x2) {
952
- return _ref6.apply(this, arguments);
953
- };
954
- }();
955
- (0, _react.useEffect)(function () {
956
- if (!targetedMessage && prevTargetedMessage) {
957
- restartSetsMergeFuncRef.current();
958
- }
959
- }, [targetedMessage]);
960
- var splitLatestCurrentMessageSetRef = (0, _react.useRef)(function () {
961
- var currentLatestSet = channel.state.messageSets.find(function (set) {
962
- return set.isCurrent && set.isLatest;
963
- });
964
- if (!currentLatestSet) return;
965
- currentLatestSet.isLatest = false;
966
- channel.state.messageSets.push({
967
- isCurrent: false,
968
- isLatest: true,
969
- messages: [],
970
- pagination: {
971
- hasNext: true,
972
- hasPrev: true
973
- }
974
- });
975
- });
976
- var mergeOverlappingMessageSetsRef = (0, _react.useRef)(function () {
977
- var limitToMaxRenderPerBatch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
978
- if (hasOverlappingRecentMessagesRef.current) {
979
- var limit = 5;
980
- var latestMessageSet = channel.state.messageSets.find(function (set) {
981
- return set.isLatest;
982
- });
983
- var currentMessageSet = channel.state.messageSets.find(function (set) {
984
- return set.isCurrent;
985
- });
986
- if (latestMessageSet && currentMessageSet && latestMessageSet !== currentMessageSet) {
987
- if (limitToMaxRenderPerBatch && latestMessageSet.messages.length > limit) {
988
- currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages.slice(0, limit));
989
- latestMessageSet.messages = latestMessageSet.messages.slice(limit);
990
- } else {
991
- channel.state.messageSets = channel.state.messageSets.filter(function (set) {
992
- return !set.isLatest;
993
- });
994
- currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages);
995
- currentMessageSet.isLatest = true;
996
- hasOverlappingRecentMessagesRef.current = false;
997
- clearInterval(mergeSetsIntervalRef.current);
998
- }
999
- return true;
1000
- }
1001
- }
1002
- return false;
1003
- });
1004
- var mergeSetsIntervalRef = (0, _react.useRef)();
1005
- (0, _react.useEffect)(function () {
1006
- return function () {
1007
- clearInterval(mergeSetsIntervalRef.current);
1008
- };
1009
- }, []);
1010
- var restartSetsMergeFuncRef = (0, _react.useRef)(function () {
1011
- clearInterval(mergeSetsIntervalRef.current);
1012
- if (!hasOverlappingRecentMessagesRef.current) return;
1013
- });
1014
- var loadLatestMessagesRef = (0, _react.useRef)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
1015
- var clearLatest,
1016
- latestSet,
1017
- _args6 = arguments;
1018
- return _regenerator["default"].wrap(function _callee6$(_context6) {
1019
- while (1) switch (_context6.prev = _context6.next) {
1020
- case 0:
1021
- clearLatest = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : false;
1022
- mergeOverlappingMessageSetsRef.current();
1023
- if (clearLatest) {
1024
- latestSet = channel.state.messageSets.find(function (set) {
1025
- return set.isLatest;
1026
- });
1027
- if (latestSet) latestSet.messages = [];
1028
- }
1029
- if (!(channel.state.latestMessages.length === 0)) {
1030
- _context6.next = 6;
1031
- break;
1032
- }
1033
- _context6.next = 6;
1034
- return channel.query({}, 'latest');
1035
- case 6:
1036
- _context6.next = 8;
1037
- return channel.state.loadMessageIntoState('latest');
1038
- case 8:
1039
- case "end":
1040
- return _context6.stop();
1041
- }
1042
- }, _callee6);
1043
- })));
1044
- var loadChannel = function loadChannel() {
1045
- return channelQueryCallRef.current((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7() {
1046
- return _regenerator["default"].wrap(function _callee7$(_context7) {
1047
- while (1) switch (_context7.prev = _context7.next) {
1048
- case 0:
1049
- if (!(!(channel != null && channel.initialized) || !channel.state.isUpToDate)) {
1050
- _context7.next = 5;
1051
- break;
1052
- }
1053
- _context7.next = 3;
1054
- return channel == null ? void 0 : channel.watch();
1055
- case 3:
1056
- _context7.next = 7;
1057
- break;
1058
- case 5:
1059
- _context7.next = 7;
1060
- return channel.state.loadMessageIntoState('latest');
1061
- case 7:
1062
- case "end":
1063
- return _context7.stop();
1064
- }
1065
- }, _callee7);
1066
- })), function () {
1067
- channel == null ? void 0 : channel.state.setIsUpToDate(true);
1068
- setHasNoMoreRecentMessagesToLoad(true);
1069
- });
1070
- };
1071
- var reloadThread = function () {
1072
- var _ref10 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8() {
1073
- var parentID, limit, queryResponse, updatedHasMore, updatedThreadMessages, _yield$channel$getMes, _messages, _messages2, threadMessage, formattedMessage;
1074
- return _regenerator["default"].wrap(function _callee8$(_context8) {
1075
- while (1) switch (_context8.prev = _context8.next) {
1076
684
  case 0:
1077
685
  if (!(!channel || !(thread != null && thread.id))) {
1078
- _context8.next = 2;
686
+ _context2.next = 2;
1079
687
  break;
1080
688
  }
1081
- return _context8.abrupt("return");
689
+ return _context2.abrupt("return");
1082
690
  case 2:
1083
691
  setThreadLoadingMore(true);
1084
- _context8.prev = 3;
692
+ _context2.prev = 3;
1085
693
  parentID = thread.id;
1086
694
  limit = 50;
1087
695
  channel.state.threads[parentID] = [];
1088
- _context8.next = 9;
696
+ _context2.next = 9;
1089
697
  return channel.getReplies(parentID, {
1090
698
  limit: limit
1091
699
  });
1092
700
  case 9:
1093
- queryResponse = _context8.sent;
701
+ queryResponse = _context2.sent;
1094
702
  updatedHasMore = queryResponse.messages.length === limit;
1095
703
  updatedThreadMessages = channel.state.threads[parentID] || [];
1096
704
  loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);
1097
- _context8.next = 15;
705
+ _context2.next = 15;
1098
706
  return channel.getMessagesById([parentID]);
1099
707
  case 15:
1100
- _yield$channel$getMes = _context8.sent;
1101
- _messages = _yield$channel$getMes.messages;
1102
- _messages2 = (0, _slicedToArray2["default"])(_messages, 1), threadMessage = _messages2[0];
708
+ _yield$channel$getMes = _context2.sent;
709
+ messages = _yield$channel$getMes.messages;
710
+ _messages = (0, _slicedToArray2["default"])(messages, 1), threadMessage = _messages[0];
1103
711
  if (threadMessage && !threadInstance) {
1104
712
  formattedMessage = channel.state.formatMessage(threadMessage);
1105
713
  setThread(formattedMessage);
1106
714
  }
1107
- _context8.next = 27;
715
+ _context2.next = 27;
1108
716
  break;
1109
717
  case 21:
1110
- _context8.prev = 21;
1111
- _context8.t0 = _context8["catch"](3);
1112
- console.warn('Thread loading request failed with error', _context8.t0);
1113
- if (_context8.t0 instanceof Error) {
1114
- setError(_context8.t0);
718
+ _context2.prev = 21;
719
+ _context2.t0 = _context2["catch"](3);
720
+ console.warn('Thread loading request failed with error', _context2.t0);
721
+ if (_context2.t0 instanceof Error) {
722
+ setError(_context2.t0);
1115
723
  } else {
1116
724
  setError(true);
1117
725
  }
1118
726
  setThreadLoadingMore(false);
1119
- throw _context8.t0;
727
+ throw _context2.t0;
1120
728
  case 27:
1121
729
  case "end":
1122
- return _context8.stop();
730
+ return _context2.stop();
1123
731
  }
1124
- }, _callee8, null, [[3, 21]]);
732
+ }, _callee2, null, [[3, 21]]);
1125
733
  }));
1126
734
  return function reloadThread() {
1127
- return _ref10.apply(this, arguments);
735
+ return _ref2.apply(this, arguments);
1128
736
  };
1129
737
  }();
1130
738
  var resyncChannel = function () {
1131
- var _ref11 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9() {
1132
- var _messages$, state, oldListTopMessage, oldListTopMessageId, oldListBottomMessage, newListTopMessage, newListBottomMessage, parseMessage, failedMessages, failedThreadMessages, oldListTopMessageCreatedAt, oldListBottomMessageCreatedAt, newListTopMessageCreatedAt, newListBottomMessageCreatedAt, finalMessages, index;
1133
- return _regenerator["default"].wrap(function _callee9$(_context9) {
1134
- while (1) switch (_context9.prev = _context9.next) {
739
+ var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
740
+ var parseMessage, _channelMessagesState, failedMessages, failedThreadMessages;
741
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
742
+ while (1) switch (_context3.prev = _context3.next) {
1135
743
  case 0:
1136
744
  if (!(!channel || syncingChannelRef.current)) {
1137
- _context9.next = 2;
745
+ _context3.next = 2;
1138
746
  break;
1139
747
  }
1140
- return _context9.abrupt("return");
748
+ return _context3.abrupt("return");
1141
749
  case 2:
1142
- hasOverlappingRecentMessagesRef.current = false;
1143
- clearInterval(mergeSetsIntervalRef.current);
1144
750
  syncingChannelRef.current = true;
1145
751
  setError(false);
1146
- _context9.prev = 6;
1147
- _context9.next = 9;
1148
- return channel.watch({
1149
- messages: {
1150
- limit: messages.length + 30
1151
- }
1152
- });
1153
- case 9:
1154
- state = _context9.sent;
1155
- oldListTopMessage = messages[0];
1156
- oldListTopMessageId = (_messages$ = messages[0]) == null ? void 0 : _messages$.id;
1157
- oldListBottomMessage = messages[messages.length - 1];
1158
- newListTopMessage = state.messages[0];
1159
- newListBottomMessage = state.messages[state.messages.length - 1];
1160
- if (!(!oldListTopMessage || !oldListBottomMessage || !newListTopMessage || !newListBottomMessage)) {
1161
- _context9.next = 22;
1162
- break;
1163
- }
1164
- channel.state.clearMessages();
1165
- channel.state.setIsUpToDate(true);
1166
- channel.state.addMessagesSorted(state.messages);
1167
- channel.state.addPinnedMessages(state.pinned_messages);
1168
- copyChannelState();
1169
- return _context9.abrupt("return");
1170
- case 22:
1171
752
  parseMessage = function parseMessage(message) {
1172
753
  var _message$pinned_at, _message$updated_at;
1173
754
  return Object.assign({}, message, {
@@ -1176,64 +757,52 @@ var ChannelWithContext = function ChannelWithContext(props) {
1176
757
  updated_at: (_message$updated_at = message.updated_at) == null ? void 0 : _message$updated_at.toString()
1177
758
  });
1178
759
  };
1179
- failedMessages = messages.filter(function (message) {
1180
- return message.status === _utils.MessageStatusTypes.FAILED;
1181
- }).map(parseMessage);
1182
- failedThreadMessages = thread ? threadMessages.filter(function (message) {
1183
- return message.status === _utils.MessageStatusTypes.FAILED;
1184
- }).map(parseMessage) : [];
1185
- oldListTopMessageCreatedAt = oldListTopMessage.created_at;
1186
- oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;
1187
- newListTopMessageCreatedAt = newListTopMessage.created_at ? new Date(newListTopMessage.created_at) : new Date();
1188
- newListBottomMessageCreatedAt = newListBottomMessage != null && newListBottomMessage.created_at ? new Date(newListBottomMessage.created_at) : new Date();
1189
- finalMessages = [];
1190
- if (oldListTopMessage && oldListTopMessageCreatedAt && oldListBottomMessageCreatedAt && newListTopMessageCreatedAt < oldListTopMessageCreatedAt && newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt) {
1191
- index = state.messages.findIndex(function (message) {
1192
- return message.id === oldListTopMessageId;
1193
- });
1194
- finalMessages = state.messages.slice(index);
1195
- } else {
1196
- finalMessages = state.messages;
760
+ _context3.prev = 5;
761
+ if (thread) {
762
+ _context3.next = 12;
763
+ break;
1197
764
  }
1198
- channel.state.setIsUpToDate(true);
1199
- channel.state.clearMessages();
1200
- channel.state.addMessagesSorted(finalMessages);
1201
- channel.state.addPinnedMessages(state.pinned_messages);
1202
- setHasNoMoreRecentMessagesToLoad(true);
1203
- setHasMore(true);
1204
765
  copyChannelState();
1205
- if (failedMessages.length) {
766
+ failedMessages = (_channelMessagesState = channelMessagesState.messages) == null ? void 0 : _channelMessagesState.filter(function (message) {
767
+ return message.status === _utils.MessageStatusTypes.FAILED;
768
+ }).map(parseMessage);
769
+ if (failedMessages != null && failedMessages.length) {
1206
770
  channel.state.addMessagesSorted(failedMessages);
1207
- copyChannelState();
1208
771
  }
1209
- _context9.next = 41;
772
+ _context3.next = 16;
773
+ break;
774
+ case 12:
775
+ _context3.next = 14;
1210
776
  return reloadThread();
1211
- case 41:
1212
- if (thread && failedThreadMessages.length) {
777
+ case 14:
778
+ failedThreadMessages = thread ? threadMessages.filter(function (message) {
779
+ return message.status === _utils.MessageStatusTypes.FAILED;
780
+ }).map(parseMessage) : [];
781
+ if (failedThreadMessages.length) {
1213
782
  channel.state.addMessagesSorted(failedThreadMessages);
1214
783
  setThreadMessages((0, _toConsumableArray2["default"])(channel.state.threads[thread.id]));
1215
784
  }
1216
- _context9.next = 48;
785
+ case 16:
786
+ _context3.next = 21;
1217
787
  break;
1218
- case 44:
1219
- _context9.prev = 44;
1220
- _context9.t0 = _context9["catch"](6);
1221
- if (_context9.t0 instanceof Error) {
1222
- setError(_context9.t0);
788
+ case 18:
789
+ _context3.prev = 18;
790
+ _context3.t0 = _context3["catch"](5);
791
+ if (_context3.t0 instanceof Error) {
792
+ setError(_context3.t0);
1223
793
  } else {
1224
794
  setError(true);
1225
795
  }
1226
- setLoading(false);
1227
- case 48:
796
+ case 21:
1228
797
  syncingChannelRef.current = false;
1229
- case 49:
798
+ case 22:
1230
799
  case "end":
1231
- return _context9.stop();
800
+ return _context3.stop();
1232
801
  }
1233
- }, _callee9, null, [[6, 44]]);
802
+ }, _callee3, null, [[5, 18]]);
1234
803
  }));
1235
804
  return function resyncChannel() {
1236
- return _ref11.apply(this, arguments);
805
+ return _ref3.apply(this, arguments);
1237
806
  };
1238
807
  }();
1239
808
  var resyncChannelRef = (0, _react.useRef)(resyncChannel);
@@ -1248,7 +817,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1248
817
  if (enableOfflineSupport) {
1249
818
  connectionChangedSubscription = _DBSyncManager.DBSyncManager.onSyncStatusChange(function (statusChanged) {
1250
819
  if (statusChanged) {
1251
- connectionChangedHandler();
820
+ copyChannelState();
1252
821
  }
1253
822
  });
1254
823
  } else {
@@ -1262,25 +831,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
1262
831
  connectionChangedSubscription.unsubscribe();
1263
832
  };
1264
833
  }, [enableOfflineSupport, shouldSyncChannel]);
1265
- var reloadChannel = function reloadChannel() {
1266
- return channelQueryCallRef.current((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10() {
1267
- return _regenerator["default"].wrap(function _callee10$(_context10) {
1268
- while (1) switch (_context10.prev = _context10.next) {
1269
- case 0:
1270
- setLoading(true);
1271
- _context10.next = 3;
1272
- return loadLatestMessagesRef.current(true);
1273
- case 3:
1274
- setLoading(false);
1275
- channel == null ? void 0 : channel.state.setIsUpToDate(true);
1276
- setHasNoMoreRecentMessagesToLoad(true);
1277
- case 6:
1278
- case "end":
1279
- return _context10.stop();
1280
- }
1281
- }, _callee10);
1282
- })));
1283
- };
1284
834
  var getChannelConfigSafely = function getChannelConfigSafely() {
1285
835
  try {
1286
836
  return channel == null ? void 0 : channel.getConfig();
@@ -1289,36 +839,125 @@ var ChannelWithContext = function ChannelWithContext(props) {
1289
839
  }
1290
840
  };
1291
841
  var clientChannelConfig = getChannelConfigSafely();
842
+ var reloadChannel = function () {
843
+ var _ref4 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
844
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
845
+ while (1) switch (_context4.prev = _context4.next) {
846
+ case 0:
847
+ _context4.prev = 0;
848
+ _context4.next = 3;
849
+ return loadLatestMessages();
850
+ case 3:
851
+ _context4.next = 8;
852
+ break;
853
+ case 5:
854
+ _context4.prev = 5;
855
+ _context4.t0 = _context4["catch"](0);
856
+ console.warn('Reloading channel failed with error:', _context4.t0);
857
+ case 8:
858
+ case "end":
859
+ return _context4.stop();
860
+ }
861
+ }, _callee4, null, [[0, 5]]);
862
+ }));
863
+ return function reloadChannel() {
864
+ return _ref4.apply(this, arguments);
865
+ };
866
+ }();
867
+ var loadChannelAroundMessage = function () {
868
+ var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(_ref5) {
869
+ var messageIdToLoadAround;
870
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
871
+ while (1) switch (_context5.prev = _context5.next) {
872
+ case 0:
873
+ messageIdToLoadAround = _ref5.messageId;
874
+ if (messageIdToLoadAround) {
875
+ _context5.next = 3;
876
+ break;
877
+ }
878
+ return _context5.abrupt("return");
879
+ case 3:
880
+ _context5.prev = 3;
881
+ if (!thread) {
882
+ _context5.next = 20;
883
+ break;
884
+ }
885
+ setThreadLoadingMore(true);
886
+ _context5.prev = 6;
887
+ _context5.next = 9;
888
+ return channel.state.loadMessageIntoState(messageIdToLoadAround, thread.id);
889
+ case 9:
890
+ setThreadLoadingMore(false);
891
+ setThreadMessages(channel.state.threads[thread.id]);
892
+ if (setTargetedMessage) {
893
+ setTargetedMessage(messageIdToLoadAround);
894
+ }
895
+ _context5.next = 18;
896
+ break;
897
+ case 14:
898
+ _context5.prev = 14;
899
+ _context5.t0 = _context5["catch"](6);
900
+ if (_context5.t0 instanceof Error) {
901
+ setError(_context5.t0);
902
+ } else {
903
+ setError(true);
904
+ }
905
+ setThreadLoadingMore(false);
906
+ case 18:
907
+ _context5.next = 22;
908
+ break;
909
+ case 20:
910
+ _context5.next = 22;
911
+ return loadChannelAroundMessageFn({
912
+ messageId: messageIdToLoadAround,
913
+ setTargetedMessage: setTargetedMessage
914
+ });
915
+ case 22:
916
+ _context5.next = 27;
917
+ break;
918
+ case 24:
919
+ _context5.prev = 24;
920
+ _context5.t1 = _context5["catch"](3);
921
+ console.warn('Loading channel around message failed with error:', _context5.t1);
922
+ case 27:
923
+ case "end":
924
+ return _context5.stop();
925
+ }
926
+ }, _callee5, null, [[3, 24], [6, 14]]);
927
+ }));
928
+ return function loadChannelAroundMessage(_x) {
929
+ return _ref6.apply(this, arguments);
930
+ };
931
+ }();
1292
932
  var updateMessage = function updateMessage(updatedMessage) {
1293
933
  var extraState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1294
- if (channel) {
1295
- channel.state.addMessageSorted(updatedMessage, true);
1296
- if (thread && updatedMessage.parent_id) {
1297
- extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];
1298
- setThreadMessages(extraState.threadMessages);
1299
- }
1300
- setMessages((0, _toConsumableArray2["default"])(channel.state.messages));
934
+ if (!channel) return;
935
+ channel.state.addMessageSorted(updatedMessage, true);
936
+ copyMessagesStateFromChannel(channel);
937
+ if (thread && updatedMessage.parent_id) {
938
+ extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];
939
+ setThreadMessages(extraState.threadMessages);
1301
940
  }
1302
941
  };
1303
942
  var replaceMessage = function replaceMessage(oldMessage, newMessage) {
1304
943
  if (channel) {
1305
944
  channel.state.removeMessage(oldMessage);
1306
945
  channel.state.addMessageSorted(newMessage, true);
946
+ copyMessagesStateFromChannel(channel);
1307
947
  if (thread && newMessage.parent_id) {
1308
948
  var _threadMessages = channel.state.threads[newMessage.parent_id] || [];
1309
949
  setThreadMessages(_threadMessages);
1310
950
  }
1311
- setMessages(channel.state.messages);
1312
951
  }
1313
952
  };
1314
- var createMessagePreview = function createMessagePreview(_ref13) {
1315
- var attachments = _ref13.attachments,
1316
- mentioned_users = _ref13.mentioned_users,
1317
- parent_id = _ref13.parent_id,
1318
- poll = _ref13.poll,
1319
- poll_id = _ref13.poll_id,
1320
- text = _ref13.text,
1321
- extraFields = (0, _objectWithoutProperties2["default"])(_ref13, _excluded);
953
+ var createMessagePreview = function createMessagePreview(_ref7) {
954
+ var attachments = _ref7.attachments,
955
+ mentioned_users = _ref7.mentioned_users,
956
+ parent_id = _ref7.parent_id,
957
+ poll = _ref7.poll,
958
+ poll_id = _ref7.poll_id,
959
+ text = _ref7.text,
960
+ extraFields = (0, _objectWithoutProperties2["default"])(_ref7, _excluded);
1322
961
  var _client$user = client.user,
1323
962
  channel_mutes = _client$user.channel_mutes,
1324
963
  devices = _client$user.devices,
@@ -1347,7 +986,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
1347
986
  })
1348
987
  }, extraFields);
1349
988
  if (preview.quoted_message_id) {
1350
- var _quotedMessage = messages.find(function (message) {
989
+ var _channelMessagesState2;
990
+ var _quotedMessage = (_channelMessagesState2 = channelMessagesState.messages) == null ? void 0 : _channelMessagesState2.find(function (message) {
1351
991
  return message.id === preview.quoted_message_id;
1352
992
  });
1353
993
  preview.quoted_message = _quotedMessage;
@@ -1355,28 +995,28 @@ var ChannelWithContext = function ChannelWithContext(props) {
1355
995
  return preview;
1356
996
  };
1357
997
  var uploadPendingAttachments = function () {
1358
- var _ref14 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(message) {
998
+ var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(message) {
1359
999
  var _updatedMessage$attac;
1360
1000
  var updatedMessage, i, _updatedMessage$attac2, attachment, image, file, _image$name, filename, controller, compressedUri, contentType, uploadResponse, _controller, response;
1361
- return _regenerator["default"].wrap(function _callee11$(_context11) {
1362
- while (1) switch (_context11.prev = _context11.next) {
1001
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
1002
+ while (1) switch (_context6.prev = _context6.next) {
1363
1003
  case 0:
1364
1004
  updatedMessage = Object.assign({}, message);
1365
1005
  if (!((_updatedMessage$attac = updatedMessage.attachments) != null && _updatedMessage$attac.length)) {
1366
- _context11.next = 50;
1006
+ _context6.next = 50;
1367
1007
  break;
1368
1008
  }
1369
1009
  i = 0;
1370
1010
  case 3:
1371
1011
  if (!(i < ((_updatedMessage$attac2 = updatedMessage.attachments) == null ? void 0 : _updatedMessage$attac2.length))) {
1372
- _context11.next = 50;
1012
+ _context6.next = 50;
1373
1013
  break;
1374
1014
  }
1375
1015
  attachment = updatedMessage.attachments[i];
1376
1016
  image = attachment.originalImage;
1377
1017
  file = attachment.originalFile;
1378
1018
  if (!(attachment.type === _types.FileTypes.Image && image != null && image.uri && attachment.image_url && (0, _utils.isLocalUrl)(attachment.image_url))) {
1379
- _context11.next = 29;
1019
+ _context6.next = 29;
1380
1020
  break;
1381
1021
  }
1382
1022
  filename = (_image$name = image.name) != null ? _image$name : (0, _utils.getFileNameFromPath)(image.uri);
@@ -1385,31 +1025,31 @@ var ChannelWithContext = function ChannelWithContext(props) {
1385
1025
  controller.abort();
1386
1026
  uploadAbortControllerRef.current["delete"](filename);
1387
1027
  }
1388
- _context11.next = 13;
1028
+ _context6.next = 13;
1389
1029
  return (0, _compressImage.compressedImageURI)(image, compressImageQuality);
1390
1030
  case 13:
1391
- compressedUri = _context11.sent;
1031
+ compressedUri = _context6.sent;
1392
1032
  contentType = (0, _mimeTypes.lookup)(filename) || 'multipart/form-data';
1393
1033
  if (!doImageUploadRequest) {
1394
- _context11.next = 21;
1034
+ _context6.next = 21;
1395
1035
  break;
1396
1036
  }
1397
- _context11.next = 18;
1037
+ _context6.next = 18;
1398
1038
  return doImageUploadRequest(image, channel);
1399
1039
  case 18:
1400
- _context11.t0 = _context11.sent;
1401
- _context11.next = 24;
1040
+ _context6.t0 = _context6.sent;
1041
+ _context6.next = 24;
1402
1042
  break;
1403
1043
  case 21:
1404
- _context11.next = 23;
1044
+ _context6.next = 23;
1405
1045
  return channel.sendImage(compressedUri, filename, contentType);
1406
1046
  case 23:
1407
- _context11.t0 = _context11.sent;
1047
+ _context6.t0 = _context6.sent;
1408
1048
  case 24:
1409
- uploadResponse = _context11.t0;
1049
+ uploadResponse = _context6.t0;
1410
1050
  attachment.image_url = uploadResponse.file;
1411
1051
  delete attachment.originalFile;
1412
- _context11.next = 29;
1052
+ _context6.next = 29;
1413
1053
  return dbApi.updateMessage({
1414
1054
  message: Object.assign({}, updatedMessage, {
1415
1055
  cid: channel.cid
@@ -1417,7 +1057,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1417
1057
  });
1418
1058
  case 29:
1419
1059
  if (!((attachment.type === _types.FileTypes.File || attachment.type === _types.FileTypes.Audio || attachment.type === _types.FileTypes.VoiceRecording || attachment.type === _types.FileTypes.Video) && attachment.asset_url && (0, _utils.isLocalUrl)(attachment.asset_url) && file != null && file.uri)) {
1420
- _context11.next = 47;
1060
+ _context6.next = 47;
1421
1061
  break;
1422
1062
  }
1423
1063
  _controller = uploadAbortControllerRef.current.get(file.name);
@@ -1426,28 +1066,28 @@ var ChannelWithContext = function ChannelWithContext(props) {
1426
1066
  uploadAbortControllerRef.current["delete"](file.name);
1427
1067
  }
1428
1068
  if (!doDocUploadRequest) {
1429
- _context11.next = 38;
1069
+ _context6.next = 38;
1430
1070
  break;
1431
1071
  }
1432
- _context11.next = 35;
1072
+ _context6.next = 35;
1433
1073
  return doDocUploadRequest(file, channel);
1434
1074
  case 35:
1435
- _context11.t1 = _context11.sent;
1436
- _context11.next = 41;
1075
+ _context6.t1 = _context6.sent;
1076
+ _context6.next = 41;
1437
1077
  break;
1438
1078
  case 38:
1439
- _context11.next = 40;
1079
+ _context6.next = 40;
1440
1080
  return channel.sendFile(file.uri, file.name, file.mimeType);
1441
1081
  case 40:
1442
- _context11.t1 = _context11.sent;
1082
+ _context6.t1 = _context6.sent;
1443
1083
  case 41:
1444
- response = _context11.t1;
1084
+ response = _context6.t1;
1445
1085
  attachment.asset_url = response.file;
1446
1086
  if (response.thumb_url) {
1447
1087
  attachment.thumb_url = response.thumb_url;
1448
1088
  }
1449
1089
  delete attachment.originalFile;
1450
- _context11.next = 47;
1090
+ _context6.next = 47;
1451
1091
  return dbApi.updateMessage({
1452
1092
  message: Object.assign({}, updatedMessage, {
1453
1093
  cid: channel.cid
@@ -1455,38 +1095,38 @@ var ChannelWithContext = function ChannelWithContext(props) {
1455
1095
  });
1456
1096
  case 47:
1457
1097
  i++;
1458
- _context11.next = 3;
1098
+ _context6.next = 3;
1459
1099
  break;
1460
1100
  case 50:
1461
- return _context11.abrupt("return", updatedMessage);
1101
+ return _context6.abrupt("return", updatedMessage);
1462
1102
  case 51:
1463
1103
  case "end":
1464
- return _context11.stop();
1104
+ return _context6.stop();
1465
1105
  }
1466
- }, _callee11);
1106
+ }, _callee6);
1467
1107
  }));
1468
- return function uploadPendingAttachments(_x3) {
1469
- return _ref14.apply(this, arguments);
1108
+ return function uploadPendingAttachments(_x2) {
1109
+ return _ref8.apply(this, arguments);
1470
1110
  };
1471
1111
  }();
1472
1112
  var sendMessageRequest = function () {
1473
- var _ref15 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee12(message, retrying) {
1113
+ var _ref9 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(message, retrying) {
1474
1114
  var _updatedMessage, extraFields, attachments, id, mentioned_users, parent_id, text, mentionedUserIds, _messageData, messageResponse, _updatedMessage2;
1475
- return _regenerator["default"].wrap(function _callee12$(_context12) {
1476
- while (1) switch (_context12.prev = _context12.next) {
1115
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
1116
+ while (1) switch (_context7.prev = _context7.next) {
1477
1117
  case 0:
1478
- _context12.prev = 0;
1479
- _context12.next = 3;
1118
+ _context7.prev = 0;
1119
+ _context7.next = 3;
1480
1120
  return uploadPendingAttachments(message);
1481
1121
  case 3:
1482
- _updatedMessage = _context12.sent;
1122
+ _updatedMessage = _context7.sent;
1483
1123
  extraFields = (0, _omit["default"])(_updatedMessage, ['__html', 'attachments', 'created_at', 'deleted_at', 'html', 'id', 'latest_reactions', 'mentioned_users', 'own_reactions', 'parent_id', 'quoted_message', 'reaction_counts', 'reaction_groups', 'reactions', 'status', 'text', 'type', 'updated_at', 'user']);
1484
1124
  attachments = _updatedMessage.attachments, id = _updatedMessage.id, mentioned_users = _updatedMessage.mentioned_users, parent_id = _updatedMessage.parent_id, text = _updatedMessage.text;
1485
1125
  if (channel.id) {
1486
- _context12.next = 8;
1126
+ _context7.next = 8;
1487
1127
  break;
1488
1128
  }
1489
- return _context12.abrupt("return");
1129
+ return _context7.abrupt("return");
1490
1130
  case 8:
1491
1131
  mentionedUserIds = (mentioned_users == null ? void 0 : mentioned_users.map(function (user) {
1492
1132
  return user.id;
@@ -1500,35 +1140,35 @@ var ChannelWithContext = function ChannelWithContext(props) {
1500
1140
  }, extraFields);
1501
1141
  messageResponse = {};
1502
1142
  if (!doSendMessageRequest) {
1503
- _context12.next = 17;
1143
+ _context7.next = 17;
1504
1144
  break;
1505
1145
  }
1506
- _context12.next = 14;
1146
+ _context7.next = 14;
1507
1147
  return doSendMessageRequest((channel == null ? void 0 : channel.cid) || '', _messageData);
1508
1148
  case 14:
1509
- messageResponse = _context12.sent;
1510
- _context12.next = 21;
1149
+ messageResponse = _context7.sent;
1150
+ _context7.next = 21;
1511
1151
  break;
1512
1152
  case 17:
1513
1153
  if (!channel) {
1514
- _context12.next = 21;
1154
+ _context7.next = 21;
1515
1155
  break;
1516
1156
  }
1517
- _context12.next = 20;
1157
+ _context7.next = 20;
1518
1158
  return channel.sendMessage(_messageData);
1519
1159
  case 20:
1520
- messageResponse = _context12.sent;
1160
+ messageResponse = _context7.sent;
1521
1161
  case 21:
1522
1162
  if (!messageResponse.message) {
1523
- _context12.next = 28;
1163
+ _context7.next = 28;
1524
1164
  break;
1525
1165
  }
1526
1166
  messageResponse.message.status = _utils.MessageStatusTypes.RECEIVED;
1527
1167
  if (!enableOfflineSupport) {
1528
- _context12.next = 26;
1168
+ _context7.next = 26;
1529
1169
  break;
1530
1170
  }
1531
- _context12.next = 26;
1171
+ _context7.next = 26;
1532
1172
  return dbApi.updateMessage({
1533
1173
  message: Object.assign({}, messageResponse.message, {
1534
1174
  cid: channel.cid
@@ -1544,12 +1184,12 @@ var ChannelWithContext = function ChannelWithContext(props) {
1544
1184
  message: messageResponse.message
1545
1185
  });
1546
1186
  case 28:
1547
- _context12.next = 40;
1187
+ _context7.next = 40;
1548
1188
  break;
1549
1189
  case 30:
1550
- _context12.prev = 30;
1551
- _context12.t0 = _context12["catch"](0);
1552
- console.log(_context12.t0);
1190
+ _context7.prev = 30;
1191
+ _context7.t0 = _context7["catch"](0);
1192
+ console.log(_context7.t0);
1553
1193
  message.status = _utils.MessageStatusTypes.FAILED;
1554
1194
  _updatedMessage2 = Object.assign({}, message, {
1555
1195
  cid: channel.cid
@@ -1559,10 +1199,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
1559
1199
  message: _updatedMessage2
1560
1200
  });
1561
1201
  if (!enableOfflineSupport) {
1562
- _context12.next = 40;
1202
+ _context7.next = 40;
1563
1203
  break;
1564
1204
  }
1565
- _context12.next = 40;
1205
+ _context7.next = 40;
1566
1206
  return dbApi.updateMessage({
1567
1207
  message: Object.assign({}, message, {
1568
1208
  cid: channel.cid
@@ -1570,20 +1210,20 @@ var ChannelWithContext = function ChannelWithContext(props) {
1570
1210
  });
1571
1211
  case 40:
1572
1212
  case "end":
1573
- return _context12.stop();
1213
+ return _context7.stop();
1574
1214
  }
1575
- }, _callee12, null, [[0, 30]]);
1215
+ }, _callee7, null, [[0, 30]]);
1576
1216
  }));
1577
- return function sendMessageRequest(_x4, _x5) {
1578
- return _ref15.apply(this, arguments);
1217
+ return function sendMessageRequest(_x3, _x4) {
1218
+ return _ref9.apply(this, arguments);
1579
1219
  };
1580
1220
  }();
1581
1221
  var sendMessage = function () {
1582
- var _ref16 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee13(message) {
1222
+ var _ref10 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(message) {
1583
1223
  var _channel$state;
1584
1224
  var messagePreview;
1585
- return _regenerator["default"].wrap(function _callee13$(_context13) {
1586
- while (1) switch (_context13.prev = _context13.next) {
1225
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
1226
+ while (1) switch (_context8.prev = _context8.next) {
1587
1227
  case 0:
1588
1228
  if (channel != null && (_channel$state = channel.state) != null && _channel$state.filterErrorMessages) {
1589
1229
  channel.state.filterErrorMessages();
@@ -1591,7 +1231,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
1591
1231
  messagePreview = createMessagePreview(Object.assign({}, message, {
1592
1232
  attachments: message.attachments || []
1593
1233
  }));
1594
- mergeOverlappingMessageSetsRef.current();
1595
1234
  updateMessage(messagePreview, {
1596
1235
  commands: [],
1597
1236
  messageInput: ''
@@ -1600,34 +1239,34 @@ var ChannelWithContext = function ChannelWithContext(props) {
1600
1239
  message: messagePreview
1601
1240
  });
1602
1241
  if (!enableOfflineSupport) {
1603
- _context13.next = 8;
1242
+ _context8.next = 7;
1604
1243
  break;
1605
1244
  }
1606
- _context13.next = 8;
1245
+ _context8.next = 7;
1607
1246
  return dbApi.upsertMessages({
1608
1247
  messages: [Object.assign({}, messagePreview, {
1609
1248
  cid: channel.cid,
1610
1249
  status: _utils.MessageStatusTypes.FAILED
1611
1250
  })]
1612
1251
  });
1613
- case 8:
1614
- _context13.next = 10;
1252
+ case 7:
1253
+ _context8.next = 9;
1615
1254
  return sendMessageRequest(messagePreview);
1616
- case 10:
1255
+ case 9:
1617
1256
  case "end":
1618
- return _context13.stop();
1257
+ return _context8.stop();
1619
1258
  }
1620
- }, _callee13);
1259
+ }, _callee8);
1621
1260
  }));
1622
- return function sendMessage(_x6) {
1623
- return _ref16.apply(this, arguments);
1261
+ return function sendMessage(_x5) {
1262
+ return _ref10.apply(this, arguments);
1624
1263
  };
1625
1264
  }();
1626
1265
  var retrySendMessage = function () {
1627
- var _ref17 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee14(message) {
1266
+ var _ref11 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(message) {
1628
1267
  var statusPendingMessage, messageWithoutReservedFields;
1629
- return _regenerator["default"].wrap(function _callee14$(_context14) {
1630
- while (1) switch (_context14.prev = _context14.next) {
1268
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
1269
+ while (1) switch (_context9.prev = _context9.next) {
1631
1270
  case 0:
1632
1271
  statusPendingMessage = Object.assign({}, message, {
1633
1272
  status: _utils.MessageStatusTypes.SENDING
@@ -1636,199 +1275,18 @@ var ChannelWithContext = function ChannelWithContext(props) {
1636
1275
  if (!(0, _utils.isBouncedMessage)(message)) {
1637
1276
  updateMessage(messageWithoutReservedFields);
1638
1277
  }
1639
- _context14.next = 5;
1278
+ _context9.next = 5;
1640
1279
  return sendMessageRequest(messageWithoutReservedFields, true);
1641
1280
  case 5:
1642
1281
  case "end":
1643
- return _context14.stop();
1282
+ return _context9.stop();
1644
1283
  }
1645
- }, _callee14);
1284
+ }, _callee9);
1646
1285
  }));
1647
- return function retrySendMessage(_x7) {
1648
- return _ref17.apply(this, arguments);
1286
+ return function retrySendMessage(_x6) {
1287
+ return _ref11.apply(this, arguments);
1649
1288
  };
1650
1289
  }();
1651
- var loadMoreFinished = (0, _react.useRef)((0, _debounce["default"])(function (updatedHasMore, newMessages) {
1652
- setLoading(false);
1653
- setLoadingMore(false);
1654
- setError(false);
1655
- setHasMore(updatedHasMore);
1656
- setMessages(newMessages);
1657
- }, defaultDebounceInterval, debounceOptions)).current;
1658
- var loadMore = (0, _react.useCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee15() {
1659
- var limit,
1660
- currentMessages,
1661
- oldestMessage,
1662
- oldestID,
1663
- queryResponse,
1664
- updatedHasMore,
1665
- _args15 = arguments;
1666
- return _regenerator["default"].wrap(function _callee15$(_context15) {
1667
- while (1) switch (_context15.prev = _context15.next) {
1668
- case 0:
1669
- limit = _args15.length > 0 && _args15[0] !== undefined ? _args15[0] : 20;
1670
- if (!(loadingMore || hasMore === false)) {
1671
- _context15.next = 3;
1672
- break;
1673
- }
1674
- return _context15.abrupt("return");
1675
- case 3:
1676
- currentMessages = channel.state.messages;
1677
- if (currentMessages.length) {
1678
- _context15.next = 6;
1679
- break;
1680
- }
1681
- return _context15.abrupt("return", setLoadingMore(false));
1682
- case 6:
1683
- oldestMessage = currentMessages && currentMessages[0];
1684
- if (!(oldestMessage && oldestMessage.status !== _utils.MessageStatusTypes.RECEIVED)) {
1685
- _context15.next = 9;
1686
- break;
1687
- }
1688
- return _context15.abrupt("return", setLoadingMore(false));
1689
- case 9:
1690
- setLoadingMore(true);
1691
- oldestID = oldestMessage && oldestMessage.id;
1692
- _context15.prev = 11;
1693
- if (!channel) {
1694
- _context15.next = 18;
1695
- break;
1696
- }
1697
- _context15.next = 15;
1698
- return channel.query({
1699
- messages: {
1700
- id_lt: oldestID,
1701
- limit: limit
1702
- }
1703
- });
1704
- case 15:
1705
- queryResponse = _context15.sent;
1706
- updatedHasMore = queryResponse.messages.length === limit;
1707
- loadMoreFinished(updatedHasMore, channel.state.messages);
1708
- case 18:
1709
- _context15.next = 25;
1710
- break;
1711
- case 20:
1712
- _context15.prev = 20;
1713
- _context15.t0 = _context15["catch"](11);
1714
- if (_context15.t0 instanceof Error) {
1715
- setError(_context15.t0);
1716
- } else {
1717
- setError(true);
1718
- }
1719
- setLoadingMore(false);
1720
- throw _context15.t0;
1721
- case 25:
1722
- case "end":
1723
- return _context15.stop();
1724
- }
1725
- }, _callee15, null, [[11, 20]]);
1726
- })), [channelId, hasMore, loadingMore]);
1727
- var loadMoreRecent = (0, _react.useCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee16() {
1728
- var limit,
1729
- latestMessageSet,
1730
- latestLengthBeforeMerge,
1731
- didMerge,
1732
- currentMessages,
1733
- recentMessage,
1734
- queryResponse,
1735
- gotAllRecentMessages,
1736
- currentSet,
1737
- _args16 = arguments;
1738
- return _regenerator["default"].wrap(function _callee16$(_context16) {
1739
- while (1) switch (_context16.prev = _context16.next) {
1740
- case 0:
1741
- limit = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : 5;
1742
- latestMessageSet = channel.state.messageSets.find(function (set) {
1743
- return set.isLatest;
1744
- });
1745
- latestLengthBeforeMerge = (latestMessageSet == null ? void 0 : latestMessageSet.messages.length) || 0;
1746
- didMerge = mergeOverlappingMessageSetsRef.current(true);
1747
- if (!didMerge) {
1748
- _context16.next = 12;
1749
- break;
1750
- }
1751
- if (!(latestMessageSet && latestLengthBeforeMerge >= limit)) {
1752
- _context16.next = 12;
1753
- break;
1754
- }
1755
- setLoadingMoreRecent(true);
1756
- channel.state.setIsUpToDate(true);
1757
- setHasNoMoreRecentMessagesToLoad(true);
1758
- loadMoreRecentFinished(channel.state.messages);
1759
- restartSetsMergeFuncRef.current();
1760
- return _context16.abrupt("return");
1761
- case 12:
1762
- if (!channel.state.isUpToDate) {
1763
- _context16.next = 15;
1764
- break;
1765
- }
1766
- setLoadingMoreRecent(false);
1767
- return _context16.abrupt("return");
1768
- case 15:
1769
- currentMessages = channel.state.messages;
1770
- recentMessage = currentMessages[currentMessages.length - 1];
1771
- if (!((recentMessage == null ? void 0 : recentMessage.status) !== _utils.MessageStatusTypes.RECEIVED)) {
1772
- _context16.next = 20;
1773
- break;
1774
- }
1775
- setLoadingMoreRecent(false);
1776
- return _context16.abrupt("return");
1777
- case 20:
1778
- setLoadingMoreRecent(true);
1779
- _context16.prev = 21;
1780
- if (!channel) {
1781
- _context16.next = 32;
1782
- break;
1783
- }
1784
- _context16.next = 25;
1785
- return channel.query({
1786
- messages: {
1787
- id_gte: recentMessage.id,
1788
- limit: limit
1789
- },
1790
- watch: true
1791
- });
1792
- case 25:
1793
- queryResponse = _context16.sent;
1794
- gotAllRecentMessages = queryResponse.messages.length < limit;
1795
- currentSet = channel.state.messageSets.find(function (set) {
1796
- return set.isCurrent;
1797
- });
1798
- if (gotAllRecentMessages && currentSet && !currentSet.isLatest) {
1799
- channel.state.messageSets = channel.state.messageSets.filter(function (set) {
1800
- return !set.isLatest;
1801
- });
1802
- currentSet.isLatest = true;
1803
- }
1804
- channel.state.setIsUpToDate(gotAllRecentMessages);
1805
- setHasNoMoreRecentMessagesToLoad(gotAllRecentMessages);
1806
- loadMoreRecentFinished(channel.state.messages);
1807
- case 32:
1808
- _context16.next = 40;
1809
- break;
1810
- case 34:
1811
- _context16.prev = 34;
1812
- _context16.t0 = _context16["catch"](21);
1813
- console.warn('Message pagination request failed with error', _context16.t0);
1814
- if (_context16.t0 instanceof Error) {
1815
- setError(_context16.t0);
1816
- } else {
1817
- setError(true);
1818
- }
1819
- setLoadingMoreRecent(false);
1820
- throw _context16.t0;
1821
- case 40:
1822
- case "end":
1823
- return _context16.stop();
1824
- }
1825
- }, _callee16, null, [[21, 34]]);
1826
- })), [channelId, hasNoMoreRecentMessagesToLoad]);
1827
- var loadMoreRecentFinished = (0, _react.useRef)((0, _debounce["default"])(function (newMessages) {
1828
- setLoadingMoreRecent(false);
1829
- setMessages(newMessages);
1830
- setError(false);
1831
- }, defaultDebounceInterval, debounceOptions)).current;
1832
1290
  var editMessage = function editMessage(updatedMessage) {
1833
1291
  return doUpdateMessageRequest ? doUpdateMessageRequest((channel == null ? void 0 : channel.cid) || '', updatedMessage) : client.updateMessage(updatedMessage);
1834
1292
  };
@@ -1846,43 +1304,43 @@ var ChannelWithContext = function ChannelWithContext(props) {
1846
1304
  return setQuotedMessage(undefined);
1847
1305
  };
1848
1306
  var removeMessage = function () {
1849
- var _ref20 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee17(message) {
1850
- return _regenerator["default"].wrap(function _callee17$(_context17) {
1851
- while (1) switch (_context17.prev = _context17.next) {
1307
+ var _ref12 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10(message) {
1308
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
1309
+ while (1) switch (_context10.prev = _context10.next) {
1852
1310
  case 0:
1853
1311
  if (channel) {
1854
1312
  channel.state.removeMessage(message);
1855
- setMessages(channel.state.messages);
1313
+ copyMessagesStateFromChannel(channel);
1856
1314
  if (thread) {
1857
1315
  setThreadMessages(channel.state.threads[thread.id] || []);
1858
1316
  }
1859
1317
  }
1860
1318
  if (!enableOfflineSupport) {
1861
- _context17.next = 4;
1319
+ _context10.next = 4;
1862
1320
  break;
1863
1321
  }
1864
- _context17.next = 4;
1322
+ _context10.next = 4;
1865
1323
  return dbApi.deleteMessage({
1866
1324
  id: message.id
1867
1325
  });
1868
1326
  case 4:
1869
1327
  case "end":
1870
- return _context17.stop();
1328
+ return _context10.stop();
1871
1329
  }
1872
- }, _callee17);
1330
+ }, _callee10);
1873
1331
  }));
1874
- return function removeMessage(_x8) {
1875
- return _ref20.apply(this, arguments);
1332
+ return function removeMessage(_x7) {
1333
+ return _ref12.apply(this, arguments);
1876
1334
  };
1877
1335
  }();
1878
1336
  var sendReaction = function () {
1879
- var _ref21 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee18(type, messageId) {
1337
+ var _ref13 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(type, messageId) {
1880
1338
  var payload, sendReactionResponse;
1881
- return _regenerator["default"].wrap(function _callee18$(_context18) {
1882
- while (1) switch (_context18.prev = _context18.next) {
1339
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
1340
+ while (1) switch (_context11.prev = _context11.next) {
1883
1341
  case 0:
1884
1342
  if (!(!(channel != null && channel.id) || !client.user)) {
1885
- _context18.next = 2;
1343
+ _context11.next = 2;
1886
1344
  break;
1887
1345
  }
1888
1346
  throw new Error('Channel has not been initialized');
@@ -1893,13 +1351,13 @@ var ChannelWithContext = function ChannelWithContext(props) {
1893
1351
  enforce_unique: enforceUniqueReaction
1894
1352
  }];
1895
1353
  if (enableOfflineSupport) {
1896
- _context18.next = 7;
1354
+ _context11.next = 7;
1897
1355
  break;
1898
1356
  }
1899
- _context18.next = 6;
1357
+ _context11.next = 6;
1900
1358
  return channel.sendReaction.apply(channel, payload);
1901
1359
  case 6:
1902
- return _context18.abrupt("return");
1360
+ return _context11.abrupt("return");
1903
1361
  case 7:
1904
1362
  (0, _addReactionToLocalState.addReactionToLocalState)({
1905
1363
  channel: channel,
@@ -1908,8 +1366,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
1908
1366
  reactionType: type,
1909
1367
  user: client.user
1910
1368
  });
1911
- setMessages(channel.state.messages);
1912
- _context18.next = 11;
1369
+ copyMessagesStateFromChannel(channel);
1370
+ _context11.next = 11;
1913
1371
  return _DBSyncManager.DBSyncManager.queueTask({
1914
1372
  client: client,
1915
1373
  task: {
@@ -1921,7 +1379,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1921
1379
  }
1922
1380
  });
1923
1381
  case 11:
1924
- sendReactionResponse = _context18.sent;
1382
+ sendReactionResponse = _context11.sent;
1925
1383
  if (sendReactionResponse != null && sendReactionResponse.message) {
1926
1384
  threadInstance == null ? void 0 : threadInstance.upsertReplyLocally == null ? void 0 : threadInstance.upsertReplyLocally({
1927
1385
  message: sendReactionResponse.message
@@ -1929,57 +1387,57 @@ var ChannelWithContext = function ChannelWithContext(props) {
1929
1387
  }
1930
1388
  case 13:
1931
1389
  case "end":
1932
- return _context18.stop();
1390
+ return _context11.stop();
1933
1391
  }
1934
- }, _callee18);
1392
+ }, _callee11);
1935
1393
  }));
1936
- return function sendReaction(_x9, _x10) {
1937
- return _ref21.apply(this, arguments);
1394
+ return function sendReaction(_x8, _x9) {
1395
+ return _ref13.apply(this, arguments);
1938
1396
  };
1939
1397
  }();
1940
1398
  var deleteMessage = function () {
1941
- var _ref22 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee19(message) {
1399
+ var _ref14 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee12(message) {
1942
1400
  var _updatedMessage3, _data;
1943
- return _regenerator["default"].wrap(function _callee19$(_context19) {
1944
- while (1) switch (_context19.prev = _context19.next) {
1401
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
1402
+ while (1) switch (_context12.prev = _context12.next) {
1945
1403
  case 0:
1946
1404
  if (channel.id) {
1947
- _context19.next = 2;
1405
+ _context12.next = 2;
1948
1406
  break;
1949
1407
  }
1950
1408
  throw new Error('Channel has not been initialized yet');
1951
1409
  case 2:
1952
1410
  if (enableOfflineSupport) {
1953
- _context19.next = 10;
1411
+ _context12.next = 10;
1954
1412
  break;
1955
1413
  }
1956
1414
  if (!(message.status === _utils.MessageStatusTypes.FAILED)) {
1957
- _context19.next = 7;
1415
+ _context12.next = 7;
1958
1416
  break;
1959
1417
  }
1960
- _context19.next = 6;
1418
+ _context12.next = 6;
1961
1419
  return removeMessage(message);
1962
1420
  case 6:
1963
- return _context19.abrupt("return");
1421
+ return _context12.abrupt("return");
1964
1422
  case 7:
1965
- _context19.next = 9;
1423
+ _context12.next = 9;
1966
1424
  return client.deleteMessage(message.id);
1967
1425
  case 9:
1968
- return _context19.abrupt("return");
1426
+ return _context12.abrupt("return");
1969
1427
  case 10:
1970
1428
  if (!(message.status === _utils.MessageStatusTypes.FAILED)) {
1971
- _context19.next = 17;
1429
+ _context12.next = 17;
1972
1430
  break;
1973
1431
  }
1974
- _context19.next = 13;
1432
+ _context12.next = 13;
1975
1433
  return _DBSyncManager.DBSyncManager.dropPendingTasks({
1976
1434
  messageId: message.id
1977
1435
  });
1978
1436
  case 13:
1979
- _context19.next = 15;
1437
+ _context12.next = 15;
1980
1438
  return removeMessage(message);
1981
1439
  case 15:
1982
- _context19.next = 24;
1440
+ _context12.next = 24;
1983
1441
  break;
1984
1442
  case 17:
1985
1443
  _updatedMessage3 = Object.assign({}, message, {
@@ -1991,7 +1449,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1991
1449
  threadInstance == null ? void 0 : threadInstance.upsertReplyLocally({
1992
1450
  message: _updatedMessage3
1993
1451
  });
1994
- _context19.next = 22;
1452
+ _context12.next = 22;
1995
1453
  return _DBSyncManager.DBSyncManager.queueTask({
1996
1454
  client: client,
1997
1455
  task: {
@@ -2003,41 +1461,41 @@ var ChannelWithContext = function ChannelWithContext(props) {
2003
1461
  }
2004
1462
  });
2005
1463
  case 22:
2006
- _data = _context19.sent;
1464
+ _data = _context12.sent;
2007
1465
  if (_data != null && _data.message) {
2008
1466
  updateMessage(Object.assign({}, _data.message));
2009
1467
  }
2010
1468
  case 24:
2011
1469
  case "end":
2012
- return _context19.stop();
1470
+ return _context12.stop();
2013
1471
  }
2014
- }, _callee19);
1472
+ }, _callee12);
2015
1473
  }));
2016
- return function deleteMessage(_x11) {
2017
- return _ref22.apply(this, arguments);
1474
+ return function deleteMessage(_x10) {
1475
+ return _ref14.apply(this, arguments);
2018
1476
  };
2019
1477
  }();
2020
1478
  var deleteReaction = function () {
2021
- var _ref23 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee20(type, messageId) {
1479
+ var _ref15 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee13(type, messageId) {
2022
1480
  var payload;
2023
- return _regenerator["default"].wrap(function _callee20$(_context20) {
2024
- while (1) switch (_context20.prev = _context20.next) {
1481
+ return _regenerator["default"].wrap(function _callee13$(_context13) {
1482
+ while (1) switch (_context13.prev = _context13.next) {
2025
1483
  case 0:
2026
1484
  if (!(!(channel != null && channel.id) || !client.user)) {
2027
- _context20.next = 2;
1485
+ _context13.next = 2;
2028
1486
  break;
2029
1487
  }
2030
1488
  throw new Error('Channel has not been initialized');
2031
1489
  case 2:
2032
1490
  payload = [messageId, type];
2033
1491
  if (enableOfflineSupport) {
2034
- _context20.next = 7;
1492
+ _context13.next = 7;
2035
1493
  break;
2036
1494
  }
2037
- _context20.next = 6;
1495
+ _context13.next = 6;
2038
1496
  return channel.deleteReaction.apply(channel, payload);
2039
1497
  case 6:
2040
- return _context20.abrupt("return");
1498
+ return _context13.abrupt("return");
2041
1499
  case 7:
2042
1500
  (0, _removeReactionFromLocalState.removeReactionFromLocalState)({
2043
1501
  channel: channel,
@@ -2045,8 +1503,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
2045
1503
  reactionType: type,
2046
1504
  user: client.user
2047
1505
  });
2048
- setMessages(channel.state.messages);
2049
- _context20.next = 11;
1506
+ copyMessagesStateFromChannel(channel);
1507
+ _context13.next = 11;
2050
1508
  return _DBSyncManager.DBSyncManager.queueTask({
2051
1509
  client: client,
2052
1510
  task: {
@@ -2059,12 +1517,12 @@ var ChannelWithContext = function ChannelWithContext(props) {
2059
1517
  });
2060
1518
  case 11:
2061
1519
  case "end":
2062
- return _context20.stop();
1520
+ return _context13.stop();
2063
1521
  }
2064
- }, _callee20);
1522
+ }, _callee13);
2065
1523
  }));
2066
- return function deleteReaction(_x12, _x13) {
2067
- return _ref23.apply(this, arguments);
1524
+ return function deleteReaction(_x11, _x12) {
1525
+ return _ref15.apply(this, arguments);
2068
1526
  };
2069
1527
  }();
2070
1528
  var openThread = (0, _react.useCallback)(function (message) {
@@ -2085,77 +1543,73 @@ var ChannelWithContext = function ChannelWithContext(props) {
2085
1543
  setThreadMessages(updatedThreadMessages);
2086
1544
  }, defaultDebounceInterval, debounceOptions)).current;
2087
1545
  var loadMoreThread = function () {
2088
- var _ref24 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee21() {
1546
+ var _ref16 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee14() {
2089
1547
  var _threadMessages$, parentID, oldestMessageID, limit, queryResponse, updatedHasMore, updatedThreadMessages;
2090
- return _regenerator["default"].wrap(function _callee21$(_context21) {
2091
- while (1) switch (_context21.prev = _context21.next) {
1548
+ return _regenerator["default"].wrap(function _callee14$(_context14) {
1549
+ while (1) switch (_context14.prev = _context14.next) {
2092
1550
  case 0:
2093
1551
  if (!(threadLoadingMore || !(thread != null && thread.id))) {
2094
- _context21.next = 2;
1552
+ _context14.next = 2;
2095
1553
  break;
2096
1554
  }
2097
- return _context21.abrupt("return");
1555
+ return _context14.abrupt("return");
2098
1556
  case 2:
2099
1557
  setThreadLoadingMore(true);
2100
- _context21.prev = 3;
1558
+ _context14.prev = 3;
2101
1559
  if (!channel) {
2102
- _context21.next = 15;
1560
+ _context14.next = 15;
2103
1561
  break;
2104
1562
  }
2105
1563
  parentID = thread.id;
2106
1564
  channel.state.threads[parentID] = threadMessages;
2107
1565
  oldestMessageID = threadMessages == null ? void 0 : (_threadMessages$ = threadMessages[0]) == null ? void 0 : _threadMessages$.id;
2108
1566
  limit = 50;
2109
- _context21.next = 11;
1567
+ _context14.next = 11;
2110
1568
  return channel.getReplies(parentID, {
2111
1569
  id_lt: oldestMessageID,
2112
1570
  limit: limit
2113
1571
  });
2114
1572
  case 11:
2115
- queryResponse = _context21.sent;
1573
+ queryResponse = _context14.sent;
2116
1574
  updatedHasMore = queryResponse.messages.length === limit;
2117
1575
  updatedThreadMessages = channel.state.threads[parentID] || [];
2118
1576
  loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);
2119
1577
  case 15:
2120
- _context21.next = 23;
1578
+ _context14.next = 23;
2121
1579
  break;
2122
1580
  case 17:
2123
- _context21.prev = 17;
2124
- _context21.t0 = _context21["catch"](3);
2125
- console.warn('Message pagination request failed with error', _context21.t0);
2126
- if (_context21.t0 instanceof Error) {
2127
- setError(_context21.t0);
1581
+ _context14.prev = 17;
1582
+ _context14.t0 = _context14["catch"](3);
1583
+ console.warn('Message pagination request failed with error', _context14.t0);
1584
+ if (_context14.t0 instanceof Error) {
1585
+ setError(_context14.t0);
2128
1586
  } else {
2129
1587
  setError(true);
2130
1588
  }
2131
1589
  setThreadLoadingMore(false);
2132
- throw _context21.t0;
1590
+ throw _context14.t0;
2133
1591
  case 23:
2134
1592
  case "end":
2135
- return _context21.stop();
1593
+ return _context14.stop();
2136
1594
  }
2137
- }, _callee21, null, [[3, 17]]);
1595
+ }, _callee14, null, [[3, 17]]);
2138
1596
  }));
2139
1597
  return function loadMoreThread() {
2140
- return _ref24.apply(this, arguments);
1598
+ return _ref16.apply(this, arguments);
2141
1599
  };
2142
1600
  }();
2143
- var disabledValue = (0, _react.useMemo)(function () {
2144
- var _channel$data;
2145
- return !!(channel != null && (_channel$data = channel.data) != null && _channel$data.frozen) && disableIfFrozenChannel;
2146
- }, [(_channel$data2 = channel.data) == null ? void 0 : _channel$data2.frozen, disableIfFrozenChannel]);
2147
1601
  var ownCapabilitiesContext = (0, _useCreateOwnCapabilitiesContext.useCreateOwnCapabilitiesContext)({
2148
1602
  channel: channel,
2149
1603
  overrideCapabilities: overrideOwnCapabilities
2150
1604
  });
2151
1605
  var channelContext = (0, _useCreateChannelContext.useCreateChannelContext)({
2152
1606
  channel: channel,
2153
- disabled: disabledValue,
1607
+ disabled: !!(channel != null && (_channel$data = channel.data) != null && _channel$data.frozen),
2154
1608
  EmptyStateIndicator: EmptyStateIndicator,
2155
1609
  enableMessageGroupingByUser: enableMessageGroupingByUser,
2156
1610
  enforceUniqueReaction: enforceUniqueReaction,
2157
1611
  error: error,
2158
- giphyEnabled: giphyEnabled != null ? giphyEnabled : !!((_ref25 = (clientChannelConfig == null ? void 0 : clientChannelConfig.commands) || []) != null && _ref25.some(function (command) {
1612
+ giphyEnabled: giphyEnabled != null ? giphyEnabled : !!((_ref17 = (clientChannelConfig == null ? void 0 : clientChannelConfig.commands) || []) != null && _ref17.some(function (command) {
2159
1613
  return command.name === 'giphy';
2160
1614
  })),
2161
1615
  hideDateSeparators: hideDateSeparators,
@@ -2163,13 +1617,13 @@ var ChannelWithContext = function ChannelWithContext(props) {
2163
1617
  isChannelActive: shouldSyncChannel,
2164
1618
  lastRead: lastRead,
2165
1619
  loadChannelAroundMessage: loadChannelAroundMessage,
2166
- loading: loading,
1620
+ loading: channelMessagesState.loading,
2167
1621
  LoadingIndicator: LoadingIndicator,
2168
1622
  markRead: markRead,
2169
1623
  maxTimeBetweenGroupedMessages: maxTimeBetweenGroupedMessages,
2170
- members: members,
1624
+ members: (_channelState$members = channelState.members) != null ? _channelState$members : {},
2171
1625
  NetworkDownIndicator: NetworkDownIndicator,
2172
- read: read,
1626
+ read: (_channelState$read = channelState.read) != null ? _channelState$read : {},
2173
1627
  reloadChannel: reloadChannel,
2174
1628
  scrollToFirstUnreadThreshold: scrollToFirstUnreadThreshold,
2175
1629
  setLastRead: setLastRead,
@@ -2178,8 +1632,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
2178
1632
  targetedMessage: targetedMessage,
2179
1633
  threadList: threadList,
2180
1634
  uploadAbortControllerRef: uploadAbortControllerRef,
2181
- watcherCount: watcherCount,
2182
- watchers: watchers
1635
+ watcherCount: channelState.watcherCount,
1636
+ watchers: channelState.watchers
2183
1637
  });
2184
1638
  var sendMessageRef = (0, _react.useRef)(sendMessage);
2185
1639
  sendMessageRef.current = sendMessage;
@@ -2224,7 +1678,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2224
1678
  InputEditingStateHeader: InputEditingStateHeader,
2225
1679
  InputGiphySearch: InputGiphySearch,
2226
1680
  InputReplyStateHeader: InputReplyStateHeader,
2227
- maxMessageLength: (_ref26 = maxMessageLengthProp != null ? maxMessageLengthProp : clientChannelConfig == null ? void 0 : clientChannelConfig.max_message_length) != null ? _ref26 : undefined,
1681
+ maxMessageLength: (_ref18 = maxMessageLengthProp != null ? maxMessageLengthProp : clientChannelConfig == null ? void 0 : clientChannelConfig.max_message_length) != null ? _ref18 : undefined,
2228
1682
  maxNumberOfFiles: maxNumberOfFiles,
2229
1683
  mentionAllAppUsersEnabled: mentionAllAppUsersEnabled,
2230
1684
  mentionAllAppUsersQuery: mentionAllAppUsersQuery,
@@ -2243,19 +1697,18 @@ var ChannelWithContext = function ChannelWithContext(props) {
2243
1697
  setQuotedMessageState: setQuotedMessageState,
2244
1698
  ShowThreadMessageInChannelButton: ShowThreadMessageInChannelButton,
2245
1699
  StartAudioRecordingButton: StartAudioRecordingButton,
1700
+ StopMessageStreamingButton: StopMessageStreamingButton,
2246
1701
  UploadProgressIndicator: UploadProgressIndicator
2247
1702
  });
2248
1703
  var messageListContext = (0, _useCreatePaginatedMessageListContext.useCreatePaginatedMessageListContext)({
2249
1704
  channelId: channelId,
2250
- hasMore: hasMore,
2251
- hasNoMoreRecentMessagesToLoad: hasNoMoreRecentMessagesToLoad,
2252
- loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,
2253
- loadingMoreRecent: loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,
1705
+ hasMore: channelMessagesState.hasMore,
1706
+ loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : channelMessagesState.loadingMore,
1707
+ loadingMoreRecent: loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : channelMessagesState.loadingMoreRecent,
1708
+ loadLatestMessages: loadLatestMessages,
2254
1709
  loadMore: loadMore,
2255
1710
  loadMoreRecent: loadMoreRecent,
2256
- messages: messages,
2257
- setLoadingMore: setLoadingMore,
2258
- setLoadingMoreRecent: setLoadingMoreRecent
1711
+ messages: (_channelMessagesState3 = channelMessagesState.messages) != null ? _channelMessagesState3 : []
2259
1712
  });
2260
1713
  var messagesContext = (0, _useCreateMessagesContext.useCreateMessagesContext)({
2261
1714
  additionalPressableProps: additionalPressableProps,
@@ -2301,6 +1754,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2301
1754
  InlineDateSeparator: InlineDateSeparator,
2302
1755
  InlineUnreadIndicator: InlineUnreadIndicator,
2303
1756
  isAttachmentEqual: isAttachmentEqual,
1757
+ isMessageAIGenerated: isMessageAIGenerated,
2304
1758
  legacyImageViewerSwipeBehaviour: legacyImageViewerSwipeBehaviour,
2305
1759
  markdownRules: markdownRules,
2306
1760
  Message: Message,
@@ -2348,6 +1802,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2348
1802
  setEditingState: setEditingState,
2349
1803
  setQuotedMessageState: setQuotedMessageState,
2350
1804
  shouldShowUnreadUnderlay: shouldShowUnreadUnderlay,
1805
+ StreamingMessageView: StreamingMessageView,
2351
1806
  supportedReactions: supportedReactions,
2352
1807
  targetedMessage: targetedMessage,
2353
1808
  TypingIndicator: TypingIndicator,
@@ -2375,10 +1830,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
2375
1830
  threadMessages: threadMessages
2376
1831
  });
2377
1832
  var typingContext = (0, _useCreateTypingContext.useCreateTypingContext)({
2378
- typing: typing
1833
+ typing: (_channelState$typing = channelState.typing) != null ? _channelState$typing : {}
2379
1834
  });
2380
1835
  if (deleted) return null;
2381
- if (!channel || error && messages.length === 0) {
1836
+ if (!channel || error && ((_channelMessagesState4 = channelMessagesState.messages) == null ? void 0 : _channelMessagesState4.length) === 0) {
2382
1837
  return (0, _jsxRuntime.jsx)(LoadingErrorIndicator, {
2383
1838
  error: error,
2384
1839
  listType: "message",
@@ -2434,7 +1889,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
2434
1889
  var Channel = function Channel(props) {
2435
1890
  var _useChatContext = (0, _ChatContext.useChatContext)(),
2436
1891
  client = _useChatContext.client,
2437
- enableOfflineSupport = _useChatContext.enableOfflineSupport;
1892
+ enableOfflineSupport = _useChatContext.enableOfflineSupport,
1893
+ isMessageAIGenerated = _useChatContext.isMessageAIGenerated;
2438
1894
  var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
2439
1895
  t = _useTranslationContex.t;
2440
1896
  var threadFromProps = props == null ? void 0 : props.thread;
@@ -2446,41 +1902,18 @@ var Channel = function Channel(props) {
2446
1902
  };
2447
1903
  var shouldSyncChannel = threadMessage != null && threadMessage.id ? !!props.threadList : true;
2448
1904
  var _useChannelState = (0, _useChannelState2.useChannelState)(props.channel, props.threadList ? threadMessage == null ? void 0 : threadMessage.id : undefined),
2449
- members = _useChannelState.members,
2450
- messages = _useChannelState.messages,
2451
- read = _useChannelState.read,
2452
- setMembers = _useChannelState.setMembers,
2453
- setMessages = _useChannelState.setMessages,
2454
- setRead = _useChannelState.setRead,
2455
1905
  setThreadMessages = _useChannelState.setThreadMessages,
2456
- setTyping = _useChannelState.setTyping,
2457
- setWatcherCount = _useChannelState.setWatcherCount,
2458
- setWatchers = _useChannelState.setWatchers,
2459
- threadMessages = _useChannelState.threadMessages,
2460
- typing = _useChannelState.typing,
2461
- watcherCount = _useChannelState.watcherCount,
2462
- watchers = _useChannelState.watchers;
1906
+ threadMessages = _useChannelState.threadMessages;
2463
1907
  return (0, _jsxRuntime.jsx)(ChannelWithContext, Object.assign({
2464
1908
  client: client,
2465
1909
  enableOfflineSupport: enableOfflineSupport,
2466
1910
  t: t
2467
1911
  }, props, {
2468
1912
  shouldSyncChannel: shouldSyncChannel,
2469
- members: members,
2470
- messages: props.messages || messages,
2471
- read: read,
2472
- setMembers: setMembers,
2473
- setMessages: setMessages,
2474
- setRead: setRead,
1913
+ isMessageAIGenerated: isMessageAIGenerated,
2475
1914
  setThreadMessages: setThreadMessages,
2476
- setTyping: setTyping,
2477
- setWatcherCount: setWatcherCount,
2478
- setWatchers: setWatchers,
2479
1915
  thread: thread,
2480
- threadMessages: threadMessages,
2481
- typing: typing,
2482
- watcherCount: watcherCount,
2483
- watchers: watchers
1916
+ threadMessages: threadMessages
2484
1917
  }));
2485
1918
  };
2486
1919
  exports.Channel = Channel;