stream-chat-react-native-core 4.3.0-beta.4 → 4.3.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +21 -12
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Channel/Channel.js +15 -13
  4. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  5. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  6. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  7. package/lib/commonjs/components/Message/Message.js +11 -8
  8. package/lib/commonjs/components/Message/Message.js.map +1 -1
  9. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +28 -23
  10. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  11. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +7 -6
  12. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  13. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  14. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  15. package/lib/commonjs/version.json +1 -1
  16. package/lib/module/components/Attachment/Attachment.js +21 -12
  17. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  18. package/lib/module/components/Channel/Channel.js +15 -13
  19. package/lib/module/components/Channel/Channel.js.map +1 -1
  20. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  21. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  22. package/lib/module/components/Message/Message.js +11 -8
  23. package/lib/module/components/Message/Message.js.map +1 -1
  24. package/lib/module/components/Message/MessageSimple/MessageContent.js +28 -23
  25. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  26. package/lib/module/components/Message/MessageSimple/MessageSimple.js +7 -6
  27. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  28. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  29. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  30. package/lib/module/version.json +1 -1
  31. package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
  32. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  33. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  34. package/lib/typescript/components/Message/Message.d.ts +1 -1
  35. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  36. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -0
  37. package/package.json +1 -1
  38. package/src/components/Attachment/Attachment.tsx +11 -2
  39. package/src/components/Channel/Channel.tsx +3 -0
  40. package/src/components/Channel/__tests__/isAttachmentEqualHandler.test.js +100 -0
  41. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  42. package/src/components/Message/Message.tsx +19 -8
  43. package/src/components/Message/MessageSimple/MessageContent.tsx +23 -14
  44. package/src/components/Message/MessageSimple/MessageSimple.tsx +14 -11
  45. package/src/contexts/messagesContext/MessagesContext.tsx +5 -0
  46. package/src/version.json +1 -1
@@ -42,6 +42,7 @@ var useCreateMessagesContext = function useCreateMessagesContext(_ref) {
42
42
  initialScrollToFirstUnreadMessage = _ref.initialScrollToFirstUnreadMessage,
43
43
  InlineDateSeparator = _ref.InlineDateSeparator,
44
44
  InlineUnreadIndicator = _ref.InlineUnreadIndicator,
45
+ isAttachmentEqual = _ref.isAttachmentEqual,
45
46
  legacyImageViewerSwipeBehaviour = _ref.legacyImageViewerSwipeBehaviour,
46
47
  markdownRules = _ref.markdownRules,
47
48
  Message = _ref.Message,
@@ -120,6 +121,7 @@ var useCreateMessagesContext = function useCreateMessagesContext(_ref) {
120
121
  initialScrollToFirstUnreadMessage: initialScrollToFirstUnreadMessage,
121
122
  InlineDateSeparator: InlineDateSeparator,
122
123
  InlineUnreadIndicator: InlineUnreadIndicator,
124
+ isAttachmentEqual: isAttachmentEqual,
123
125
  legacyImageViewerSwipeBehaviour: legacyImageViewerSwipeBehaviour,
124
126
  markdownRules: markdownRules,
125
127
  Message: Message,
@@ -1 +1 @@
1
- {"version":3,"sources":["useCreateMessagesContext.ts"],"names":["useCreateMessagesContext","additionalTouchableProps","Attachment","AttachmentActions","Card","CardCover","CardFooter","CardHeader","channelId","DateHeader","deletedMessagesVisibilityType","disableTypingIndicator","dismissKeyboardOnMessageTouch","enableMessageGroupingByUser","FileAttachment","FileAttachmentGroup","FileAttachmentIcon","FlatList","forceAlignMessages","formatDate","Gallery","Giphy","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","legacyImageViewerSwipeBehaviour","markdownRules","Message","messageActions","MessageAvatar","MessageContent","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageList","MessagePinnedHeader","MessageReplies","MessageRepliesAvatars","MessageSimple","MessageStatus","MessageSystem","MessageText","myMessageTheme","onLongPressMessage","onPressInMessage","onPressMessage","OverlayReactionList","ReactionList","removeMessage","Reply","retrySendMessage","ScrollToBottomButton","selectReaction","setEditingState","setQuotedMessageState","supportedReactions","targetedMessage","TypingIndicator","TypingIndicatorContainer","updateMessage","UrlPreview","additionalTouchablePropsLength","Object","keys","length","markdownRulesLength","messageContentOrderValue","join","supportedReactionsLength","messagesContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateMessagesContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n}: MessagesContextValue<StreamChatGenerics> & {\n /**\n * To ensure we allow re-render, when channel is changed\n */\n channelId?: string;\n}) => {\n const additionalTouchablePropsLength = Object.keys(additionalTouchableProps || {}).length;\n const markdownRulesLength = Object.keys(markdownRules || {}).length;\n const messageContentOrderValue = messageContentOrder.join();\n const supportedReactionsLength = supportedReactions.length;\n\n const messagesContext: MessagesContextValue<StreamChatGenerics> = useMemo(\n () => ({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n }),\n [\n additionalTouchablePropsLength,\n channelId,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n initialScrollToFirstUnreadMessage,\n markdownRulesLength,\n messageContentOrderValue,\n supportedReactionsLength,\n targetedMessage,\n ],\n );\n\n return messagesContext;\n};\n"]}
1
+ {"version":3,"sources":["useCreateMessagesContext.ts"],"names":["useCreateMessagesContext","additionalTouchableProps","Attachment","AttachmentActions","Card","CardCover","CardFooter","CardHeader","channelId","DateHeader","deletedMessagesVisibilityType","disableTypingIndicator","dismissKeyboardOnMessageTouch","enableMessageGroupingByUser","FileAttachment","FileAttachmentGroup","FileAttachmentIcon","FlatList","forceAlignMessages","formatDate","Gallery","Giphy","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","isAttachmentEqual","legacyImageViewerSwipeBehaviour","markdownRules","Message","messageActions","MessageAvatar","MessageContent","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageList","MessagePinnedHeader","MessageReplies","MessageRepliesAvatars","MessageSimple","MessageStatus","MessageSystem","MessageText","myMessageTheme","onLongPressMessage","onPressInMessage","onPressMessage","OverlayReactionList","ReactionList","removeMessage","Reply","retrySendMessage","ScrollToBottomButton","selectReaction","setEditingState","setQuotedMessageState","supportedReactions","targetedMessage","TypingIndicator","TypingIndicatorContainer","updateMessage","UrlPreview","additionalTouchablePropsLength","Object","keys","length","markdownRulesLength","messageContentOrderValue","join","supportedReactionsLength","messagesContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateMessagesContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n}: MessagesContextValue<StreamChatGenerics> & {\n /**\n * To ensure we allow re-render, when channel is changed\n */\n channelId?: string;\n}) => {\n const additionalTouchablePropsLength = Object.keys(additionalTouchableProps || {}).length;\n const markdownRulesLength = Object.keys(markdownRules || {}).length;\n const messageContentOrderValue = messageContentOrder.join();\n const supportedReactionsLength = supportedReactions.length;\n\n const messagesContext: MessagesContextValue<StreamChatGenerics> = useMemo(\n () => ({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n }),\n [\n additionalTouchablePropsLength,\n channelId,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n initialScrollToFirstUnreadMessage,\n markdownRulesLength,\n messageContentOrderValue,\n supportedReactionsLength,\n targetedMessage,\n ],\n );\n\n return messagesContext;\n};\n"]}
@@ -530,7 +530,7 @@ var MessageWithContext = function MessageWithContext(props) {
530
530
  __self: _this,
531
531
  __source: {
532
532
  fileName: _jsxFileName,
533
- lineNumber: 649,
533
+ lineNumber: 651,
534
534
  columnNumber: 5
535
535
  }
536
536
  }, _react["default"].createElement(_reactNative.View, {
@@ -540,7 +540,7 @@ var MessageWithContext = function MessageWithContext(props) {
540
540
  __self: _this,
541
541
  __source: {
542
542
  fileName: _jsxFileName,
543
- lineNumber: 653,
543
+ lineNumber: 655,
544
544
  columnNumber: 7
545
545
  }
546
546
  }, _react["default"].createElement(_reactNative.View, {
@@ -550,7 +550,7 @@ var MessageWithContext = function MessageWithContext(props) {
550
550
  __self: _this,
551
551
  __source: {
552
552
  fileName: _jsxFileName,
553
- lineNumber: 661,
553
+ lineNumber: 663,
554
554
  columnNumber: 9
555
555
  }
556
556
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -558,14 +558,14 @@ var MessageWithContext = function MessageWithContext(props) {
558
558
  __self: _this,
559
559
  __source: {
560
560
  fileName: _jsxFileName,
561
- lineNumber: 668,
561
+ lineNumber: 670,
562
562
  columnNumber: 11
563
563
  }
564
564
  }, _react["default"].createElement(MessageSimple, {
565
565
  __self: _this,
566
566
  __source: {
567
567
  fileName: _jsxFileName,
568
- lineNumber: 669,
568
+ lineNumber: 671,
569
569
  columnNumber: 13
570
570
  }
571
571
  })))));
@@ -575,6 +575,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
575
575
  var _prevMessage$quoted_m, _nextMessage$quoted_m, _prevMessage$quoted_m2, _nextMessage$quoted_m2, _prevMessage$user, _nextMessage$user;
576
576
 
577
577
  var prevGoToMessage = prevProps.goToMessage,
578
+ isAttachmentEqual = prevProps.isAttachmentEqual,
578
579
  prevIsTargetedMessage = prevProps.isTargetedMessage,
579
580
  prevLastReceivedId = prevProps.lastReceivedId,
580
581
  prevMembers = prevProps.members,
@@ -600,7 +601,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
600
601
  if (goToMessageChangedAndMatters) return false;
601
602
  var isPrevMessageTypeDeleted = prevMessage.type === 'deleted';
602
603
  var isNextMessageTypeDeleted = nextMessage.type === 'deleted';
603
- var messageEqual = isPrevMessageTypeDeleted === isNextMessageTypeDeleted && ((0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(prevMessage) && prevMessage.readBy) === ((0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(nextMessage) && nextMessage.readBy) && prevMessage.status === nextMessage.status && prevMessage.type === nextMessage.type && prevMessage.text === nextMessage.text && prevMessage.updated_at === nextMessage.updated_at && prevMessage.pinned === nextMessage.pinned;
604
+ var messageEqual = isPrevMessageTypeDeleted === isNextMessageTypeDeleted && ((0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(prevMessage) && prevMessage.readBy) === ((0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(nextMessage) && nextMessage.readBy) && prevMessage.status === nextMessage.status && prevMessage.type === nextMessage.type && prevMessage.text === nextMessage.text && prevMessage.pinned === nextMessage.pinned && prevMessage.updated_at === nextMessage.updated_at;
604
605
  if (!messageEqual) return false;
605
606
  var isPrevQuotedMessageTypeDeleted = ((_prevMessage$quoted_m = prevMessage.quoted_message) == null ? void 0 : _prevMessage$quoted_m.type) === 'deleted';
606
607
  var isNextQuotedMessageTypeDeleted = ((_nextMessage$quoted_m = nextMessage.quoted_message) == null ? void 0 : _nextMessage$quoted_m.type) === 'deleted';
@@ -611,7 +612,9 @@ var areEqual = function areEqual(prevProps, nextProps) {
611
612
  var prevMessageAttachments = prevMessage.attachments;
612
613
  var nextMessageAttachments = nextMessage.attachments;
613
614
  var attachmentsEqual = Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments) && prevMessageAttachments.length === nextMessageAttachments.length && prevMessageAttachments.every(function (attachment, index) {
614
- return attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
615
+ var attachmentKeysEqual = attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
616
+ if (isAttachmentEqual) return attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index]);
617
+ return attachmentKeysEqual;
615
618
  }) || prevMessageAttachments === nextMessageAttachments;
616
619
  if (!attachmentsEqual) return false;
617
620
  var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref3, index) {
@@ -687,7 +690,7 @@ var Message = function Message(props) {
687
690
  __self: _this,
688
691
  __source: {
689
692
  fileName: _jsxFileName,
690
- lineNumber: 820,
693
+ lineNumber: 831,
691
694
  columnNumber: 5
692
695
  }
693
696
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","channel","client","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","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","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","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","title_link","og_scrape_url","image_url","thumb_url","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","deleteMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","pinned","backgroundColor","areEqual","prevProps","nextProps","prevGoToMessage","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevMutedUsers","mutedUsers","prevShowUnreadUnderlay","prevT","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","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 } 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 { 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 TouchableHandlerPayload = {\n defaultHandler?: () => void;\n emitter?:\n | 'card'\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList'\n | 'textLink'\n | 'textMention';\n event?: GestureResponderEvent;\n};\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\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<ChatContextValue<StreamChatGenerics>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\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 | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\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 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/master/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/master/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 channel,\n client,\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 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 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\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' || cur.type === 'video') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\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) {\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 },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n };\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;\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 enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\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 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 setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\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 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 });\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 onPressProp\n ? onPressProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressMessageProp\n ? onPressMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : payload.defaultHandler\n ? payload.defaultHandler()\n : onPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n onPressInProp\n ? onPressInProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressInMessageProp &&\n onPressInMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n });\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 });\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 goToMessage: prevGoToMessage,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\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 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.updated_at === nextMessage.updated_at &&\n prevMessage.pinned === nextMessage.pinned;\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 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 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 { client, mutedUsers } = 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 client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n mutedUsers,\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","channel","client","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","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","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","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","title_link","og_scrape_url","image_url","thumb_url","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","deleteMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","pinned","backgroundColor","areEqual","prevProps","nextProps","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevMutedUsers","mutedUsers","prevShowUnreadUnderlay","prevT","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","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 } 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 { 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 TouchableHandlerPayload = {\n defaultHandler?: () => void;\n emitter?:\n | 'card'\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList'\n | 'textLink'\n | 'textMention';\n event?: GestureResponderEvent;\n};\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\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<ChatContextValue<StreamChatGenerics>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\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 | '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 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/master/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/master/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 channel,\n client,\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 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 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\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' || cur.type === 'video') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\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) {\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 },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n };\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;\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 enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\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 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 setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\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 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 });\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 onPressProp\n ? onPressProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressMessageProp\n ? onPressMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : payload.defaultHandler\n ? payload.defaultHandler()\n : onPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n onPressInProp\n ? onPressInProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressInMessageProp &&\n onPressInMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n });\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 });\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 goToMessage: prevGoToMessage,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\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 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 { client, mutedUsers } = 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 client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -168,7 +168,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
168
168
  __self: _this,
169
169
  __source: {
170
170
  fileName: _jsxFileName,
171
- lineNumber: 201,
171
+ lineNumber: 202,
172
172
  columnNumber: 7
173
173
  }
174
174
  });
@@ -224,7 +224,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
224
224
  __self: _this,
225
225
  __source: {
226
226
  fileName: _jsxFileName,
227
- lineNumber: 226,
227
+ lineNumber: 227,
228
228
  columnNumber: 5
229
229
  }
230
230
  }), MessageHeader && _react["default"].createElement(MessageHeader, {
@@ -240,7 +240,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
240
240
  __self: _this,
241
241
  __source: {
242
242
  fileName: _jsxFileName,
243
- lineNumber: 267,
243
+ lineNumber: 268,
244
244
  columnNumber: 9
245
245
  }
246
246
  }), _react["default"].createElement(_reactNative.View, {
@@ -249,7 +249,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
249
249
  __self: _this,
250
250
  __source: {
251
251
  fileName: _jsxFileName,
252
- lineNumber: 279,
252
+ lineNumber: 280,
253
253
  columnNumber: 7
254
254
  }
255
255
  }, hasThreadReplies && !threadList && !noBorder && _react["default"].createElement(_reactNative.View, {
@@ -262,7 +262,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
262
262
  __self: _this,
263
263
  __source: {
264
264
  fileName: _jsxFileName,
265
- lineNumber: 281,
265
+ lineNumber: 282,
266
266
  columnNumber: 11
267
267
  }
268
268
  }), _react["default"].createElement(_reactNative.View, {
@@ -278,7 +278,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
278
278
  __self: _this,
279
279
  __source: {
280
280
  fileName: _jsxFileName,
281
- lineNumber: 294,
281
+ lineNumber: 295,
282
282
  columnNumber: 9
283
283
  }
284
284
  }, messageContentOrder.map(function (messageContentType, messageContentOrderIndex) {
@@ -290,7 +290,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
290
290
  __self: _this,
291
291
  __source: {
292
292
  fileName: _jsxFileName,
293
- lineNumber: 321,
293
+ lineNumber: 322,
294
294
  columnNumber: 21
295
295
  }
296
296
  }, _react["default"].createElement(Reply, {
@@ -302,7 +302,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
302
302
  __self: _this,
303
303
  __source: {
304
304
  fileName: _jsxFileName,
305
- lineNumber: 325,
305
+ lineNumber: 326,
306
306
  columnNumber: 23
307
307
  }
308
308
  }));
@@ -315,7 +315,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
315
315
  __self: _this,
316
316
  __source: {
317
317
  fileName: _jsxFileName,
318
- lineNumber: 331,
318
+ lineNumber: 332,
319
319
  columnNumber: 19
320
320
  }
321
321
  });
@@ -328,7 +328,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
328
328
  __self: _this,
329
329
  __source: {
330
330
  fileName: _jsxFileName,
331
- lineNumber: 335,
331
+ lineNumber: 336,
332
332
  columnNumber: 19
333
333
  }
334
334
  });
@@ -339,7 +339,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
339
339
  __self: _this,
340
340
  __source: {
341
341
  fileName: _jsxFileName,
342
- lineNumber: 341,
342
+ lineNumber: 342,
343
343
  columnNumber: 24
344
344
  }
345
345
  });
@@ -351,7 +351,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
351
351
  __self: _this,
352
352
  __source: {
353
353
  fileName: _jsxFileName,
354
- lineNumber: 345,
354
+ lineNumber: 346,
355
355
  columnNumber: 19
356
356
  }
357
357
  });
@@ -362,7 +362,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
362
362
  __self: _this,
363
363
  __source: {
364
364
  fileName: _jsxFileName,
365
- lineNumber: 353,
365
+ lineNumber: 354,
366
366
  columnNumber: 11
367
367
  }
368
368
  }, _react["default"].createElement(_reactNative.View, {
@@ -370,7 +370,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
370
370
  __self: _this,
371
371
  __source: {
372
372
  fileName: _jsxFileName,
373
- lineNumber: 354,
373
+ lineNumber: 355,
374
374
  columnNumber: 13
375
375
  }
376
376
  }, _react["default"].createElement(_icons.Error, (0, _extends2["default"])({
@@ -379,7 +379,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
379
379
  __self: _this,
380
380
  __source: {
381
381
  fileName: _jsxFileName,
382
- lineNumber: 355,
382
+ lineNumber: 356,
383
383
  columnNumber: 15
384
384
  }
385
385
  }))))), _react["default"].createElement(MessageReplies, {
@@ -388,7 +388,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
388
388
  __self: _this,
389
389
  __source: {
390
390
  fileName: _jsxFileName,
391
- lineNumber: 360,
391
+ lineNumber: 361,
392
392
  columnNumber: 7
393
393
  }
394
394
  }), _react["default"].createElement(MessageFooter, {
@@ -397,7 +397,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
397
397
  __self: _this,
398
398
  __source: {
399
399
  fileName: _jsxFileName,
400
- lineNumber: 361,
400
+ lineNumber: 362,
401
401
  columnNumber: 7
402
402
  }
403
403
  }));
@@ -409,6 +409,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
409
409
  var prevGoToMessage = prevProps.goToMessage,
410
410
  prevGroupStyles = prevProps.groupStyles,
411
411
  prevHasReactions = prevProps.hasReactions,
412
+ isAttachmentEqual = prevProps.isAttachmentEqual,
412
413
  prevLastGroupMessage = prevProps.lastGroupMessage,
413
414
  prevMembers = prevProps.members,
414
415
  prevMessage = prevProps.message,
@@ -450,11 +451,13 @@ var areEqual = function areEqual(prevProps, nextProps) {
450
451
  var isNextQuotedMessageTypeDeleted = ((_nextMessage$quoted_m = nextMessage.quoted_message) == null ? void 0 : _nextMessage$quoted_m.type) === 'deleted';
451
452
  var quotedMessageEqual = ((_prevMessage$quoted_m2 = prevMessage.quoted_message) == null ? void 0 : _prevMessage$quoted_m2.id) === ((_nextMessage$quoted_m2 = nextMessage.quoted_message) == null ? void 0 : _nextMessage$quoted_m2.id) && isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;
452
453
  if (!quotedMessageEqual) return false;
453
- var prevAttachments = prevMessage.attachments;
454
- var nextAttachments = nextMessage.attachments;
455
- var attachmentsEqual = Array.isArray(prevAttachments) && Array.isArray(nextAttachments) ? prevAttachments.length === nextAttachments.length && prevAttachments.every(function (attachment, index) {
456
- return attachment.image_url === nextAttachments[index].image_url && attachment.og_scrape_url === nextAttachments[index].og_scrape_url && attachment.thumb_url === nextAttachments[index].thumb_url;
457
- }) : prevAttachments === nextAttachments;
454
+ var prevMessageAttachments = prevMessage.attachments;
455
+ var nextMessageAttachments = nextMessage.attachments;
456
+ var attachmentsEqual = Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments) && prevMessageAttachments.length === nextMessageAttachments.length && prevMessageAttachments.every(function (attachment, index) {
457
+ var attachmentKeysEqual = attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
458
+ if (isAttachmentEqual) return attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index]);
459
+ return attachmentKeysEqual;
460
+ });
458
461
  if (!attachmentsEqual) return false;
459
462
  var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref2, index) {
460
463
  var _nextMessage$latest_r;
@@ -504,6 +507,7 @@ var MessageContent = function MessageContent(props) {
504
507
  FileAttachmentGroup = _useMessagesContext.FileAttachmentGroup,
505
508
  formatDate = _useMessagesContext.formatDate,
506
509
  Gallery = _useMessagesContext.Gallery,
510
+ isAttachmentEqual = _useMessagesContext.isAttachmentEqual,
507
511
  MessageDeleted = _useMessagesContext.MessageDeleted,
508
512
  MessageFooter = _useMessagesContext.MessageFooter,
509
513
  MessageHeader = _useMessagesContext.MessageHeader,
@@ -526,6 +530,7 @@ var MessageContent = function MessageContent(props) {
526
530
  goToMessage: goToMessage,
527
531
  groupStyles: groupStyles,
528
532
  hasReactions: hasReactions,
533
+ isAttachmentEqual: isAttachmentEqual,
529
534
  isMyMessage: isMyMessage,
530
535
  lastGroupMessage: lastGroupMessage,
531
536
  lastReceivedId: lastReceivedId,
@@ -552,7 +557,7 @@ var MessageContent = function MessageContent(props) {
552
557
  __self: _this,
553
558
  __source: {
554
559
  fileName: _jsxFileName,
555
- lineNumber: 540,
560
+ lineNumber: 548,
556
561
  columnNumber: 5
557
562
  }
558
563
  }));