stream-chat-react-native-core 5.7.1-beta.1 → 5.8.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["Channel.tsx"],"names":["styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","AudioAttachment","AudioAttachmentDefault","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","CommandsButton","CommandsButtonDefault","compressImageQuality","CooldownTimer","CooldownTimerDefault","DateHeader","DateHeaderDefault","deletedMessagesVisibilityType","disableIfFrozenChannel","disableKeyboardCompatibleView","disableTypingIndicator","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","EmptyStateIndicator","EmptyStateIndicatorDefault","enableMessageGroupingByUser","enableOfflineSupport","enforceUniqueReaction","FileAttachment","FileAttachmentDefault","FileAttachmentGroup","FileAttachmentGroupDefault","FileAttachmentIcon","FileIconDefault","FileUploadPreview","FileUploadPreviewDefault","FlatList","FlatListDefault","forceAlignMessages","formatDate","Gallery","GalleryDefault","getMessagesGroupStyles","Giphy","GiphyDefault","giphyEnabled","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","hasCommands","hasFilePicker","pickDocument","hasImagePicker","hideDateSeparators","hideStickyDateHeader","ImageUploadPreview","ImageUploadPreviewDefault","initialScrollToFirstUnreadMessage","initialValue","InlineDateSeparator","InlineDateSeparatorDefault","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","InputButtons","InputButtonsDefault","InputEditingStateHeader","InputEditingStateHeaderDefault","InputGiphySearch","InputGiphyCommandInputDefault","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","legacyImageViewerSwipeBehaviour","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","maxNumberOfFiles","maxTimeBetweenGroupedMessages","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","Message","MessageDefault","messageActions","MessageAvatar","MessageAvatarDefault","MessageContent","MessageContentDefault","messageContentOrder","MessageDeleted","MessageDeletedDefault","MessageFooter","MessageFooterDefault","MessageHeader","messageId","MessageList","MessageListDefault","MessagePinnedHeader","MessagePinnedHeaderDefault","MessageReplies","MessageRepliesDefault","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","MessageSimple","MessageSimpleDefault","MessageStatus","MessageStatusDefault","MessageSystem","MessageSystemDefault","MessageText","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","newMessageStateUpdateThrottleInterval","NetworkDownIndicator","NetworkDownIndicatorDefault","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","OverlayReactionList","OverlayReactionListDefault","ReactionList","ReactionListDefault","read","Reply","ReplyDefault","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","SendButton","SendButtonDefault","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","stateUpdateThrottleInterval","StickyHeader","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","TypingIndicator","TypingIndicatorDefault","TypingIndicatorContainer","TypingIndicatorContainerDefault","UploadProgressIndicator","UploadProgressIndicatorDefault","UrlPreview","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","theme","black","colors","deleted","setDeleted","editing","setEditing","error","setError","hasMore","setHasMore","lastRead","setLastRead","state","length","loading","setLoading","setLoadingMore","setLoadingMoreRecent","quotedMessage","setQuotedMessage","setThread","threadHasMore","setThreadHasMore","threadLoadingMore","setThreadLoadingMore","syncingChannel","setSyncingChannel","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","setTargetedMessage","targetedMessage","channelId","id","initChannel","offlineMode","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","threads","handleAppBackground","sendEvent","parent_id","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","disconnected","clientChannelConfig","read_events","current","copyMessagesState","watcher_count","connectionChangedHandler","resyncChannel","handleEvent","event","updatedThreadMessages","message","updatedThread","formatMessage","channelSubscriptions","clientSubscriptions","subscribe","push","DBSyncManager","onSyncStatusChange","on","cid","forEach","s","unsubscribe","channelQueryCallRef","queryCall","onAfterQueryCall","Date","Error","unreadCount","lastReadDate","query","created_at_around","limit","loadMessageIntoState","setIsUpToDate","loadChannelAtMessage","after","before","queryAtMessage","isUpToDate","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","clearMessages","addMessagesSorted","parseMessage","created_at","toString","pinned_at","updated_at","failedMessages","filter","status","MessageStatusTypes","FAILED","map","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","findIndex","slice","reloadChannel","queryBeforeMessage","queryAfterMessage","id_lt","id_gte","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","attachments","mentioned_users","text","extraFields","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","userId","reactions","SENDING","quoted_message_id","find","quoted_message","uploadPendingAttachments","i","attachment","file","originalFile","uri","image_url","filename","replace","contentType","sendImage","uploadResponse","dbApi","asset_url","sendFile","name","response","thumb_url","sendMessageRequest","retrying","deleted_at","latest_reactions","own_reactions","reaction_counts","messageData","mentionedUser","messageResponse","sendMessage","RECEIVED","log","filterErrorMessages","messagePreview","commands","messageInput","upsertMessages","retrySendMessage","statusPendingMessage","newMessages","loadMore","oldestMessage","oldestID","loadMoreRecent","recentMessage","loadMoreRecentFinished","editMessage","setEditingState","setQuotedMessageState","clearEditingState","clearQuotedMessageState","deleteMessage","sendReaction","payload","enforce_unique","reactionType","queueTask","task","channelType","dropPendingTasks","toISOString","data","deleteReaction","openThread","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","oldestMessageID","ownCapabilitiesContext","overrideCapabilities","channelContext","disabled","frozen","some","command","isChannelActive","inputMessageInputContext","max_message_length","messageListContext","messagesContext","suggestionsContext","threadContext","typingContext","color","height","Channel"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\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 { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\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 { 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 | '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 MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists]);\n\n const handleAppBackground = useCallback(() => {\n if (channel) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n setMessages([...channel.state.messages]);\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannel();\n }\n };\n\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (shouldSyncChannel) {\n if (thread) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n\n if (event.type === 'typing.start' || event.type === 'typing.stop') {\n copyTypingState();\n } else if (event.type === 'message.read') {\n copyReadState();\n } else if (event.type === 'message.new') {\n copyMessagesState();\n } else if (channel) {\n copyChannelState();\n }\n }\n };\n\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n const clientSubscriptions: Array<ReturnType<StreamChat['on']>> = [];\n\n const subscribe = () => {\n if (!channel) return;\n\n /**\n * The more complex sync logic around internet connectivity (NetInfo) is part of Chat.tsx\n * listen to client.connection.recovered and all channel events\n */\n clientSubscriptions.push(DBSyncManager.onSyncStatusChange(connectionChangedHandler));\n clientSubscriptions.push(\n client.on('channel.deleted', (event) => {\n if (event.cid === channel.cid) {\n setDeleted(true);\n }\n }),\n );\n channelSubscriptions.push(channel.on(handleEvent));\n };\n\n subscribe();\n\n return () => {\n clientSubscriptions.forEach((s) => s.unsubscribe());\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, connectionChangedHandler, handleEvent]);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n ) => {\n setError(false);\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n // temporarily clear existing messages so that messageList component gets a list change and does not scroll to any unread message first before loading completes\n setMessages([]);\n // query for messages around the last read date\n return channelQueryCallRef.current(async () => {\n setLoading(true);\n const lastReadDate = channel.lastRead() || new Date(0);\n await channel.query({\n messages: {\n created_at_around: lastReadDate,\n limit: 25,\n },\n });\n setLoading(false);\n });\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId }) =>\n channelQueryCallRef.current(\n async () => {\n setHasNoMoreRecentMessagesToLoad(false); // we are jumping to a message, hence we do not know for sure anymore if there are no more recent messages\n setLoading(true);\n if (messageId) {\n await channel.state.loadMessageIntoState(messageId);\n } else {\n await channel.state.loadMessageIntoState('latest');\n channel.state.setIsUpToDate(true);\n }\n setLoading(false);\n },\n () => {\n if (messageId) {\n setTargetedMessage(messageId);\n }\n },\n );\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannel) return;\n setSyncingChannel(true);\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n setHasNoMoreRecentMessagesToLoad(true);\n channel.state.setIsUpToDate(true);\n\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n setSyncingChannel(false);\n };\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await channel.state.loadMessageIntoState('latest');\n setLoading(false);\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // 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 file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n file?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = file.uri.replace(/^(file:\\/\\/|content:\\/\\/|assets-library:\\/\\/)/, '');\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(file, channel)\n : await channel.sendImage(file?.uri, 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 const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.type);\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 messageData = {\n attachments,\n id,\n mentioned_users: mentioned_users?.map((mentionedUser) => mentionedUser.id) || [],\n parent_id,\n text,\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 const loadMore: PaginatedMessageListContextValue<StreamChatGenerics>['loadMore'] = async (\n limit = 20,\n ) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n if (!messages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = messages && messages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n };\n\n const loadMoreRecent: PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent'] =\n async (limit = 5) => {\n if (hasNoMoreRecentMessagesToLoad) {\n return;\n }\n\n setLoadingMoreRecent(true);\n\n const recentMessage = messages[messages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n const state = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n setHasNoMoreRecentMessagesToLoad(state.messages.length < limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n message,\n ) => {\n setQuotedMessage(message);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n\n 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 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 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 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"]}
1
+ {"version":3,"sources":["Channel.tsx"],"names":["styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","allowThreadMessagesInChannel","AttachButton","AttachButtonDefault","Attachment","AttachmentDefault","AttachmentActions","AttachmentActionsDefault","AudioAttachment","AudioAttachmentDefault","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","CommandsButton","CommandsButtonDefault","compressImageQuality","CooldownTimer","CooldownTimerDefault","DateHeader","DateHeaderDefault","deletedMessagesVisibilityType","disableIfFrozenChannel","disableKeyboardCompatibleView","disableTypingIndicator","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","EmptyStateIndicator","EmptyStateIndicatorDefault","enableMessageGroupingByUser","enableOfflineSupport","enforceUniqueReaction","FileAttachment","FileAttachmentDefault","FileAttachmentGroup","FileAttachmentGroupDefault","FileAttachmentIcon","FileIconDefault","FileUploadPreview","FileUploadPreviewDefault","FlatList","FlatListDefault","forceAlignMessages","formatDate","Gallery","GalleryDefault","getMessagesGroupStyles","Giphy","GiphyDefault","giphyEnabled","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","hasCommands","hasFilePicker","pickDocument","hasImagePicker","hideDateSeparators","hideStickyDateHeader","ImageUploadPreview","ImageUploadPreviewDefault","initialScrollToFirstUnreadMessage","initialValue","InlineDateSeparator","InlineDateSeparatorDefault","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","InputButtons","InputButtonsDefault","InputEditingStateHeader","InputEditingStateHeaderDefault","InputGiphySearch","InputGiphyCommandInputDefault","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","legacyImageViewerSwipeBehaviour","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","maxNumberOfFiles","maxTimeBetweenGroupedMessages","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","Message","MessageDefault","messageActions","MessageAvatar","MessageAvatarDefault","MessageContent","MessageContentDefault","messageContentOrder","MessageDeleted","MessageDeletedDefault","MessageFooter","MessageFooterDefault","MessageHeader","messageId","MessageList","MessageListDefault","MessagePinnedHeader","MessagePinnedHeaderDefault","MessageReplies","MessageRepliesDefault","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","MessageSimple","MessageSimpleDefault","MessageStatus","MessageStatusDefault","MessageSystem","MessageSystemDefault","MessageText","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","newMessageStateUpdateThrottleInterval","NetworkDownIndicator","NetworkDownIndicatorDefault","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","OverlayReactionList","OverlayReactionListDefault","ReactionList","ReactionListDefault","read","Reply","ReplyDefault","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","SendButton","SendButtonDefault","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","stateUpdateThrottleInterval","StickyHeader","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","TypingIndicator","TypingIndicatorDefault","TypingIndicatorContainer","TypingIndicatorContainerDefault","UploadProgressIndicator","UploadProgressIndicatorDefault","UrlPreview","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","theme","black","colors","deleted","setDeleted","editing","setEditing","error","setError","hasMore","setHasMore","lastRead","setLastRead","state","length","loading","setLoading","setLoadingMore","setLoadingMoreRecent","quotedMessage","setQuotedMessage","setThread","threadHasMore","setThreadHasMore","threadLoadingMore","setThreadLoadingMore","syncingChannel","setSyncingChannel","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","setTargetedMessage","targetedMessage","channelId","id","initChannel","offlineMode","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","threads","handleAppBackground","sendEvent","parent_id","undefined","isAdmin","user","role","membership","isModerator","isOwner","markRead","disconnected","clientChannelConfig","read_events","current","copyMessagesState","watcher_count","connectionChangedHandler","resyncChannel","handleEvent","event","updatedThreadMessages","message","updatedThread","formatMessage","channelSubscriptions","clientSubscriptions","subscribe","push","DBSyncManager","onSyncStatusChange","on","cid","forEach","s","unsubscribe","channelQueryCallRef","queryCall","onAfterQueryCall","Date","Error","unreadCount","lastReadDate","query","created_at_around","limit","loadMessageIntoState","setIsUpToDate","loadChannelAtMessage","after","before","queryAtMessage","isUpToDate","watch","reloadThread","parentID","getReplies","queryResponse","updatedHasMore","getMessagesById","threadMessage","formattedMessage","console","warn","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","clearMessages","addMessagesSorted","parseMessage","created_at","toString","pinned_at","updated_at","failedMessages","filter","status","MessageStatusTypes","FAILED","map","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","findIndex","slice","reloadChannel","queryBeforeMessage","queryAfterMessage","id_lt","id_gte","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","attachments","mentioned_users","text","extraFields","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","userId","reactions","SENDING","quoted_message_id","find","quoted_message","uploadPendingAttachments","i","attachment","file","originalFile","uri","image_url","filename","replace","contentType","sendImage","uploadResponse","dbApi","asset_url","sendFile","name","response","thumb_url","sendMessageRequest","retrying","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","messageData","messageResponse","sendMessage","RECEIVED","log","filterErrorMessages","messagePreview","commands","messageInput","upsertMessages","retrySendMessage","statusPendingMessage","newMessages","loadMore","oldestMessage","oldestID","loadMoreRecent","recentMessage","loadMoreRecentFinished","editMessage","setEditingState","setQuotedMessageState","clearEditingState","clearQuotedMessageState","deleteMessage","sendReaction","payload","enforce_unique","reactionType","queueTask","task","channelType","dropPendingTasks","toISOString","data","deleteReaction","openThread","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","oldestMessageID","ownCapabilitiesContext","overrideCapabilities","channelContext","disabled","frozen","some","command","isChannelActive","inputMessageInputContext","max_message_length","messageListContext","messagesContext","suggestionsContext","threadContext","typingContext","color","height","Channel"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\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 { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\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 { 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 | '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 MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const [syncingChannel, setSyncingChannel] = useState(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n const channelId = channel?.id || '';\n useEffect(() => {\n const initChannel = () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n if (!channel.initialized) {\n loadChannel();\n return;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n return;\n }\n\n if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists]);\n\n const handleAppBackground = useCallback(() => {\n if (channel) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n setMessages([...channel.state.messages]);\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannel();\n }\n };\n\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (shouldSyncChannel) {\n if (thread) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n\n if (event.type === 'typing.start' || event.type === 'typing.stop') {\n copyTypingState();\n } else if (event.type === 'message.read') {\n copyReadState();\n } else if (event.type === 'message.new') {\n copyMessagesState();\n } else if (channel) {\n copyChannelState();\n }\n }\n };\n\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n const clientSubscriptions: Array<ReturnType<StreamChat['on']>> = [];\n\n const subscribe = () => {\n if (!channel) return;\n\n /**\n * The more complex sync logic around internet connectivity (NetInfo) is part of Chat.tsx\n * listen to client.connection.recovered and all channel events\n */\n clientSubscriptions.push(DBSyncManager.onSyncStatusChange(connectionChangedHandler));\n clientSubscriptions.push(\n client.on('channel.deleted', (event) => {\n if (event.cid === channel.cid) {\n setDeleted(true);\n }\n }),\n );\n channelSubscriptions.push(channel.on(handleEvent));\n };\n\n subscribe();\n\n return () => {\n clientSubscriptions.forEach((s) => s.unsubscribe());\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, connectionChangedHandler, handleEvent]);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n ) => {\n setError(false);\n try {\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n copyChannelState();\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n const unreadCount = channel.countUnread();\n if (unreadCount <= scrollToFirstUnreadThreshold) return;\n // temporarily clear existing messages so that messageList component gets a list change and does not scroll to any unread message first before loading completes\n setMessages([]);\n // query for messages around the last read date\n return channelQueryCallRef.current(async () => {\n setLoading(true);\n const lastReadDate = channel.lastRead() || new Date(0);\n await channel.query({\n messages: {\n created_at_around: lastReadDate,\n limit: 25,\n },\n });\n setLoading(false);\n });\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId }) =>\n channelQueryCallRef.current(\n async () => {\n setHasNoMoreRecentMessagesToLoad(false); // we are jumping to a message, hence we do not know for sure anymore if there are no more recent messages\n setLoading(true);\n if (messageId) {\n await channel.state.loadMessageIntoState(messageId);\n } else {\n await channel.state.loadMessageIntoState('latest');\n channel.state.setIsUpToDate(true);\n }\n setLoading(false);\n },\n () => {\n if (messageId) {\n setTargetedMessage(messageId);\n }\n },\n );\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n return;\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannel) return;\n setSyncingChannel(true);\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n setHasNoMoreRecentMessagesToLoad(true);\n channel.state.setIsUpToDate(true);\n\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n setSyncingChannel(false);\n };\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await channel.state.loadMessageIntoState('latest');\n setLoading(false);\n setHasNoMoreRecentMessagesToLoad(true);\n channel?.state.setIsUpToDate(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n channel.state.clearMessages();\n setMessages([...channel.state.messages]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n channel.state.setIsUpToDate(true);\n } else {\n channel.state.setIsUpToDate(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // 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 file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n file?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = file.uri.replace(/^(file:\\/\\/|content:\\/\\/|assets-library:\\/\\/)/, '');\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(file, channel)\n : await channel.sendImage(file?.uri, 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 const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.type);\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 const loadMore: PaginatedMessageListContextValue<StreamChatGenerics>['loadMore'] = async (\n limit = 20,\n ) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n setLoadingMore(true);\n\n if (!messages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = messages && messages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n };\n\n const loadMoreRecent: PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent'] =\n async (limit = 5) => {\n if (hasNoMoreRecentMessagesToLoad) {\n return;\n }\n\n setLoadingMoreRecent(true);\n\n const recentMessage = messages[messages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n\n try {\n if (channel) {\n const state = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n setHasNoMoreRecentMessagesToLoad(state.messages.length < limit);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n message,\n ) => {\n setQuotedMessage(message);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(false);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n\n 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 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 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 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"]}