stream-chat-react-native-core 4.14.0-beta.1 → 4.15.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -84,6 +84,9 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
84
84
  onLongPress: function onLongPress(event) {
85
85
  if (_onLongPress) {
86
86
  _onLongPress({
87
+ additionalInfo: {
88
+ attachment: attachment
89
+ },
87
90
  emitter: 'fileAttachment',
88
91
  event: event
89
92
  });
@@ -92,6 +95,9 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
92
95
  onPress: function onPress(event) {
93
96
  if (_onPress) {
94
97
  _onPress({
98
+ additionalInfo: {
99
+ attachment: attachment
100
+ },
95
101
  defaultHandler: defaultOnPress,
96
102
  emitter: 'fileAttachment',
97
103
  event: event
@@ -101,6 +107,9 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
101
107
  onPressIn: function onPressIn(event) {
102
108
  if (_onPressIn) {
103
109
  _onPressIn({
110
+ additionalInfo: {
111
+ attachment: attachment
112
+ },
104
113
  defaultHandler: defaultOnPress,
105
114
  emitter: 'fileAttachment',
106
115
  event: event
@@ -122,7 +131,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
122
131
  __self: _this,
123
132
  __source: {
124
133
  fileName: _jsxFileName,
125
- lineNumber: 132,
134
+ lineNumber: 135,
126
135
  columnNumber: 7
127
136
  }
128
137
  }, _react["default"].createElement(FileAttachmentIcon, {
@@ -131,7 +140,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
131
140
  __self: _this,
132
141
  __source: {
133
142
  fileName: _jsxFileName,
134
- lineNumber: 133,
143
+ lineNumber: 136,
135
144
  columnNumber: 9
136
145
  }
137
146
  }), _react["default"].createElement(_reactNative.View, {
@@ -139,7 +148,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
139
148
  __self: _this,
140
149
  __source: {
141
150
  fileName: _jsxFileName,
142
- lineNumber: 134,
151
+ lineNumber: 137,
143
152
  columnNumber: 9
144
153
  }
145
154
  }, _react["default"].createElement(_reactNative.Text, {
@@ -150,7 +159,7 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
150
159
  __self: _this,
151
160
  __source: {
152
161
  fileName: _jsxFileName,
153
- lineNumber: 135,
162
+ lineNumber: 138,
154
163
  columnNumber: 11
155
164
  }
156
165
  }, attachment.title), _react["default"].createElement(_reactNative.Text, {
@@ -160,14 +169,14 @@ var FileAttachmentWithContext = function FileAttachmentWithContext(props) {
160
169
  __self: _this,
161
170
  __source: {
162
171
  fileName: _jsxFileName,
163
- lineNumber: 138,
172
+ lineNumber: 141,
164
173
  columnNumber: 11
165
174
  }
166
175
  }, getFileSizeDisplayText(attachment.file_size)))), (_attachment$actions = attachment.actions) != null && _attachment$actions.length ? _react["default"].createElement(AttachmentActions, (0, _extends2["default"])({}, attachment, {
167
176
  __self: _this,
168
177
  __source: {
169
178
  fileName: _jsxFileName,
170
- lineNumber: 143,
179
+ lineNumber: 146,
171
180
  columnNumber: 37
172
181
  }
173
182
  })) : null);
@@ -199,7 +208,7 @@ var FileAttachment = function FileAttachment(props) {
199
208
  __self: _this,
200
209
  __source: {
201
210
  fileName: _jsxFileName,
202
- lineNumber: 166,
211
+ lineNumber: 169,
203
212
  columnNumber: 5
204
213
  }
205
214
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["FileAttachment.tsx"],"names":["styles","StyleSheet","create","container","alignItems","borderRadius","flexDirection","padding","details","maxWidth","paddingLeft","size","fontSize","title","fontWeight","FileAttachmentWithContext","props","additionalTouchableProps","attachment","attachmentSize","AttachmentActions","FileAttachmentIcon","onLongPress","onPress","onPressIn","preventPress","stylesProp","theme","colors","black","grey","white","messageSimple","file","fileSize","defaultOnPress","asset_url","event","emitter","defaultHandler","backgroundColor","mime_type","color","getFileSizeDisplayText","file_size","actions","length","FileAttachment","AttachmentActionsDefault","FileIconDefault","parseFloat","Math","floor","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { FileIcon as FileIconDefault } from '../../components/Attachment/FileIcon';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vw } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n padding: 8,\n },\n details: {\n maxWidth: vw(60),\n paddingLeft: 16,\n },\n size: {\n fontSize: 12,\n },\n title: {\n fontSize: 14,\n fontWeight: '700',\n },\n});\n\nexport type FileAttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'AttachmentActions' | 'FileAttachmentIcon'\n > & {\n /** The attachment to render */\n attachment: Attachment<StreamChatGenerics>;\n attachmentSize?: number;\n styles?: Partial<{\n container: StyleProp<ViewStyle>;\n details: StyleProp<ViewStyle>;\n size: StyleProp<TextStyle>;\n title: StyleProp<TextStyle>;\n }>;\n };\n\nconst FileAttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n attachment,\n attachmentSize,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors: { black, grey, white },\n messageSimple: {\n file: { container, details, fileSize, title },\n },\n },\n } = useTheme();\n\n const defaultOnPress = () => openUrlSafely(attachment.asset_url);\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n testID='file-attachment'\n {...additionalTouchableProps}\n >\n <View style={[styles.container, { backgroundColor: white }, container, stylesProp.container]}>\n <FileAttachmentIcon mimeType={attachment.mime_type} size={attachmentSize} />\n <View style={[styles.details, details, stylesProp.details]}>\n <Text numberOfLines={2} style={[styles.title, { color: black }, title, stylesProp.title]}>\n {attachment.title}\n </Text>\n <Text style={[styles.size, { color: grey }, fileSize, stylesProp.size]}>\n {getFileSizeDisplayText(attachment.file_size)}\n </Text>\n </View>\n </View>\n {attachment.actions?.length ? <AttachmentActions {...attachment} /> : null}\n </TouchableOpacity>\n );\n};\n\nexport type FileAttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>> &\n Pick<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>;\n\nexport const FileAttachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentProps<StreamChatGenerics>,\n) => {\n const { onLongPress, onPress, onPressIn, preventPress } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n AttachmentActions = AttachmentActionsDefault,\n FileAttachmentIcon = FileIconDefault,\n } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <FileAttachmentWithContext\n {...{\n additionalTouchableProps,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nexport const getFileSizeDisplayText = (size?: number | string) => {\n if (!size) return;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n\n if (size < 1000 * 1000) {\n return `${Math.floor(Math.floor(size / 10) / 100)} KB`;\n }\n\n return `${Math.floor(Math.floor(size / 10000) / 100)} MB`;\n};\n\nFileAttachment.displayName = 'FileAttachment{messageSimple{file}}';\n"]}
1
+ {"version":3,"sources":["FileAttachment.tsx"],"names":["styles","StyleSheet","create","container","alignItems","borderRadius","flexDirection","padding","details","maxWidth","paddingLeft","size","fontSize","title","fontWeight","FileAttachmentWithContext","props","additionalTouchableProps","attachment","attachmentSize","AttachmentActions","FileAttachmentIcon","onLongPress","onPress","onPressIn","preventPress","stylesProp","theme","colors","black","grey","white","messageSimple","file","fileSize","defaultOnPress","asset_url","event","additionalInfo","emitter","defaultHandler","backgroundColor","mime_type","color","getFileSizeDisplayText","file_size","actions","length","FileAttachment","AttachmentActionsDefault","FileIconDefault","parseFloat","Math","floor","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { FileIcon as FileIconDefault } from '../../components/Attachment/FileIcon';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vw } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n padding: 8,\n },\n details: {\n maxWidth: vw(60),\n paddingLeft: 16,\n },\n size: {\n fontSize: 12,\n },\n title: {\n fontSize: 14,\n fontWeight: '700',\n },\n});\n\nexport type FileAttachmentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'additionalTouchableProps' | 'AttachmentActions' | 'FileAttachmentIcon'\n > & {\n /** The attachment to render */\n attachment: Attachment<StreamChatGenerics>;\n attachmentSize?: number;\n styles?: Partial<{\n container: StyleProp<ViewStyle>;\n details: StyleProp<ViewStyle>;\n size: StyleProp<TextStyle>;\n title: StyleProp<TextStyle>;\n }>;\n };\n\nconst FileAttachmentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n attachment,\n attachmentSize,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n styles: stylesProp = {},\n } = props;\n\n const {\n theme: {\n colors: { black, grey, white },\n messageSimple: {\n file: { container, details, fileSize, title },\n },\n },\n } = useTheme();\n\n const defaultOnPress = () => openUrlSafely(attachment.asset_url);\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n additionalInfo: { attachment },\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n additionalInfo: { attachment },\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n additionalInfo: { attachment },\n defaultHandler: defaultOnPress,\n emitter: 'fileAttachment',\n event,\n });\n }\n }}\n testID='file-attachment'\n {...additionalTouchableProps}\n >\n <View style={[styles.container, { backgroundColor: white }, container, stylesProp.container]}>\n <FileAttachmentIcon mimeType={attachment.mime_type} size={attachmentSize} />\n <View style={[styles.details, details, stylesProp.details]}>\n <Text numberOfLines={2} style={[styles.title, { color: black }, title, stylesProp.title]}>\n {attachment.title}\n </Text>\n <Text style={[styles.size, { color: grey }, fileSize, stylesProp.size]}>\n {getFileSizeDisplayText(attachment.file_size)}\n </Text>\n </View>\n </View>\n {attachment.actions?.length ? <AttachmentActions {...attachment} /> : null}\n </TouchableOpacity>\n );\n};\n\nexport type FileAttachmentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>> &\n Pick<FileAttachmentPropsWithContext<StreamChatGenerics>, 'attachment'>;\n\nexport const FileAttachment = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileAttachmentProps<StreamChatGenerics>,\n) => {\n const { onLongPress, onPress, onPressIn, preventPress } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n AttachmentActions = AttachmentActionsDefault,\n FileAttachmentIcon = FileIconDefault,\n } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <FileAttachmentWithContext\n {...{\n additionalTouchableProps,\n AttachmentActions,\n FileAttachmentIcon,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n }}\n {...props}\n />\n );\n};\n\nexport const getFileSizeDisplayText = (size?: number | string) => {\n if (!size) return;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n\n if (size < 1000 * 1000) {\n return `${Math.floor(Math.floor(size / 10) / 100)} KB`;\n }\n\n return `${Math.floor(Math.floor(size / 10000) / 100)} MB`;\n};\n\nFileAttachment.displayName = 'FileAttachment{messageSimple{file}}';\n"]}
@@ -75,11 +75,15 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
75
75
  };
76
76
 
77
77
  var handleUpdatedOrDeletedMessage = function handleUpdatedOrDeletedMessage(event) {
78
- var _event$message;
78
+ setLastMessage(function (prevLastMessage) {
79
+ var _event$message;
79
80
 
80
- if (((_event$message = event.message) == null ? void 0 : _event$message.id) === (lastMessage == null ? void 0 : lastMessage.id)) {
81
- setLastMessage(event.message);
82
- }
81
+ if ((prevLastMessage == null ? void 0 : prevLastMessage.id) === ((_event$message = event.message) == null ? void 0 : _event$message.id)) {
82
+ return event.message;
83
+ }
84
+
85
+ return prevLastMessage;
86
+ });
83
87
  };
84
88
 
85
89
  var listeners = [channel.on('message.new', handleNewMessageEvent), channel.on('message.updated', handleUpdatedOrDeletedMessage), channel.on('message.deleted', handleUpdatedOrDeletedMessage)];
@@ -114,7 +118,7 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
114
118
  __self: _this,
115
119
  __source: {
116
120
  fileName: _jsxFileName,
117
- lineNumber: 108,
121
+ lineNumber: 111,
118
122
  columnNumber: 10
119
123
  }
120
124
  });
@@ -134,7 +138,7 @@ var ChannelPreview = function ChannelPreview(props) {
134
138
  __self: _this,
135
139
  __source: {
136
140
  fileName: _jsxFileName,
137
- lineNumber: 124,
141
+ lineNumber: 127,
138
142
  columnNumber: 10
139
143
  }
140
144
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["ChannelPreview.tsx"],"names":["ChannelPreviewWithContext","props","channel","client","Preview","state","messages","length","lastMessage","setLastMessage","translatedLastMessage","forceUpdate","setForceUpdate","countUnread","unread","setUnread","latestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","listeners","on","forEach","l","unsubscribe","handleReadEvent","user","userID","prev","off","ChannelPreview"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n\n if (newUnreadCount !== unread) {\n setUnread(newUnreadCount);\n }\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n if (event.message?.id === lastMessage?.id) {\n setLastMessage(event.message);\n }\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n channel.on('message.read', handleReadEvent);\n return () => channel.off('message.read', handleReadEvent);\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["ChannelPreview.tsx"],"names":["ChannelPreviewWithContext","props","channel","client","Preview","state","messages","length","lastMessage","setLastMessage","translatedLastMessage","forceUpdate","setForceUpdate","countUnread","unread","setUnread","latestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","prevLastMessage","listeners","on","forEach","l","unsubscribe","handleReadEvent","user","userID","prev","off","ChannelPreview"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n\n if (newUnreadCount !== unread) {\n setUnread(newUnreadCount);\n }\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n setLastMessage((prevLastMessage) => {\n if (prevLastMessage?.id === event.message?.id) {\n return event.message;\n }\n return prevLastMessage;\n });\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n channel.on('message.read', handleReadEvent);\n return () => channel.off('message.read', handleReadEvent);\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"]}
@@ -555,7 +555,7 @@ var MessageWithContext = function MessageWithContext(props) {
555
555
  __self: _this,
556
556
  __source: {
557
557
  fileName: _jsxFileName,
558
- lineNumber: 681,
558
+ lineNumber: 689,
559
559
  columnNumber: 5
560
560
  }
561
561
  }, _react["default"].createElement(_reactNative.View, {
@@ -565,7 +565,7 @@ var MessageWithContext = function MessageWithContext(props) {
565
565
  __self: _this,
566
566
  __source: {
567
567
  fileName: _jsxFileName,
568
- lineNumber: 685,
568
+ lineNumber: 693,
569
569
  columnNumber: 7
570
570
  }
571
571
  }, _react["default"].createElement(_reactNative.View, {
@@ -575,7 +575,7 @@ var MessageWithContext = function MessageWithContext(props) {
575
575
  __self: _this,
576
576
  __source: {
577
577
  fileName: _jsxFileName,
578
- lineNumber: 693,
578
+ lineNumber: 701,
579
579
  columnNumber: 9
580
580
  }
581
581
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -583,14 +583,14 @@ var MessageWithContext = function MessageWithContext(props) {
583
583
  __self: _this,
584
584
  __source: {
585
585
  fileName: _jsxFileName,
586
- lineNumber: 700,
586
+ lineNumber: 708,
587
587
  columnNumber: 11
588
588
  }
589
589
  }, _react["default"].createElement(MessageSimple, {
590
590
  __self: _this,
591
591
  __source: {
592
592
  fileName: _jsxFileName,
593
- lineNumber: 701,
593
+ lineNumber: 709,
594
594
  columnNumber: 13
595
595
  }
596
596
  })))));
@@ -715,7 +715,7 @@ var Message = function Message(props) {
715
715
  __self: _this,
716
716
  __source: {
717
717
  fileName: _jsxFileName,
718
- lineNumber: 861,
718
+ lineNumber: 869,
719
719
  columnNumber: 5
720
720
  }
721
721
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","channel","client","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","theme","colors","bg_gradient_start","targetedMessageBackground","targetedMessageUnderlay","messageSimple","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","deleteMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","userLanguage","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevMutedUsers","mutedUsers","prevShowUnreadUnderlay","prevT","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, 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 TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: TouchableEmitter;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\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<ChatContextValue<StreamChatGenerics>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/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 channel,\n client,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\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 enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { 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 clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[message.pinned && { backgroundColor: targetedMessageBackground }]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const { client, mutedUsers } = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","channel","client","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","theme","colors","bg_gradient_start","targetedMessageBackground","targetedMessageUnderlay","messageSimple","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","deleteMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","userLanguage","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevMutedUsers","mutedUsers","prevShowUnreadUnderlay","prevT","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, 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<ChatContextValue<StreamChatGenerics>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/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 channel,\n client,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\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 enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { 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 clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[message.pinned && { backgroundColor: targetedMessageBackground }]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const { client, mutedUsers } = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.14.0-beta.1"
2
+ "version": "4.15.0-beta.1"
3
3
  }