stream-chat-react-native-core 5.0.0-offline-support.14 → 5.1.0-beta.1

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 (574) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +1 -1
  2. package/lib/commonjs/components/Attachment/AttachmentActions.js +1 -1
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js +1 -1
  4. package/lib/commonjs/components/Attachment/Card.js +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachment.js +17 -8
  6. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +1 -1
  8. package/lib/commonjs/components/Attachment/FileIcon.js +1 -1
  9. package/lib/commonjs/components/Attachment/Gallery.js +20 -18
  10. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/GalleryImage.js +1 -1
  12. package/lib/commonjs/components/Attachment/Giphy.js +11 -11
  13. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  14. package/lib/commonjs/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  15. package/lib/commonjs/components/Attachment/ImageLoadingIndicator.js +1 -1
  16. package/lib/commonjs/components/Attachment/VideoThumbnail.js +1 -1
  17. package/lib/commonjs/components/Attachment/utils/getGiphyMimeType.js +15 -0
  18. package/lib/commonjs/components/Attachment/utils/getGiphyMimeType.js.map +1 -0
  19. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  20. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  21. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  22. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  23. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  24. package/lib/commonjs/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  25. package/lib/commonjs/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  26. package/lib/commonjs/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  27. package/lib/commonjs/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  28. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  29. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  30. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  31. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  32. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  33. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  34. package/lib/commonjs/components/Avatar/GroupAvatar.js +1 -1
  35. package/lib/commonjs/components/Channel/Channel.js +2 -2
  36. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  37. package/lib/commonjs/components/ChannelList/ChannelList.js +1 -1
  38. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  39. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  40. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  41. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  42. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +1 -1
  43. package/lib/commonjs/components/ChannelList/Skeleton.js +1 -1
  44. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +16 -4
  45. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  46. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  47. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  48. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +1 -1
  49. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +11 -7
  50. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  51. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
  52. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  53. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  54. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  55. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  56. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  57. package/lib/commonjs/components/Chat/Chat.js +1 -1
  58. package/lib/commonjs/components/ImageGallery/ImageGallery.js +39 -31
  59. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  60. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  61. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  62. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  63. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  64. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  65. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  66. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +3 -3
  67. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  68. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +1 -1
  69. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js +6 -0
  70. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  71. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +1 -1
  72. package/lib/commonjs/components/Indicators/LoadingDot.js +1 -1
  73. package/lib/commonjs/components/Indicators/LoadingDots.js +1 -1
  74. package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js +1 -1
  75. package/lib/commonjs/components/Indicators/LoadingIndicator.js +1 -1
  76. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  77. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  78. package/lib/commonjs/components/Message/Message.js +7 -7
  79. package/lib/commonjs/components/Message/Message.js.map +1 -1
  80. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +1 -1
  81. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
  82. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +1 -1
  83. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +1 -1
  84. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  85. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +1 -1
  86. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  87. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +1 -1
  88. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +1 -1
  89. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +8 -4
  90. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  91. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +1 -1
  92. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +2 -2
  93. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  94. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  95. package/lib/commonjs/components/Message/hooks/useMessageActions.js +1 -1
  96. package/lib/commonjs/components/MessageInput/AttachButton.js +1 -1
  97. package/lib/commonjs/components/MessageInput/CommandsButton.js +1 -1
  98. package/lib/commonjs/components/MessageInput/CooldownTimer.js +1 -1
  99. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -1
  100. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +50 -32
  101. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  102. package/lib/commonjs/components/MessageInput/InputButtons.js +1 -1
  103. package/lib/commonjs/components/MessageInput/MessageInput.js +1 -1
  104. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +1 -1
  105. package/lib/commonjs/components/MessageInput/SendButton.js +1 -1
  106. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  107. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  108. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js +1 -1
  109. package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  110. package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js +1 -1
  111. package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  112. package/lib/commonjs/components/MessageList/DateHeader.js +1 -1
  113. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +1 -1
  114. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  115. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  116. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  117. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +1 -1
  118. package/lib/commonjs/components/MessageList/MessageList.js +6 -6
  119. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  120. package/lib/commonjs/components/MessageList/MessageSystem.js +1 -1
  121. package/lib/commonjs/components/MessageList/NetworkDownIndicator.js +1 -1
  122. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  123. package/lib/commonjs/components/MessageList/TypingIndicator.js +1 -1
  124. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js +1 -1
  125. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +1 -1
  126. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +1 -1
  127. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +1 -1
  128. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +1 -1
  129. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +1 -1
  130. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +1 -1
  131. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  132. package/lib/commonjs/components/ProgressControl/ProgressControl.js +1 -1
  133. package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  134. package/lib/commonjs/components/Reply/Reply.js +1 -1
  135. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  136. package/lib/commonjs/components/Thread/Thread.js +1 -1
  137. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +1 -1
  138. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  139. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  140. package/lib/commonjs/contexts/channelContext/ChannelContext.js +1 -1
  141. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +1 -1
  142. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  143. package/lib/commonjs/contexts/chatContext/ChatContext.js +1 -1
  144. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +14 -15
  145. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  146. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
  147. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +1 -1
  148. package/lib/commonjs/contexts/messageContext/MessageContext.js +1 -1
  149. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +1 -1
  150. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  151. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  152. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +1 -1
  153. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  154. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -1
  155. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  156. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +1 -1
  157. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  158. package/lib/commonjs/contexts/themeContext/ThemeContext.js +1 -1
  159. package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
  160. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  161. package/lib/commonjs/contexts/threadContext/ThreadContext.js +1 -1
  162. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
  163. package/lib/commonjs/contexts/typingContext/TypingContext.js +1 -1
  164. package/lib/commonjs/icons/ArrowRight.js +1 -1
  165. package/lib/commonjs/icons/AtMentions.js +1 -1
  166. package/lib/commonjs/icons/Attach.js +1 -1
  167. package/lib/commonjs/icons/Audio.js +1 -1
  168. package/lib/commonjs/icons/CSV.js +1 -1
  169. package/lib/commonjs/icons/Camera.js +1 -1
  170. package/lib/commonjs/icons/Check.js +1 -1
  171. package/lib/commonjs/icons/CheckAll.js +1 -1
  172. package/lib/commonjs/icons/CheckSend.js +1 -1
  173. package/lib/commonjs/icons/CircleClose.js +1 -1
  174. package/lib/commonjs/icons/CirclePlus.js +1 -1
  175. package/lib/commonjs/icons/CircleRight.js +1 -1
  176. package/lib/commonjs/icons/Close.js +1 -1
  177. package/lib/commonjs/icons/Copy.js +1 -1
  178. package/lib/commonjs/icons/CurveLineLeftUp.js +1 -1
  179. package/lib/commonjs/icons/DOC.js +1 -1
  180. package/lib/commonjs/icons/DOCX.js +1 -1
  181. package/lib/commonjs/icons/Delete.js +1 -1
  182. package/lib/commonjs/icons/Down.js +1 -1
  183. package/lib/commonjs/icons/DownloadArrow.js +1 -1
  184. package/lib/commonjs/icons/DownloadCloud.js +1 -1
  185. package/lib/commonjs/icons/Edit.js +1 -1
  186. package/lib/commonjs/icons/Error.js +1 -1
  187. package/lib/commonjs/icons/Eye.js +1 -1
  188. package/lib/commonjs/icons/Flag.js +1 -1
  189. package/lib/commonjs/icons/Folder.js +1 -1
  190. package/lib/commonjs/icons/GenericFile.js +1 -1
  191. package/lib/commonjs/icons/GiphyIcon.js +1 -1
  192. package/lib/commonjs/icons/Grid.js +1 -1
  193. package/lib/commonjs/icons/Group.js +1 -1
  194. package/lib/commonjs/icons/HTML.js +1 -1
  195. package/lib/commonjs/icons/Imgur.js +1 -1
  196. package/lib/commonjs/icons/LOLReaction.js +1 -1
  197. package/lib/commonjs/icons/Lightning.js +1 -1
  198. package/lib/commonjs/icons/Link.js +1 -1
  199. package/lib/commonjs/icons/Loading.js +1 -1
  200. package/lib/commonjs/icons/Logo.js +1 -1
  201. package/lib/commonjs/icons/LoveReaction.js +1 -1
  202. package/lib/commonjs/icons/MD.js +1 -1
  203. package/lib/commonjs/icons/MailOpen.js +1 -1
  204. package/lib/commonjs/icons/MenuPointHorizontal.js +1 -1
  205. package/lib/commonjs/icons/MenuPointVertical.js +1 -1
  206. package/lib/commonjs/icons/MessageFlag.js +1 -1
  207. package/lib/commonjs/icons/MessageIcon.js +1 -1
  208. package/lib/commonjs/icons/Mute.js +1 -1
  209. package/lib/commonjs/icons/Notification.js +1 -1
  210. package/lib/commonjs/icons/ODT.js +1 -1
  211. package/lib/commonjs/icons/PDF.js +1 -1
  212. package/lib/commonjs/icons/PPT.js +1 -1
  213. package/lib/commonjs/icons/PPTX.js +1 -1
  214. package/lib/commonjs/icons/Pause.js +1 -1
  215. package/lib/commonjs/icons/Picture.js +1 -1
  216. package/lib/commonjs/icons/Pin.js +1 -1
  217. package/lib/commonjs/icons/PinHeader.js +1 -1
  218. package/lib/commonjs/icons/Play.js +1 -1
  219. package/lib/commonjs/icons/RAR.js +1 -1
  220. package/lib/commonjs/icons/RTF.js +1 -1
  221. package/lib/commonjs/icons/Recorder.js +1 -1
  222. package/lib/commonjs/icons/Refresh.js +1 -1
  223. package/lib/commonjs/icons/SEVEN_Z.js +1 -1
  224. package/lib/commonjs/icons/Search.js +1 -1
  225. package/lib/commonjs/icons/SendRight.js +1 -1
  226. package/lib/commonjs/icons/SendUp.js +1 -1
  227. package/lib/commonjs/icons/Share.js +1 -1
  228. package/lib/commonjs/icons/ShareRightArrow.js +1 -1
  229. package/lib/commonjs/icons/Smile.js +1 -1
  230. package/lib/commonjs/icons/Sound.js +1 -1
  231. package/lib/commonjs/icons/TAR.js +1 -1
  232. package/lib/commonjs/icons/TXT.js +1 -1
  233. package/lib/commonjs/icons/ThreadReply.js +1 -1
  234. package/lib/commonjs/icons/ThumbsDownReaction.js +1 -1
  235. package/lib/commonjs/icons/ThumbsUpReaction.js +1 -1
  236. package/lib/commonjs/icons/Time.js +1 -1
  237. package/lib/commonjs/icons/Unknown.js +1 -1
  238. package/lib/commonjs/icons/Unpin.js +1 -1
  239. package/lib/commonjs/icons/User.js +1 -1
  240. package/lib/commonjs/icons/UserAdd.js +1 -1
  241. package/lib/commonjs/icons/UserAdmin.js +1 -1
  242. package/lib/commonjs/icons/UserDelete.js +1 -1
  243. package/lib/commonjs/icons/UserMinus.js +1 -1
  244. package/lib/commonjs/icons/Video.js +1 -1
  245. package/lib/commonjs/icons/Warning.js +1 -1
  246. package/lib/commonjs/icons/WutReaction.js +1 -1
  247. package/lib/commonjs/icons/XLS.js +1 -1
  248. package/lib/commonjs/icons/XLSX.js +1 -1
  249. package/lib/commonjs/icons/ZIP.js +1 -1
  250. package/lib/commonjs/icons/utils/base.js +1 -1
  251. package/lib/commonjs/index.js +13 -1
  252. package/lib/commonjs/index.js.map +1 -1
  253. package/lib/commonjs/mock-builders/DB/mock.js +1 -13
  254. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  255. package/lib/commonjs/mock-builders/event/messageNew.js +2 -0
  256. package/lib/commonjs/mock-builders/event/messageNew.js.map +1 -1
  257. package/lib/commonjs/store/QuickSqliteClient.js +7 -3
  258. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  259. package/lib/commonjs/store/apis/index.js +264 -0
  260. package/lib/commonjs/store/apis/index.js.map +1 -0
  261. package/lib/commonjs/test-utils/BetterSqlite.js +54 -0
  262. package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -0
  263. package/lib/commonjs/version.json +1 -1
  264. package/lib/module/components/Attachment/Attachment.js +1 -1
  265. package/lib/module/components/Attachment/AttachmentActions.js +1 -1
  266. package/lib/module/components/Attachment/AudioAttachment.js +1 -1
  267. package/lib/module/components/Attachment/Card.js +1 -1
  268. package/lib/module/components/Attachment/FileAttachment.js +17 -8
  269. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  270. package/lib/module/components/Attachment/FileAttachmentGroup.js +1 -1
  271. package/lib/module/components/Attachment/FileIcon.js +1 -1
  272. package/lib/module/components/Attachment/Gallery.js +20 -18
  273. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  274. package/lib/module/components/Attachment/GalleryImage.js +1 -1
  275. package/lib/module/components/Attachment/Giphy.js +11 -11
  276. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  277. package/lib/module/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  278. package/lib/module/components/Attachment/ImageLoadingIndicator.js +1 -1
  279. package/lib/module/components/Attachment/VideoThumbnail.js +1 -1
  280. package/lib/module/components/Attachment/utils/getGiphyMimeType.js +15 -0
  281. package/lib/module/components/Attachment/utils/getGiphyMimeType.js.map +1 -0
  282. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  283. package/lib/module/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  284. package/lib/module/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  285. package/lib/module/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  286. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  287. package/lib/module/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  288. package/lib/module/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  289. package/lib/module/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  290. package/lib/module/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  291. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  292. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  293. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  294. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  295. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  296. package/lib/module/components/Avatar/Avatar.js +1 -1
  297. package/lib/module/components/Avatar/GroupAvatar.js +1 -1
  298. package/lib/module/components/Channel/Channel.js +2 -2
  299. package/lib/module/components/Channel/Channel.js.map +1 -1
  300. package/lib/module/components/ChannelList/ChannelList.js +1 -1
  301. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  302. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  303. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  304. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  305. package/lib/module/components/ChannelList/ChannelListMessenger.js +1 -1
  306. package/lib/module/components/ChannelList/Skeleton.js +1 -1
  307. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +16 -4
  308. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  309. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  310. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  311. package/lib/module/components/ChannelPreview/ChannelAvatar.js +1 -1
  312. package/lib/module/components/ChannelPreview/ChannelPreview.js +11 -7
  313. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  314. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
  315. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  316. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  317. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  318. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  319. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  320. package/lib/module/components/Chat/Chat.js +1 -1
  321. package/lib/module/components/ImageGallery/ImageGallery.js +39 -31
  322. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  323. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  324. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  325. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  326. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  327. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  328. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  329. package/lib/module/components/ImageGallery/components/ImageGrid.js +3 -3
  330. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  331. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +1 -1
  332. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js +6 -0
  333. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  334. package/lib/module/components/Indicators/EmptyStateIndicator.js +1 -1
  335. package/lib/module/components/Indicators/LoadingDot.js +1 -1
  336. package/lib/module/components/Indicators/LoadingDots.js +1 -1
  337. package/lib/module/components/Indicators/LoadingErrorIndicator.js +1 -1
  338. package/lib/module/components/Indicators/LoadingIndicator.js +1 -1
  339. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  340. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  341. package/lib/module/components/Message/Message.js +7 -7
  342. package/lib/module/components/Message/Message.js.map +1 -1
  343. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +1 -1
  344. package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
  345. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +1 -1
  346. package/lib/module/components/Message/MessageSimple/MessageFooter.js +1 -1
  347. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  348. package/lib/module/components/Message/MessageSimple/MessageReplies.js +1 -1
  349. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  350. package/lib/module/components/Message/MessageSimple/MessageSimple.js +1 -1
  351. package/lib/module/components/Message/MessageSimple/MessageStatus.js +1 -1
  352. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +8 -4
  353. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  354. package/lib/module/components/Message/MessageSimple/ReactionList.js +1 -1
  355. package/lib/module/components/Message/MessageSimple/utils/renderText.js +2 -2
  356. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  357. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  358. package/lib/module/components/Message/hooks/useMessageActions.js +1 -1
  359. package/lib/module/components/MessageInput/AttachButton.js +1 -1
  360. package/lib/module/components/MessageInput/CommandsButton.js +1 -1
  361. package/lib/module/components/MessageInput/CooldownTimer.js +1 -1
  362. package/lib/module/components/MessageInput/FileUploadPreview.js +1 -1
  363. package/lib/module/components/MessageInput/ImageUploadPreview.js +50 -32
  364. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  365. package/lib/module/components/MessageInput/InputButtons.js +1 -1
  366. package/lib/module/components/MessageInput/MessageInput.js +1 -1
  367. package/lib/module/components/MessageInput/MoreOptionsButton.js +1 -1
  368. package/lib/module/components/MessageInput/SendButton.js +1 -1
  369. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  370. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  371. package/lib/module/components/MessageInput/UploadProgressIndicator.js +1 -1
  372. package/lib/module/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  373. package/lib/module/components/MessageInput/components/InputGiphySearch.js +1 -1
  374. package/lib/module/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  375. package/lib/module/components/MessageList/DateHeader.js +1 -1
  376. package/lib/module/components/MessageList/InlineDateSeparator.js +1 -1
  377. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  378. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  379. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  380. package/lib/module/components/MessageList/InlineUnreadIndicator.js +1 -1
  381. package/lib/module/components/MessageList/MessageList.js +6 -6
  382. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  383. package/lib/module/components/MessageList/MessageSystem.js +1 -1
  384. package/lib/module/components/MessageList/NetworkDownIndicator.js +1 -1
  385. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  386. package/lib/module/components/MessageList/TypingIndicator.js +1 -1
  387. package/lib/module/components/MessageList/TypingIndicatorContainer.js +1 -1
  388. package/lib/module/components/MessageOverlay/MessageActionList.js +1 -1
  389. package/lib/module/components/MessageOverlay/MessageActionListItem.js +1 -1
  390. package/lib/module/components/MessageOverlay/MessageOverlay.js +1 -1
  391. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +1 -1
  392. package/lib/module/components/MessageOverlay/OverlayReactionList.js +1 -1
  393. package/lib/module/components/MessageOverlay/OverlayReactions.js +1 -1
  394. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  395. package/lib/module/components/ProgressControl/ProgressControl.js +1 -1
  396. package/lib/module/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  397. package/lib/module/components/Reply/Reply.js +1 -1
  398. package/lib/module/components/Spinner/Spinner.js +1 -1
  399. package/lib/module/components/Thread/Thread.js +1 -1
  400. package/lib/module/components/Thread/components/ThreadFooterComponent.js +1 -1
  401. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  402. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  403. package/lib/module/contexts/channelContext/ChannelContext.js +1 -1
  404. package/lib/module/contexts/channelsContext/ChannelsContext.js +1 -1
  405. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  406. package/lib/module/contexts/chatContext/ChatContext.js +1 -1
  407. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +14 -15
  408. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  409. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
  410. package/lib/module/contexts/keyboardContext/KeyboardContext.js +1 -1
  411. package/lib/module/contexts/messageContext/MessageContext.js +1 -1
  412. package/lib/module/contexts/messageInputContext/MessageInputContext.js +1 -1
  413. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  414. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  415. package/lib/module/contexts/messagesContext/MessagesContext.js +1 -1
  416. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  417. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -1
  418. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  419. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +1 -1
  420. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  421. package/lib/module/contexts/themeContext/ThemeContext.js +1 -1
  422. package/lib/module/contexts/themeContext/utils/theme.js +1 -0
  423. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  424. package/lib/module/contexts/threadContext/ThreadContext.js +1 -1
  425. package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
  426. package/lib/module/contexts/typingContext/TypingContext.js +1 -1
  427. package/lib/module/icons/ArrowRight.js +1 -1
  428. package/lib/module/icons/AtMentions.js +1 -1
  429. package/lib/module/icons/Attach.js +1 -1
  430. package/lib/module/icons/Audio.js +1 -1
  431. package/lib/module/icons/CSV.js +1 -1
  432. package/lib/module/icons/Camera.js +1 -1
  433. package/lib/module/icons/Check.js +1 -1
  434. package/lib/module/icons/CheckAll.js +1 -1
  435. package/lib/module/icons/CheckSend.js +1 -1
  436. package/lib/module/icons/CircleClose.js +1 -1
  437. package/lib/module/icons/CirclePlus.js +1 -1
  438. package/lib/module/icons/CircleRight.js +1 -1
  439. package/lib/module/icons/Close.js +1 -1
  440. package/lib/module/icons/Copy.js +1 -1
  441. package/lib/module/icons/CurveLineLeftUp.js +1 -1
  442. package/lib/module/icons/DOC.js +1 -1
  443. package/lib/module/icons/DOCX.js +1 -1
  444. package/lib/module/icons/Delete.js +1 -1
  445. package/lib/module/icons/Down.js +1 -1
  446. package/lib/module/icons/DownloadArrow.js +1 -1
  447. package/lib/module/icons/DownloadCloud.js +1 -1
  448. package/lib/module/icons/Edit.js +1 -1
  449. package/lib/module/icons/Error.js +1 -1
  450. package/lib/module/icons/Eye.js +1 -1
  451. package/lib/module/icons/Flag.js +1 -1
  452. package/lib/module/icons/Folder.js +1 -1
  453. package/lib/module/icons/GenericFile.js +1 -1
  454. package/lib/module/icons/GiphyIcon.js +1 -1
  455. package/lib/module/icons/Grid.js +1 -1
  456. package/lib/module/icons/Group.js +1 -1
  457. package/lib/module/icons/HTML.js +1 -1
  458. package/lib/module/icons/Imgur.js +1 -1
  459. package/lib/module/icons/LOLReaction.js +1 -1
  460. package/lib/module/icons/Lightning.js +1 -1
  461. package/lib/module/icons/Link.js +1 -1
  462. package/lib/module/icons/Loading.js +1 -1
  463. package/lib/module/icons/Logo.js +1 -1
  464. package/lib/module/icons/LoveReaction.js +1 -1
  465. package/lib/module/icons/MD.js +1 -1
  466. package/lib/module/icons/MailOpen.js +1 -1
  467. package/lib/module/icons/MenuPointHorizontal.js +1 -1
  468. package/lib/module/icons/MenuPointVertical.js +1 -1
  469. package/lib/module/icons/MessageFlag.js +1 -1
  470. package/lib/module/icons/MessageIcon.js +1 -1
  471. package/lib/module/icons/Mute.js +1 -1
  472. package/lib/module/icons/Notification.js +1 -1
  473. package/lib/module/icons/ODT.js +1 -1
  474. package/lib/module/icons/PDF.js +1 -1
  475. package/lib/module/icons/PPT.js +1 -1
  476. package/lib/module/icons/PPTX.js +1 -1
  477. package/lib/module/icons/Pause.js +1 -1
  478. package/lib/module/icons/Picture.js +1 -1
  479. package/lib/module/icons/Pin.js +1 -1
  480. package/lib/module/icons/PinHeader.js +1 -1
  481. package/lib/module/icons/Play.js +1 -1
  482. package/lib/module/icons/RAR.js +1 -1
  483. package/lib/module/icons/RTF.js +1 -1
  484. package/lib/module/icons/Recorder.js +1 -1
  485. package/lib/module/icons/Refresh.js +1 -1
  486. package/lib/module/icons/SEVEN_Z.js +1 -1
  487. package/lib/module/icons/Search.js +1 -1
  488. package/lib/module/icons/SendRight.js +1 -1
  489. package/lib/module/icons/SendUp.js +1 -1
  490. package/lib/module/icons/Share.js +1 -1
  491. package/lib/module/icons/ShareRightArrow.js +1 -1
  492. package/lib/module/icons/Smile.js +1 -1
  493. package/lib/module/icons/Sound.js +1 -1
  494. package/lib/module/icons/TAR.js +1 -1
  495. package/lib/module/icons/TXT.js +1 -1
  496. package/lib/module/icons/ThreadReply.js +1 -1
  497. package/lib/module/icons/ThumbsDownReaction.js +1 -1
  498. package/lib/module/icons/ThumbsUpReaction.js +1 -1
  499. package/lib/module/icons/Time.js +1 -1
  500. package/lib/module/icons/Unknown.js +1 -1
  501. package/lib/module/icons/Unpin.js +1 -1
  502. package/lib/module/icons/User.js +1 -1
  503. package/lib/module/icons/UserAdd.js +1 -1
  504. package/lib/module/icons/UserAdmin.js +1 -1
  505. package/lib/module/icons/UserDelete.js +1 -1
  506. package/lib/module/icons/UserMinus.js +1 -1
  507. package/lib/module/icons/Video.js +1 -1
  508. package/lib/module/icons/Warning.js +1 -1
  509. package/lib/module/icons/WutReaction.js +1 -1
  510. package/lib/module/icons/XLS.js +1 -1
  511. package/lib/module/icons/XLSX.js +1 -1
  512. package/lib/module/icons/ZIP.js +1 -1
  513. package/lib/module/icons/utils/base.js +1 -1
  514. package/lib/module/index.js +13 -1
  515. package/lib/module/index.js.map +1 -1
  516. package/lib/module/mock-builders/DB/mock.js +1 -13
  517. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  518. package/lib/module/mock-builders/event/messageNew.js +2 -0
  519. package/lib/module/mock-builders/event/messageNew.js.map +1 -1
  520. package/lib/module/store/QuickSqliteClient.js +7 -3
  521. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  522. package/lib/module/store/apis/index.js +264 -0
  523. package/lib/module/store/apis/index.js.map +1 -0
  524. package/lib/module/test-utils/BetterSqlite.js +54 -0
  525. package/lib/module/test-utils/BetterSqlite.js.map +1 -0
  526. package/lib/module/version.json +1 -1
  527. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  528. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  529. package/lib/typescript/components/Attachment/utils/getGiphyMimeType.d.ts +6 -0
  530. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +1 -1
  531. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts +2 -1
  532. package/lib/typescript/components/Message/Message.d.ts +9 -3
  533. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  534. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +9 -10
  535. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
  536. package/lib/typescript/index.d.ts +2 -0
  537. package/lib/typescript/store/QuickSqliteClient.d.ts +4 -0
  538. package/lib/typescript/store/apis/index.d.ts +20 -0
  539. package/lib/typescript/{__tests__/utils → test-utils}/BetterSqlite.d.ts +1 -1
  540. package/package.json +5 -4
  541. package/src/__tests__/offline-feature.test.js +1 -2
  542. package/src/components/Attachment/FileAttachment.tsx +3 -0
  543. package/src/components/Attachment/Gallery.tsx +20 -17
  544. package/src/components/Attachment/Giphy.tsx +8 -8
  545. package/src/components/Attachment/utils/getGiphyMimeType.ts +13 -0
  546. package/src/components/Channel/Channel.tsx +1 -1
  547. package/src/components/ChannelList/__tests__/ChannelList.test.js +28 -0
  548. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +18 -5
  549. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +1 -1
  550. package/src/components/ChannelPreview/ChannelPreview.tsx +6 -3
  551. package/src/components/ImageGallery/ImageGallery.tsx +32 -19
  552. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +6 -6
  553. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +3 -3
  554. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +3 -3
  555. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +3 -3
  556. package/src/components/ImageGallery/components/ImageGrid.tsx +3 -3
  557. package/src/components/ImageGallery/hooks/useImageGalleryGestures.tsx +16 -0
  558. package/src/components/Message/Message.tsx +9 -1
  559. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +22 -2
  560. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -0
  561. package/src/components/Message/MessageSimple/utils/renderText.tsx +1 -1
  562. package/src/components/MessageInput/ImageUploadPreview.tsx +35 -9
  563. package/src/components/MessageList/MessageList.tsx +6 -6
  564. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +4 -0
  565. package/src/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
  566. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +19 -14
  567. package/src/contexts/themeContext/utils/theme.ts +2 -0
  568. package/src/index.ts +3 -0
  569. package/src/mock-builders/DB/mock.ts +4 -9
  570. package/src/mock-builders/event/messageNew.js +2 -0
  571. package/src/store/QuickSqliteClient.ts +11 -7
  572. package/src/store/apis/index.ts +20 -0
  573. package/src/{__tests__/utils → test-utils}/BetterSqlite.js +1 -1
  574. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["Channel.tsx"],"names":["styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","AudioAttachment","AudioAttachmentDefault","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","CommandsButton","CommandsButtonDefault","compressImageQuality","CooldownTimer","CooldownTimerDefault","DateHeader","DateHeaderDefault","deletedMessagesVisibilityType","disableIfFrozenChannel","disableKeyboardCompatibleView","disableTypingIndicator","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","EmptyStateIndicator","EmptyStateIndicatorDefault","enableMessageGroupingByUser","enforceUniqueReaction","FileAttachment","FileAttachmentDefault","FileAttachmentGroup","FileAttachmentGroupDefault","FileAttachmentIcon","FileIconDefault","FileUploadPreview","FileUploadPreviewDefault","FlatList","FlatListDefault","forceAlignMessages","formatDate","Gallery","GalleryDefault","Giphy","GiphyDefault","giphyEnabled","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","hasCommands","hasFilePicker","hasImagePicker","hideDateSeparators","hideStickyDateHeader","ImageUploadPreview","ImageUploadPreviewDefault","initialScrollToFirstUnreadMessage","initialValue","InlineDateSeparator","InlineDateSeparatorDefault","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","InputButtons","InputButtonsDefault","InputEditingStateHeader","InputEditingStateHeaderDefault","InputGiphySearch","InputGiphyCommandInputDefault","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","legacyImageViewerSwipeBehaviour","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","maxNumberOfFiles","maxTimeBetweenGroupedMessages","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","Message","MessageDefault","messageActions","MessageAvatar","MessageAvatarDefault","MessageContent","MessageContentDefault","messageContentOrder","MessageDeleted","MessageDeletedDefault","MessageFooter","MessageFooterDefault","MessageHeader","messageId","MessageList","MessageListDefault","MessagePinnedHeader","MessagePinnedHeaderDefault","MessageReplies","MessageRepliesDefault","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","MessageSimple","MessageSimpleDefault","MessageStatus","MessageStatusDefault","MessageSystem","MessageSystemDefault","MessageText","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","newMessageStateUpdateThrottleInterval","NetworkDownIndicator","NetworkDownIndicatorDefault","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","OverlayReactionList","OverlayReactionListDefault","ReactionList","ReactionListDefault","read","Reply","ReplyDefault","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","SendButton","SendButtonDefault","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","stateUpdateThrottleInterval","StickyHeader","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","TypingIndicator","TypingIndicatorDefault","TypingIndicatorContainer","TypingIndicatorContainerDefault","UploadProgressIndicator","UploadProgressIndicatorDefault","UrlPreview","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","theme","black","colors","deleted","setDeleted","editing","setEditing","error","setError","hasMore","setHasMore","lastRead","setLastRead","state","length","loading","setLoading","setLoadingMore","setLoadingMoreRecent","quotedMessage","setQuotedMessage","setThread","threadHasMore","setThreadHasMore","threadLoadingMore","setThreadLoadingMore","syncingChannel","setSyncingChannel","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","setTargetedMessage","targetedMessage","channelId","id","initChannel","staticState","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","threads","handleAppBackground","sendEvent","parent_id","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","disconnected","clientChannelConfig","read_events","current","copyMessagesState","watcher_count","connectionRecoveredHandler","connectionChangedHandler","event","online","resyncChannel","handleEvent","updatedThreadMessages","message","updatedThread","formatMessage","channelSubscriptions","clientSubscriptions","subscribe","push","on","cid","forEach","s","unsubscribe","channelQueryCallRef","queryCall","onAfterQueryCall","Date","Error","unreadCount","lastReadDate","query","created_at_around","limit","loadMessageIntoState","setIsUpToDate","loadChannelAtMessage","after","before","queryAtMessage","isUpToDate","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","clearMessages","addMessagesSorted","parseMessage","created_at","toString","pinned_at","updated_at","failedMessages","filter","status","MessageStatusTypes","FAILED","map","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","findIndex","slice","reloadChannel","queryBeforeMessage","queryAfterMessage","id_lt","id_gte","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","attachments","mentioned_users","text","extraFields","preview","__html","html","userID","userId","reactions","SENDING","quoted_message_id","find","quoted_message","sendMessageRequest","retrying","messageData","mentionedUser","messageResponse","sendMessage","RECEIVED","log","filterErrorMessages","messagePreview","commands","messageInput","retrySendMessage","statusPendingMessage","newMessages","loadMore","oldestMessage","oldestID","loadMoreRecent","recentMessage","loadMoreRecentFinished","editMessage","setEditingState","setQuotedMessageState","clearEditingState","clearQuotedMessageState","openThread","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","oldestMessageID","ownCapabilitiesContext","overrideCapabilities","channelContext","disabled","data","frozen","some","command","name","isChannelActive","inputMessageInputContext","max_message_length","messageListContext","messagesContext","suggestionsContext","threadContext","typingContext","color","height","Channel"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport {\n ChannelState,\n Channel as ChannelType,\n ConnectionChangeEvent,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { generateRandomId, MessageStatusTypes, ReactionData } from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'Giphy'\n | 'giphyVersion'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'isAttachmentEqual'\n | 'legacyImageViewerSwipeBehaviour'\n | 'ImageLoadingFailedIndicator'\n | 'ImageLoadingIndicator'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n hasFilePicker = true,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n InputEditingStateHeader = InputEditingStateHeaderDefault,\n InputGiphySearch = InputGiphyCommandInputDefault,\n InputReplyStateHeader = InputReplyStateHeaderDefault,\n isAttachmentEqual,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n ImageLoadingFailedIndicator = ImageLoadingFailedIndicatorDefault,\n ImageLoadingIndicator = ImageLoadingIndicatorDefault,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel || channel.staticState) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists]);\n\n const handleAppBackground = useCallback(() => {\n if (channel) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n setMessages([...channel.state.messages]);\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const connectionRecoveredHandler = () => {\n if (channel && shouldSyncChannel) {\n copyChannelState();\n if (thread) {\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n }\n };\n\n const connectionChangedHandler = (event: ConnectionChangeEvent) => {\n if (event.online && shouldSyncChannel) {\n resyncChannel();\n }\n };\n\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (shouldSyncChannel) {\n if (thread) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n\n if (event.type === 'typing.start' || event.type === 'typing.stop') {\n copyTypingState();\n } else if (event.type === 'message.read') {\n copyReadState();\n } else if (event.type === 'message.new') {\n copyMessagesState();\n } else if (channel) {\n copyChannelState();\n }\n }\n };\n\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n const clientSubscriptions: Array<ReturnType<StreamChat['on']>> = [];\n\n const subscribe = () => {\n if (!channel) return;\n\n /**\n * The more complex sync logic around internet connectivity (NetInfo) is part of Chat.tsx\n * listen to client.connection.recovered and all channel events\n */\n clientSubscriptions.push(client.on('connection.recovered', connectionRecoveredHandler));\n clientSubscriptions.push(client.on('connection.changed', connectionChangedHandler));\n clientSubscriptions.push(\n client.on('channel.deleted', (event) => {\n if (event.cid === channel.cid) {\n setDeleted(true);\n }\n }),\n );\n channelSubscriptions.push(channel.on(handleEvent));\n };\n\n subscribe();\n\n return () => {\n clientSubscriptions.forEach((s) => s.unsubscribe());\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, connectionChangedHandler, connectionRecoveredHandler, handleEvent]);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n ) => {\n setError(false);\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n // temporarily clear existing messages so that messageList component gets a list change and does not scroll to any unread message first before loading completes\n setMessages([]);\n // query for messages around the last read date\n return channelQueryCallRef.current(async () => {\n setLoading(true);\n const lastReadDate = channel.lastRead() || new Date(0);\n await channel.query({\n messages: {\n created_at_around: lastReadDate,\n limit: 25,\n },\n });\n setLoading(false);\n });\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId }) =>\n channelQueryCallRef.current(\n async () => {\n setHasNoMoreRecentMessagesToLoad(false); // we are jumping to a message, hence we do not know for sure anymore if there are no more recent messages\n setLoading(true);\n if (messageId) {\n await channel.state.loadMessageIntoState(messageId);\n } else {\n await channel.state.loadMessageIntoState('latest');\n channel.state.setIsUpToDate(true);\n }\n setLoading(false);\n },\n () => {\n if (messageId) {\n setTargetedMessage(messageId);\n }\n },\n );\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannel) return;\n setSyncingChannel(true);\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n setHasNoMoreRecentMessagesToLoad(true);\n channel.state.setIsUpToDate(true);\n\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n setSyncingChannel(false);\n };\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await channel.state.loadMessageIntoState('latest');\n setLoading(false);\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n id: client.userID,\n ...client.user,\n },\n ...extraFields,\n } as unknown as MessageResponse<StreamChatGenerics>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message =\n quotedMessage as MessageResponse<StreamChatGenerics>['quoted_message'];\n }\n return preview;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n mentioned_users,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = message;\n\n const messageData = {\n attachments,\n id: retrying ? undefined : id,\n mentioned_users: mentioned_users?.map((mentionedUser) => mentionedUser.id) || [],\n parent_id,\n text,\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n try {\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage(message);\n }\n };\n\n const sendMessage: InputMessageInputContextValue<StreamChatGenerics>['sendMessage'] = async (\n message,\n ) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<StreamChatGenerics>['retrySendMessage'] = async (\n message,\n ) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n updateMessage(statusPendingMessage);\n await sendMessageRequest(statusPendingMessage, true);\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (updatedHasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMore: PaginatedMessageListContextValue<StreamChatGenerics>['loadMore'] = async (\n limit = 20,\n ) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n if (!messages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = messages && messages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n };\n\n const loadMoreRecent: PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent'] =\n async (limit = 5) => {\n if (hasNoMoreRecentMessagesToLoad) {\n return;\n }\n\n setLoadingMoreRecent(true);\n\n const recentMessage = messages[messages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n const state = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n setHasNoMoreRecentMessagesToLoad(state.messages.length < limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n message,\n ) => {\n setQuotedMessage(message);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n };\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: !!channel?.data?.frozen && disableIfFrozenChannel,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n VideoThumbnail,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<StreamChatGenerics> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<StreamChatGenerics> value={typingContext}>\n <PaginatedMessageListProvider<StreamChatGenerics> value={messageListContext}>\n <MessagesProvider<StreamChatGenerics> value={messagesContext}>\n <ThreadProvider<StreamChatGenerics> value={threadContext}>\n <SuggestionsProvider<StreamChatGenerics> value={suggestionsContext}>\n <MessageInputProvider<StreamChatGenerics> value={inputMessageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelProps<StreamChatGenerics>>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<StreamChatGenerics>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<StreamChatGenerics>\n {...{\n client,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Channel.tsx"],"names":["styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","AudioAttachment","AudioAttachmentDefault","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","CommandsButton","CommandsButtonDefault","compressImageQuality","CooldownTimer","CooldownTimerDefault","DateHeader","DateHeaderDefault","deletedMessagesVisibilityType","disableIfFrozenChannel","disableKeyboardCompatibleView","disableTypingIndicator","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","EmptyStateIndicator","EmptyStateIndicatorDefault","enableMessageGroupingByUser","enforceUniqueReaction","FileAttachment","FileAttachmentDefault","FileAttachmentGroup","FileAttachmentGroupDefault","FileAttachmentIcon","FileIconDefault","FileUploadPreview","FileUploadPreviewDefault","FlatList","FlatListDefault","forceAlignMessages","formatDate","Gallery","GalleryDefault","Giphy","GiphyDefault","giphyEnabled","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","hasCommands","hasFilePicker","hasImagePicker","hideDateSeparators","hideStickyDateHeader","ImageUploadPreview","ImageUploadPreviewDefault","initialScrollToFirstUnreadMessage","initialValue","InlineDateSeparator","InlineDateSeparatorDefault","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","InputButtons","InputButtonsDefault","InputEditingStateHeader","InputEditingStateHeaderDefault","InputGiphySearch","InputGiphyCommandInputDefault","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","legacyImageViewerSwipeBehaviour","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","maxNumberOfFiles","maxTimeBetweenGroupedMessages","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","Message","MessageDefault","messageActions","MessageAvatar","MessageAvatarDefault","MessageContent","MessageContentDefault","messageContentOrder","MessageDeleted","MessageDeletedDefault","MessageFooter","MessageFooterDefault","MessageHeader","messageId","MessageList","MessageListDefault","MessagePinnedHeader","MessagePinnedHeaderDefault","MessageReplies","MessageRepliesDefault","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","MessageSimple","MessageSimpleDefault","MessageStatus","MessageStatusDefault","MessageSystem","MessageSystemDefault","MessageText","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","newMessageStateUpdateThrottleInterval","NetworkDownIndicator","NetworkDownIndicatorDefault","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","OverlayReactionList","OverlayReactionListDefault","ReactionList","ReactionListDefault","read","Reply","ReplyDefault","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","SendButton","SendButtonDefault","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","stateUpdateThrottleInterval","StickyHeader","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","TypingIndicator","TypingIndicatorDefault","TypingIndicatorContainer","TypingIndicatorContainerDefault","UploadProgressIndicator","UploadProgressIndicatorDefault","UrlPreview","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","theme","black","colors","deleted","setDeleted","editing","setEditing","error","setError","hasMore","setHasMore","lastRead","setLastRead","state","length","loading","setLoading","setLoadingMore","setLoadingMoreRecent","quotedMessage","setQuotedMessage","setThread","threadHasMore","setThreadHasMore","threadLoadingMore","setThreadLoadingMore","syncingChannel","setSyncingChannel","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","setTargetedMessage","targetedMessage","channelId","id","initChannel","offlineMode","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","threads","handleAppBackground","sendEvent","parent_id","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","disconnected","clientChannelConfig","read_events","current","copyMessagesState","watcher_count","connectionRecoveredHandler","connectionChangedHandler","event","online","resyncChannel","handleEvent","updatedThreadMessages","message","updatedThread","formatMessage","channelSubscriptions","clientSubscriptions","subscribe","push","on","cid","forEach","s","unsubscribe","channelQueryCallRef","queryCall","onAfterQueryCall","Date","Error","unreadCount","lastReadDate","query","created_at_around","limit","loadMessageIntoState","setIsUpToDate","loadChannelAtMessage","after","before","queryAtMessage","isUpToDate","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","clearMessages","addMessagesSorted","parseMessage","created_at","toString","pinned_at","updated_at","failedMessages","filter","status","MessageStatusTypes","FAILED","map","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","findIndex","slice","reloadChannel","queryBeforeMessage","queryAfterMessage","id_lt","id_gte","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","attachments","mentioned_users","text","extraFields","preview","__html","html","userID","userId","reactions","SENDING","quoted_message_id","find","quoted_message","sendMessageRequest","retrying","messageData","mentionedUser","messageResponse","sendMessage","RECEIVED","log","filterErrorMessages","messagePreview","commands","messageInput","retrySendMessage","statusPendingMessage","newMessages","loadMore","oldestMessage","oldestID","loadMoreRecent","recentMessage","loadMoreRecentFinished","editMessage","setEditingState","setQuotedMessageState","clearEditingState","clearQuotedMessageState","openThread","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","oldestMessageID","ownCapabilitiesContext","overrideCapabilities","channelContext","disabled","data","frozen","some","command","name","isChannelActive","inputMessageInputContext","max_message_length","messageListContext","messagesContext","suggestionsContext","threadContext","typingContext","color","height","Channel"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport {\n ChannelState,\n Channel as ChannelType,\n ConnectionChangeEvent,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { generateRandomId, MessageStatusTypes, ReactionData } from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'Giphy'\n | 'giphyVersion'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'isAttachmentEqual'\n | 'legacyImageViewerSwipeBehaviour'\n | 'ImageLoadingFailedIndicator'\n | 'ImageLoadingIndicator'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n hasFilePicker = true,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n InputEditingStateHeader = InputEditingStateHeaderDefault,\n InputGiphySearch = InputGiphyCommandInputDefault,\n InputReplyStateHeader = InputReplyStateHeaderDefault,\n isAttachmentEqual,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n ImageLoadingFailedIndicator = ImageLoadingFailedIndicatorDefault,\n ImageLoadingIndicator = ImageLoadingIndicatorDefault,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists]);\n\n const handleAppBackground = useCallback(() => {\n if (channel) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n setMessages([...channel.state.messages]);\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const connectionRecoveredHandler = () => {\n if (channel && shouldSyncChannel) {\n copyChannelState();\n if (thread) {\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n }\n };\n\n const connectionChangedHandler = (event: ConnectionChangeEvent) => {\n if (event.online && shouldSyncChannel) {\n resyncChannel();\n }\n };\n\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (shouldSyncChannel) {\n if (thread) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n\n if (event.type === 'typing.start' || event.type === 'typing.stop') {\n copyTypingState();\n } else if (event.type === 'message.read') {\n copyReadState();\n } else if (event.type === 'message.new') {\n copyMessagesState();\n } else if (channel) {\n copyChannelState();\n }\n }\n };\n\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n const clientSubscriptions: Array<ReturnType<StreamChat['on']>> = [];\n\n const subscribe = () => {\n if (!channel) return;\n\n /**\n * The more complex sync logic around internet connectivity (NetInfo) is part of Chat.tsx\n * listen to client.connection.recovered and all channel events\n */\n clientSubscriptions.push(client.on('connection.recovered', connectionRecoveredHandler));\n clientSubscriptions.push(client.on('connection.changed', connectionChangedHandler));\n clientSubscriptions.push(\n client.on('channel.deleted', (event) => {\n if (event.cid === channel.cid) {\n setDeleted(true);\n }\n }),\n );\n channelSubscriptions.push(channel.on(handleEvent));\n };\n\n subscribe();\n\n return () => {\n clientSubscriptions.forEach((s) => s.unsubscribe());\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, connectionChangedHandler, connectionRecoveredHandler, handleEvent]);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n ) => {\n setError(false);\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n // temporarily clear existing messages so that messageList component gets a list change and does not scroll to any unread message first before loading completes\n setMessages([]);\n // query for messages around the last read date\n return channelQueryCallRef.current(async () => {\n setLoading(true);\n const lastReadDate = channel.lastRead() || new Date(0);\n await channel.query({\n messages: {\n created_at_around: lastReadDate,\n limit: 25,\n },\n });\n setLoading(false);\n });\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId }) =>\n channelQueryCallRef.current(\n async () => {\n setHasNoMoreRecentMessagesToLoad(false); // we are jumping to a message, hence we do not know for sure anymore if there are no more recent messages\n setLoading(true);\n if (messageId) {\n await channel.state.loadMessageIntoState(messageId);\n } else {\n await channel.state.loadMessageIntoState('latest');\n channel.state.setIsUpToDate(true);\n }\n setLoading(false);\n },\n () => {\n if (messageId) {\n setTargetedMessage(messageId);\n }\n },\n );\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannel) return;\n setSyncingChannel(true);\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n setHasNoMoreRecentMessagesToLoad(true);\n channel.state.setIsUpToDate(true);\n\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n setSyncingChannel(false);\n };\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await channel.state.loadMessageIntoState('latest');\n setLoading(false);\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n id: client.userID,\n ...client.user,\n },\n ...extraFields,\n } as unknown as MessageResponse<StreamChatGenerics>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message =\n quotedMessage as MessageResponse<StreamChatGenerics>['quoted_message'];\n }\n return preview;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n mentioned_users,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = message;\n\n const messageData = {\n attachments,\n id: retrying ? undefined : id,\n mentioned_users: mentioned_users?.map((mentionedUser) => mentionedUser.id) || [],\n parent_id,\n text,\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n try {\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage(message);\n }\n };\n\n const sendMessage: InputMessageInputContextValue<StreamChatGenerics>['sendMessage'] = async (\n message,\n ) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<StreamChatGenerics>['retrySendMessage'] = async (\n message,\n ) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n updateMessage(statusPendingMessage);\n await sendMessageRequest(statusPendingMessage, true);\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (updatedHasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMore: PaginatedMessageListContextValue<StreamChatGenerics>['loadMore'] = async (\n limit = 20,\n ) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n if (!messages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = messages && messages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n };\n\n const loadMoreRecent: PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent'] =\n async (limit = 5) => {\n if (hasNoMoreRecentMessagesToLoad) {\n return;\n }\n\n setLoadingMoreRecent(true);\n\n const recentMessage = messages[messages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n const state = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n setHasNoMoreRecentMessagesToLoad(state.messages.length < limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n message,\n ) => {\n setQuotedMessage(message);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n };\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: !!channel?.data?.frozen && disableIfFrozenChannel,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n VideoThumbnail,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<StreamChatGenerics> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<StreamChatGenerics> value={typingContext}>\n <PaginatedMessageListProvider<StreamChatGenerics> value={messageListContext}>\n <MessagesProvider<StreamChatGenerics> value={messagesContext}>\n <ThreadProvider<StreamChatGenerics> value={threadContext}>\n <SuggestionsProvider<StreamChatGenerics> value={suggestionsContext}>\n <MessageInputProvider<StreamChatGenerics> value={inputMessageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelProps<StreamChatGenerics>>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<StreamChatGenerics>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<StreamChatGenerics>\n {...{\n client,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"]}