stream-chat-react-native-core 4.11.1-beta.2 → 4.12.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 (206) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +2 -2
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
  4. package/lib/{module/components/Attachment/GallaryImage.js.map → commonjs/components/Attachment/GalleryImage.js.map} +1 -1
  5. package/lib/commonjs/components/Attachment/Giphy.js +1 -1
  6. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/VideoThumbnail.js +19 -18
  8. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
  9. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  10. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  11. package/lib/commonjs/components/Avatar/GroupAvatar.js +1 -1
  12. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  13. package/lib/commonjs/components/Channel/Channel.js +18 -13
  14. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  15. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  16. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  17. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +17 -12
  18. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  19. package/lib/commonjs/components/ImageGallery/ImageGallery.js +37 -30
  20. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  21. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
  22. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  23. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
  24. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  25. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
  26. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  27. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
  28. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  29. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
  30. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  31. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
  32. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  33. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +3 -1
  34. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  35. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -4
  36. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  37. package/lib/commonjs/components/Message/Message.js +8 -6
  38. package/lib/commonjs/components/Message/Message.js.map +1 -1
  39. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
  40. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
  41. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +147 -34
  42. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  43. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +4 -1
  44. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  45. package/lib/{module/components/ImageGallery/components → commonjs/components/ProgressControl}/ProgressControl.js +37 -24
  46. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -0
  47. package/lib/commonjs/components/Reply/Reply.js +21 -13
  48. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  49. package/lib/commonjs/components/index.js +26 -0
  50. package/lib/commonjs/components/index.js.map +1 -1
  51. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +5 -2
  52. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  53. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
  54. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  55. package/lib/commonjs/contexts/themeContext/utils/theme.js +14 -1
  56. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  57. package/lib/commonjs/icons/Pause.js +2 -2
  58. package/lib/commonjs/icons/Pause.js.map +1 -1
  59. package/lib/commonjs/mock-builders/api/channelMocks.js +1 -0
  60. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  61. package/lib/commonjs/native.js +13 -5
  62. package/lib/commonjs/native.js.map +1 -1
  63. package/lib/commonjs/version.json +1 -1
  64. package/lib/module/components/Attachment/Gallery.js +2 -2
  65. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  66. package/lib/module/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
  67. package/lib/{commonjs/components/Attachment/GallaryImage.js.map → module/components/Attachment/GalleryImage.js.map} +1 -1
  68. package/lib/module/components/Attachment/Giphy.js +1 -1
  69. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  70. package/lib/module/components/Attachment/VideoThumbnail.js +19 -18
  71. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  72. package/lib/module/components/Avatar/Avatar.js +1 -1
  73. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  74. package/lib/module/components/Avatar/GroupAvatar.js +1 -1
  75. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  76. package/lib/module/components/Channel/Channel.js +18 -13
  77. package/lib/module/components/Channel/Channel.js.map +1 -1
  78. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  79. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  80. package/lib/module/components/ChannelPreview/ChannelPreview.js +17 -12
  81. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  82. package/lib/module/components/ImageGallery/ImageGallery.js +37 -30
  83. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  84. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
  85. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  86. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
  87. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  88. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
  89. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  90. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
  91. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  92. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
  93. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  94. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
  95. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  96. package/lib/module/components/ImageGallery/components/ImageGrid.js +3 -1
  97. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  98. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -4
  99. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  100. package/lib/module/components/Message/Message.js +8 -6
  101. package/lib/module/components/Message/Message.js.map +1 -1
  102. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
  103. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
  104. package/lib/module/components/MessageInput/FileUploadPreview.js +147 -34
  105. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  106. package/lib/module/components/MessageInput/ImageUploadPreview.js +4 -1
  107. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  108. package/lib/{commonjs/components/ImageGallery/components → module/components/ProgressControl}/ProgressControl.js +37 -24
  109. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -0
  110. package/lib/module/components/Reply/Reply.js +21 -13
  111. package/lib/module/components/Reply/Reply.js.map +1 -1
  112. package/lib/module/components/index.js +26 -0
  113. package/lib/module/components/index.js.map +1 -1
  114. package/lib/module/contexts/messageInputContext/MessageInputContext.js +5 -2
  115. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  116. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
  117. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  118. package/lib/module/contexts/themeContext/utils/theme.js +14 -1
  119. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  120. package/lib/module/icons/Pause.js +2 -2
  121. package/lib/module/icons/Pause.js.map +1 -1
  122. package/lib/module/mock-builders/api/channelMocks.js +1 -0
  123. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  124. package/lib/module/native.js +13 -5
  125. package/lib/module/native.js.map +1 -1
  126. package/lib/module/version.json +1 -1
  127. package/lib/typescript/components/Attachment/{GallaryImage.d.ts → GalleryImage.d.ts} +0 -0
  128. package/lib/typescript/components/Attachment/VideoThumbnail.d.ts +4 -2
  129. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  130. package/lib/typescript/components/ImageGallery/__tests__/AnimatedVideoGallery.test.d.ts +1 -0
  131. package/lib/typescript/components/ImageGallery/__tests__/ImageGallery.test.d.ts +1 -0
  132. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryFooter.test.d.ts +1 -0
  133. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGrid.test.d.ts +1 -0
  134. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.d.ts +1 -0
  135. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryHeader.test.d.ts +1 -0
  136. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryOverlay.test.d.ts +1 -0
  137. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.d.ts +1 -0
  138. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -0
  139. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +2 -3
  140. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +2 -1
  141. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +2 -3
  142. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  143. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  144. package/lib/typescript/components/MessageInput/AudioAttachmentUploadPreview.d.ts +26 -0
  145. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  146. package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.d.ts +1 -0
  147. package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.d.ts +1 -0
  148. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts +11 -0
  149. package/lib/typescript/components/index.d.ts +2 -0
  150. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  151. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +7 -1
  152. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  153. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +13 -0
  154. package/lib/typescript/native.d.ts +59 -2
  155. package/package.json +1 -1
  156. package/src/components/Attachment/Gallery.tsx +1 -1
  157. package/src/components/Attachment/{GallaryImage.tsx → GalleryImage.tsx} +1 -1
  158. package/src/components/Attachment/Giphy.tsx +1 -1
  159. package/src/components/Attachment/VideoThumbnail.tsx +15 -6
  160. package/src/components/Attachment/__tests__/Gallery.test.js +6 -6
  161. package/src/components/Attachment/__tests__/Giphy.test.js +4 -4
  162. package/src/components/Avatar/Avatar.tsx +1 -1
  163. package/src/components/Avatar/GroupAvatar.tsx +1 -1
  164. package/src/components/Channel/Channel.tsx +3 -0
  165. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -0
  166. package/src/components/ChannelPreview/ChannelPreview.tsx +14 -12
  167. package/src/components/ImageGallery/ImageGallery.tsx +21 -11
  168. package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +241 -0
  169. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +192 -0
  170. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +190 -0
  171. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +98 -0
  172. package/src/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.tsx +79 -0
  173. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +172 -0
  174. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +94 -0
  175. package/src/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.tsx +84 -0
  176. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +3 -0
  177. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +11 -3
  178. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +9 -2
  179. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +1 -1
  180. package/src/components/ImageGallery/components/ImageGalleryOverlay.tsx +6 -1
  181. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +22 -9
  182. package/src/components/ImageGallery/components/ImageGrid.tsx +19 -17
  183. package/src/components/ImageGallery/components/ImageGridHandle.tsx +4 -1
  184. package/src/components/Message/Message.tsx +2 -1
  185. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +9 -3
  186. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
  187. package/src/components/MessageInput/AudioAttachmentUploadPreview.tsx +362 -0
  188. package/src/components/MessageInput/FileUploadPreview.tsx +165 -60
  189. package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
  190. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +199 -0
  191. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +215 -0
  192. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +64 -0
  193. package/src/components/{ImageGallery/components → ProgressControl}/ProgressControl.tsx +37 -19
  194. package/src/components/Reply/Reply.tsx +14 -2
  195. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +4 -4
  196. package/src/components/index.ts +3 -0
  197. package/src/contexts/messageInputContext/MessageInputContext.tsx +13 -0
  198. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +5 -1
  199. package/src/contexts/themeContext/utils/theme.ts +23 -0
  200. package/src/icons/Pause.tsx +2 -2
  201. package/src/mock-builders/api/channelMocks.tsx +1 -0
  202. package/src/native.ts +67 -7
  203. package/src/version.json +1 -1
  204. package/lib/commonjs/components/ImageGallery/components/ProgressControl.js.map +0 -1
  205. package/lib/module/components/ImageGallery/components/ProgressControl.js.map +0 -1
  206. package/lib/typescript/components/ImageGallery/components/ProgressControl.d.ts +0 -5
@@ -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","unreadMessagesOnInitialLoadLimit","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","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","globalUnreadCountLimit","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","setTargetedMessage","targetedMessage","channelId","id","initChannel","initialized","loadChannel","loadChannelAtMessage","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","channelQueryCall","queryCall","Date","Error","unreadCount","clearMessages","setIsUpToDate","offset","query","isUpToDate","mostRecentMessage","queryAfterMessage","created_at_before_or_equal","limit","created_at_after","after","before","queryAtMessage","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","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","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 { 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\n/**\n * Number of unread messages to show in first frame, when channel loads at first\n * unread message. Only applicable if unread count > scrollToFirstUnreadThreshold.\n */\nconst unreadMessagesOnInitialLoadLimit = 2;\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 | '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 * E.g. Once unread count exceeds 255, display unread count as 255+ instead of actual count.\n * Also 255 is the limit per Stream chat channel for unread count.\n */\n globalUnreadCountLimit?: number;\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 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 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 globalUnreadCountLimit = 255,\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 const { setTargetedMessage, targetedMessage } = useTargetedMessage(messageId);\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel) 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 loadChannelAtMessage({ 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 channelQueryCall = async (queryCall: () => void = () => null) => {\n setError(false);\n // Skips setting loading state when there are messages in the channel\n setLoading(!channel?.state.messages.length);\n\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\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 * Loads channel at first unread channel.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n\n channel.state.clearMessages();\n channel.state.setIsUpToDate(false);\n\n return channelQueryCall(async () => {\n /**\n * Stream only keeps unread count of channel upto 255. So once the count of unread messages reaches 255, we stop counting.\n * Thus we need to handle these two cases separately.\n */\n if (unreadCount < globalUnreadCountLimit) {\n /**\n * We want to ensure that first unread message appears in the first window frame, when message list loads.\n * If we assume that we have a exact count of unread messages, then first unread message is at offset = channel.countUnread().\n * So we will query 2 messages after (and including) first unread message, and 30 messages before first unread\n * message. So 2nd message in list is the first unread message. We can safely assume that 2nd message in list\n * will be visible to user when list loads.\n */\n const offset = unreadCount - unreadMessagesOnInitialLoadLimit;\n await query(offset, 30);\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length &&\n channel.state.messages.length <= scrollToFirstUnreadThreshold &&\n !channel.state.isUpToDate\n ) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 10 - channel.state.messages.length);\n }\n } else {\n /**\n * If the unread count is 255, then we don't have exact unread count anymore, to determine the offset for querying messages.\n * In this case we are going to query messages using date params instead of offset-limit e.g., created_at_before_or_equal\n * So we query 30 messages before the last time user read the channel - channel.lastRead()\n */\n await channel.query({\n messages: {\n created_at_before_or_equal: channel.lastRead() || new Date(0),\n limit: 30,\n },\n });\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length <= unreadMessagesOnInitialLoadLimit &&\n !channel.state.isUpToDate\n ) {\n if (channel.state.messages.length > 0) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 5);\n } else {\n /**\n * If we didn't get any messages, which means first unread message is the first ever message in channel.\n * So simply fetch some messages after the lastRead datetime.\n * We are keeping the limit as 10 here, as opposed to 30 in cases above. The reason being, we want the list\n * to be scrolled upto first unread message. So in this case we will need the scroll to start at top of the list.\n * React native provides a prop `initialScrollIndex` on FlatList, but it doesn't really work well\n * especially for dynamic sized content. So when the list loads, we are just going to manually scroll\n * to top of the list - flRef.current.scrollToEnd(). This autoscroll behavior is not great in general, but its less\n * bad for scrolling up 10 messages than scrolling up 30 messages.\n */\n await channel.query({\n messages: {\n created_at_after: channel.lastRead() || new Date(0),\n limit: 10,\n },\n });\n }\n }\n }\n });\n };\n\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 channelQueryCall(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCall(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n }\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 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 channelQueryCall(async () => {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * Makes a query to load messages in channel.\n */\n const query = async (offset = 0, limit = 30) => {\n if (!channel) return;\n channel.state.clearMessages();\n\n await channel.query({\n messages: {\n limit,\n offset,\n },\n watch: true,\n });\n channel.state.setIsUpToDate(offset === 0);\n };\n\n /**\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 * 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 * 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 console.warn('Message pagination request failed with error', 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 (channel?.state.isUpToDate) {\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 await queryAfterMessage(recentMessage.id, 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 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 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 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,\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","unreadMessagesOnInitialLoadLimit","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","AudioAttachmentUploadPreview","AudioAttachmentUploadPreviewDefault","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","globalUnreadCountLimit","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","setTargetedMessage","targetedMessage","channelId","id","initChannel","initialized","loadChannel","loadChannelAtMessage","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","channelQueryCall","queryCall","Date","Error","unreadCount","clearMessages","setIsUpToDate","offset","query","isUpToDate","mostRecentMessage","queryAfterMessage","created_at_before_or_equal","limit","created_at_after","after","before","queryAtMessage","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","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","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 { 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 { AudioAttachmentUploadPreview as AudioAttachmentUploadPreviewDefault } from '../MessageInput/AudioAttachmentUploadPreview';\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\n/**\n * Number of unread messages to show in first frame, when channel loads at first\n * unread message. Only applicable if unread count > scrollToFirstUnreadThreshold.\n */\nconst unreadMessagesOnInitialLoadLimit = 2;\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 | '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 * E.g. Once unread count exceeds 255, display unread count as 255+ instead of actual count.\n * Also 255 is the limit per Stream chat channel for unread count.\n */\n globalUnreadCountLimit?: number;\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 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 AudioAttachmentUploadPreview = AudioAttachmentUploadPreviewDefault,\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 globalUnreadCountLimit = 255,\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 const { setTargetedMessage, targetedMessage } = useTargetedMessage(messageId);\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel) 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 loadChannelAtMessage({ 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 channelQueryCall = async (queryCall: () => void = () => null) => {\n setError(false);\n // Skips setting loading state when there are messages in the channel\n setLoading(!channel?.state.messages.length);\n\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\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 * Loads channel at first unread channel.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n\n channel.state.clearMessages();\n channel.state.setIsUpToDate(false);\n\n return channelQueryCall(async () => {\n /**\n * Stream only keeps unread count of channel upto 255. So once the count of unread messages reaches 255, we stop counting.\n * Thus we need to handle these two cases separately.\n */\n if (unreadCount < globalUnreadCountLimit) {\n /**\n * We want to ensure that first unread message appears in the first window frame, when message list loads.\n * If we assume that we have a exact count of unread messages, then first unread message is at offset = channel.countUnread().\n * So we will query 2 messages after (and including) first unread message, and 30 messages before first unread\n * message. So 2nd message in list is the first unread message. We can safely assume that 2nd message in list\n * will be visible to user when list loads.\n */\n const offset = unreadCount - unreadMessagesOnInitialLoadLimit;\n await query(offset, 30);\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length &&\n channel.state.messages.length <= scrollToFirstUnreadThreshold &&\n !channel.state.isUpToDate\n ) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 10 - channel.state.messages.length);\n }\n } else {\n /**\n * If the unread count is 255, then we don't have exact unread count anymore, to determine the offset for querying messages.\n * In this case we are going to query messages using date params instead of offset-limit e.g., created_at_before_or_equal\n * So we query 30 messages before the last time user read the channel - channel.lastRead()\n */\n await channel.query({\n messages: {\n created_at_before_or_equal: channel.lastRead() || new Date(0),\n limit: 30,\n },\n });\n\n /**\n * If the number of messages are not enough to fill the screen (we are making an assumption here that on overage 4 messages\n * are enough to fill the screen), then we need to fetch some more messages on recent side.\n */\n if (\n channel.state.messages.length <= unreadMessagesOnInitialLoadLimit &&\n !channel.state.isUpToDate\n ) {\n if (channel.state.messages.length > 0) {\n const mostRecentMessage = channel.state.messages[channel.state.messages.length - 1];\n await queryAfterMessage(mostRecentMessage.id, 5);\n } else {\n /**\n * If we didn't get any messages, which means first unread message is the first ever message in channel.\n * So simply fetch some messages after the lastRead datetime.\n * We are keeping the limit as 10 here, as opposed to 30 in cases above. The reason being, we want the list\n * to be scrolled upto first unread message. So in this case we will need the scroll to start at top of the list.\n * React native provides a prop `initialScrollIndex` on FlatList, but it doesn't really work well\n * especially for dynamic sized content. So when the list loads, we are just going to manually scroll\n * to top of the list - flRef.current.scrollToEnd(). This autoscroll behavior is not great in general, but its less\n * bad for scrolling up 10 messages than scrolling up 30 messages.\n */\n await channel.query({\n messages: {\n created_at_after: channel.lastRead() || new Date(0),\n limit: 10,\n },\n });\n }\n }\n }\n });\n };\n\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 channelQueryCall(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCall(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n }\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 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 channelQueryCall(async () => {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * Makes a query to load messages in channel.\n */\n const query = async (offset = 0, limit = 30) => {\n if (!channel) return;\n channel.state.clearMessages();\n\n await channel.query({\n messages: {\n limit,\n offset,\n },\n watch: true,\n });\n channel.state.setIsUpToDate(offset === 0);\n };\n\n /**\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 * 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 * 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 console.warn('Message pagination request failed with error', 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 (channel?.state.isUpToDate) {\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 await queryAfterMessage(recentMessage.id, 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 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 AudioAttachmentUploadPreview,\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 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 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,\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"]}