stream-chat-react-native-core 3.10.0 → 3.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -92,15 +92,16 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
92
92
  });
93
93
  }
94
94
 
95
- if (attachment.type === 'video' && attachment.asset_url && attachment.image_url) {
96
- return _react["default"].createElement(Card, (0, _extends2["default"])({}, attachment, {
95
+ if (attachment.type === 'video' && attachment.asset_url) {
96
+ return _react["default"].createElement(FileAttachment, {
97
+ attachment: attachment,
97
98
  __self: _this,
98
99
  __source: {
99
100
  fileName: _jsxFileName,
100
101
  lineNumber: 90,
101
102
  columnNumber: 7
102
103
  }
103
- }));
104
+ });
104
105
  }
105
106
 
106
107
  if (hasAttachmentActions) {
@@ -1 +1 @@
1
- {"version":3,"sources":["Attachment.tsx"],"names":["AttachmentWithContext","props","attachment","AttachmentActions","Card","FileAttachment","Gallery","Giphy","UrlPreview","hasAttachmentActions","actions","length","type","title_link","og_scrape_url","image_url","thumb_url","id","asset_url","areEqual","prevProps","nextProps","prevAttachment","nextAttachment","attachmentEqual","MemoizedAttachment","React","memo","Attachment","PropAttachmentActions","PropCard","PropFileAttachment","PropGallery","PropGiphy","PropUrlPreview","ContextAttachmentActions","ContextCard","ContextFileAttachment","ContextGallery","ContextGiphy","ContextUrlPreview","AttachmentActionsDefault","CardDefault","FileAttachmentDefault","GalleryDefault","GiphyDefault"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../../components/Attachment/Card';\nimport { Gallery as GalleryDefault } from '../../components/Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../../components/Attachment/Giphy';\nimport { FileAttachment as FileAttachmentDefault } from '../../components/Attachment/FileAttachment';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\n\nimport type { Attachment as AttachmentType } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nexport type ActionHandler = (name: string, value: string) => void;\n\nexport type AttachmentPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n> & {\n /**\n * The attachment to render\n */\n attachment: AttachmentType<At>;\n};\n\nconst AttachmentWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment, AttachmentActions, Card, FileAttachment, Gallery, Giphy, UrlPreview } = props;\n\n const hasAttachmentActions = !!attachment.actions?.length;\n\n if (attachment.type === 'giphy' || attachment.type === 'imgur') {\n return <Giphy attachment={attachment} />;\n }\n\n if (\n (attachment.title_link || attachment.og_scrape_url) &&\n (attachment.image_url || attachment.thumb_url)\n ) {\n return <UrlPreview {...attachment} />;\n }\n\n if (attachment.type === 'image') {\n return (\n <>\n <Gallery images={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'file' || attachment.type === 'audio') {\n return <FileAttachment attachment={attachment} />;\n }\n\n if (attachment.type === 'video' && attachment.asset_url && attachment.image_url) {\n return (\n // TODO: Put in video component\n <Card {...attachment} />\n );\n }\n\n if (hasAttachmentActions) {\n return (\n <>\n <Card {...attachment} />\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n </>\n );\n } else {\n return <Card {...attachment} />;\n }\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment: prevAttachment } = prevProps;\n const { attachment: nextAttachment } = nextProps;\n\n const attachmentEqual =\n prevAttachment.actions?.length === nextAttachment.actions?.length &&\n prevAttachment.image_url === nextAttachment.image_url &&\n prevAttachment.thumb_url === nextAttachment.thumb_url;\n\n return attachmentEqual;\n};\n\nconst MemoizedAttachment = React.memo(\n AttachmentWithContext,\n areEqual,\n) as typeof AttachmentWithContext;\n\nexport type AttachmentProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n >\n> &\n Pick<AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'attachment'>;\n\n/**\n * Attachment - The message attachment\n */\nexport const Attachment = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n attachment,\n AttachmentActions: PropAttachmentActions,\n Card: PropCard,\n FileAttachment: PropFileAttachment,\n Gallery: PropGallery,\n Giphy: PropGiphy,\n UrlPreview: PropUrlPreview,\n } = props;\n\n const {\n AttachmentActions: ContextAttachmentActions,\n Card: ContextCard,\n FileAttachment: ContextFileAttachment,\n Gallery: ContextGallery,\n Giphy: ContextGiphy,\n UrlPreview: ContextUrlPreview,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n if (!attachment) {\n return null;\n }\n\n const AttachmentActions =\n PropAttachmentActions || ContextAttachmentActions || AttachmentActionsDefault;\n const Card = PropCard || ContextCard || CardDefault;\n const FileAttachment = PropFileAttachment || ContextFileAttachment || FileAttachmentDefault;\n const Gallery = PropGallery || ContextGallery || GalleryDefault;\n const Giphy = PropGiphy || ContextGiphy || GiphyDefault;\n const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;\n\n return (\n <MemoizedAttachment\n {...{\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n UrlPreview,\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Attachment.tsx"],"names":["AttachmentWithContext","props","attachment","AttachmentActions","Card","FileAttachment","Gallery","Giphy","UrlPreview","hasAttachmentActions","actions","length","type","title_link","og_scrape_url","image_url","thumb_url","id","asset_url","areEqual","prevProps","nextProps","prevAttachment","nextAttachment","attachmentEqual","MemoizedAttachment","React","memo","Attachment","PropAttachmentActions","PropCard","PropFileAttachment","PropGallery","PropGiphy","PropUrlPreview","ContextAttachmentActions","ContextCard","ContextFileAttachment","ContextGallery","ContextGiphy","ContextUrlPreview","AttachmentActionsDefault","CardDefault","FileAttachmentDefault","GalleryDefault","GiphyDefault"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../../components/Attachment/Card';\nimport { Gallery as GalleryDefault } from '../../components/Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../../components/Attachment/Giphy';\nimport { FileAttachment as FileAttachmentDefault } from '../../components/Attachment/FileAttachment';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\n\nimport type { Attachment as AttachmentType } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nexport type ActionHandler = (name: string, value: string) => void;\n\nexport type AttachmentPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n> & {\n /**\n * The attachment to render\n */\n attachment: AttachmentType<At>;\n};\n\nconst AttachmentWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment, AttachmentActions, Card, FileAttachment, Gallery, Giphy, UrlPreview } = props;\n\n const hasAttachmentActions = !!attachment.actions?.length;\n\n if (attachment.type === 'giphy' || attachment.type === 'imgur') {\n return <Giphy attachment={attachment} />;\n }\n\n if (\n (attachment.title_link || attachment.og_scrape_url) &&\n (attachment.image_url || attachment.thumb_url)\n ) {\n return <UrlPreview {...attachment} />;\n }\n\n if (attachment.type === 'image') {\n return (\n <>\n <Gallery images={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'file' || attachment.type === 'audio') {\n return <FileAttachment attachment={attachment} />;\n }\n\n if (attachment.type === 'video' && attachment.asset_url) {\n return (\n // TODO: Put in video component\n <FileAttachment attachment={attachment} />\n );\n }\n\n if (hasAttachmentActions) {\n return (\n <>\n <Card {...attachment} />\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n </>\n );\n } else {\n return <Card {...attachment} />;\n }\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment: prevAttachment } = prevProps;\n const { attachment: nextAttachment } = nextProps;\n\n const attachmentEqual =\n prevAttachment.actions?.length === nextAttachment.actions?.length &&\n prevAttachment.image_url === nextAttachment.image_url &&\n prevAttachment.thumb_url === nextAttachment.thumb_url;\n\n return attachmentEqual;\n};\n\nconst MemoizedAttachment = React.memo(\n AttachmentWithContext,\n areEqual,\n) as typeof AttachmentWithContext;\n\nexport type AttachmentProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n >\n> &\n Pick<AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'attachment'>;\n\n/**\n * Attachment - The message attachment\n */\nexport const Attachment = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n attachment,\n AttachmentActions: PropAttachmentActions,\n Card: PropCard,\n FileAttachment: PropFileAttachment,\n Gallery: PropGallery,\n Giphy: PropGiphy,\n UrlPreview: PropUrlPreview,\n } = props;\n\n const {\n AttachmentActions: ContextAttachmentActions,\n Card: ContextCard,\n FileAttachment: ContextFileAttachment,\n Gallery: ContextGallery,\n Giphy: ContextGiphy,\n UrlPreview: ContextUrlPreview,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n if (!attachment) {\n return null;\n }\n\n const AttachmentActions =\n PropAttachmentActions || ContextAttachmentActions || AttachmentActionsDefault;\n const Card = PropCard || ContextCard || CardDefault;\n const FileAttachment = PropFileAttachment || ContextFileAttachment || FileAttachmentDefault;\n const Gallery = PropGallery || ContextGallery || GalleryDefault;\n const Giphy = PropGiphy || ContextGiphy || GiphyDefault;\n const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;\n\n return (\n <MemoizedAttachment\n {...{\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n UrlPreview,\n }}\n />\n );\n};\n"]}
@@ -271,7 +271,7 @@ var MessageWithContext = function MessageWithContext(props) {
271
271
 
272
272
  var alignment = forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right') ? forceAlignMessages : isMyMessage ? 'right' : 'left';
273
273
  var attachments = !message.deleted_at && Array.isArray(message.attachments) ? message.attachments.reduce(function (acc, cur) {
274
- if (cur.type === 'file') {
274
+ if (cur.type === 'file' || cur.type === 'video') {
275
275
  acc.files.push(cur);
276
276
  acc.other = [];
277
277
  } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {
@@ -613,8 +613,8 @@ var MessageWithContext = function MessageWithContext(props) {
613
613
 
614
614
  case 4:
615
615
  blockUser = blockUserProp ? blockUserProp(message) : blockUserProp === null ? null : {
616
- action: function action() {
617
- return (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
616
+ action: function () {
617
+ var _action = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
618
618
  var _message$user4;
619
619
 
620
620
  return _regenerator["default"].wrap(function _callee6$(_context6) {
@@ -642,7 +642,13 @@ var MessageWithContext = function MessageWithContext(props) {
642
642
  }
643
643
  }, _callee6);
644
644
  }));
645
- },
645
+
646
+ function action() {
647
+ return _action.apply(this, arguments);
648
+ }
649
+
650
+ return action;
651
+ }(),
646
652
  icon: _react["default"].createElement(_icons.UserDelete, {
647
653
  pathFill: grey,
648
654
  __self: _this,
@@ -837,7 +843,7 @@ var MessageWithContext = function MessageWithContext(props) {
837
843
  title: t('Flag Message')
838
844
  };
839
845
  handleReaction = !error ? selectReaction ? selectReaction(message) : function () {
840
- var _ref9 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(reactionType) {
846
+ var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(reactionType) {
841
847
  return _regenerator["default"].wrap(function _callee9$(_context9) {
842
848
  while (1) {
843
849
  switch (_context9.prev = _context9.next) {
@@ -858,12 +864,12 @@ var MessageWithContext = function MessageWithContext(props) {
858
864
  }));
859
865
 
860
866
  return function (_x4) {
861
- return _ref9.apply(this, arguments);
867
+ return _ref8.apply(this, arguments);
862
868
  };
863
869
  }() : undefined;
864
870
  muteUser = muteUserProp ? muteUserProp(message) : muteUserProp === null ? null : {
865
871
  action: function () {
866
- var _action = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10() {
872
+ var _action2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10() {
867
873
  var _message$user6;
868
874
 
869
875
  return _regenerator["default"].wrap(function _callee10$(_context10) {
@@ -893,7 +899,7 @@ var MessageWithContext = function MessageWithContext(props) {
893
899
  }));
894
900
 
895
901
  function action() {
896
- return _action.apply(this, arguments);
902
+ return _action2.apply(this, arguments);
897
903
  }
898
904
 
899
905
  return action;
@@ -932,7 +938,7 @@ var MessageWithContext = function MessageWithContext(props) {
932
938
  };
933
939
  retry = retryProp ? retryProp(message) : retryProp === null ? null : {
934
940
  action: function () {
935
- var _action2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11() {
941
+ var _action3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11() {
936
942
  var messageWithoutReservedFields;
937
943
  return _regenerator["default"].wrap(function _callee11$(_context11) {
938
944
  while (1) {
@@ -957,7 +963,7 @@ var MessageWithContext = function MessageWithContext(props) {
957
963
  }));
958
964
 
959
965
  function action() {
960
- return _action2.apply(this, arguments);
966
+ return _action3.apply(this, arguments);
961
967
  }
962
968
 
963
969
  return action;
@@ -1311,10 +1317,10 @@ var areEqual = function areEqual(prevProps, nextProps) {
1311
1317
  return attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
1312
1318
  }) || prevMessageAttachments === nextMessageAttachments;
1313
1319
  if (!attachmentsEqual) return false;
1314
- 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 (_ref10, index) {
1320
+ 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 (_ref9, index) {
1315
1321
  var _nextMessage$latest_r;
1316
1322
 
1317
- var type = _ref10.type;
1323
+ var type = _ref9.type;
1318
1324
  return type === ((_nextMessage$latest_r = nextMessage.latest_reactions) == null ? void 0 : _nextMessage$latest_r[index].type);
1319
1325
  }) : prevMessage.latest_reactions === nextMessage.latest_reactions;
1320
1326
  if (!latestReactionsEqual) return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["Message.tsx"],"names":["prefetchImage","height","url","includes","Image","prefetch","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MessageWithContext","props","animatedLongPress","Platform","OS","message","deleted_at","blockUserProp","blockUser","channel","client","copyMessageProp","copyMessage","deleteMessageProp","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","editMessageProp","editMessage","enableLongPress","enforceUniqueReaction","flagMessageProp","flagMessage","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","isAdmin","isModerator","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","mutesEnabled","muteUserProp","muteUser","onDoubleTapMessageProp","onDoubleTapMessage","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","quotedRepliesEnabled","reactionsEnabled","readEventsEnabled","removeMessage","quotedReplyProp","quotedReply","retryProp","retry","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","targetedMessage","threadList","threadRepliesEnabled","threadReplyProp","threadReply","updateMessage","theme","colors","accent_blue","accent_red","bg_gradient_start","grey","targetedMessageBackground","messageSimple","gallery","halfSize","size","targetedMessageUnderlay","doubleTapRef","pressActive","scale","value","scaleStyle","transform","targetedOpacity","targetedStyle","opacity","duration","actionsEnabled","type","status","isMyMessage","userID","user","id","canModifyMessage","handleAction","name","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","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","attachmentImageLength","slice","forEach","image","index","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","handleToggleReaction","messageId","ownReaction","find","deleteReaction","sendReaction","enforce_unique","console","log","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","mute","target","handleToggleMuteUser","unmuteUser","handleDeleteMessage","handleEditMessage","handleToggleBanUser","messageUser","banned","unbanUser","banUser","messageReactions","action","icon","title","Clipboard","setString","Alert","alert","cancelable","titleStyle","color","undefined","messageWithoutReservedFields","isThreadMessage","dismissOverlay","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onLongPressTouchable","onFinish","onStart","triggerHaptic","onDoubleTap","onActive","backgroundColor","StyleSheet","absoluteFillObject","areEqual","prevProps","nextProps","prevGoToMessage","prevLastReceivedId","prevMessage","prevMutedUsers","prevShowUnreadUnderlay","prevT","prevTargetedMessage","nextGoToMessage","nextLastReceivedId","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","nextTargetedMessage","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","messageEqual","readBy","updated_at","quotedMessageEqual","messageUserBannedEqual","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","latestReactionsEqual","mutedUserSame","mutedUser","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport {\n Alert,\n Clipboard,\n GestureResponderEvent,\n Image,\n Keyboard,\n PixelRatio,\n Platform,\n StyleProp,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\nimport { TapGestureHandler, TapGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withSequence,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\nimport { removeReservedFields } from './utils/removeReservedFields';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\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 MessageAction,\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 { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n SendUp,\n ThreadReply,\n UserDelete,\n} from '../../icons';\nimport { triggerHaptic } from '../../native';\nimport { emojiRegex } from '../../utils/utils';\n\nimport type { Attachment, MessageResponse, Reaction } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst prefetchImage = ({ height, url }: { height: number | string; url: string }) => {\n if (url.includes('&h=%2A')) {\n Image.prefetch(\n url.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`),\n )\n .catch(() => Image.prefetch(url))\n .catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n } else {\n Image.prefetch(url).catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n }\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => 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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'channel'\n | 'disabled'\n | 'enforceUniqueReaction'\n | 'isAdmin'\n | 'isModerator'\n | 'members'\n | 'readEventsEnabled'\n> &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'animatedLongPress'\n | 'blockUser'\n | 'copyMessage'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'editMessage'\n | 'flagMessage'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'mutesEnabled'\n | 'muteUser'\n | 'onDoubleTapMessage'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'quotedRepliesEnabled'\n | 'quotedReply'\n | 'reactionsEnabled'\n | 'removeMessage'\n | 'retry'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'threadRepliesEnabled'\n | 'threadReply'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\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?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\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?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n\n onPressIn?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => 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<At, Ch, Co, Ev, Me, Re, Us>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n targetedMessage?: boolean;\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n animatedLongPress = Platform.OS === 'ios' && !props.message.deleted_at,\n blockUser: blockUserProp,\n channel,\n client,\n copyMessage: copyMessageProp,\n deleteMessage: deleteMessageProp,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n editMessage: editMessageProp,\n enableLongPress = true,\n enforceUniqueReaction,\n flagMessage: flagMessageProp,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n isAdmin,\n isModerator,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n mutesEnabled,\n muteUser: muteUserProp,\n onDoubleTapMessage: onDoubleTapMessageProp,\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 quotedRepliesEnabled,\n reactionsEnabled,\n readEventsEnabled,\n removeMessage,\n quotedReply: quotedReplyProp,\n retry: retryProp,\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 targetedMessage,\n threadList = false,\n threadRepliesEnabled,\n threadReply: threadReplyProp,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { accent_blue, accent_red, bg_gradient_start, grey, targetedMessageBackground },\n messageSimple: {\n gallery: { halfSize, size },\n targetedMessageUnderlay,\n },\n },\n } = useTheme();\n\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const pressActive = useSharedValue(false);\n const scale = useSharedValue(1);\n\n /**\n * This is a cleanup effect to prevent the onLongPress\n * handler from being called if the component has dismounted.\n */\n useEffect(\n () => () => {\n pressActive.value = false;\n cancelAnimation(scale);\n },\n [],\n );\n const scaleStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n scale: scale.value,\n },\n ],\n }),\n [],\n );\n const targetedOpacity = useSharedValue(0);\n const targetedStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: targetedOpacity.value,\n }),\n [],\n );\n\n useEffect(() => {\n targetedOpacity.value = withTiming(targetedMessage ? 1 : 0, {\n duration: 1000,\n });\n }, [targetedMessage]);\n\n const actionsEnabled = message.type === 'regular' && message.status === 'received';\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const canModifyMessage = isMyMessage || isModerator || isAdmin;\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<At, Ch, Co, Ev, Me, Re, Us>) => {\n if (!goToMessage) return;\n\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n goToMessage(quotedMessage.id);\n };\n\n const onPress = (error = message.type === 'error' || message.status === 'failed') => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<At, Ch, Co, Ev, Me, Re, Us>;\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 !message.deleted_at && 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 === '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<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n },\n )\n : {\n files: [] as Attachment<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n };\n\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !message.deleted_at &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n // prefetch images for Gallery component rendering\n const attachmentImageLength = attachments.images.length;\n useEffect(() => {\n if (attachmentImageLength) {\n attachments.images.slice(0, 4).forEach((image, index) => {\n const url = image.image_url || image.thumb_url;\n if (url) {\n if (attachmentImageLength <= 2) {\n prefetchImage({ height: size || 200, url });\n } else if (attachmentImageLength === 3) {\n if (index === 0) {\n prefetchImage({ height: size || 200, url });\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n }\n });\n }\n }, [attachmentImageLength]);\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 !!reactionsEnabled &&\n !message.deleted_at &&\n !!message.latest_reactions &&\n 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 handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await channel.deleteReaction(messageId, reactionType);\n } else {\n await channel.sendReaction(\n messageId,\n {\n type: reactionType,\n } as Reaction<Re, Us>,\n { enforce_unique: enforceUniqueReaction },\n );\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<At, Ch, Co, Me, Re, Us>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleDeleteMessage = async () => {\n const data = await client.deleteMessage(message.id);\n updateMessage(data.message);\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const showMessageOverlay = async (\n messageReactions = false,\n error = message.type === 'error' || message.status === 'failed',\n ) => {\n await dismissKeyboard();\n\n const blockUser = blockUserProp\n ? blockUserProp(message)\n : blockUserProp === null\n ? null\n : {\n action: () => async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage = copyMessageProp\n ? copyMessageProp(message)\n : copyMessageProp === null\n ? null\n : {\n // using depreciated Clipboard from react-native until expo supports the community version or their own\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n Clipboard.setString(message.text || '');\n },\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n };\n\n const deleteMessage = deleteMessageProp\n ? deleteMessageProp(message)\n : deleteMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage = editMessageProp\n ? editMessageProp(message)\n : editMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const flagMessage = flagMessageProp\n ? flagMessageProp(message)\n : flagMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t(\n 'Do you want to send a copy of this message to a moderator for further investigation?',\n ),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n } catch (err) {\n Alert.alert(\n t('Something went wrong'),\n t(\"The operation couldn't be completed.\"),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser = muteUserProp\n ? muteUserProp(message)\n : muteUserProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply = quotedReplyProp\n ? quotedReplyProp(message)\n : quotedReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry = retryProp\n ? retryProp(message)\n : retryProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply = threadReplyProp\n ? threadReplyProp(message)\n : threadReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\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 canModifyMessage,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n mutesEnabled,\n muteUser,\n quotedRepliesEnabled,\n quotedReply,\n retry,\n threadRepliesEnabled,\n threadReply,\n });\n\n setData({\n alignment,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: reactionsEnabled ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageAction[] | 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 supportedReactions,\n threadList,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\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 ? () => showMessageOverlay(false)\n : () => null;\n\n const onDoubleTapMessage = () => {\n if (onDoubleTapMessageProp) {\n onDoubleTapMessageProp({ actionHandlers, message });\n }\n };\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n canModifyMessage,\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: !animatedLongPress ? onLongPressMessage : () => null,\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 readEventsEnabled,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n });\n\n const onLongPressTouchable = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onFinish: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n },\n onStart: () => {\n pressActive.value = true;\n cancelAnimation(scale);\n /**\n * React native longPress active occurs on 370ms,\n * to hijack this we must make sure the timing is\n * longer, otherwise onPress will fire instead\n */\n scale.value = withSequence(\n withTiming(1, { duration: 100 }),\n withTiming(0.98, { duration: 400 }, () => {\n if (pressActive.value) {\n runOnJS(onLongPressMessage)();\n runOnJS(triggerHaptic)('impactMedium');\n }\n }),\n withTiming(1.02, { duration: 100 }),\n withTiming(1.0, { duration: 300 }),\n );\n },\n },\n [onLongPressMessage],\n );\n\n const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onActive: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n runOnJS(onDoubleTapMessage)();\n },\n },\n [onDoubleTapMessage],\n );\n\n return message.deleted_at || messageContentOrder.length ? (\n <TapGestureHandler\n enabled={animatedLongPress && !preventPress}\n maxDeltaX={8}\n maxDurationMs={3000}\n onGestureEvent={animatedLongPress ? onLongPressTouchable : undefined}\n waitFor={doubleTapRef}\n >\n <Animated.View testID='message-wrapper'>\n <TapGestureHandler\n enabled={!preventPress}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n scaleStyle,\n ]}\n >\n <Animated.View\n style={[\n StyleSheet.absoluteFillObject,\n targetedMessageUnderlay,\n { backgroundColor: targetedMessageBackground },\n targetedStyle,\n ]}\n />\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n ) : null;\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n lastReceivedId: prevLastReceivedId,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n lastReceivedId: nextLastReceivedId,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\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 messageEqual =\n prevMessage.deleted_at === nextMessage.deleted_at &&\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\n if (!messageEqual) return false;\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n prevMessage.quoted_message?.deleted_at === nextMessage.quoted_message?.deleted_at;\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 = prevTargetedMessage === nextTargetedMessage;\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, '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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n channel,\n disabled,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n readEventsEnabled,\n } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { client, mutedUsers } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<At, Ch, Co, Ev, Me, Re, Us>();\n const messagesContext = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<At, Ch, Co, Ev, Me, Re, Us>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n readEventsEnabled,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Message.tsx"],"names":["prefetchImage","height","url","includes","Image","prefetch","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MessageWithContext","props","animatedLongPress","Platform","OS","message","deleted_at","blockUserProp","blockUser","channel","client","copyMessageProp","copyMessage","deleteMessageProp","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","editMessageProp","editMessage","enableLongPress","enforceUniqueReaction","flagMessageProp","flagMessage","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","isAdmin","isModerator","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","mutesEnabled","muteUserProp","muteUser","onDoubleTapMessageProp","onDoubleTapMessage","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","quotedRepliesEnabled","reactionsEnabled","readEventsEnabled","removeMessage","quotedReplyProp","quotedReply","retryProp","retry","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","targetedMessage","threadList","threadRepliesEnabled","threadReplyProp","threadReply","updateMessage","theme","colors","accent_blue","accent_red","bg_gradient_start","grey","targetedMessageBackground","messageSimple","gallery","halfSize","size","targetedMessageUnderlay","doubleTapRef","pressActive","scale","value","scaleStyle","transform","targetedOpacity","targetedStyle","opacity","duration","actionsEnabled","type","status","isMyMessage","userID","user","id","canModifyMessage","handleAction","name","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","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","attachmentImageLength","slice","forEach","image","index","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","handleToggleReaction","messageId","ownReaction","find","deleteReaction","sendReaction","enforce_unique","console","log","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","mute","target","handleToggleMuteUser","unmuteUser","handleDeleteMessage","handleEditMessage","handleToggleBanUser","messageUser","banned","unbanUser","banUser","messageReactions","action","icon","title","Clipboard","setString","Alert","alert","cancelable","titleStyle","color","undefined","messageWithoutReservedFields","isThreadMessage","dismissOverlay","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onLongPressTouchable","onFinish","onStart","triggerHaptic","onDoubleTap","onActive","backgroundColor","StyleSheet","absoluteFillObject","areEqual","prevProps","nextProps","prevGoToMessage","prevLastReceivedId","prevMessage","prevMutedUsers","prevShowUnreadUnderlay","prevT","prevTargetedMessage","nextGoToMessage","nextLastReceivedId","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","nextTargetedMessage","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","messageEqual","readBy","updated_at","quotedMessageEqual","messageUserBannedEqual","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","latestReactionsEqual","mutedUserSame","mutedUser","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport {\n Alert,\n Clipboard,\n GestureResponderEvent,\n Image,\n Keyboard,\n PixelRatio,\n Platform,\n StyleProp,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\nimport { TapGestureHandler, TapGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withSequence,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\nimport { removeReservedFields } from './utils/removeReservedFields';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\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 MessageAction,\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 { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n SendUp,\n ThreadReply,\n UserDelete,\n} from '../../icons';\nimport { triggerHaptic } from '../../native';\nimport { emojiRegex } from '../../utils/utils';\n\nimport type { Attachment, MessageResponse, Reaction } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst prefetchImage = ({ height, url }: { height: number | string; url: string }) => {\n if (url.includes('&h=%2A')) {\n Image.prefetch(\n url.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`),\n )\n .catch(() => Image.prefetch(url))\n .catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n } else {\n Image.prefetch(url).catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n }\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => 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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'channel'\n | 'disabled'\n | 'enforceUniqueReaction'\n | 'isAdmin'\n | 'isModerator'\n | 'members'\n | 'readEventsEnabled'\n> &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'animatedLongPress'\n | 'blockUser'\n | 'copyMessage'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'editMessage'\n | 'flagMessage'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'mutesEnabled'\n | 'muteUser'\n | 'onDoubleTapMessage'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'quotedRepliesEnabled'\n | 'quotedReply'\n | 'reactionsEnabled'\n | 'removeMessage'\n | 'retry'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'threadRepliesEnabled'\n | 'threadReply'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\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?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\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?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n\n onPressIn?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => 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<At, Ch, Co, Ev, Me, Re, Us>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n targetedMessage?: boolean;\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n animatedLongPress = Platform.OS === 'ios' && !props.message.deleted_at,\n blockUser: blockUserProp,\n channel,\n client,\n copyMessage: copyMessageProp,\n deleteMessage: deleteMessageProp,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n editMessage: editMessageProp,\n enableLongPress = true,\n enforceUniqueReaction,\n flagMessage: flagMessageProp,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n isAdmin,\n isModerator,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n mutesEnabled,\n muteUser: muteUserProp,\n onDoubleTapMessage: onDoubleTapMessageProp,\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 quotedRepliesEnabled,\n reactionsEnabled,\n readEventsEnabled,\n removeMessage,\n quotedReply: quotedReplyProp,\n retry: retryProp,\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 targetedMessage,\n threadList = false,\n threadRepliesEnabled,\n threadReply: threadReplyProp,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { accent_blue, accent_red, bg_gradient_start, grey, targetedMessageBackground },\n messageSimple: {\n gallery: { halfSize, size },\n targetedMessageUnderlay,\n },\n },\n } = useTheme();\n\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const pressActive = useSharedValue(false);\n const scale = useSharedValue(1);\n\n /**\n * This is a cleanup effect to prevent the onLongPress\n * handler from being called if the component has dismounted.\n */\n useEffect(\n () => () => {\n pressActive.value = false;\n cancelAnimation(scale);\n },\n [],\n );\n const scaleStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n scale: scale.value,\n },\n ],\n }),\n [],\n );\n const targetedOpacity = useSharedValue(0);\n const targetedStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: targetedOpacity.value,\n }),\n [],\n );\n\n useEffect(() => {\n targetedOpacity.value = withTiming(targetedMessage ? 1 : 0, {\n duration: 1000,\n });\n }, [targetedMessage]);\n\n const actionsEnabled = message.type === 'regular' && message.status === 'received';\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const canModifyMessage = isMyMessage || isModerator || isAdmin;\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<At, Ch, Co, Ev, Me, Re, Us>) => {\n if (!goToMessage) return;\n\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n goToMessage(quotedMessage.id);\n };\n\n const onPress = (error = message.type === 'error' || message.status === 'failed') => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<At, Ch, Co, Ev, Me, Re, Us>;\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 !message.deleted_at && 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<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n },\n )\n : {\n files: [] as Attachment<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n };\n\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !message.deleted_at &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n // prefetch images for Gallery component rendering\n const attachmentImageLength = attachments.images.length;\n useEffect(() => {\n if (attachmentImageLength) {\n attachments.images.slice(0, 4).forEach((image, index) => {\n const url = image.image_url || image.thumb_url;\n if (url) {\n if (attachmentImageLength <= 2) {\n prefetchImage({ height: size || 200, url });\n } else if (attachmentImageLength === 3) {\n if (index === 0) {\n prefetchImage({ height: size || 200, url });\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n }\n });\n }\n }, [attachmentImageLength]);\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 !!reactionsEnabled &&\n !message.deleted_at &&\n !!message.latest_reactions &&\n 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 handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await channel.deleteReaction(messageId, reactionType);\n } else {\n await channel.sendReaction(\n messageId,\n {\n type: reactionType,\n } as Reaction<Re, Us>,\n { enforce_unique: enforceUniqueReaction },\n );\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<At, Ch, Co, Me, Re, Us>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleDeleteMessage = async () => {\n const data = await client.deleteMessage(message.id);\n updateMessage(data.message);\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const showMessageOverlay = async (\n messageReactions = false,\n error = message.type === 'error' || message.status === 'failed',\n ) => {\n await dismissKeyboard();\n\n const blockUser = blockUserProp\n ? blockUserProp(message)\n : blockUserProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage = copyMessageProp\n ? copyMessageProp(message)\n : copyMessageProp === null\n ? null\n : {\n // using depreciated Clipboard from react-native until expo supports the community version or their own\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n Clipboard.setString(message.text || '');\n },\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n };\n\n const deleteMessage = deleteMessageProp\n ? deleteMessageProp(message)\n : deleteMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage = editMessageProp\n ? editMessageProp(message)\n : editMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const flagMessage = flagMessageProp\n ? flagMessageProp(message)\n : flagMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t(\n 'Do you want to send a copy of this message to a moderator for further investigation?',\n ),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n } catch (err) {\n Alert.alert(\n t('Something went wrong'),\n t(\"The operation couldn't be completed.\"),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser = muteUserProp\n ? muteUserProp(message)\n : muteUserProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply = quotedReplyProp\n ? quotedReplyProp(message)\n : quotedReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry = retryProp\n ? retryProp(message)\n : retryProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply = threadReplyProp\n ? threadReplyProp(message)\n : threadReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\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 canModifyMessage,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n mutesEnabled,\n muteUser,\n quotedRepliesEnabled,\n quotedReply,\n retry,\n threadRepliesEnabled,\n threadReply,\n });\n\n setData({\n alignment,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: reactionsEnabled ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageAction[] | 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 supportedReactions,\n threadList,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\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 ? () => showMessageOverlay(false)\n : () => null;\n\n const onDoubleTapMessage = () => {\n if (onDoubleTapMessageProp) {\n onDoubleTapMessageProp({ actionHandlers, message });\n }\n };\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n canModifyMessage,\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: !animatedLongPress ? onLongPressMessage : () => null,\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 readEventsEnabled,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n });\n\n const onLongPressTouchable = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onFinish: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n },\n onStart: () => {\n pressActive.value = true;\n cancelAnimation(scale);\n /**\n * React native longPress active occurs on 370ms,\n * to hijack this we must make sure the timing is\n * longer, otherwise onPress will fire instead\n */\n scale.value = withSequence(\n withTiming(1, { duration: 100 }),\n withTiming(0.98, { duration: 400 }, () => {\n if (pressActive.value) {\n runOnJS(onLongPressMessage)();\n runOnJS(triggerHaptic)('impactMedium');\n }\n }),\n withTiming(1.02, { duration: 100 }),\n withTiming(1.0, { duration: 300 }),\n );\n },\n },\n [onLongPressMessage],\n );\n\n const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onActive: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n runOnJS(onDoubleTapMessage)();\n },\n },\n [onDoubleTapMessage],\n );\n\n return message.deleted_at || messageContentOrder.length ? (\n <TapGestureHandler\n enabled={animatedLongPress && !preventPress}\n maxDeltaX={8}\n maxDurationMs={3000}\n onGestureEvent={animatedLongPress ? onLongPressTouchable : undefined}\n waitFor={doubleTapRef}\n >\n <Animated.View testID='message-wrapper'>\n <TapGestureHandler\n enabled={!preventPress}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n scaleStyle,\n ]}\n >\n <Animated.View\n style={[\n StyleSheet.absoluteFillObject,\n targetedMessageUnderlay,\n { backgroundColor: targetedMessageBackground },\n targetedStyle,\n ]}\n />\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n ) : null;\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n lastReceivedId: prevLastReceivedId,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n lastReceivedId: nextLastReceivedId,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\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 messageEqual =\n prevMessage.deleted_at === nextMessage.deleted_at &&\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\n if (!messageEqual) return false;\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n prevMessage.quoted_message?.deleted_at === nextMessage.quoted_message?.deleted_at;\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 = prevTargetedMessage === nextTargetedMessage;\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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, '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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n channel,\n disabled,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n readEventsEnabled,\n } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { client, mutedUsers } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<At, Ch, Co, Ev, Me, Re, Us>();\n const messagesContext = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<At, Ch, Co, Ev, Me, Re, Us>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n readEventsEnabled,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "3.10.0"
2
+ "version": "3.10.2"
3
3
  }
@@ -92,15 +92,16 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
92
92
  });
93
93
  }
94
94
 
95
- if (attachment.type === 'video' && attachment.asset_url && attachment.image_url) {
96
- return _react["default"].createElement(Card, (0, _extends2["default"])({}, attachment, {
95
+ if (attachment.type === 'video' && attachment.asset_url) {
96
+ return _react["default"].createElement(FileAttachment, {
97
+ attachment: attachment,
97
98
  __self: _this,
98
99
  __source: {
99
100
  fileName: _jsxFileName,
100
101
  lineNumber: 90,
101
102
  columnNumber: 7
102
103
  }
103
- }));
104
+ });
104
105
  }
105
106
 
106
107
  if (hasAttachmentActions) {