stream-chat-react-native-core 5.6.2-beta.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.
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +3 -6
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +10 -8
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +3 -6
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/Message/Message.js +10 -8
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +1 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/ChannelPreview/ChannelPreview.tsx +1 -4
- package/src/components/Message/Message.tsx +7 -2
- package/src/contexts/themeContext/utils/theme.ts +2 -0
- package/src/version.json +1 -1
|
@@ -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:
|
|
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:
|
|
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":";;;;;;;;;;;;;AAAA;;AAIA;;AAEA;;AAIA;;AAEA;;;;;;;;;AAiBA,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAGhCC,KAHgC,EAI7B;AACH,MAAQC,OAAR,GAAqCD,KAArC,CAAQC,OAAR;AAAA,MAAiBC,MAAjB,GAAqCF,KAArC,CAAiBE,MAAjB;AAAA,MAAyBC,OAAzB,GAAqCH,KAArC,CAAyBG,OAAzB;;AAEA,kBAAsC,qBAIpCF,OAAO,CAACG,KAAR,CAAcC,QAAd,CAAuBJ,OAAO,CAACG,KAAR,CAAcC,QAAd,CAAuBC,MAAvB,GAAgC,CAAvD,CAJoC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAMA,MAAMC,qBAAqB,GAAG,gDAC5BF,WAAW,IAAK,EADY,CAA9B;;AAIA,mBAAsC,qBAAS,CAAT,CAAtC;AAAA;AAAA,MAAOG,WAAP;AAAA,MAAoBC,cAApB;;AACA,mBAA4B,qBAASV,OAAO,CAACW,WAAR,EAAT,CAA5B;AAAA;AAAA,MAAOC,MAAP;AAAA,MAAeC,SAAf;;AAEA,MAAMC,oBAAoB,GAAG,sDAAwBd,OAAxB,EAAiCS,WAAjC,EAA8CD,qBAA9C,CAA7B;AAEA,MAAMO,kBAAkB,GAAGf,OAAO,CAACM,WAAR,EAA3B;AACA,MAAMU,wBAAwB,SAAMD,kBAAN,oBAAMA,kBAAkB,CAAEE,EAA1B,KAA+BF,kBAA/B,oBAA+BA,kBAAkB,CAAEG,UAAnD,CAA9B;AAEA,wBAAU,YAAM;AACd,QACEH,kBAAkB,KACjBA,kBAAkB,CAACE,EAAnB,MAA0BX,WAA1B,oBAA0BA,WAAW,CAAEW,EAAvC,KACCF,kBAAkB,CAACG,UAAnB,MAAkCZ,WAAlC,oBAAkCA,WAAW,CAAEY,UAA/C,CAFgB,CADpB,EAIE;AACAX,MAAAA,cAAc,CAACQ,kBAAD,CAAd;AACD;;AAED,QAAMI,cAAc,GAAGnB,OAAO,CAACW,WAAR,EAAvB
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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"]}
|