stream-chat-react-native-core 3.10.1 → 3.10.2-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Message/Message.js +17 -11
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/Message.js +17 -11
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +1 -1
- package/src/components/Message/Message.tsx +1 -1
- package/src/version.json +1 -1
|
@@ -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
|
|
617
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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 =
|
|
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' || 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
|
+
{"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"]}
|
|
@@ -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
|
|
617
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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 =
|
|
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' || 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
|
+
{"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"]}
|
package/lib/module/version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "3.10.1",
|
|
4
|
+
"version": "3.10.2-next.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
package/src/version.json
CHANGED