stream-chat-react-native-core 4.3.0-beta.3 → 4.3.0
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/Attachment/Attachment.js +21 -12
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +15 -13
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +6 -3
- package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +11 -8
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +28 -23
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +7 -6
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +21 -12
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +15 -13
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +6 -3
- package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -1
- package/lib/module/components/Message/Message.js +11 -8
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +28 -23
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +7 -6
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
- package/lib/typescript/components/Channel/Channel.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
- package/lib/typescript/components/Message/Message.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -0
- package/package.json +1 -1
- package/src/components/Attachment/Attachment.tsx +11 -2
- package/src/components/Channel/Channel.tsx +3 -0
- package/src/components/Channel/__tests__/isAttachmentEqualHandler.test.js +100 -0
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
- package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +6 -1
- package/src/components/Message/Message.tsx +19 -8
- package/src/components/Message/MessageSimple/MessageContent.tsx +23 -14
- package/src/components/Message/MessageSimple/MessageSimple.tsx +14 -11
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +411 -12
- package/src/contexts/messagesContext/MessagesContext.tsx +5 -0
- package/src/version.json +1 -1
|
@@ -168,7 +168,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
168
168
|
__self: _this,
|
|
169
169
|
__source: {
|
|
170
170
|
fileName: _jsxFileName,
|
|
171
|
-
lineNumber:
|
|
171
|
+
lineNumber: 202,
|
|
172
172
|
columnNumber: 7
|
|
173
173
|
}
|
|
174
174
|
});
|
|
@@ -224,7 +224,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
224
224
|
__self: _this,
|
|
225
225
|
__source: {
|
|
226
226
|
fileName: _jsxFileName,
|
|
227
|
-
lineNumber:
|
|
227
|
+
lineNumber: 227,
|
|
228
228
|
columnNumber: 5
|
|
229
229
|
}
|
|
230
230
|
}), MessageHeader && _react["default"].createElement(MessageHeader, {
|
|
@@ -240,7 +240,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
240
240
|
__self: _this,
|
|
241
241
|
__source: {
|
|
242
242
|
fileName: _jsxFileName,
|
|
243
|
-
lineNumber:
|
|
243
|
+
lineNumber: 268,
|
|
244
244
|
columnNumber: 9
|
|
245
245
|
}
|
|
246
246
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -249,7 +249,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
249
249
|
__self: _this,
|
|
250
250
|
__source: {
|
|
251
251
|
fileName: _jsxFileName,
|
|
252
|
-
lineNumber:
|
|
252
|
+
lineNumber: 280,
|
|
253
253
|
columnNumber: 7
|
|
254
254
|
}
|
|
255
255
|
}, hasThreadReplies && !threadList && !noBorder && _react["default"].createElement(_reactNative.View, {
|
|
@@ -262,7 +262,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
262
262
|
__self: _this,
|
|
263
263
|
__source: {
|
|
264
264
|
fileName: _jsxFileName,
|
|
265
|
-
lineNumber:
|
|
265
|
+
lineNumber: 282,
|
|
266
266
|
columnNumber: 11
|
|
267
267
|
}
|
|
268
268
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -278,7 +278,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
278
278
|
__self: _this,
|
|
279
279
|
__source: {
|
|
280
280
|
fileName: _jsxFileName,
|
|
281
|
-
lineNumber:
|
|
281
|
+
lineNumber: 295,
|
|
282
282
|
columnNumber: 9
|
|
283
283
|
}
|
|
284
284
|
}, messageContentOrder.map(function (messageContentType, messageContentOrderIndex) {
|
|
@@ -290,7 +290,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
290
290
|
__self: _this,
|
|
291
291
|
__source: {
|
|
292
292
|
fileName: _jsxFileName,
|
|
293
|
-
lineNumber:
|
|
293
|
+
lineNumber: 322,
|
|
294
294
|
columnNumber: 21
|
|
295
295
|
}
|
|
296
296
|
}, _react["default"].createElement(Reply, {
|
|
@@ -302,7 +302,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
302
302
|
__self: _this,
|
|
303
303
|
__source: {
|
|
304
304
|
fileName: _jsxFileName,
|
|
305
|
-
lineNumber:
|
|
305
|
+
lineNumber: 326,
|
|
306
306
|
columnNumber: 23
|
|
307
307
|
}
|
|
308
308
|
}));
|
|
@@ -315,7 +315,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
315
315
|
__self: _this,
|
|
316
316
|
__source: {
|
|
317
317
|
fileName: _jsxFileName,
|
|
318
|
-
lineNumber:
|
|
318
|
+
lineNumber: 332,
|
|
319
319
|
columnNumber: 19
|
|
320
320
|
}
|
|
321
321
|
});
|
|
@@ -328,7 +328,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
328
328
|
__self: _this,
|
|
329
329
|
__source: {
|
|
330
330
|
fileName: _jsxFileName,
|
|
331
|
-
lineNumber:
|
|
331
|
+
lineNumber: 336,
|
|
332
332
|
columnNumber: 19
|
|
333
333
|
}
|
|
334
334
|
});
|
|
@@ -339,7 +339,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
339
339
|
__self: _this,
|
|
340
340
|
__source: {
|
|
341
341
|
fileName: _jsxFileName,
|
|
342
|
-
lineNumber:
|
|
342
|
+
lineNumber: 342,
|
|
343
343
|
columnNumber: 24
|
|
344
344
|
}
|
|
345
345
|
});
|
|
@@ -351,7 +351,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
351
351
|
__self: _this,
|
|
352
352
|
__source: {
|
|
353
353
|
fileName: _jsxFileName,
|
|
354
|
-
lineNumber:
|
|
354
|
+
lineNumber: 346,
|
|
355
355
|
columnNumber: 19
|
|
356
356
|
}
|
|
357
357
|
});
|
|
@@ -362,7 +362,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
362
362
|
__self: _this,
|
|
363
363
|
__source: {
|
|
364
364
|
fileName: _jsxFileName,
|
|
365
|
-
lineNumber:
|
|
365
|
+
lineNumber: 354,
|
|
366
366
|
columnNumber: 11
|
|
367
367
|
}
|
|
368
368
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -370,7 +370,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
370
370
|
__self: _this,
|
|
371
371
|
__source: {
|
|
372
372
|
fileName: _jsxFileName,
|
|
373
|
-
lineNumber:
|
|
373
|
+
lineNumber: 355,
|
|
374
374
|
columnNumber: 13
|
|
375
375
|
}
|
|
376
376
|
}, _react["default"].createElement(_icons.Error, (0, _extends2["default"])({
|
|
@@ -379,7 +379,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
379
379
|
__self: _this,
|
|
380
380
|
__source: {
|
|
381
381
|
fileName: _jsxFileName,
|
|
382
|
-
lineNumber:
|
|
382
|
+
lineNumber: 356,
|
|
383
383
|
columnNumber: 15
|
|
384
384
|
}
|
|
385
385
|
}))))), _react["default"].createElement(MessageReplies, {
|
|
@@ -388,7 +388,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
388
388
|
__self: _this,
|
|
389
389
|
__source: {
|
|
390
390
|
fileName: _jsxFileName,
|
|
391
|
-
lineNumber:
|
|
391
|
+
lineNumber: 361,
|
|
392
392
|
columnNumber: 7
|
|
393
393
|
}
|
|
394
394
|
}), _react["default"].createElement(MessageFooter, {
|
|
@@ -397,7 +397,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
|
|
|
397
397
|
__self: _this,
|
|
398
398
|
__source: {
|
|
399
399
|
fileName: _jsxFileName,
|
|
400
|
-
lineNumber:
|
|
400
|
+
lineNumber: 362,
|
|
401
401
|
columnNumber: 7
|
|
402
402
|
}
|
|
403
403
|
}));
|
|
@@ -409,6 +409,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
|
|
|
409
409
|
var prevGoToMessage = prevProps.goToMessage,
|
|
410
410
|
prevGroupStyles = prevProps.groupStyles,
|
|
411
411
|
prevHasReactions = prevProps.hasReactions,
|
|
412
|
+
isAttachmentEqual = prevProps.isAttachmentEqual,
|
|
412
413
|
prevLastGroupMessage = prevProps.lastGroupMessage,
|
|
413
414
|
prevMembers = prevProps.members,
|
|
414
415
|
prevMessage = prevProps.message,
|
|
@@ -450,11 +451,13 @@ var areEqual = function areEqual(prevProps, nextProps) {
|
|
|
450
451
|
var isNextQuotedMessageTypeDeleted = ((_nextMessage$quoted_m = nextMessage.quoted_message) == null ? void 0 : _nextMessage$quoted_m.type) === 'deleted';
|
|
451
452
|
var quotedMessageEqual = ((_prevMessage$quoted_m2 = prevMessage.quoted_message) == null ? void 0 : _prevMessage$quoted_m2.id) === ((_nextMessage$quoted_m2 = nextMessage.quoted_message) == null ? void 0 : _nextMessage$quoted_m2.id) && isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;
|
|
452
453
|
if (!quotedMessageEqual) return false;
|
|
453
|
-
var
|
|
454
|
-
var
|
|
455
|
-
var attachmentsEqual = Array.isArray(
|
|
456
|
-
|
|
457
|
-
|
|
454
|
+
var prevMessageAttachments = prevMessage.attachments;
|
|
455
|
+
var nextMessageAttachments = nextMessage.attachments;
|
|
456
|
+
var attachmentsEqual = Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments) && prevMessageAttachments.length === nextMessageAttachments.length && prevMessageAttachments.every(function (attachment, index) {
|
|
457
|
+
var attachmentKeysEqual = attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
|
|
458
|
+
if (isAttachmentEqual) return attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index]);
|
|
459
|
+
return attachmentKeysEqual;
|
|
460
|
+
});
|
|
458
461
|
if (!attachmentsEqual) return false;
|
|
459
462
|
var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref2, index) {
|
|
460
463
|
var _nextMessage$latest_r;
|
|
@@ -504,6 +507,7 @@ var MessageContent = function MessageContent(props) {
|
|
|
504
507
|
FileAttachmentGroup = _useMessagesContext.FileAttachmentGroup,
|
|
505
508
|
formatDate = _useMessagesContext.formatDate,
|
|
506
509
|
Gallery = _useMessagesContext.Gallery,
|
|
510
|
+
isAttachmentEqual = _useMessagesContext.isAttachmentEqual,
|
|
507
511
|
MessageDeleted = _useMessagesContext.MessageDeleted,
|
|
508
512
|
MessageFooter = _useMessagesContext.MessageFooter,
|
|
509
513
|
MessageHeader = _useMessagesContext.MessageHeader,
|
|
@@ -526,6 +530,7 @@ var MessageContent = function MessageContent(props) {
|
|
|
526
530
|
goToMessage: goToMessage,
|
|
527
531
|
groupStyles: groupStyles,
|
|
528
532
|
hasReactions: hasReactions,
|
|
533
|
+
isAttachmentEqual: isAttachmentEqual,
|
|
529
534
|
isMyMessage: isMyMessage,
|
|
530
535
|
lastGroupMessage: lastGroupMessage,
|
|
531
536
|
lastReceivedId: lastReceivedId,
|
|
@@ -552,7 +557,7 @@ var MessageContent = function MessageContent(props) {
|
|
|
552
557
|
__self: _this,
|
|
553
558
|
__source: {
|
|
554
559
|
fileName: _jsxFileName,
|
|
555
|
-
lineNumber:
|
|
560
|
+
lineNumber: 548,
|
|
556
561
|
columnNumber: 5
|
|
557
562
|
}
|
|
558
563
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","event","emitter","borderColor","height","left","undefined","right","borderBottomLeftRadius","borderBottomRightRadius","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevAttachments","attachments","nextAttachments","attachmentsEqual","Array","isArray","every","index","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\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 {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS, ...container },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' || groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' || groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: isMyMessage && !error ? backgroundColor : grey_whisper,\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n 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 prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const prevAttachments = prevMessage.attachments;\n const nextAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevAttachments) && Array.isArray(nextAttachments)\n ? prevAttachments.length === nextAttachments.length &&\n prevAttachments.every(\n (attachment, index) =>\n attachment.image_url === nextAttachments[index].image_url &&\n attachment.og_scrape_url === nextAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextAttachments[index].thumb_url,\n )\n : prevAttachments === nextAttachments;\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 messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","event","emitter","borderColor","height","left","undefined","right","borderBottomLeftRadius","borderBottomRightRadius","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\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 {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS, ...container },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' || groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' || groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: isMyMessage && !error ? backgroundColor : grey_whisper,\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n 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 prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\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 if (!quotedMessageEqual) 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 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 messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
|
|
@@ -133,11 +133,12 @@ var areEqual = function areEqual(prevProps, nextProps) {
|
|
|
133
133
|
if (!quotedMessageEqual) return false;
|
|
134
134
|
var channelEqual = (prevChannel == null ? void 0 : prevChannel.state.messages.length) === (nextChannel == null ? void 0 : nextChannel.state.messages.length);
|
|
135
135
|
if (!channelEqual) return false;
|
|
136
|
-
var
|
|
137
|
-
var
|
|
138
|
-
var attachmentsEqual = Array.isArray(
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
var prevMessageAttachments = prevMessage.attachments;
|
|
137
|
+
var nextMessageAttachments = nextMessage.attachments;
|
|
138
|
+
var attachmentsEqual = Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments) && prevMessageAttachments.length === nextMessageAttachments.length && prevMessageAttachments.every(function (attachment, index) {
|
|
139
|
+
var attachmentKeysEqual = attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
|
|
140
|
+
return attachmentKeysEqual;
|
|
141
|
+
});
|
|
141
142
|
if (!attachmentsEqual) return false;
|
|
142
143
|
var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref, index) {
|
|
143
144
|
var _nextMessage$latest_r;
|
|
@@ -181,7 +182,7 @@ var MessageSimple = function MessageSimple(props) {
|
|
|
181
182
|
__self: _this,
|
|
182
183
|
__source: {
|
|
183
184
|
fileName: _jsxFileName,
|
|
184
|
-
lineNumber:
|
|
185
|
+
lineNumber: 205,
|
|
185
186
|
columnNumber: 5
|
|
186
187
|
}
|
|
187
188
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MessageSimple.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","MessageSimpleWithContext","props","alignment","channel","enableMessageGroupingByUser","groupStyles","hasReactions","message","MessageAvatar","MessageContent","MessagePinnedHeader","ReactionList","theme","messageSimple","messageContentWidth","setMessageContentWidth","isVeryLastMessage","state","messages","length","id","hasMarginBottom","includes","showReactions","pinned","justifyContent","marginBottom","marginTop","areEqual","prevProps","nextProps","prevChannel","prevGroupStyles","prevHasReactions","prevMessage","nextChannel","nextGroupStyles","nextHasReactions","nextMessage","hasReactionsEqual","repliesEqual","reply_count","groupStylesEqual","JSON","stringify","isPrevMessageTypeDeleted","type","isNextMessageTypeDeleted","messageEqual","status","text","isPrevQuotedMessageTypeDeleted","quoted_message","isNextQuotedMessageTypeDeleted","quotedMessageEqual","channelEqual","prevAttachments","attachments","nextAttachments","attachmentsEqual","Array","isArray","every","attachment","index","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","MemoizedMessageSimple","React","memo","MessageSimple","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\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';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n});\n\nexport type MessageSimplePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'alignment' | 'channel' | 'groupStyles' | 'hasReactions' | 'message'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'enableMessageGroupingByUser'\n | 'MessageAvatar'\n | 'MessageContent'\n | 'MessagePinnedHeader'\n | 'ReactionList'\n >;\n\nconst MessageSimpleWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageSimplePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n channel,\n enableMessageGroupingByUser,\n groupStyles,\n hasReactions,\n message,\n MessageAvatar,\n MessageContent,\n MessagePinnedHeader,\n ReactionList,\n } = props;\n\n const {\n theme: {\n messageSimple: { container },\n },\n } = useTheme();\n\n const [messageContentWidth, setMessageContentWidth] = useState(0);\n\n const isVeryLastMessage =\n channel?.state.messages[channel?.state.messages.length - 1]?.id === message.id;\n\n const hasMarginBottom = groupStyles.includes('single') || groupStyles.includes('bottom');\n\n const showReactions = hasReactions && ReactionList;\n\n return (\n <>\n {message.pinned && <MessagePinnedHeader />}\n <View\n style={[\n styles.container,\n {\n justifyContent: alignment === 'left' ? 'flex-start' : 'flex-end',\n marginBottom: hasMarginBottom\n ? isVeryLastMessage && enableMessageGroupingByUser\n ? 30\n : 8\n : 0,\n marginTop: showReactions ? 2 : 0,\n },\n container,\n ]}\n testID='message-simple-wrapper'\n >\n {alignment === 'left' && <MessageAvatar />}\n <MessageContent setMessageContentWidth={setMessageContentWidth} />\n {showReactions && <ReactionList messageContentWidth={messageContentWidth} />}\n </View>\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageSimplePropsWithContext<StreamChatGenerics>,\n nextProps: MessageSimplePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n channel: prevChannel,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n message: prevMessage,\n } = prevProps;\n const {\n channel: nextChannel,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n message: nextMessage,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const groupStylesEqual = JSON.stringify(prevGroupStyles) === JSON.stringify(nextGroupStyles);\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 prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\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 channelEqual = prevChannel?.state.messages.length === nextChannel?.state.messages.length;\n if (!channelEqual) return false;\n\n const prevAttachments = prevMessage.attachments;\n const nextAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevAttachments) && Array.isArray(nextAttachments)\n ? prevAttachments.length === nextAttachments.length &&\n prevAttachments.every(\n (attachment, index) =>\n attachment.image_url === nextAttachments[index].image_url &&\n attachment.og_scrape_url === nextAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextAttachments[index].thumb_url,\n )\n : prevAttachments === nextAttachments;\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 return true;\n};\n\nconst MemoizedMessageSimple = React.memo(\n MessageSimpleWithContext,\n areEqual,\n) as typeof MessageSimpleWithContext;\n\nexport type MessageSimpleProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageSimplePropsWithContext<StreamChatGenerics>>;\n\n/**\n *\n * Message UI component\n */\nexport const MessageSimple = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageSimpleProps<StreamChatGenerics>,\n) => {\n const { alignment, channel, groupStyles, hasReactions, message } =\n useMessageContext<StreamChatGenerics>();\n const {\n enableMessageGroupingByUser,\n MessageAvatar,\n MessageContent,\n MessagePinnedHeader,\n ReactionList,\n } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedMessageSimple<StreamChatGenerics>\n {...{\n alignment,\n channel,\n enableMessageGroupingByUser,\n groupStyles,\n hasReactions,\n message,\n MessageAvatar,\n MessageContent,\n MessagePinnedHeader,\n ReactionList,\n }}\n {...props}\n />\n );\n};\n\nMessageSimple.displayName = 'MessageSimple{messageSimple{container}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["MessageSimple.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flexDirection","MessageSimpleWithContext","props","alignment","channel","enableMessageGroupingByUser","groupStyles","hasReactions","message","MessageAvatar","MessageContent","MessagePinnedHeader","ReactionList","theme","messageSimple","messageContentWidth","setMessageContentWidth","isVeryLastMessage","state","messages","length","id","hasMarginBottom","includes","showReactions","pinned","justifyContent","marginBottom","marginTop","areEqual","prevProps","nextProps","prevChannel","prevGroupStyles","prevHasReactions","prevMessage","nextChannel","nextGroupStyles","nextHasReactions","nextMessage","hasReactionsEqual","repliesEqual","reply_count","groupStylesEqual","JSON","stringify","isPrevMessageTypeDeleted","type","isNextMessageTypeDeleted","messageEqual","status","text","isPrevQuotedMessageTypeDeleted","quoted_message","isNextQuotedMessageTypeDeleted","quotedMessageEqual","channelEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","attachment","index","attachmentKeysEqual","image_url","thumb_url","latestReactionsEqual","latest_reactions","MemoizedMessageSimple","React","memo","MessageSimple","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\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';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n});\n\nexport type MessageSimplePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'alignment' | 'channel' | 'groupStyles' | 'hasReactions' | 'message'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'enableMessageGroupingByUser'\n | 'MessageAvatar'\n | 'MessageContent'\n | 'MessagePinnedHeader'\n | 'ReactionList'\n >;\n\nconst MessageSimpleWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageSimplePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n channel,\n enableMessageGroupingByUser,\n groupStyles,\n hasReactions,\n message,\n MessageAvatar,\n MessageContent,\n MessagePinnedHeader,\n ReactionList,\n } = props;\n\n const {\n theme: {\n messageSimple: { container },\n },\n } = useTheme();\n\n const [messageContentWidth, setMessageContentWidth] = useState(0);\n\n const isVeryLastMessage =\n channel?.state.messages[channel?.state.messages.length - 1]?.id === message.id;\n\n const hasMarginBottom = groupStyles.includes('single') || groupStyles.includes('bottom');\n\n const showReactions = hasReactions && ReactionList;\n\n return (\n <>\n {message.pinned && <MessagePinnedHeader />}\n <View\n style={[\n styles.container,\n {\n justifyContent: alignment === 'left' ? 'flex-start' : 'flex-end',\n marginBottom: hasMarginBottom\n ? isVeryLastMessage && enableMessageGroupingByUser\n ? 30\n : 8\n : 0,\n marginTop: showReactions ? 2 : 0,\n },\n container,\n ]}\n testID='message-simple-wrapper'\n >\n {alignment === 'left' && <MessageAvatar />}\n <MessageContent setMessageContentWidth={setMessageContentWidth} />\n {showReactions && <ReactionList messageContentWidth={messageContentWidth} />}\n </View>\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageSimplePropsWithContext<StreamChatGenerics>,\n nextProps: MessageSimplePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n channel: prevChannel,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n message: prevMessage,\n } = prevProps;\n const {\n channel: nextChannel,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n message: nextMessage,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const groupStylesEqual = JSON.stringify(prevGroupStyles) === JSON.stringify(nextGroupStyles);\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 prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\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 channelEqual = prevChannel?.state.messages.length === nextChannel?.state.messages.length;\n if (!channelEqual) 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 return attachmentKeysEqual;\n });\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 return true;\n};\n\nconst MemoizedMessageSimple = React.memo(\n MessageSimpleWithContext,\n areEqual,\n) as typeof MessageSimpleWithContext;\n\nexport type MessageSimpleProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageSimplePropsWithContext<StreamChatGenerics>>;\n\n/**\n *\n * Message UI component\n */\nexport const MessageSimple = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageSimpleProps<StreamChatGenerics>,\n) => {\n const { alignment, channel, groupStyles, hasReactions, message } =\n useMessageContext<StreamChatGenerics>();\n const {\n enableMessageGroupingByUser,\n MessageAvatar,\n MessageContent,\n MessagePinnedHeader,\n ReactionList,\n } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedMessageSimple<StreamChatGenerics>\n {...{\n alignment,\n channel,\n enableMessageGroupingByUser,\n groupStyles,\n hasReactions,\n message,\n MessageAvatar,\n MessageContent,\n MessagePinnedHeader,\n ReactionList,\n }}\n {...props}\n />\n );\n};\n\nMessageSimple.displayName = 'MessageSimple{messageSimple{container}}';\n"]}
|
|
@@ -32,7 +32,7 @@ var MessagesProvider = function MessagesProvider(_ref) {
|
|
|
32
32
|
__self: _this,
|
|
33
33
|
__source: {
|
|
34
34
|
fileName: _jsxFileName,
|
|
35
|
-
lineNumber:
|
|
35
|
+
lineNumber: 473,
|
|
36
36
|
columnNumber: 3
|
|
37
37
|
}
|
|
38
38
|
}, children);
|
|
@@ -53,7 +53,7 @@ var withMessagesContext = function withMessagesContext(Component) {
|
|
|
53
53
|
__self: _this,
|
|
54
54
|
__source: {
|
|
55
55
|
fileName: _jsxFileName,
|
|
56
|
-
lineNumber:
|
|
56
|
+
lineNumber: 498,
|
|
57
57
|
columnNumber: 12
|
|
58
58
|
}
|
|
59
59
|
}));
|