stream-chat-react-native-core 5.23.0-beta.1 → 5.23.0-beta.2

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 (55) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +587 -384
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/MessageList/MessageList.js +170 -179
  4. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  5. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +6 -1
  6. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js +36 -0
  8. package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -0
  9. package/lib/commonjs/i18n/en.json +1 -1
  10. package/lib/commonjs/i18n/fr.json +54 -54
  11. package/lib/commonjs/i18n/hi.json +52 -52
  12. package/lib/commonjs/i18n/it.json +52 -52
  13. package/lib/commonjs/i18n/nl.json +52 -52
  14. package/lib/commonjs/i18n/ru.json +54 -54
  15. package/lib/commonjs/i18n/tr.json +54 -54
  16. package/lib/commonjs/version.json +1 -1
  17. package/lib/module/components/Channel/Channel.js +587 -384
  18. package/lib/module/components/Channel/Channel.js.map +1 -1
  19. package/lib/module/components/MessageList/MessageList.js +170 -179
  20. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  21. package/lib/module/components/MessageList/hooks/useMessageList.js +6 -1
  22. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  23. package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js +36 -0
  24. package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -0
  25. package/lib/module/i18n/en.json +1 -1
  26. package/lib/module/i18n/fr.json +54 -54
  27. package/lib/module/i18n/hi.json +52 -52
  28. package/lib/module/i18n/it.json +52 -52
  29. package/lib/module/i18n/nl.json +52 -52
  30. package/lib/module/i18n/ru.json +54 -54
  31. package/lib/module/i18n/tr.json +54 -54
  32. package/lib/module/version.json +1 -1
  33. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +6 -1
  34. package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts +4 -0
  35. package/lib/typescript/i18n/en.json +1 -1
  36. package/lib/typescript/i18n/fr.json +54 -54
  37. package/lib/typescript/i18n/hi.json +52 -52
  38. package/lib/typescript/i18n/it.json +52 -52
  39. package/lib/typescript/i18n/nl.json +52 -52
  40. package/lib/typescript/i18n/ru.json +54 -54
  41. package/lib/typescript/i18n/tr.json +54 -54
  42. package/package.json +1 -1
  43. package/src/components/Channel/Channel.tsx +237 -61
  44. package/src/components/MessageList/MessageList.tsx +190 -180
  45. package/src/components/MessageList/__tests__/useMessageList.test.tsx +5 -2
  46. package/src/components/MessageList/hooks/useMessageList.ts +8 -1
  47. package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.ts +44 -0
  48. package/src/i18n/en.json +1 -1
  49. package/src/i18n/fr.json +54 -54
  50. package/src/i18n/hi.json +52 -52
  51. package/src/i18n/it.json +52 -52
  52. package/src/i18n/nl.json +52 -52
  53. package/src/i18n/ru.json +54 -54
  54. package/src/i18n/tr.json +54 -54
  55. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_debounce","_interopRequireDefault","_throttle","_mimeTypes","_streamChat","_useCreateChannelContext","_useCreateInputMessageInputContext","_useCreateMessagesContext","_useCreateOwnCapabilitiesContext","_useCreatePaginatedMessageListContext","_useCreateThreadContext","_useCreateTypingContext","_useTargetedMessage2","_ChannelContext","_useChannelState2","_ChatContext","_MessageInputContext","_MessagesContext","_OwnCapabilitiesContext","_PaginatedMessageListContext","_SuggestionsContext","_ThemeContext","_ThreadContext","_TranslationContext","_TypingContext","_useAppStateListener","_icons","_native","dbApi","_addReactionToLocalState","_compressImage","_DBSyncManager","_patchMessageTextCommand","_removeReactionFromLocalState","_utils","_Attachment","_AttachmentActions","_AudioAttachment","_Card","_FileAttachment","_FileAttachmentGroup","_FileIcon","_Gallery","_Giphy","_ImageLoadingFailedIndicator","_ImageLoadingIndicator","_VideoThumbnail","_AutoCompleteSuggestionHeader","_AutoCompleteSuggestionItem","_AutoCompleteSuggestionList","_EmptyStateIndicator","_LoadingErrorIndicator","_LoadingIndicator","_KeyboardCompatibleView","_Message","_MessageAvatar","_MessageContent","_MessageDeleted","_MessageError","_MessageFooter","_MessagePinnedHeader","_MessageReplies","_MessageRepliesAvatars","_MessageSimple","_MessageStatus","_ReactionList","_AttachButton","_CommandsButton","_InputEditingStateHeader","_InputGiphySearch","_InputReplyStateHeader","_CooldownTimer","_FileUploadPreview","_ImageUploadPreview","_InputButtons","_MoreOptionsButton","_SendButton","_SendMessageDisallowedIndicator","_ShowThreadMessageInChannelButton","_UploadProgressIndicator","_DateHeader","_InlineDateSeparator","_InlineUnreadIndicator","_MessageList","_MessageSystem","_NetworkDownIndicator","_ScrollToBottomButton","_TypingIndicator","_TypingIndicatorContainer","_OverlayReactionList","_Reply","_excluded","_excluded2","_excluded3","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","exports","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","_client$user","_channel$data","_ref27","_ref28","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","_props$allowThreadMes","allowThreadMessagesInChannel","_props$AttachButton","AttachButton","AttachButtonDefault","_props$Attachment","Attachment","AttachmentDefault","_props$AttachmentActi","AttachmentActions","AttachmentActionsDefault","_props$AudioAttachmen","AudioAttachment","AudioAttachmentDefault","_props$AutoCompleteSu","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","_props$AutoCompleteSu2","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","_props$AutoCompleteSu3","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","_props$Card","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","_props$CommandsButton","CommandsButton","CommandsButtonDefault","compressImageQuality","_props$CooldownTimer","CooldownTimer","CooldownTimerDefault","_props$DateHeader","DateHeader","DateHeaderDefault","_props$deletedMessage","deletedMessagesVisibilityType","_props$disableIfFroze","disableIfFrozenChannel","_props$disableKeyboar","disableKeyboardCompatibleView","disableTypingIndicator","_props$dismissKeyboar","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","_props$EmptyStateIndi","EmptyStateIndicator","EmptyStateIndicatorDefault","_props$enableMessageG","enableMessageGroupingByUser","enableOfflineSupport","_props$enforceUniqueR","enforceUniqueReaction","_props$FileAttachment","FileAttachment","FileAttachmentDefault","_props$FileAttachment2","FileAttachmentGroup","FileAttachmentGroupDefault","_props$FileAttachment3","FileAttachmentIcon","FileIconDefault","_props$FileUploadPrev","FileUploadPreview","FileUploadPreviewDefault","_props$FlatList","FlatList","FlatListDefault","forceAlignMessages","formatDate","_props$Gallery","Gallery","GalleryDefault","getMessagesGroupStyles","_props$Giphy","Giphy","GiphyDefault","giphyEnabled","_props$giphyVersion","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","_props$hasCommands","hasCommands","_props$hasFilePicker","hasFilePicker","pickDocument","_props$hasImagePicker","hasImagePicker","_props$hideDateSepara","hideDateSeparators","_props$hideStickyDate","hideStickyDateHeader","_props$ImageUploadPre","ImageUploadPreview","ImageUploadPreviewDefault","_props$initialScrollT","initialScrollToFirstUnreadMessage","initialValue","_props$InlineDateSepa","InlineDateSeparator","InlineDateSeparatorDefault","_props$InlineUnreadIn","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","_props$InputButtons","InputButtons","InputButtonsDefault","_props$InputEditingSt","InputEditingStateHeader","InputEditingStateHeaderDefault","_props$InputGiphySear","InputGiphySearch","InputGiphyCommandInputDefault","_props$InputReplyStat","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","_props$KeyboardCompat","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","_props$legacyImageVie","legacyImageViewerSwipeBehaviour","_props$LoadingErrorIn","LoadingErrorIndicator","LoadingErrorIndicatorDefault","_props$LoadingIndicat","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","_props$ImageLoadingFa","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","_props$ImageLoadingIn","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","_props$maxNumberOfFil","maxNumberOfFiles","maxTimeBetweenGroupedMessages","_props$mentionAllAppU","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","_props$Message","Message","MessageDefault","messageActions","_props$MessageAvatar","MessageAvatar","MessageAvatarDefault","_props$MessageContent","MessageContent","MessageContentDefault","_props$messageContent","messageContentOrder","_props$MessageDeleted","MessageDeleted","MessageDeletedDefault","_props$MessageError","MessageError","MessageErrorDefault","_props$MessageFooter","MessageFooter","MessageFooterDefault","MessageHeader","messageId","_props$MessageList","MessageList","MessageListDefault","_props$MessagePinnedH","MessagePinnedHeader","MessagePinnedHeaderDefault","_props$MessageReplies","MessageReplies","MessageRepliesDefault","_props$MessageReplies2","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","_props$MessageSimple","MessageSimple","MessageSimpleDefault","_props$MessageStatus","MessageStatus","MessageStatusDefault","_props$MessageSystem","MessageSystem","MessageSystemDefault","MessageText","_props$MoreOptionsBut","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","_props$newMessageStat","newMessageStateUpdateThrottleInterval","_props$NetworkDownInd","NetworkDownIndicator","NetworkDownIndicatorDefault","_props$numberOfLines","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","_props$OverlayReactio","OverlayReactionList","OverlayReactionListDefault","_props$ReactionList","ReactionList","ReactionListDefault","read","_props$Reply","Reply","ReplyDefault","_props$ScrollToBottom","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","_props$SendButton","SendButton","SendButtonDefault","_props$SendMessageDis","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","_props$sendImageAsync","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","_props$ShowThreadMess","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","_props$stateUpdateThr","stateUpdateThrottleInterval","StickyHeader","_props$supportedReact","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","_props$TypingIndicato","TypingIndicator","TypingIndicatorDefault","_props$TypingIndicato2","TypingIndicatorContainer","TypingIndicatorContainerDefault","_props$UploadProgress","UploadProgressIndicator","UploadProgressIndicatorDefault","_props$UrlPreview","UrlPreview","_props$VideoThumbnail","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","_useTheme","useTheme","_useTheme$theme","theme","black","colors","_useState","useState","_useState2","_slicedToArray2","deleted","setDeleted","_useState3","_useState4","editing","setEditing","_useState5","_useState6","error","setError","_useState7","_useState8","hasMore","setHasMore","_useState9","_useState10","lastRead","setLastRead","_useState11","state","length","_useState12","loading","setLoading","_useState13","_useState14","setLoadingMore","_useState15","_useState16","setLoadingMoreRecent","_useState17","_useState18","quotedMessage","setQuotedMessage","_useState19","_useState20","setThread","_useState21","_useState22","threadHasMore","setThreadHasMore","_useState23","_useState24","threadLoadingMore","setThreadLoadingMore","_useState25","_useState26","syncingChannel","setSyncingChannel","_useState27","_useState28","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","messagesRef","useRef","current","_useTargetedMessage","useTargetedMessage","setTargetedMessage","targetedMessage","uploadAbortControllerRef","Map","channelId","id","useEffect","initChannel","offlineMode","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","_channel$state$thread","threads","handleAppBackground","useCallback","_channelData$own_capa","channelData","data","own_capabilities","includes","sendEvent","parent_id","useAppStateListener","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","throttle","disconnected","clientChannelConfig","read_events","logChatPromiseExecution","copyMessagesState","_toConsumableArray2","_extends2","watcher_count","channelSubscriptions","push","on","forEach","s","unsubscribe","handleEvent","event","_event$message","updatedThreadMessages","message","updatedThread","formatMessage","_channel$on","_client$on","cid","channelQueryCallRef","_ref","_asyncToGenerator2","_regenerator","mark","_callee","queryCall","onAfterQueryCall","targetMessageId","limit","currentMessages","targetMessageIndex","startIndex","endIndex","hadLatestMessages","recentMessage","stillHasLatestMessages","areLatestMessages","_args","arguments","wrap","_callee$","_context","prev","next","Date","findIndex","_ref2","Math","max","floor","latestMessages","clearMessages","slice","setIsUpToDate","t0","Error","stop","_x","apply","unreadMessageIdToScrollTo","_callee2","lastReadDate","_channel$state$messag","_callee2$","_context2","query","created_at_around","find","m","created_at","loadMessageIntoState","_ref4","messageIdToLoadAround","_callee3","_callee3$","_context3","loadChannelAtMessage","_ref6","_ref6$after","after","_ref6$before","before","_callee4","_callee4$","_context4","queryAtMessage","_callee5","_callee5$","_context5","isUpToDate","watch","abrupt","reloadThread","_ref9","_callee6","parentID","queryResponse","updatedHasMore","_yield$channel$getMes","_messages","_messages2","threadMessage","formattedMessage","_callee6$","_context6","getReplies","sent","getMessagesById","console","warn","resyncChannel","_ref10","_callee7","_messages$","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","parseMessage","failedMessages","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","_callee7$","_context7","addMessagesSorted","addPinnedMessages","pinned_messages","_message$pinned_at","_message$updated_at","toString","pinned_at","updated_at","filter","status","MessageStatusTypes","FAILED","map","resyncChannelRef","connectionChangedHandler","connectionChangedSubscription","DBSyncManager","onSyncStatusChange","online","reloadChannel","_callee8","_callee8$","_context8","_ref13","_callee9","_ref12","_ref12$after","_ref12$before","_callee9$","_context9","queryBeforeMessage","queryAfterMessage","_x2","_ref14","_callee10","_args10","_callee10$","_context10","id_lt","_x3","_ref15","_callee11","_args11","_callee11$","_context11","id_gte","_x4","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","_ref16","attachments","mentioned_users","text","extraFields","_objectWithoutProperties2","_client$user2","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","generateRandomId","userId","reactions","SENDING","quoted_message_id","quoted_message","uploadPendingAttachments","_ref17","_callee12","_updatedMessage$attac","i","_updatedMessage$attac2","attachment","image","file","_image$name","filename","controller","compressedUri","contentType","uploadResponse","_controller","response","_callee12$","_context12","originalImage","originalFile","uri","image_url","isLocalUrl","name","replace","abort","compressedImageURI","lookup","sendImage","asset_url","t1","sendFile","mimeType","thumb_url","_x5","sendMessageRequest","_ref18","_callee13","retrying","_updatedMessage","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","_messageData","messageResponse","_callee13$","_context13","messageData","patchMessageTextCommand","sendMessage","RECEIVED","log","_x6","_x7","_ref19","_callee14","_channel$state","messagePreview","_callee14$","_context14","filterErrorMessages","commands","messageInput","upsertMessages","_x8","retrySendMessage","_ref20","_callee15","statusPendingMessage","_callee15$","_context15","_x9","debounce","newMessages","loadMore","_callee16","oldestMessage","oldestID","_args16","_callee16$","_context16","loadMoreRecent","_callee17","_args17","_callee17$","_context17","loadMoreRecentFinished","editMessage","setEditingState","messageOrBoolean","clearQuotedMessageState","setQuotedMessageState","clearEditingState","deleteMessage","sendReaction","_ref23","_callee18","payload","_callee18$","_context18","enforce_unique","addReactionToLocalState","reactionType","queueTask","task","channelType","_x10","_x11","_ref24","_callee19","_data","_callee19$","_context19","dropPendingTasks","toISOString","_x12","deleteReaction","_ref25","_callee20","_callee20$","_context20","removeReactionFromLocalState","_x13","_x14","openThread","_channel$state2","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","_ref26","_callee21","_threadMessages$","oldestMessageID","_callee21$","_context21","ownCapabilitiesContext","useCreateOwnCapabilitiesContext","overrideCapabilities","channelContext","useCreateChannelContext","disabled","frozen","some","command","isChannelActive","inputMessageInputContext","useCreateInputMessageInputContext","max_message_length","messageListContext","useCreatePaginatedMessageListContext","messagesContext","useCreateMessagesContext","suggestionsContext","threadContext","useCreateThreadContext","typingContext","useCreateTypingContext","createElement","listType","retry","__self","__source","fileName","lineNumber","columnNumber","Text","style","color","testID","behavior","enabled","ChannelProvider","value","OwnCapabilitiesProvider","TypingProvider","PaginatedMessageListProvider","MessagesProvider","ThreadProvider","SuggestionsProvider","MessageInputProvider","View","height","Channel","_props$thread","_props$thread2","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","_useChannelState","useChannelState"],"sources":["Channel.tsx"],"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';\n\nimport { lookup } from 'mime-types';\nimport {\n Channel as ChannelClass,\n ChannelState,\n Channel as ChannelType,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n Reaction,\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 type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { useChannelState } 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, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport { patchMessageTextCommand } from '../../utils/patchMessageTextCommand';\nimport { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';\nimport { generateRandomId, isLocalUrl, MessageStatusTypes, ReactionData } from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageError as MessageErrorDefault } from '../Message/MessageSimple/MessageError';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'enableOfflineSupport'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'getMessagesGroupStyles'\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 | 'MessageError'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enableOfflineSupport,\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 getMessagesGroupStyles,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n // If pickDocument isn't available, default to hiding the file picker\n hasFilePicker = pickDocument !== null,\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 MessageError = MessageErrorDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n /**\n * messages array is tracked in ref so that\n * functions can be passed to message list context without any change due to dependency\n */\n const messagesRef = useRef(messages);\n messagesRef.current = messages;\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n /**\n * This ref will hold the abort controllers for\n * requests made for uploading images/files in the messageInputContext\n * Its a map of filename to AbortController\n */\n const uploadAbortControllerRef = useRef<Map<string, AbortController>>(new Map());\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists, shouldSyncChannel]);\n\n const handleAppBackground = useCallback(() => {\n const channelData = channel.data as\n | Extract<typeof channel.data, { own_capabilities: string[] }>\n | undefined;\n if (channelData?.own_capabilities?.includes('send-typing-events')) {\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 // subscribe to specific channel events\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n if (channel && shouldSyncChannel) {\n channelSubscriptions.push(channel.on('message.new', copyMessagesState));\n channelSubscriptions.push(channel.on('message.read', copyReadState));\n channelSubscriptions.push(channel.on('typing.start', copyTypingState));\n channelSubscriptions.push(channel.on('typing.stop', copyTypingState));\n }\n return () => {\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, shouldSyncChannel]);\n\n // subscribe to the generic all channel event\n useEffect(() => {\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 // only update channel state if the events are not the previously subscribed useEffect's subscription events\n if (\n channel &&\n event.type !== 'message.new' &&\n event.type !== 'message.read' &&\n event.type !== 'typing.start' &&\n event.type !== 'typing.stop'\n ) {\n copyChannelState();\n }\n }\n };\n const { unsubscribe } = channel.on(handleEvent);\n return unsubscribe;\n }, [channelId, thread?.id, shouldSyncChannel]);\n\n // subscribe to channel.deleted event\n useEffect(() => {\n const { unsubscribe } = client.on('channel.deleted', (event) => {\n if (event.cid === channel?.cid) {\n setDeleted(true);\n }\n });\n\n return unsubscribe;\n }, [channelId]);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n // if we are targeting a message after the query, pass it here\n targetMessageId: string | undefined = undefined,\n ) => {\n setError(false);\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n if (channel && targetMessageId) {\n // 30 is the maxToRenderPerBatch in MessageList\n const limit = 30 * 3; // we allow 3 batches of messages to be rendered\n const currentMessages = channel.state.messages;\n // number of messages are over the limit, limit the length of messages\n if (currentMessages.length > limit) {\n const targetMessageIndex = currentMessages.findIndex(\n ({ id }) => id === targetMessageId,\n );\n let startIndex = Math.max(targetMessageIndex - Math.floor(limit / 2), 0);\n const endIndex = targetMessageIndex + Math.floor(limit / 2);\n if (endIndex > currentMessages.length) {\n startIndex = Math.max(startIndex - (endIndex - currentMessages.length - 1) - 1, 0);\n }\n const hadLatestMessages = channel.state.messages === channel.state.latestMessages;\n const recentMessage = currentMessages[currentMessages.length - 1];\n channel.state.clearMessages();\n channel.state.messages = currentMessages.slice(startIndex, endIndex);\n const stillHasLatestMessages =\n hadLatestMessages &&\n channel.state.messages[channel.state.messages.length - 1] === recentMessage;\n setHasNoMoreRecentMessagesToLoad(stillHasLatestMessages);\n channel.state.setIsUpToDate(stillHasLatestMessages);\n }\n } else {\n const areLatestMessages = channel.state.messages === channel.state.latestMessages;\n setHasNoMoreRecentMessagesToLoad(areLatestMessages);\n channel.state.setIsUpToDate(areLatestMessages);\n }\n copyChannelState();\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n let unreadMessageIdToScrollTo: string | undefined;\n // query for messages around the last read date\n return channelQueryCallRef.current(\n async () => {\n setLoading(true);\n const lastReadDate = channel.lastRead();\n // if last read date is present we can just fetch messages around that date\n // last read date not being present is an edge case if somewhere the user of SDK deletes the read state (this will usually never happen)\n if (lastReadDate) {\n // get totally 30 messages... max 15 before last read date and max 15 after last read date\n // ref: https://github.com/GetStream/chat/pull/2588\n await channel.query(\n {\n messages: {\n created_at_around: lastReadDate,\n limit: 30,\n },\n },\n 'new',\n );\n unreadMessageIdToScrollTo = channel.state.messages.find(\n (m) => lastReadDate < m.created_at,\n )?.id;\n } else {\n // we just load the latest messages (25 is the default) and we cant scroll to first unread message\n await channel.state.loadMessageIntoState('latest');\n }\n },\n () => {\n if (unreadMessageIdToScrollTo) {\n setTargetedMessage(unreadMessageIdToScrollTo);\n }\n },\n );\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId: messageIdToLoadAround }) =>\n channelQueryCallRef.current(\n async () => {\n setLoading(true);\n if (messageIdToLoadAround) {\n await channel.state.loadMessageIntoState(messageIdToLoadAround);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n },\n () => {\n if (messageIdToLoadAround) {\n setTargetedMessage(messageIdToLoadAround);\n }\n },\n messageIdToLoadAround,\n );\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n 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 channel.state.addPinnedMessages(state.pinned_messages);\n\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n setHasNoMoreRecentMessagesToLoad(true);\n channel.state.setIsUpToDate(true);\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n channel.state.addPinnedMessages(state.pinned_messages);\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 // resync channel is added to ref so that it can be used in useEffect without adding it as a dependency\n const resyncChannelRef = useRef(resyncChannel);\n resyncChannelRef.current = resyncChannel;\n\n useEffect(() => {\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannelRef.current();\n }\n };\n let connectionChangedSubscription: ReturnType<ChannelType['on']>;\n\n if (enableOfflineSupport) {\n connectionChangedSubscription = DBSyncManager.onSyncStatusChange(connectionChangedHandler);\n } else {\n connectionChangedSubscription = client.on('connection.changed', (event) => {\n if (event.online) {\n connectionChangedHandler();\n }\n });\n }\n return () => {\n connectionChangedSubscription.unsubscribe();\n };\n }, [enableOfflineSupport, shouldSyncChannel]);\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await channel.state.loadMessageIntoState('latest');\n setLoading(false);\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // Exclude following properties from message.user within message preview,\n // since they could be long arrays and have no meaning as sender of message.\n // Storing such large value within user's table may cause sqlite queries to crash.\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { channel_mutes, devices, mutes, ...messageUser } = client.user;\n\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 ...messageUser,\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 uploadPendingAttachments = async (message: MessageResponse<StreamChatGenerics>) => {\n const updatedMessage = { ...message };\n if (updatedMessage.attachments?.length) {\n for (let i = 0; i < updatedMessage.attachments?.length; i++) {\n const attachment = updatedMessage.attachments[i];\n const image = attachment.originalImage;\n const file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n image?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = image.name ?? image.uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(filename);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(filename);\n }\n const compressedUri = await compressedImageURI(image, compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(image, channel)\n : await channel.sendImage(compressedUri, filename, contentType);\n\n attachment.image_url = uploadResponse.file;\n delete attachment.originalFile;\n\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n\n if (\n (attachment.type === 'file' ||\n attachment.type === 'audio' ||\n attachment.type === 'video') &&\n attachment.asset_url &&\n isLocalUrl(attachment.asset_url) &&\n file?.uri\n ) {\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(file.name);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(file.name);\n }\n const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.mimeType);\n attachment.asset_url = response.file;\n if (response.thumb_url) {\n attachment.thumb_url = response.thumb_url;\n }\n delete attachment.originalFile;\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n }\n }\n\n return updatedMessage;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n try {\n const updatedMessage = await uploadPendingAttachments(message);\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 deleted_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n latest_reactions,\n mentioned_users,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n own_reactions,\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 reaction_counts,\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 } = updatedMessage;\n if (!channel.id) return;\n\n const mentionedUserIds = mentioned_users?.map((user) => user.id) || [];\n\n const messageData = {\n attachments,\n id,\n mentioned_users: mentionedUserIds,\n parent_id,\n text: patchMessageTextCommand(text ?? '', mentionedUserIds),\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...messageResponse.message, cid: channel.cid },\n });\n }\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, cid: channel.cid });\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...message, cid: channel.cid },\n });\n }\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 if (enableOfflineSupport) {\n // While sending a message, we add the message to local db with failed status, so that\n // if app gets closed before message gets sent and next time user opens the app\n // then user can see that message in failed state and can retry.\n // If succesfull, it will be updated with received status.\n dbApi.upsertMessages({\n messages: [{ ...messagePreview, cid: channel.cid, status: MessageStatusTypes.FAILED }],\n });\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\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 /**\n * This function loads more messages before the first message in current channel state.\n */\n const loadMore = useCallback<PaginatedMessageListContextValue<StreamChatGenerics>['loadMore']>(\n async (limit = 20) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n const currentMessages = messagesRef.current;\n\n if (!currentMessages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = currentMessages && currentMessages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore]\n * and only those deps should be used here because of that\n */\n [channelId, hasMore, loadingMore],\n );\n\n /**\n * This function loads more messages after the most recent message in current channel state.\n */\n const loadMoreRecent = useCallback<\n PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent']\n >(\n async (limit = 5) => {\n if (hasNoMoreRecentMessagesToLoad) {\n return;\n }\n setLoadingMoreRecent(true);\n const currentMessages = messagesRef.current;\n const recentMessage = currentMessages[currentMessages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n setHasNoMoreRecentMessagesToLoad(queryResponse.messages.length < limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore, hasNoMoreRecentMessagesToLoad]\n * and and only those deps should be used here because of that\n */\n [channelId, hasNoMoreRecentMessagesToLoad],\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 messageOrBoolean,\n ) => {\n clearQuotedMessageState();\n setEditing(messageOrBoolean);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n messageOrBoolean,\n ) => {\n setQuotedMessage(messageOrBoolean);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n /**\n * Removes the message from local state\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 if (enableOfflineSupport) {\n dbApi.deleteMessage({\n id: message.id,\n });\n }\n };\n\n const sendReaction = async (type: string, messageId: string) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass<StreamChatGenerics>['sendReaction']> = [\n messageId,\n {\n type,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n ];\n\n if (!enableOfflineSupport) {\n await channel.sendReaction(...payload);\n return;\n }\n\n addReactionToLocalState<StreamChatGenerics>({\n channel,\n enforceUniqueReaction,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'send-reaction',\n },\n });\n };\n const deleteMessage: MessagesContextValue<StreamChatGenerics>['deleteMessage'] = async (\n message,\n ) => {\n if (!channel.id) {\n throw new Error('Channel has not been initialized yet');\n }\n\n if (!enableOfflineSupport) {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n return;\n }\n await client.deleteMessage(message.id);\n return;\n }\n\n if (message.status === MessageStatusTypes.FAILED) {\n DBSyncManager.dropPendingTasks({ messageId: message.id });\n removeMessage(message);\n } else {\n updateMessage({\n ...message,\n cid: channel.cid,\n deleted_at: new Date().toISOString(),\n type: 'deleted',\n });\n\n const data = await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId: message.id,\n payload: [message.id],\n type: 'delete-message',\n },\n });\n\n if (data?.message) {\n updateMessage({ ...data.message });\n }\n }\n };\n\n const deleteReaction: MessagesContextValue<StreamChatGenerics>['deleteReaction'] = async (\n type: string,\n messageId: string,\n ) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass['deleteReaction']> = [messageId, type];\n\n if (!enableOfflineSupport) {\n await channel.deleteReaction(...payload);\n return;\n }\n\n removeReactionFromLocalState({\n channel,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'delete-reaction',\n },\n });\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n };\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: !!channel?.data?.frozen && disableIfFrozenChannel,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n uploadAbortControllerRef,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n deleteMessage,\n deleteReaction,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n getMessagesGroupStyles,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageError,\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 sendReaction,\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, enableOfflineSupport } = 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 enableOfflineSupport,\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"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_debounce","_interopRequireDefault","_throttle","_mimeTypes","_streamChat","_useCreateChannelContext","_useCreateInputMessageInputContext","_useCreateMessagesContext","_useCreateOwnCapabilitiesContext","_useCreatePaginatedMessageListContext","_useCreateThreadContext","_useCreateTypingContext","_useTargetedMessage2","_ChannelContext","_useChannelState2","_ChatContext","_MessageInputContext","_MessagesContext","_OwnCapabilitiesContext","_PaginatedMessageListContext","_SuggestionsContext","_ThemeContext","_ThreadContext","_TranslationContext","_TypingContext","_useAppStateListener","_icons","_native","dbApi","_addReactionToLocalState","_compressImage","_DBSyncManager","_patchMessageTextCommand","_removeReactionFromLocalState","_utils","_Attachment","_AttachmentActions","_AudioAttachment","_Card","_FileAttachment","_FileAttachmentGroup","_FileIcon","_Gallery","_Giphy","_ImageLoadingFailedIndicator","_ImageLoadingIndicator","_VideoThumbnail","_AutoCompleteSuggestionHeader","_AutoCompleteSuggestionItem","_AutoCompleteSuggestionList","_EmptyStateIndicator","_LoadingErrorIndicator","_LoadingIndicator","_KeyboardCompatibleView","_Message","_MessageAvatar","_MessageContent","_MessageDeleted","_MessageError","_MessageFooter","_MessagePinnedHeader","_MessageReplies","_MessageRepliesAvatars","_MessageSimple","_MessageStatus","_ReactionList","_AttachButton","_CommandsButton","_InputEditingStateHeader","_InputGiphySearch","_InputReplyStateHeader","_CooldownTimer","_FileUploadPreview","_ImageUploadPreview","_InputButtons","_MoreOptionsButton","_SendButton","_SendMessageDisallowedIndicator","_ShowThreadMessageInChannelButton","_UploadProgressIndicator","_DateHeader","_InlineDateSeparator","_InlineUnreadIndicator","_MessageList","_MessageSystem","_NetworkDownIndicator","_ScrollToBottomButton","_TypingIndicator","_TypingIndicatorContainer","_OverlayReactionList","_Reply","_excluded","_excluded2","_excluded3","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","exports","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","_client$user","_channel$data","_ref28","_ref29","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","_props$allowThreadMes","allowThreadMessagesInChannel","_props$AttachButton","AttachButton","AttachButtonDefault","_props$Attachment","Attachment","AttachmentDefault","_props$AttachmentActi","AttachmentActions","AttachmentActionsDefault","_props$AudioAttachmen","AudioAttachment","AudioAttachmentDefault","_props$AutoCompleteSu","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","_props$AutoCompleteSu2","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","_props$AutoCompleteSu3","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","_props$Card","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","_props$CommandsButton","CommandsButton","CommandsButtonDefault","compressImageQuality","_props$CooldownTimer","CooldownTimer","CooldownTimerDefault","_props$DateHeader","DateHeader","DateHeaderDefault","_props$deletedMessage","deletedMessagesVisibilityType","_props$disableIfFroze","disableIfFrozenChannel","_props$disableKeyboar","disableKeyboardCompatibleView","disableTypingIndicator","_props$dismissKeyboar","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","_props$EmptyStateIndi","EmptyStateIndicator","EmptyStateIndicatorDefault","_props$enableMessageG","enableMessageGroupingByUser","enableOfflineSupport","_props$enforceUniqueR","enforceUniqueReaction","_props$FileAttachment","FileAttachment","FileAttachmentDefault","_props$FileAttachment2","FileAttachmentGroup","FileAttachmentGroupDefault","_props$FileAttachment3","FileAttachmentIcon","FileIconDefault","_props$FileUploadPrev","FileUploadPreview","FileUploadPreviewDefault","_props$FlatList","FlatList","FlatListDefault","forceAlignMessages","formatDate","_props$Gallery","Gallery","GalleryDefault","getMessagesGroupStyles","_props$Giphy","Giphy","GiphyDefault","giphyEnabled","_props$giphyVersion","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","_props$hasCommands","hasCommands","_props$hasFilePicker","hasFilePicker","pickDocument","_props$hasImagePicker","hasImagePicker","_props$hideDateSepara","hideDateSeparators","_props$hideStickyDate","hideStickyDateHeader","_props$ImageUploadPre","ImageUploadPreview","ImageUploadPreviewDefault","_props$initialScrollT","initialScrollToFirstUnreadMessage","initialValue","_props$InlineDateSepa","InlineDateSeparator","InlineDateSeparatorDefault","_props$InlineUnreadIn","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","_props$InputButtons","InputButtons","InputButtonsDefault","_props$InputEditingSt","InputEditingStateHeader","InputEditingStateHeaderDefault","_props$InputGiphySear","InputGiphySearch","InputGiphyCommandInputDefault","_props$InputReplyStat","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","_props$KeyboardCompat","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","_props$legacyImageVie","legacyImageViewerSwipeBehaviour","_props$LoadingErrorIn","LoadingErrorIndicator","LoadingErrorIndicatorDefault","_props$LoadingIndicat","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","_props$ImageLoadingFa","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","_props$ImageLoadingIn","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","_props$maxNumberOfFil","maxNumberOfFiles","maxTimeBetweenGroupedMessages","_props$mentionAllAppU","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","_props$Message","Message","MessageDefault","messageActions","_props$MessageAvatar","MessageAvatar","MessageAvatarDefault","_props$MessageContent","MessageContent","MessageContentDefault","_props$messageContent","messageContentOrder","_props$MessageDeleted","MessageDeleted","MessageDeletedDefault","_props$MessageError","MessageError","MessageErrorDefault","_props$MessageFooter","MessageFooter","MessageFooterDefault","MessageHeader","messageId","_props$MessageList","MessageList","MessageListDefault","_props$MessagePinnedH","MessagePinnedHeader","MessagePinnedHeaderDefault","_props$MessageReplies","MessageReplies","MessageRepliesDefault","_props$MessageReplies2","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","_props$MessageSimple","MessageSimple","MessageSimpleDefault","_props$MessageStatus","MessageStatus","MessageStatusDefault","_props$MessageSystem","MessageSystem","MessageSystemDefault","MessageText","_props$MoreOptionsBut","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","_props$newMessageStat","newMessageStateUpdateThrottleInterval","_props$NetworkDownInd","NetworkDownIndicator","NetworkDownIndicatorDefault","_props$numberOfLines","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","_props$OverlayReactio","OverlayReactionList","OverlayReactionListDefault","_props$ReactionList","ReactionList","ReactionListDefault","read","_props$Reply","Reply","ReplyDefault","_props$ScrollToBottom","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","_props$SendButton","SendButton","SendButtonDefault","_props$SendMessageDis","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","_props$sendImageAsync","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","_props$ShowThreadMess","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","_props$stateUpdateThr","stateUpdateThrottleInterval","StickyHeader","_props$supportedReact","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","_props$TypingIndicato","TypingIndicator","TypingIndicatorDefault","_props$TypingIndicato2","TypingIndicatorContainer","TypingIndicatorContainerDefault","_props$UploadProgress","UploadProgressIndicator","UploadProgressIndicatorDefault","_props$UrlPreview","UrlPreview","_props$VideoThumbnail","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","_useTheme","useTheme","_useTheme$theme","theme","black","colors","_useState","useState","_useState2","_slicedToArray2","deleted","setDeleted","_useState3","_useState4","editing","setEditing","_useState5","_useState6","error","setError","_useState7","_useState8","hasMore","setHasMore","_useState9","_useState10","lastRead","setLastRead","_useState11","state","length","_useState12","loading","setLoading","_useState13","_useState14","setLoadingMore","_useState15","_useState16","setLoadingMoreRecent","_useState17","_useState18","quotedMessage","setQuotedMessage","_useState19","_useState20","setThread","_useState21","_useState22","threadHasMore","setThreadHasMore","_useState23","_useState24","threadLoadingMore","setThreadLoadingMore","_useState25","_useState26","syncingChannel","setSyncingChannel","_useState27","_useState28","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","_useTargetedMessage","useTargetedMessage","setTargetedMessage","targetedMessage","hasOverlappingRecentMessagesRef","useRef","uploadAbortControllerRef","Map","channelId","id","useEffect","initChannel","offlineMode","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","_channel$state$thread","threads","handleAppBackground","useCallback","_channelData$own_capa","channelData","data","own_capabilities","includes","sendEvent","parent_id","useAppStateListener","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","throttle","disconnected","clientChannelConfig","read_events","logChatPromiseExecution","current","copyMessagesState","clearInterval","mergeSetsIntervalRef","_toConsumableArray2","restartSetsMergeFuncRef","_extends2","watcher_count","channelSubscriptions","push","on","forEach","s","unsubscribe","handleEvent","event","_event$message","updatedThreadMessages","message","updatedThread","formatMessage","_channel$on","_client$on","cid","_client$on2","channelQueryCallRef","_ref","_asyncToGenerator2","_regenerator","mark","_callee","queryCall","onAfterQueryCall","scrollToMessageId","currentMessages","hadCurrentLatestMessages","scrollToMessageIndex","limitAfter","currentLength","noOfMessagesAfter","endIndex","restOfMessages","latestSet","hasLatestMessages","_args","arguments","wrap","_callee$","_context","prev","next","Date","latestMessages","findIndex","_ref2","clearMessages","slice","splitLatestCurrentMessageSetRef","messageSets","find","isLatest","setIsUpToDate","t0","Error","stop","_x","apply","unreadMessageIdToScrollTo","_callee2","unreadCount","isLatestMessageSetShown","lastReadDate","_res$messages$find","res","_callee2$","_context2","abrupt","isCurrent","query","created_at_around","limit","watch","sent","m","created_at","loadMessageIntoState","loadLatestMessagesRef","_ref4","messageIdToLoadAround","_callee3","currentMessageSet","recentCurrentSetMsgId","_callee3$","_context3","id_gte","loadChannelAtMessage","_ref6","_ref6$after","after","_ref6$before","before","_callee4","_callee4$","_context4","queryAtMessage","currentLatestSet","mergeOverlappingMessageSetsRef","limitToMaxRenderPerBatch","latestMessageSet","concat","filter","setInterval","didMerge","_callee5","clearLatest","_args5","_callee5$","_context5","_callee6","_callee6$","_context6","isUpToDate","reloadThread","_ref10","_callee7","parentID","queryResponse","updatedHasMore","_yield$channel$getMes","_messages","_messages2","threadMessage","formattedMessage","_callee7$","_context7","getReplies","getMessagesById","console","warn","resyncChannel","_ref11","_callee8","_messages$","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","parseMessage","failedMessages","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","_callee8$","_context8","addMessagesSorted","addPinnedMessages","pinned_messages","_message$pinned_at","_message$updated_at","toString","pinned_at","updated_at","status","MessageStatusTypes","FAILED","map","resyncChannelRef","connectionChangedHandler","connectionChangedSubscription","DBSyncManager","onSyncStatusChange","online","reloadChannel","_callee9","_callee9$","_context9","_ref14","_callee10","_ref13","_ref13$after","_ref13$before","_callee10$","_context10","queryBeforeMessage","queryAfterMessage","_x2","_ref15","_callee11","_args11","_callee11$","_context11","id_lt","_x3","_ref16","_callee12","currentSet","_args12","_callee12$","_context12","_x4","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","_ref17","attachments","mentioned_users","text","extraFields","_objectWithoutProperties2","_client$user2","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","generateRandomId","userId","reactions","SENDING","quoted_message_id","quoted_message","uploadPendingAttachments","_ref18","_callee13","_updatedMessage$attac","i","_updatedMessage$attac2","attachment","image","file","_image$name","filename","controller","compressedUri","contentType","uploadResponse","_controller","response","_callee13$","_context13","originalImage","originalFile","uri","image_url","isLocalUrl","name","replace","abort","compressedImageURI","lookup","sendImage","asset_url","t1","sendFile","mimeType","thumb_url","_x5","sendMessageRequest","_ref19","_callee14","retrying","_updatedMessage","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","_messageData","messageResponse","_callee14$","_context14","messageData","patchMessageTextCommand","sendMessage","RECEIVED","log","_x6","_x7","_ref20","_callee15","_channel$state","messagePreview","_callee15$","_context15","filterErrorMessages","commands","messageInput","upsertMessages","_x8","retrySendMessage","_ref21","_callee16","statusPendingMessage","_callee16$","_context16","_x9","debounce","newMessages","loadMore","_callee17","oldestMessage","oldestID","_args17","_callee17$","_context17","loadMoreRecent","_callee18","latestLengthBeforeMerge","recentMessage","gotAllRecentMessages","_args18","_callee18$","_context18","loadMoreRecentFinished","editMessage","setEditingState","messageOrBoolean","clearQuotedMessageState","setQuotedMessageState","clearEditingState","deleteMessage","sendReaction","_ref24","_callee19","payload","_callee19$","_context19","enforce_unique","addReactionToLocalState","reactionType","queueTask","task","channelType","_x10","_x11","_ref25","_callee20","_data","_callee20$","_context20","dropPendingTasks","toISOString","_x12","deleteReaction","_ref26","_callee21","_callee21$","_context21","removeReactionFromLocalState","_x13","_x14","openThread","_channel$state2","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","_ref27","_callee22","_threadMessages$","oldestMessageID","_callee22$","_context22","ownCapabilitiesContext","useCreateOwnCapabilitiesContext","overrideCapabilities","channelContext","useCreateChannelContext","disabled","frozen","some","command","isChannelActive","inputMessageInputContext","useCreateInputMessageInputContext","max_message_length","messageListContext","useCreatePaginatedMessageListContext","messagesContext","useCreateMessagesContext","suggestionsContext","threadContext","useCreateThreadContext","typingContext","useCreateTypingContext","createElement","listType","retry","__self","__source","fileName","lineNumber","columnNumber","Text","style","color","testID","behavior","enabled","ChannelProvider","value","OwnCapabilitiesProvider","TypingProvider","PaginatedMessageListProvider","MessagesProvider","ThreadProvider","SuggestionsProvider","MessageInputProvider","View","height","Channel","_props$thread","_props$thread2","_props$channel","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","_useChannelState","useChannelState"],"sources":["Channel.tsx"],"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';\n\nimport { lookup } from 'mime-types';\nimport {\n Channel as ChannelClass,\n ChannelState,\n Channel as ChannelType,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n Reaction,\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 type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { useChannelState } 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, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport { patchMessageTextCommand } from '../../utils/patchMessageTextCommand';\nimport { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';\nimport { generateRandomId, isLocalUrl, MessageStatusTypes, ReactionData } from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageError as MessageErrorDefault } from '../Message/MessageSimple/MessageError';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'enableOfflineSupport'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'getMessagesGroupStyles'\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 | 'MessageError'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enableOfflineSupport,\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 getMessagesGroupStyles,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n // If pickDocument isn't available, default to hiding the file picker\n hasFilePicker = pickDocument !== null,\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 MessageError = MessageErrorDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n /**\n * If we loaded a channel around message\n * We may have moved latest message to a new message set in that case mark this ref to avoid fetching\n */\n const hasOverlappingRecentMessagesRef = useRef(false);\n\n /**\n * This ref will hold the abort controllers for\n * requests made for uploading images/files in the messageInputContext\n * Its a map of filename to AbortController\n */\n const uploadAbortControllerRef = useRef<Map<string, AbortController>>(new Map());\n\n const channelId = channel?.id || '';\n\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists, shouldSyncChannel]);\n\n const handleAppBackground = useCallback(() => {\n const channelData = channel.data as\n | Extract<typeof channel.data, { own_capabilities: string[] }>\n | undefined;\n if (channelData?.own_capabilities?.includes('send-typing-events')) {\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 clearInterval(mergeSetsIntervalRef.current);\n setMessages([...channel.state.messages]);\n restartSetsMergeFuncRef.current();\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 // subscribe to specific channel events\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n if (channel && shouldSyncChannel) {\n channelSubscriptions.push(channel.on('message.new', copyMessagesState));\n channelSubscriptions.push(channel.on('message.read', copyReadState));\n channelSubscriptions.push(channel.on('typing.start', copyTypingState));\n channelSubscriptions.push(channel.on('typing.stop', copyTypingState));\n }\n return () => {\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, shouldSyncChannel]);\n\n // subscribe to the generic all channel event\n useEffect(() => {\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 // only update channel state if the events are not the previously subscribed useEffect's subscription events\n if (\n channel &&\n event.type !== 'message.new' &&\n event.type !== 'message.read' &&\n event.type !== 'typing.start' &&\n event.type !== 'typing.stop'\n ) {\n copyChannelState();\n }\n }\n };\n const { unsubscribe } = channel.on(handleEvent);\n return unsubscribe;\n }, [channelId, thread?.id, shouldSyncChannel]);\n\n // subscribe to channel.deleted event\n useEffect(() => {\n const { unsubscribe } = client.on('channel.deleted', (event) => {\n if (event.cid === channel?.cid) {\n setDeleted(true);\n }\n });\n\n return unsubscribe;\n }, [channelId]);\n\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (channel.cid === event.cid) copyChannelState();\n };\n\n const { unsubscribe } = client.on('notification.mark_read', handleEvent);\n return unsubscribe;\n }, []);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n // if we are scrolling to a message after the query, pass it here\n scrollToMessageId: string | (() => string | undefined) | undefined = undefined,\n ) => {\n setError(false);\n try {\n clearInterval(mergeSetsIntervalRef.current);\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n const currentMessages = channel.state.messages;\n const hadCurrentLatestMessages =\n currentMessages.length > 0 && currentMessages === channel.state.latestMessages;\n if (typeof scrollToMessageId === 'function') {\n scrollToMessageId = scrollToMessageId();\n }\n const scrollToMessageIndex = scrollToMessageId\n ? currentMessages.findIndex(({ id }) => id === scrollToMessageId)\n : -1;\n if (channel && scrollToMessageIndex !== -1) {\n // We assume that on average user sees 5 messages on screen\n // We dont want new renders to happen while scrolling to the targeted message\n // hence we limit the number of messages to be rendered after the targeted message to 5 - 1 = 4\n // NOTE: we have one drawback here, if there were already a split latest and current message set\n // the previous latest message set will be thrown away as we cannot merge it with the current message set after the target message is set\n const limitAfter = 4;\n const currentLength = currentMessages.length;\n if (scrollToMessageIndex !== -1) {\n const noOfMessagesAfter = currentLength - scrollToMessageIndex - 1;\n // number of messages are over the limit, limit the length of messages\n if (noOfMessagesAfter > limitAfter) {\n const endIndex = scrollToMessageIndex + limitAfter;\n channel.state.clearMessages();\n channel.state.messages = currentMessages.slice(0, endIndex + 1);\n splitLatestCurrentMessageSetRef.current();\n const restOfMessages = currentMessages.slice(endIndex + 1);\n if (hadCurrentLatestMessages) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) {\n latestSet.messages = restOfMessages;\n hasOverlappingRecentMessagesRef.current = true;\n }\n }\n }\n }\n }\n const hasLatestMessages = channel.state.latestMessages.length > 0;\n channel.state.setIsUpToDate(hasLatestMessages);\n setHasNoMoreRecentMessagesToLoad(hasLatestMessages);\n copyChannelState();\n restartSetsMergeFuncRef.current();\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n let unreadMessageIdToScrollTo: string | undefined;\n // query for messages around the last read date\n return channelQueryCallRef.current(\n async () => {\n const unreadCount = channel.countUnread();\n if (unreadCount === 0) return;\n const isLatestMessageSetShown = !!channel.state.messageSets.find(\n (set) => set.isCurrent && set.isLatest,\n );\n if (isLatestMessageSetShown && unreadCount <= channel.state.messages.length) {\n unreadMessageIdToScrollTo =\n channel.state.messages[channel.state.messages.length - unreadCount].id;\n return;\n }\n const lastReadDate = channel.lastRead();\n\n // if last read date is present we can just fetch messages around that date\n // last read date not being present is an edge case if somewhere the user of SDK deletes the read state (this will usually never happen)\n if (lastReadDate) {\n setLoading(true);\n // get totally 30 messages... max 15 before last read date and max 15 after last read date\n // ref: https://github.com/GetStream/chat/pull/2588\n const res = await channel.query(\n {\n messages: {\n created_at_around: lastReadDate,\n limit: 30,\n },\n watch: true,\n },\n 'new',\n );\n unreadMessageIdToScrollTo = res.messages.find(\n (m) => lastReadDate < (m.created_at ? new Date(m.created_at) : new Date()),\n )?.id;\n if (unreadMessageIdToScrollTo) {\n channel.state.loadMessageIntoState(unreadMessageIdToScrollTo);\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n undefined,\n () => unreadMessageIdToScrollTo,\n );\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId: messageIdToLoadAround }) =>\n channelQueryCallRef.current(\n async () => {\n setLoading(true);\n if (messageIdToLoadAround) {\n setMessages([]);\n await channel.state.loadMessageIntoState(messageIdToLoadAround);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentMessageSet && !currentMessageSet?.isLatest) {\n // if the current message set is not the latest, we will throw away the latest messages\n // in order to attempt to not throw away, will attempt to merge it by loading 25 more messages\n const recentCurrentSetMsgId =\n currentMessageSet.messages[currentMessageSet.messages.length - 1].id;\n await channel.query({\n messages: {\n id_gte: recentCurrentSetMsgId,\n limit: 25,\n },\n watch: true,\n });\n // if the gap is more than 25, we will unfortunately have to throw away the latest messages\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (messageIdToLoadAround) {\n setTargetedMessage(messageIdToLoadAround);\n }\n },\n messageIdToLoadAround,\n );\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n /**\n * Utility method to mark that current set if latest into two.\n * With an empty latest set\n * This is useful when we know that we dont know the latest messages anymore\n * Or if we are loading a channel around a message\n */\n const splitLatestCurrentMessageSetRef = useRef(() => {\n const currentLatestSet = channel.state.messageSets.find((set) => set.isCurrent && set.isLatest);\n if (!currentLatestSet) return;\n // unmark the current latest set\n currentLatestSet.isLatest = false;\n // create a new set with empty latest messages\n channel.state.messageSets.push({\n isCurrent: false,\n isLatest: true,\n messages: [],\n });\n });\n\n /**\n * Utility method to merge current and latest message set.\n * Returns true if merge was successful, false otherwise.\n */\n const mergeOverlappingMessageSetsRef = useRef((limitToMaxRenderPerBatch = false) => {\n if (hasOverlappingRecentMessagesRef.current) {\n const limit = 30; // 30 is the maxToRenderPerBatch\n // merge current and latest sets\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (latestMessageSet && currentMessageSet && latestMessageSet !== currentMessageSet) {\n if (limitToMaxRenderPerBatch && latestMessageSet.messages.length > limit) {\n currentMessageSet.messages = currentMessageSet.messages.concat(\n latestMessageSet.messages.slice(0, limit),\n );\n latestMessageSet.messages = latestMessageSet.messages.slice(limit);\n } else {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages);\n currentMessageSet.isLatest = true;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n }\n return true;\n }\n }\n return false;\n });\n\n const mergeSetsIntervalRef = useRef<NodeJS.Timeout>();\n\n // clear the interval on unmount\n useEffect(\n () => () => {\n clearInterval(mergeSetsIntervalRef.current);\n },\n [],\n );\n\n // if we had split the latest and current message set, we try to merge them back\n const restartSetsMergeFuncRef = useRef(() => {\n clearInterval(mergeSetsIntervalRef.current);\n if (!hasOverlappingRecentMessagesRef.current) return;\n mergeSetsIntervalRef.current = setInterval(() => {\n const currentLength = channel.state.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge && channel.state.messages.length !== currentLength) {\n setMessages([...channel.state.messages]);\n }\n }, 1000);\n });\n\n /**\n * Shows the latest messages from the channel state\n * If recent messages are empty, fetches new\n * @param clearLatest If true, clears the latest messages before loading (useful for complete refresh)\n */\n const loadLatestMessagesRef = useRef(async (clearLatest = false) => {\n mergeOverlappingMessageSetsRef.current();\n if (clearLatest) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) latestSet.messages = [];\n }\n if (channel.state.latestMessages.length === 0) {\n await channel.query({}, 'latest');\n }\n await channel.state.loadMessageIntoState('latest');\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n } else {\n await loadLatestMessagesRef.current(true);\n }\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\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 hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\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 channel.state.addPinnedMessages(state.pinned_messages);\n\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 channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n channel.state.addPinnedMessages(state.pinned_messages);\n setHasNoMoreRecentMessagesToLoad(true);\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 // resync channel is added to ref so that it can be used in useEffect without adding it as a dependency\n const resyncChannelRef = useRef(resyncChannel);\n resyncChannelRef.current = resyncChannel;\n\n useEffect(() => {\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannelRef.current();\n }\n };\n let connectionChangedSubscription: ReturnType<ChannelType['on']>;\n\n if (enableOfflineSupport) {\n connectionChangedSubscription = DBSyncManager.onSyncStatusChange(connectionChangedHandler);\n } else {\n connectionChangedSubscription = client.on('connection.changed', (event) => {\n if (event.online) {\n connectionChangedHandler();\n }\n });\n }\n return () => {\n connectionChangedSubscription.unsubscribe();\n };\n }, [enableOfflineSupport, shouldSyncChannel]);\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await loadLatestMessagesRef.current(true);\n setLoading(false);\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n channel.state.clearMessages();\n setMessages([]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n // make current set as the latest\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n splitLatestCurrentMessageSetRef.current();\n channel.state.setIsUpToDate(false);\n setHasNoMoreRecentMessagesToLoad(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 // Exclude following properties from message.user within message preview,\n // since they could be long arrays and have no meaning as sender of message.\n // Storing such large value within user's table may cause sqlite queries to crash.\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { channel_mutes, devices, mutes, ...messageUser } = client.user;\n\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 ...messageUser,\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 uploadPendingAttachments = async (message: MessageResponse<StreamChatGenerics>) => {\n const updatedMessage = { ...message };\n if (updatedMessage.attachments?.length) {\n for (let i = 0; i < updatedMessage.attachments?.length; i++) {\n const attachment = updatedMessage.attachments[i];\n const image = attachment.originalImage;\n const file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n image?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = image.name ?? image.uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(filename);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(filename);\n }\n const compressedUri = await compressedImageURI(image, compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(image, channel)\n : await channel.sendImage(compressedUri, filename, contentType);\n\n attachment.image_url = uploadResponse.file;\n delete attachment.originalFile;\n\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n\n if (\n (attachment.type === 'file' ||\n attachment.type === 'audio' ||\n attachment.type === 'video') &&\n attachment.asset_url &&\n isLocalUrl(attachment.asset_url) &&\n file?.uri\n ) {\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(file.name);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(file.name);\n }\n const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.mimeType);\n attachment.asset_url = response.file;\n if (response.thumb_url) {\n attachment.thumb_url = response.thumb_url;\n }\n delete attachment.originalFile;\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n }\n }\n\n return updatedMessage;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n try {\n const updatedMessage = await uploadPendingAttachments(message);\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 deleted_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n latest_reactions,\n mentioned_users,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n own_reactions,\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 reaction_counts,\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 } = updatedMessage;\n if (!channel.id) return;\n\n const mentionedUserIds = mentioned_users?.map((user) => user.id) || [];\n\n const messageData = {\n attachments,\n id,\n mentioned_users: mentionedUserIds,\n parent_id,\n text: patchMessageTextCommand(text ?? '', mentionedUserIds),\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...messageResponse.message, cid: channel.cid },\n });\n }\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, cid: channel.cid });\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...message, cid: channel.cid },\n });\n }\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 mergeOverlappingMessageSetsRef.current();\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n if (enableOfflineSupport) {\n // While sending a message, we add the message to local db with failed status, so that\n // if app gets closed before message gets sent and next time user opens the app\n // then user can see that message in failed state and can retry.\n // If succesfull, it will be updated with received status.\n dbApi.upsertMessages({\n messages: [{ ...messagePreview, cid: channel.cid, status: MessageStatusTypes.FAILED }],\n });\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\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 setLoading(false);\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n /**\n * This function loads more messages before the first message in current channel state.\n */\n const loadMore = useCallback<PaginatedMessageListContextValue<StreamChatGenerics>['loadMore']>(\n async (limit = 20) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n\n const currentMessages = channel.state.messages;\n\n if (!currentMessages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = currentMessages && currentMessages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n setLoadingMore(true);\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore]\n * and only those deps should be used here because of that\n */\n [channelId, hasMore, loadingMore],\n );\n\n /**\n * This function loads more messages after the most recent message in current channel state.\n */\n const loadMoreRecent = useCallback<\n PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent']\n >(\n async (limit = 5) => {\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const latestLengthBeforeMerge = latestMessageSet?.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge) {\n if (latestMessageSet && latestLengthBeforeMerge >= limit) {\n setLoadingMoreRecent(true);\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n loadMoreRecentFinished(channel.state.messages);\n restartSetsMergeFuncRef.current();\n return;\n }\n }\n if (channel.state.isUpToDate) {\n setLoadingMoreRecent(false);\n return;\n }\n const currentMessages = channel.state.messages;\n const recentMessage = currentMessages[currentMessages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n setLoadingMoreRecent(true);\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n const gotAllRecentMessages = queryResponse.messages.length < limit;\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (gotAllRecentMessages && currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n // make current set as the latest\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(gotAllRecentMessages);\n setHasNoMoreRecentMessagesToLoad(gotAllRecentMessages);\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 * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore, hasNoMoreRecentMessagesToLoad]\n * and and only those deps should be used here because of that\n */\n [channelId, hasNoMoreRecentMessagesToLoad],\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 messageOrBoolean,\n ) => {\n clearQuotedMessageState();\n setEditing(messageOrBoolean);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n messageOrBoolean,\n ) => {\n setQuotedMessage(messageOrBoolean);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n /**\n * Removes the message from local state\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 if (enableOfflineSupport) {\n dbApi.deleteMessage({\n id: message.id,\n });\n }\n };\n\n const sendReaction = async (type: string, messageId: string) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass<StreamChatGenerics>['sendReaction']> = [\n messageId,\n {\n type,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n ];\n\n if (!enableOfflineSupport) {\n await channel.sendReaction(...payload);\n return;\n }\n\n addReactionToLocalState<StreamChatGenerics>({\n channel,\n enforceUniqueReaction,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'send-reaction',\n },\n });\n };\n const deleteMessage: MessagesContextValue<StreamChatGenerics>['deleteMessage'] = async (\n message,\n ) => {\n if (!channel.id) {\n throw new Error('Channel has not been initialized yet');\n }\n\n if (!enableOfflineSupport) {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n return;\n }\n await client.deleteMessage(message.id);\n return;\n }\n\n if (message.status === MessageStatusTypes.FAILED) {\n DBSyncManager.dropPendingTasks({ messageId: message.id });\n removeMessage(message);\n } else {\n updateMessage({\n ...message,\n cid: channel.cid,\n deleted_at: new Date().toISOString(),\n type: 'deleted',\n });\n\n const data = await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId: message.id,\n payload: [message.id],\n type: 'delete-message',\n },\n });\n\n if (data?.message) {\n updateMessage({ ...data.message });\n }\n }\n };\n\n const deleteReaction: MessagesContextValue<StreamChatGenerics>['deleteReaction'] = async (\n type: string,\n messageId: string,\n ) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass['deleteReaction']> = [messageId, type];\n\n if (!enableOfflineSupport) {\n await channel.deleteReaction(...payload);\n return;\n }\n\n removeReactionFromLocalState({\n channel,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'delete-reaction',\n },\n });\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n };\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: !!channel?.data?.frozen && disableIfFrozenChannel,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n uploadAbortControllerRef,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n deleteMessage,\n deleteReaction,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n getMessagesGroupStyles,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageError,\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 sendReaction,\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, enableOfflineSupport } = 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 key={props.channel?.cid}\n {...{\n client,\n enableOfflineSupport,\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"],"mappings":"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"}