stream-chat-react-native-core 5.23.0-beta.5 → 5.23.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Message/Message.js +15 -8
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +15 -10
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/i18n/en.json +1 -1
- package/lib/commonjs/i18n/fr.json +37 -37
- package/lib/commonjs/i18n/hi.json +37 -37
- package/lib/commonjs/i18n/it.json +37 -37
- package/lib/commonjs/i18n/nl.json +37 -37
- package/lib/commonjs/i18n/ru.json +37 -37
- package/lib/commonjs/i18n/tr.json +37 -37
- package/lib/commonjs/utils/utils.js +12 -3
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/Message.js +15 -8
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +15 -10
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/i18n/en.json +1 -1
- package/lib/module/i18n/fr.json +37 -37
- package/lib/module/i18n/hi.json +37 -37
- package/lib/module/i18n/it.json +37 -37
- package/lib/module/i18n/nl.json +37 -37
- package/lib/module/i18n/ru.json +37 -37
- package/lib/module/i18n/tr.json +37 -37
- package/lib/module/utils/utils.js +12 -3
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/i18n/en.json +1 -1
- package/lib/typescript/i18n/fr.json +37 -37
- package/lib/typescript/i18n/hi.json +37 -37
- package/lib/typescript/i18n/it.json +37 -37
- package/lib/typescript/i18n/nl.json +37 -37
- package/lib/typescript/i18n/ru.json +37 -37
- package/lib/typescript/i18n/tr.json +37 -37
- package/lib/typescript/utils/utils.d.ts +1 -1
- package/package.json +2 -1
- package/src/components/Message/Message.tsx +8 -4
- package/src/components/Reply/Reply.tsx +10 -3
- package/src/i18n/en.json +1 -1
- package/src/i18n/fr.json +37 -37
- package/src/i18n/hi.json +37 -37
- package/src/i18n/it.json +37 -37
- package/src/i18n/nl.json +37 -37
- package/src/i18n/ru.json +37 -37
- package/src/i18n/tr.json +37 -37
- package/src/utils/utils.ts +18 -5
- package/src/version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_useCreateMessageContext","_useMessageActionHandlers","_useMessageActions2","_messageActions","_ChannelContext","_ChatContext","_KeyboardContext","_MessageContext","_MessageOverlayContext","_MessagesContext","_OverlayContext","_OwnCapabilitiesContext","_ThemeContext","_ThreadContext","_TranslationContext","_native","_utils","_useMessageList","_this","_jsxFileName","MessageWithContext","props","_message$user","isMessageTypeDeleted","message","type","sendReaction","channel","deleteMessageFromContext","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","_props$enableLongPres","enableLongPress","enforceUniqueReaction","_props$forceAlignMess","forceAlignMessages","goToMessage","_props$groupStyles","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","lastReceivedId","members","_props$messageActions","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","deleteReaction","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","_props$threadList","threadList","updateMessage","client","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","bg_gradient_start","targetedMessageBackground","_useTheme$theme$messa","messageSimple","targetedMessageContainer","targetedMessageUnderlay","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","_ref","_asyncToGenerator2","_regenerator","mark","_callee","name","value","data","wrap","_callee$","_context","prev","next","sendAction","_defineProperty2","sent","parent_id","stop","_x","_x2","apply","arguments","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","length","undefined","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","isVideoPackageAvailable","videos","image_url","asset_url","thumb_url","title_link","images","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","_message$latest_react","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","useOwnCapabilitiesContext","_useMessageActionHand","useMessageActionHandlers","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","_useMessageActions","useMessageActions","blockUser","copyMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","_useTranslationContex","useTranslationContext","userLanguage","_ref2","_callee2","messageReactions","isThreadMessage","dismissOverlay","_args2","_callee2$","_context2","Boolean","messageContext","_extends2","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","triggerHaptic","useCreateMessageContext","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","createElement","View","pinned","backgroundColor","testID","__self","__source","fileName","lineNumber","columnNumber","MessageProvider","areEqual","prevProps","nextProps","_prevMessage$quoted_m","_nextMessage$quoted_m","_prevMessage$quoted_m2","_nextMessage$quoted_m2","_prevMessage$user","_nextMessage$user","prevMutedUsers","mutedUsers","prevGoToMessage","prevGroupStyles","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextGroupStyles","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","isMessageWithStylesReadByAndDateSeparator","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","_ref3","_nextMessage$latest_r","mutedUserSame","mutedUser","_prevMessage$user2","target","_nextMessage$user2","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message","_useChannelContext","useChannelContext","useChatContext","_useKeyboardContext","useKeyboardContext","_useMessageOverlayCon","useMessageOverlayContext","useMessagesContext","_useOverlayContext","useOverlayContext","_useThreadContext","useThreadContext","_useTranslationContex2","exports"],"sources":["Message.tsx"],"sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type FileAttachmentTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'fileAttachment';\n additionalInfo?: { attachment?: Attachment<StreamChatGenerics> };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: Exclude<TouchableEmitter, 'textMention' | 'textLink' | 'card' | 'fileAttachment'>;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n | FileAttachmentTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n sendReaction,\n channel,\n deleteMessage: deleteMessageFromContext,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n deleteReaction,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageContainer, targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'audio') {\n acc.files.push(cur);\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length && !acc.videos.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n };\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !isMessageTypeDeleted &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length || !!attachments.videos.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n sendReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { userLanguage } = useTranslationContext();\n\n const showMessageOverlay = async (messageReactions = false, error = errorOrFailed) => {\n await dismissKeyboard();\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n muteUser,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n });\n\n setData({\n alignment,\n chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[\n message.pinned && {\n ...targetedMessageContainer,\n backgroundColor: targetedMessageBackground,\n },\n ]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useCreateMessageContext","_useMessageActionHandlers","_useMessageActions2","_messageActions","_ChannelContext","_ChatContext","_KeyboardContext","_MessageContext","_MessageOverlayContext","_MessagesContext","_OverlayContext","_OwnCapabilitiesContext","_ThemeContext","_ThreadContext","_TranslationContext","_native","_utils","_useMessageList","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MessageWithContext","props","_message$user","isMessageTypeDeleted","message","type","sendReaction","channel","deleteMessageFromContext","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","_props$enableLongPres","enableLongPress","enforceUniqueReaction","_props$forceAlignMess","forceAlignMessages","goToMessage","_props$groupStyles","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","lastReceivedId","members","_props$messageActions","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","deleteReaction","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","_props$threadList","threadList","updateMessage","client","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","bg_gradient_start","targetedMessageBackground","_useTheme$theme$messa","messageSimple","targetedMessageContainer","targetedMessageUnderlay","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","_ref","_asyncToGenerator2","_regenerator","mark","_callee","name","value","data","wrap","_callee$","_context","prev","next","sendAction","_defineProperty2","sent","parent_id","stop","_x","_x2","apply","arguments","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","length","undefined","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","isVideoPackageAvailable","videos","image_url","asset_url","thumb_url","title_link","images","hasAttachmentActions","some","attachment","actions","filter","content","text","emojiOnlyText","useMemo","hasOnlyEmojis","onlyEmojis","onOpenThread","hasReactions","latest_reactions","clientId","reactions","_message$latest_react","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","useOwnCapabilitiesContext","_useMessageActionHand","useMessageActionHandlers","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","_useMessageActions","useMessageActions","blockUser","copyMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","_useTranslationContex","useTranslationContext","userLanguage","_ref2","_callee2","messageReactions","isThreadMessage","dismissOverlay","_args2","_callee2$","_context2","Boolean","messageContext","_extends2","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","triggerHaptic","useCreateMessageContext","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","createElement","View","pinned","backgroundColor","testID","__self","__source","fileName","lineNumber","columnNumber","MessageProvider","areEqual","prevProps","nextProps","_prevMessage$quoted_m","_nextMessage$quoted_m","_prevMessage$quoted_m2","_nextMessage$quoted_m2","_prevMessage$user","_nextMessage$user","prevMutedUsers","mutedUsers","prevGoToMessage","prevGroupStyles","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextGroupStyles","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextShowUnreadUnderlay","nextT","membersEqual","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","isMessageWithStylesReadByAndDateSeparator","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","_ref3","_nextMessage$latest_r","mutedUserSame","mutedUser","_prevMessage$user2","target","_nextMessage$user2","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message","_useChannelContext","useChannelContext","useChatContext","_useKeyboardContext","useKeyboardContext","_useMessageOverlayCon","useMessageOverlayContext","useMessagesContext","_useOverlayContext","useOverlayContext","_useThreadContext","useThreadContext","_useTranslationContex2","exports"],"sources":["Message.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { hasOnlyEmojis, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type FileAttachmentTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'fileAttachment';\n additionalInfo?: { attachment?: Attachment<StreamChatGenerics> };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: Exclude<TouchableEmitter, 'textMention' | 'textLink' | 'card' | 'fileAttachment'>;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n | FileAttachmentTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n sendReaction,\n channel,\n deleteMessage: deleteMessageFromContext,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n deleteReaction,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageContainer, targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'audio') {\n acc.files.push(cur);\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length && !acc.videos.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n };\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !isMessageTypeDeleted &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length || !!attachments.videos.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const emojiOnlyText = useMemo(() => {\n if (!message.text) return false;\n return hasOnlyEmojis(message.text);\n }, [message.text]);\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n emojiOnlyText;\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n sendReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { userLanguage } = useTranslationContext();\n\n const showMessageOverlay = async (messageReactions = false, error = errorOrFailed) => {\n await dismissKeyboard();\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n muteUser,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n });\n\n setData({\n alignment,\n chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[\n message.pinned && {\n ...targetedMessageContainer,\n backgroundColor: targetedMessageBackground,\n },\n ]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -117,17 +117,22 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
117
117
|
_useTheme$theme$reply2 = _useTheme$theme$reply.videoThumbnail,
|
|
118
118
|
videoThumbnailContainerStyle = _useTheme$theme$reply2.container,
|
|
119
119
|
videoThumbnailImageStyle = _useTheme$theme$reply2.image;
|
|
120
|
+
var messageText = typeof quotedMessage === 'boolean' ? '' : quotedMessage.text || '';
|
|
121
|
+
var emojiOnlyText = (0, _react.useMemo)(function () {
|
|
122
|
+
if (!messageText) return false;
|
|
123
|
+
return (0, _utils.hasOnlyEmojis)(messageText);
|
|
124
|
+
}, [messageText]);
|
|
120
125
|
if (typeof quotedMessage === 'boolean') return null;
|
|
121
126
|
var lastAttachment = (_quotedMessage$attach = quotedMessage.attachments) == null ? void 0 : _quotedMessage$attach.slice(-1)[0];
|
|
122
127
|
var messageType = lastAttachment && getMessageType(lastAttachment);
|
|
123
128
|
var hasImage = !error && lastAttachment && messageType !== 'file' && messageType !== 'video' && (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);
|
|
124
|
-
var onlyEmojis = !lastAttachment &&
|
|
129
|
+
var onlyEmojis = !lastAttachment && emojiOnlyText;
|
|
125
130
|
return _react["default"].createElement(_reactNative.View, {
|
|
126
131
|
style: [styles.container, container, stylesProp.container],
|
|
127
132
|
__self: _this,
|
|
128
133
|
__source: {
|
|
129
134
|
fileName: _jsxFileName,
|
|
130
|
-
lineNumber:
|
|
135
|
+
lineNumber: 176,
|
|
131
136
|
columnNumber: 5
|
|
132
137
|
}
|
|
133
138
|
}, _react["default"].createElement(MessageAvatar, {
|
|
@@ -138,7 +143,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
138
143
|
__self: _this,
|
|
139
144
|
__source: {
|
|
140
145
|
fileName: _jsxFileName,
|
|
141
|
-
lineNumber:
|
|
146
|
+
lineNumber: 177,
|
|
142
147
|
columnNumber: 7
|
|
143
148
|
}
|
|
144
149
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -150,7 +155,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
150
155
|
__self: _this,
|
|
151
156
|
__source: {
|
|
152
157
|
fileName: _jsxFileName,
|
|
153
|
-
lineNumber:
|
|
158
|
+
lineNumber: 178,
|
|
154
159
|
columnNumber: 7
|
|
155
160
|
}
|
|
156
161
|
}, !error && lastAttachment ? messageType === 'file' ? _react["default"].createElement(_reactNative.View, {
|
|
@@ -158,7 +163,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
158
163
|
__self: _this,
|
|
159
164
|
__source: {
|
|
160
165
|
fileName: _jsxFileName,
|
|
161
|
-
lineNumber:
|
|
166
|
+
lineNumber: 193,
|
|
162
167
|
columnNumber: 13
|
|
163
168
|
}
|
|
164
169
|
}, _react["default"].createElement(FileAttachmentIcon, {
|
|
@@ -167,7 +172,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
167
172
|
__self: _this,
|
|
168
173
|
__source: {
|
|
169
174
|
fileName: _jsxFileName,
|
|
170
|
-
lineNumber:
|
|
175
|
+
lineNumber: 200,
|
|
171
176
|
columnNumber: 15
|
|
172
177
|
}
|
|
173
178
|
})) : hasImage ? _react["default"].createElement(_reactNative.Image, {
|
|
@@ -185,7 +190,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
185
190
|
__self: _this,
|
|
186
191
|
__source: {
|
|
187
192
|
fileName: _jsxFileName,
|
|
188
|
-
lineNumber:
|
|
193
|
+
lineNumber: 203,
|
|
189
194
|
columnNumber: 13
|
|
190
195
|
}
|
|
191
196
|
}) : null : null, messageType === 'video' && !lastAttachment.og_scrape_url ? _react["default"].createElement(_VideoThumbnail.VideoThumbnail, {
|
|
@@ -195,7 +200,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
195
200
|
__self: _this,
|
|
196
201
|
__source: {
|
|
197
202
|
fileName: _jsxFileName,
|
|
198
|
-
lineNumber:
|
|
203
|
+
lineNumber: 225,
|
|
199
204
|
columnNumber: 11
|
|
200
205
|
}
|
|
201
206
|
}) : null, _react["default"].createElement(_MessageTextContainer.MessageTextContainer, {
|
|
@@ -218,7 +223,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
218
223
|
__self: _this,
|
|
219
224
|
__source: {
|
|
220
225
|
fileName: _jsxFileName,
|
|
221
|
-
lineNumber:
|
|
226
|
+
lineNumber: 231,
|
|
222
227
|
columnNumber: 9
|
|
223
228
|
}
|
|
224
229
|
})));
|
|
@@ -258,7 +263,7 @@ var Reply = function Reply(props) {
|
|
|
258
263
|
__self: _this,
|
|
259
264
|
__source: {
|
|
260
265
|
fileName: _jsxFileName,
|
|
261
|
-
lineNumber:
|
|
266
|
+
lineNumber: 356,
|
|
262
267
|
columnNumber: 5
|
|
263
268
|
}
|
|
264
269
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_merge","_interopRequireDefault","_MessageContext","_MessageInputContext","_MessagesContext","_ThemeContext","_TranslationContext","_getResizedImageUrl","_utils","_FileIcon","_VideoThumbnail","_MessageAvatar","_MessageTextContainer","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","alignItems","flexDirection","fileAttachmentContainer","paddingLeft","paddingVertical","imageAttachment","borderRadius","height","marginLeft","marginVertical","width","messageContainer","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","flexGrow","flexShrink","text","fontSize","textContainer","maxWidth","undefined","paddingHorizontal","videoThumbnailContainerStyle","videoThumbnailImageStyle","getMessageType","lastAttachment","messageType","isLastAttachmentFile","type","isLastAttachmentVideo","isLastAttachmentGiphy","isLastAttachmentImageOrGiphy","title_link","og_scrape_url","isLastAttachmentImage","image_url","thumb_url","ReplyWithContext","props","_quotedMessage$attach","_stylesProp$imageAtta","_stylesProp$imageAtta2","_stylesProp$imageAtta3","_stylesProp$imageAtta4","_stylesProp$fileAttac","FileAttachmentIcon","_props$attachmentSize","attachmentSize","MessageAvatar","quotedMessage","_props$styles","stylesProp","t","_useState","useState","_useState2","_slicedToArray2","error","setError","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","blue_alice","border","grey","transparent","white","deletedText","messageSimple","content","_useTheme$theme$reply","reply","markdownStyles","_useTheme$theme$reply2","videoThumbnail","image","attachments","slice","hasImage","onlyEmojis","emojiRegex","test","createElement","View","style","__self","__source","fileName","lineNumber","columnNumber","alignment","lastGroupMessage","message","size","backgroundColor","borderColor","borderWidth","mimeType","mime_type","Image","onError","source","uri","getResizedImageUrl","url","VideoThumbnail","imageStyle","MessageTextContainer","merge","em","color","_extends2","length","title","marginRight","Number","useMessageInputContextIfAvailable","contextValue","useContext","MessageInputContext","areEqual","prevProps","nextProps","prevQuotedMessage","nextQuotedMessage","quotedMessageEqual","id","deleted_at","MemoizedReply","React","memo","Reply","_useMessageContext","useMessageContext","_useMessagesContext","useMessagesContext","_useMessagesContext$F","FileIconDefault","_useMessagesContext$M","MessageAvatarDefault","_useMessageInputConte","editing","quotedEditingMessage","quoted_message","_useTranslationContex","useTranslationContext","exports","displayName"],"sources":["Reply.tsx"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport { Image, ImageStyle, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport merge from 'lodash/merge';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useMessageContext } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContext,\n MessageInputContextValue,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { emojiRegex } from '../../utils/utils';\n\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { VideoThumbnail } from '../Attachment/VideoThumbnail';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n fileAttachmentContainer: { paddingLeft: 8, paddingVertical: 8 },\n imageAttachment: {\n borderRadius: 8,\n height: 32,\n marginLeft: 8,\n marginVertical: 8,\n width: 32,\n },\n messageContainer: {\n alignItems: 'flex-start',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 12,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n flexGrow: 1,\n flexShrink: 1,\n },\n text: { fontSize: 12 },\n textContainer: { maxWidth: undefined, paddingHorizontal: 8 },\n videoThumbnailContainerStyle: {\n borderRadius: 8,\n height: 50,\n marginLeft: 8,\n marginVertical: 8,\n width: 50,\n },\n videoThumbnailImageStyle: {\n borderRadius: 10,\n },\n});\n\ntype ReplyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'quotedMessage'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon' | 'MessageAvatar'> &\n Pick<TranslationContextValue, 't'> & {\n attachmentSize?: number;\n styles?: Partial<{\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n }>;\n };\n\nconst getMessageType = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n lastAttachment: Attachment<StreamChatGenerics>,\n) => {\n let messageType;\n\n const isLastAttachmentFile = lastAttachment.type === 'file' || lastAttachment.type === 'audio';\n\n const isLastAttachmentVideo = lastAttachment.type === 'video';\n\n const isLastAttachmentGiphy =\n lastAttachment?.type === 'giphy' || lastAttachment?.type === 'imgur';\n\n const isLastAttachmentImageOrGiphy =\n lastAttachment?.type === 'image' &&\n !lastAttachment?.title_link &&\n !lastAttachment?.og_scrape_url;\n\n const isLastAttachmentImage = lastAttachment?.image_url || lastAttachment?.thumb_url;\n\n if (isLastAttachmentFile) {\n messageType = 'file';\n } else if (isLastAttachmentVideo) {\n messageType = 'video';\n } else if (isLastAttachmentImageOrGiphy) {\n if (isLastAttachmentImage) messageType = 'image';\n else messageType = undefined;\n } else if (isLastAttachmentGiphy) messageType = 'giphy';\n else messageType = 'other';\n\n return messageType;\n};\n\nconst ReplyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n FileAttachmentIcon,\n attachmentSize = 40,\n MessageAvatar,\n quotedMessage,\n styles: stylesProp = {},\n t,\n } = props;\n\n const [error, setError] = useState(false);\n\n const {\n theme: {\n colors: { blue_alice, border, grey, transparent, white },\n messageSimple: {\n content: { deletedText },\n },\n reply: {\n container,\n fileAttachmentContainer,\n imageAttachment,\n markdownStyles,\n messageContainer,\n textContainer,\n videoThumbnail: {\n container: videoThumbnailContainerStyle,\n image: videoThumbnailImageStyle,\n },\n },\n },\n } = useTheme();\n\n if (typeof quotedMessage === 'boolean') return null;\n\n const lastAttachment = quotedMessage.attachments?.slice(-1)[0] as Attachment<StreamChatGenerics>;\n const messageType = lastAttachment && getMessageType(lastAttachment);\n\n const hasImage =\n !error &&\n lastAttachment &&\n messageType !== 'file' &&\n messageType !== 'video' &&\n (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);\n\n const onlyEmojis = !lastAttachment && !!quotedMessage.text && emojiRegex.test(quotedMessage.text);\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n <MessageAvatar alignment={'left'} lastGroupMessage message={quotedMessage} size={24} />\n <View\n style={[\n styles.messageContainer,\n {\n backgroundColor:\n messageType === 'other' ? blue_alice : messageType === 'giphy' ? transparent : white,\n borderColor: border,\n borderWidth: messageType === 'other' ? 0 : 1,\n },\n messageContainer,\n stylesProp.messageContainer,\n ]}\n >\n {!error && lastAttachment ? (\n messageType === 'file' ? (\n <View\n style={[\n styles.fileAttachmentContainer,\n fileAttachmentContainer,\n stylesProp.fileAttachmentContainer,\n ]}\n >\n <FileAttachmentIcon mimeType={lastAttachment.mime_type} size={attachmentSize} />\n </View>\n ) : hasImage ? (\n <Image\n onError={() => setError(true)}\n source={{\n uri: getResizedImageUrl({\n height:\n stylesProp.imageAttachment?.height ||\n imageAttachment?.height ||\n styles.imageAttachment.height,\n url: (lastAttachment.image_url ||\n lastAttachment.thumb_url ||\n lastAttachment.og_scrape_url) as string,\n width:\n stylesProp.imageAttachment?.width ||\n imageAttachment?.width ||\n styles.imageAttachment.width,\n }),\n }}\n style={[styles.imageAttachment, imageAttachment, stylesProp.imageAttachment]}\n />\n ) : null\n ) : null}\n {messageType === 'video' && !lastAttachment.og_scrape_url ? (\n <VideoThumbnail\n imageStyle={[styles.videoThumbnailImageStyle, videoThumbnailImageStyle]}\n style={[styles.videoThumbnailContainerStyle, videoThumbnailContainerStyle]}\n thumb_url={lastAttachment.thumb_url}\n />\n ) : null}\n <MessageTextContainer<StreamChatGenerics>\n markdownStyles={\n quotedMessage.type === 'deleted'\n ? merge({ em: { color: grey } }, deletedText)\n : { text: styles.text, ...markdownStyles }\n }\n message={{\n ...quotedMessage,\n text:\n quotedMessage.type === 'deleted'\n ? `_${t('Message deleted')}_`\n : quotedMessage.text\n ? quotedMessage.text.length > 170\n ? `${quotedMessage.text.slice(0, 170)}...`\n : quotedMessage.text\n : messageType === 'image'\n ? t('Photo')\n : messageType === 'video'\n ? t('Video')\n : messageType === 'file'\n ? lastAttachment?.title || ''\n : '',\n }}\n onlyEmojis={onlyEmojis}\n styles={{\n textContainer: [\n {\n marginRight:\n hasImage || messageType === 'video'\n ? Number(\n stylesProp.imageAttachment?.height ||\n imageAttachment.height ||\n styles.imageAttachment.height,\n ) +\n Number(\n stylesProp.imageAttachment?.marginLeft ||\n imageAttachment.marginLeft ||\n styles.imageAttachment.marginLeft,\n )\n : messageType === 'file'\n ? attachmentSize +\n Number(\n stylesProp.fileAttachmentContainer?.paddingLeft ||\n fileAttachmentContainer.paddingLeft ||\n styles.fileAttachmentContainer.paddingLeft,\n )\n : undefined,\n },\n styles.textContainer,\n textContainer,\n stylesProp.textContainer,\n ],\n }}\n />\n </View>\n </View>\n );\n};\n\n/**\n * When a reply is rendered in a MessageSimple, it does\n * not have a MessageInputContext. As this is deliberate,\n * this function exists to avoid the error thrown when\n * using a context outside of its provider.\n * */\nconst useMessageInputContextIfAvailable = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n return contextValue;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReplyPropsWithContext<StreamChatGenerics>,\n nextProps: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const { quotedMessage: prevQuotedMessage } = prevProps;\n const { quotedMessage: nextQuotedMessage } = nextProps;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id &&\n prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at &&\n prevQuotedMessage.type === nextQuotedMessage.type\n : !!prevQuotedMessage === !!nextQuotedMessage;\n\n if (!quotedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedReply = React.memo(ReplyWithContext, areEqual) as typeof ReplyWithContext;\n\nexport type ReplyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ReplyPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for reply\n */\nexport const Reply = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyProps<StreamChatGenerics>,\n) => {\n const { message } = useMessageContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon = FileIconDefault, MessageAvatar = MessageAvatarDefault } =\n useMessagesContext<StreamChatGenerics>();\n\n const { editing, quotedMessage } = useMessageInputContextIfAvailable<StreamChatGenerics>();\n\n const quotedEditingMessage = (\n typeof editing !== 'boolean' ? editing?.quoted_message || false : false\n ) as MessageInputContextValue<StreamChatGenerics>['quotedMessage'];\n\n const { t } = useTranslationContext();\n\n return (\n <MemoizedReply\n {...{\n FileAttachmentIcon,\n MessageAvatar,\n quotedMessage: message\n ? (message.quoted_message as MessageInputContextValue<StreamChatGenerics>['quotedMessage'])\n : quotedMessage || quotedEditingMessage,\n t,\n }}\n {...props}\n />\n );\n};\n\nReply.displayName = 'Reply{reply}';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_merge","_interopRequireDefault","_MessageContext","_MessageInputContext","_MessagesContext","_ThemeContext","_TranslationContext","_getResizedImageUrl","_utils","_FileIcon","_VideoThumbnail","_MessageAvatar","_MessageTextContainer","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","alignItems","flexDirection","fileAttachmentContainer","paddingLeft","paddingVertical","imageAttachment","borderRadius","height","marginLeft","marginVertical","width","messageContainer","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","flexGrow","flexShrink","text","fontSize","textContainer","maxWidth","undefined","paddingHorizontal","videoThumbnailContainerStyle","videoThumbnailImageStyle","getMessageType","lastAttachment","messageType","isLastAttachmentFile","type","isLastAttachmentVideo","isLastAttachmentGiphy","isLastAttachmentImageOrGiphy","title_link","og_scrape_url","isLastAttachmentImage","image_url","thumb_url","ReplyWithContext","props","_quotedMessage$attach","_stylesProp$imageAtta","_stylesProp$imageAtta2","_stylesProp$imageAtta3","_stylesProp$imageAtta4","_stylesProp$fileAttac","FileAttachmentIcon","_props$attachmentSize","attachmentSize","MessageAvatar","quotedMessage","_props$styles","stylesProp","t","_useState","useState","_useState2","_slicedToArray2","error","setError","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","blue_alice","border","grey","transparent","white","deletedText","messageSimple","content","_useTheme$theme$reply","reply","markdownStyles","_useTheme$theme$reply2","videoThumbnail","image","messageText","emojiOnlyText","useMemo","hasOnlyEmojis","attachments","slice","hasImage","onlyEmojis","createElement","View","style","__self","__source","fileName","lineNumber","columnNumber","alignment","lastGroupMessage","message","size","backgroundColor","borderColor","borderWidth","mimeType","mime_type","Image","onError","source","uri","getResizedImageUrl","url","VideoThumbnail","imageStyle","MessageTextContainer","merge","em","color","_extends2","length","title","marginRight","Number","useMessageInputContextIfAvailable","contextValue","useContext","MessageInputContext","areEqual","prevProps","nextProps","prevQuotedMessage","nextQuotedMessage","quotedMessageEqual","id","deleted_at","MemoizedReply","React","memo","Reply","_useMessageContext","useMessageContext","_useMessagesContext","useMessagesContext","_useMessagesContext$F","FileIconDefault","_useMessagesContext$M","MessageAvatarDefault","_useMessageInputConte","editing","quotedEditingMessage","quoted_message","_useTranslationContex","useTranslationContext","exports","displayName"],"sources":["Reply.tsx"],"sourcesContent":["import React, { useContext, useMemo, useState } from 'react';\nimport { Image, ImageStyle, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport merge from 'lodash/merge';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useMessageContext } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContext,\n MessageInputContextValue,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { hasOnlyEmojis } from '../../utils/utils';\n\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { VideoThumbnail } from '../Attachment/VideoThumbnail';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n fileAttachmentContainer: { paddingLeft: 8, paddingVertical: 8 },\n imageAttachment: {\n borderRadius: 8,\n height: 32,\n marginLeft: 8,\n marginVertical: 8,\n width: 32,\n },\n messageContainer: {\n alignItems: 'flex-start',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 12,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n flexGrow: 1,\n flexShrink: 1,\n },\n text: { fontSize: 12 },\n textContainer: { maxWidth: undefined, paddingHorizontal: 8 },\n videoThumbnailContainerStyle: {\n borderRadius: 8,\n height: 50,\n marginLeft: 8,\n marginVertical: 8,\n width: 50,\n },\n videoThumbnailImageStyle: {\n borderRadius: 10,\n },\n});\n\ntype ReplyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'quotedMessage'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon' | 'MessageAvatar'> &\n Pick<TranslationContextValue, 't'> & {\n attachmentSize?: number;\n styles?: Partial<{\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n }>;\n };\n\nconst getMessageType = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n lastAttachment: Attachment<StreamChatGenerics>,\n) => {\n let messageType;\n\n const isLastAttachmentFile = lastAttachment.type === 'file' || lastAttachment.type === 'audio';\n\n const isLastAttachmentVideo = lastAttachment.type === 'video';\n\n const isLastAttachmentGiphy =\n lastAttachment?.type === 'giphy' || lastAttachment?.type === 'imgur';\n\n const isLastAttachmentImageOrGiphy =\n lastAttachment?.type === 'image' &&\n !lastAttachment?.title_link &&\n !lastAttachment?.og_scrape_url;\n\n const isLastAttachmentImage = lastAttachment?.image_url || lastAttachment?.thumb_url;\n\n if (isLastAttachmentFile) {\n messageType = 'file';\n } else if (isLastAttachmentVideo) {\n messageType = 'video';\n } else if (isLastAttachmentImageOrGiphy) {\n if (isLastAttachmentImage) messageType = 'image';\n else messageType = undefined;\n } else if (isLastAttachmentGiphy) messageType = 'giphy';\n else messageType = 'other';\n\n return messageType;\n};\n\nconst ReplyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n FileAttachmentIcon,\n attachmentSize = 40,\n MessageAvatar,\n quotedMessage,\n styles: stylesProp = {},\n t,\n } = props;\n\n const [error, setError] = useState(false);\n\n const {\n theme: {\n colors: { blue_alice, border, grey, transparent, white },\n messageSimple: {\n content: { deletedText },\n },\n reply: {\n container,\n fileAttachmentContainer,\n imageAttachment,\n markdownStyles,\n messageContainer,\n textContainer,\n videoThumbnail: {\n container: videoThumbnailContainerStyle,\n image: videoThumbnailImageStyle,\n },\n },\n },\n } = useTheme();\n\n const messageText = typeof quotedMessage === 'boolean' ? '' : quotedMessage.text || '';\n\n const emojiOnlyText = useMemo(() => {\n if (!messageText) return false;\n return hasOnlyEmojis(messageText);\n }, [messageText]);\n\n if (typeof quotedMessage === 'boolean') return null;\n\n const lastAttachment = quotedMessage.attachments?.slice(-1)[0] as Attachment<StreamChatGenerics>;\n const messageType = lastAttachment && getMessageType(lastAttachment);\n\n const hasImage =\n !error &&\n lastAttachment &&\n messageType !== 'file' &&\n messageType !== 'video' &&\n (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);\n\n const onlyEmojis = !lastAttachment && emojiOnlyText;\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n <MessageAvatar alignment={'left'} lastGroupMessage message={quotedMessage} size={24} />\n <View\n style={[\n styles.messageContainer,\n {\n backgroundColor:\n messageType === 'other' ? blue_alice : messageType === 'giphy' ? transparent : white,\n borderColor: border,\n borderWidth: messageType === 'other' ? 0 : 1,\n },\n messageContainer,\n stylesProp.messageContainer,\n ]}\n >\n {!error && lastAttachment ? (\n messageType === 'file' ? (\n <View\n style={[\n styles.fileAttachmentContainer,\n fileAttachmentContainer,\n stylesProp.fileAttachmentContainer,\n ]}\n >\n <FileAttachmentIcon mimeType={lastAttachment.mime_type} size={attachmentSize} />\n </View>\n ) : hasImage ? (\n <Image\n onError={() => setError(true)}\n source={{\n uri: getResizedImageUrl({\n height:\n stylesProp.imageAttachment?.height ||\n imageAttachment?.height ||\n styles.imageAttachment.height,\n url: (lastAttachment.image_url ||\n lastAttachment.thumb_url ||\n lastAttachment.og_scrape_url) as string,\n width:\n stylesProp.imageAttachment?.width ||\n imageAttachment?.width ||\n styles.imageAttachment.width,\n }),\n }}\n style={[styles.imageAttachment, imageAttachment, stylesProp.imageAttachment]}\n />\n ) : null\n ) : null}\n {messageType === 'video' && !lastAttachment.og_scrape_url ? (\n <VideoThumbnail\n imageStyle={[styles.videoThumbnailImageStyle, videoThumbnailImageStyle]}\n style={[styles.videoThumbnailContainerStyle, videoThumbnailContainerStyle]}\n thumb_url={lastAttachment.thumb_url}\n />\n ) : null}\n <MessageTextContainer<StreamChatGenerics>\n markdownStyles={\n quotedMessage.type === 'deleted'\n ? merge({ em: { color: grey } }, deletedText)\n : { text: styles.text, ...markdownStyles }\n }\n message={{\n ...quotedMessage,\n text:\n quotedMessage.type === 'deleted'\n ? `_${t('Message deleted')}_`\n : quotedMessage.text\n ? quotedMessage.text.length > 170\n ? `${quotedMessage.text.slice(0, 170)}...`\n : quotedMessage.text\n : messageType === 'image'\n ? t('Photo')\n : messageType === 'video'\n ? t('Video')\n : messageType === 'file'\n ? lastAttachment?.title || ''\n : '',\n }}\n onlyEmojis={onlyEmojis}\n styles={{\n textContainer: [\n {\n marginRight:\n hasImage || messageType === 'video'\n ? Number(\n stylesProp.imageAttachment?.height ||\n imageAttachment.height ||\n styles.imageAttachment.height,\n ) +\n Number(\n stylesProp.imageAttachment?.marginLeft ||\n imageAttachment.marginLeft ||\n styles.imageAttachment.marginLeft,\n )\n : messageType === 'file'\n ? attachmentSize +\n Number(\n stylesProp.fileAttachmentContainer?.paddingLeft ||\n fileAttachmentContainer.paddingLeft ||\n styles.fileAttachmentContainer.paddingLeft,\n )\n : undefined,\n },\n styles.textContainer,\n textContainer,\n stylesProp.textContainer,\n ],\n }}\n />\n </View>\n </View>\n );\n};\n\n/**\n * When a reply is rendered in a MessageSimple, it does\n * not have a MessageInputContext. As this is deliberate,\n * this function exists to avoid the error thrown when\n * using a context outside of its provider.\n * */\nconst useMessageInputContextIfAvailable = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n return contextValue;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReplyPropsWithContext<StreamChatGenerics>,\n nextProps: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const { quotedMessage: prevQuotedMessage } = prevProps;\n const { quotedMessage: nextQuotedMessage } = nextProps;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id &&\n prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at &&\n prevQuotedMessage.type === nextQuotedMessage.type\n : !!prevQuotedMessage === !!nextQuotedMessage;\n\n if (!quotedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedReply = React.memo(ReplyWithContext, areEqual) as typeof ReplyWithContext;\n\nexport type ReplyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ReplyPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for reply\n */\nexport const Reply = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyProps<StreamChatGenerics>,\n) => {\n const { message } = useMessageContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon = FileIconDefault, MessageAvatar = MessageAvatarDefault } =\n useMessagesContext<StreamChatGenerics>();\n\n const { editing, quotedMessage } = useMessageInputContextIfAvailable<StreamChatGenerics>();\n\n const quotedEditingMessage = (\n typeof editing !== 'boolean' ? editing?.quoted_message || false : false\n ) as MessageInputContextValue<StreamChatGenerics>['quotedMessage'];\n\n const { t } = useTranslationContext();\n\n return (\n <MemoizedReply\n {...{\n FileAttachmentIcon,\n MessageAvatar,\n quotedMessage: message\n ? (message.quoted_message as MessageInputContextValue<StreamChatGenerics>['quotedMessage'])\n : quotedMessage || quotedEditingMessage,\n t,\n }}\n {...props}\n />\n );\n};\n\nReply.displayName = 'Reply{reply}';\n"],"mappings":"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"}
|
package/lib/module/i18n/en.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"File type not supported": "File type not supported",
|
|
25
25
|
"Flag": "Flag",
|
|
26
26
|
"Flag Message": "Flag Message",
|
|
27
|
-
"Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged
|
|
27
|
+
"Flag action failed either due to a network issue or the message is already flagged": "Flag action failed either due to a network issue or the message is already flagged",
|
|
28
28
|
"How about sending your first message to a friend?": "How about sending your first message to a friend?",
|
|
29
29
|
"Instant Commands": "Instant Commands",
|
|
30
30
|
"Let's start chatting!": "Let's start chatting!",
|