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