stream-chat-react-native-core 5.6.1 → 5.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,10 +59,7 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
59
59
  }
60
60
 
61
61
  var newUnreadCount = channel.countUnread();
62
-
63
- if (newUnreadCount !== unread) {
64
- setUnread(newUnreadCount);
65
- }
62
+ setUnread(newUnreadCount);
66
63
  }, [channelLastMessageString]);
67
64
  (0, _react.useEffect)(function () {
68
65
  var handleNewMessageEvent = function handleNewMessageEvent(event) {
@@ -118,7 +115,7 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
118
115
  __self: _this,
119
116
  __source: {
120
117
  fileName: _jsxFileName,
121
- lineNumber: 111,
118
+ lineNumber: 108,
122
119
  columnNumber: 10
123
120
  }
124
121
  });
@@ -138,7 +135,7 @@ var ChannelPreview = function ChannelPreview(props) {
138
135
  __self: _this,
139
136
  __source: {
140
137
  fileName: _jsxFileName,
141
- lineNumber: 127,
138
+ lineNumber: 124,
142
139
  columnNumber: 10
143
140
  }
144
141
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["ChannelPreview.tsx"],"names":["ChannelPreviewWithContext","props","channel","client","Preview","state","messages","length","lastMessage","setLastMessage","translatedLastMessage","forceUpdate","setForceUpdate","countUnread","unread","setUnread","latestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","listeners","on","forEach","l","unsubscribe","handleReadEvent","user","userID","prev","listener","ChannelPreview"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n\n if (newUnreadCount !== unread) {\n setUnread(newUnreadCount);\n }\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n setLastMessage((prevLastMessage) => {\n if (prevLastMessage?.id === event.message?.id) {\n return event.message;\n }\n return prevLastMessage;\n });\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n const listener = channel.on('message.read', handleReadEvent);\n return () => listener.unsubscribe();\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["ChannelPreview.tsx"],"names":["ChannelPreviewWithContext","props","channel","client","Preview","state","messages","length","lastMessage","setLastMessage","translatedLastMessage","forceUpdate","setForceUpdate","countUnread","unread","setUnread","latestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","listeners","on","forEach","l","unsubscribe","handleReadEvent","user","userID","prev","listener","ChannelPreview"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n setUnread(newUnreadCount);\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n setLastMessage((prevLastMessage) => {\n if (prevLastMessage?.id === event.message?.id) {\n return event.message;\n }\n return prevLastMessage;\n });\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n const listener = channel.on('message.read', handleReadEvent);\n return () => listener.unsubscribe();\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"]}
@@ -129,7 +129,9 @@ var MessageWithContext = function MessageWithContext(props) {
129
129
  _useTheme$theme$color = _useTheme$theme.colors,
130
130
  bg_gradient_start = _useTheme$theme$color.bg_gradient_start,
131
131
  targetedMessageBackground = _useTheme$theme$color.targetedMessageBackground,
132
- targetedMessageUnderlay = _useTheme$theme.messageSimple.targetedMessageUnderlay;
132
+ _useTheme$theme$messa = _useTheme$theme.messageSimple,
133
+ targetedMessageContainer = _useTheme$theme$messa.targetedMessageContainer,
134
+ targetedMessageUnderlay = _useTheme$theme$messa.targetedMessageUnderlay;
133
135
 
134
136
  var actionsEnabled = message.type === 'regular' && message.status === _utils.MessageStatusTypes.RECEIVED;
135
137
  var isMyMessage = client && message && client.userID === ((_message$user = message.user) == null ? void 0 : _message$user.id);
@@ -557,9 +559,9 @@ var MessageWithContext = function MessageWithContext(props) {
557
559
  });
558
560
  if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;
559
561
  return _react["default"].createElement(_reactNative.View, {
560
- style: [message.pinned && {
562
+ style: [message.pinned && (0, _extends2["default"])({}, targetedMessageContainer, {
561
563
  backgroundColor: targetedMessageBackground
562
- }],
564
+ })],
563
565
  testID: "message-wrapper",
564
566
  __self: _this,
565
567
  __source: {
@@ -574,7 +576,7 @@ var MessageWithContext = function MessageWithContext(props) {
574
576
  __self: _this,
575
577
  __source: {
576
578
  fileName: _jsxFileName,
577
- lineNumber: 704,
579
+ lineNumber: 709,
578
580
  columnNumber: 7
579
581
  }
580
582
  }, _react["default"].createElement(_reactNative.View, {
@@ -584,7 +586,7 @@ var MessageWithContext = function MessageWithContext(props) {
584
586
  __self: _this,
585
587
  __source: {
586
588
  fileName: _jsxFileName,
587
- lineNumber: 712,
589
+ lineNumber: 717,
588
590
  columnNumber: 9
589
591
  }
590
592
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -592,14 +594,14 @@ var MessageWithContext = function MessageWithContext(props) {
592
594
  __self: _this,
593
595
  __source: {
594
596
  fileName: _jsxFileName,
595
- lineNumber: 719,
597
+ lineNumber: 724,
596
598
  columnNumber: 11
597
599
  }
598
600
  }, _react["default"].createElement(MessageSimple, {
599
601
  __self: _this,
600
602
  __source: {
601
603
  fileName: _jsxFileName,
602
- lineNumber: 720,
604
+ lineNumber: 725,
603
605
  columnNumber: 13
604
606
  }
605
607
  })))));
@@ -725,7 +727,7 @@ var Message = function Message(props) {
725
727
  __self: _this,
726
728
  __source: {
727
729
  fileName: _jsxFileName,
728
- lineNumber: 886,
730
+ lineNumber: 891,
729
731
  columnNumber: 5
730
732
  }
731
733
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","sendReaction","channel","deleteMessageFromContext","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","deleteReaction","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","client","theme","colors","bg_gradient_start","targetedMessageBackground","targetedMessageUnderlay","messageSimple","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","userLanguage","messageReactions","isThreadMessage","dismissOverlay","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevMutedUsers","mutedUsers","prevGoToMessage","prevGroupStyles","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextGroupStyles","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type FileAttachmentTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'fileAttachment';\n additionalInfo?: { attachment?: Attachment<StreamChatGenerics> };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: Exclude<TouchableEmitter, 'textMention' | 'textLink' | 'card' | 'fileAttachment'>;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n | FileAttachmentTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n sendReaction,\n channel,\n deleteMessage: deleteMessageFromContext,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n deleteReaction,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'audio') {\n acc.files.push(cur);\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length && !acc.videos.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n };\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !isMessageTypeDeleted &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length || !!attachments.videos.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n sendReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { userLanguage } = useTranslationContext();\n\n const showMessageOverlay = async (messageReactions = false, error = errorOrFailed) => {\n await dismissKeyboard();\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n muteUser,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n });\n\n setData({\n alignment,\n chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[message.pinned && { backgroundColor: targetedMessageBackground }]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","sendReaction","channel","deleteMessageFromContext","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","deleteReaction","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","client","theme","colors","bg_gradient_start","targetedMessageBackground","messageSimple","targetedMessageContainer","targetedMessageUnderlay","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","userLanguage","messageReactions","isThreadMessage","dismissOverlay","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevMutedUsers","mutedUsers","prevGoToMessage","prevGroupStyles","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextGroupStyles","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type FileAttachmentTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'fileAttachment';\n additionalInfo?: { attachment?: Attachment<StreamChatGenerics> };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: Exclude<TouchableEmitter, 'textMention' | 'textLink' | 'card' | 'fileAttachment'>;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n | FileAttachmentTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n sendReaction,\n channel,\n deleteMessage: deleteMessageFromContext,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n deleteReaction,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageContainer, targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'audio') {\n acc.files.push(cur);\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length && !acc.videos.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n };\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !isMessageTypeDeleted &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length || !!attachments.videos.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n sendReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { userLanguage } = useTranslationContext();\n\n const showMessageOverlay = async (messageReactions = false, error = errorOrFailed) => {\n await dismissKeyboard();\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n muteUser,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n });\n\n setData({\n alignment,\n chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[\n message.pinned && {\n ...targetedMessageContainer,\n backgroundColor: targetedMessageBackground,\n },\n ]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -521,6 +521,7 @@ var defaultTheme = {
521
521
  width: DEFAULT_STATUS_ICON_SIZE
522
522
  }
523
523
  },
524
+ targetedMessageContainer: {},
524
525
  targetedMessageUnderlay: {},
525
526
  videoThumbnail: {
526
527
  container: {},