stream-chat-react-native-core 5.1.1-beta.1 → 5.3.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.
Files changed (127) hide show
  1. package/lib/commonjs/components/Attachment/Card.js +29 -18
  2. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Gallery.js +16 -20
  4. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/GalleryImage.js +34 -6
  6. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/Giphy.js +37 -29
  8. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  9. package/lib/commonjs/components/Avatar/Avatar.js +10 -8
  10. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  11. package/lib/commonjs/components/Avatar/GroupAvatar.js +3 -1
  12. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  13. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +32 -15
  14. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  15. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +30 -6
  16. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  17. package/lib/commonjs/components/Chat/Chat.js +20 -5
  18. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  19. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -0
  20. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  21. package/lib/commonjs/components/ImageBackground.js +64 -0
  22. package/lib/commonjs/components/ImageBackground.js.map +1 -0
  23. package/lib/commonjs/components/Message/Message.js +15 -16
  24. package/lib/commonjs/components/Message/Message.js.map +1 -1
  25. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +12 -4
  26. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  27. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +26 -5
  28. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  29. package/lib/commonjs/components/MessageList/MessageList.js +39 -26
  30. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  31. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +58 -47
  32. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  33. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +19 -19
  34. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
  35. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  36. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  37. package/lib/commonjs/contexts/debugContext/DebugContext.js +63 -0
  38. package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -0
  39. package/lib/commonjs/contexts/index.js +13 -0
  40. package/lib/commonjs/contexts/index.js.map +1 -1
  41. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
  42. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  43. package/lib/commonjs/version.json +1 -1
  44. package/lib/module/components/Attachment/Card.js +29 -18
  45. package/lib/module/components/Attachment/Card.js.map +1 -1
  46. package/lib/module/components/Attachment/Gallery.js +16 -20
  47. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  48. package/lib/module/components/Attachment/GalleryImage.js +34 -6
  49. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  50. package/lib/module/components/Attachment/Giphy.js +37 -29
  51. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  52. package/lib/module/components/Avatar/Avatar.js +10 -8
  53. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  54. package/lib/module/components/Avatar/GroupAvatar.js +3 -1
  55. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  56. package/lib/module/components/ChannelList/ChannelListMessenger.js +32 -15
  57. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  58. package/lib/module/components/ChannelPreview/ChannelAvatar.js +30 -6
  59. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  60. package/lib/module/components/Chat/Chat.js +20 -5
  61. package/lib/module/components/Chat/Chat.js.map +1 -1
  62. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -0
  63. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  64. package/lib/module/components/ImageBackground.js +64 -0
  65. package/lib/module/components/ImageBackground.js.map +1 -0
  66. package/lib/module/components/Message/Message.js +15 -16
  67. package/lib/module/components/Message/Message.js.map +1 -1
  68. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +12 -4
  69. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  70. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +26 -5
  71. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
  72. package/lib/module/components/MessageList/MessageList.js +39 -26
  73. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  74. package/lib/module/components/MessageOverlay/MessageOverlay.js +58 -47
  75. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  76. package/lib/module/components/MessageOverlay/OverlayReactions.js +19 -19
  77. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
  78. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  79. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  80. package/lib/module/contexts/debugContext/DebugContext.js +63 -0
  81. package/lib/module/contexts/debugContext/DebugContext.js.map +1 -0
  82. package/lib/module/contexts/index.js +13 -0
  83. package/lib/module/contexts/index.js.map +1 -1
  84. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
  85. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  86. package/lib/module/version.json +1 -1
  87. package/lib/typescript/components/Attachment/Card.d.ts +3 -2
  88. package/lib/typescript/components/Attachment/GalleryImage.d.ts +8 -2
  89. package/lib/typescript/components/Attachment/Giphy.d.ts +2 -1
  90. package/lib/typescript/components/Avatar/Avatar.d.ts +2 -1
  91. package/lib/typescript/components/Avatar/GroupAvatar.d.ts +2 -1
  92. package/lib/typescript/components/ChannelPreview/ChannelAvatar.d.ts +2 -0
  93. package/lib/typescript/components/Chat/Chat.d.ts +1 -1
  94. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  95. package/lib/typescript/components/ImageBackground.d.ts +33 -0
  96. package/lib/typescript/components/Message/Message.d.ts +2 -1
  97. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +2 -1
  98. package/lib/typescript/components/Message/MessageSimple/MessageRepliesAvatars.d.ts +2 -0
  99. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +1 -0
  100. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +3 -1
  101. package/lib/typescript/contexts/debugContext/DebugContext.d.ts +27 -0
  102. package/lib/typescript/contexts/index.d.ts +1 -0
  103. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +4 -0
  104. package/package.json +2 -2
  105. package/src/components/Attachment/Card.tsx +11 -2
  106. package/src/components/Attachment/Gallery.tsx +1 -7
  107. package/src/components/Attachment/GalleryImage.tsx +31 -9
  108. package/src/components/Attachment/Giphy.tsx +8 -2
  109. package/src/components/Avatar/Avatar.tsx +12 -2
  110. package/src/components/Avatar/GroupAvatar.tsx +4 -4
  111. package/src/components/ChannelList/ChannelListMessenger.tsx +17 -0
  112. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +2 -1
  113. package/src/components/ChannelPreview/ChannelAvatar.tsx +23 -4
  114. package/src/components/Chat/Chat.tsx +111 -95
  115. package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
  116. package/src/components/ImageBackground.tsx +77 -0
  117. package/src/components/Message/Message.tsx +8 -8
  118. package/src/components/Message/MessageSimple/MessageAvatar.tsx +6 -2
  119. package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +15 -3
  120. package/src/components/MessageList/MessageList.tsx +15 -0
  121. package/src/components/MessageOverlay/MessageOverlay.tsx +210 -205
  122. package/src/components/MessageOverlay/OverlayReactions.tsx +1 -0
  123. package/src/contexts/chatContext/ChatContext.tsx +3 -1
  124. package/src/contexts/debugContext/DebugContext.tsx +77 -0
  125. package/src/contexts/index.ts +1 -0
  126. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +8 -1
  127. package/src/version.json +1 -1
@@ -0,0 +1,64 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ImageBackground = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
14
+ var React = _interopRequireWildcard(require("react"));
15
+
16
+ var _reactNative = require("react-native");
17
+
18
+ var _excluded = ["children", "ImageComponent", "imageStyle", "importantForAccessibility", "style"];
19
+
20
+ var _this = this,
21
+ _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ImageBackground.tsx";
22
+
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+
25
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
+
27
+ var ImageBackground = function ImageBackground(props) {
28
+ var children = props.children,
29
+ _props$ImageComponent = props.ImageComponent,
30
+ ImageComponent = _props$ImageComponent === void 0 ? _reactNative.Image : _props$ImageComponent,
31
+ imageStyle = props.imageStyle,
32
+ importantForAccessibility = props.importantForAccessibility,
33
+ style = props.style,
34
+ rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
35
+
36
+ var flattenedStyle = _reactNative.StyleSheet.flatten(style);
37
+
38
+ return React.createElement(_reactNative.View, {
39
+ accessibilityIgnoresInvertColors: true,
40
+ importantForAccessibility: importantForAccessibility,
41
+ style: style,
42
+ __self: _this,
43
+ __source: {
44
+ fileName: _jsxFileName,
45
+ lineNumber: 50,
46
+ columnNumber: 5
47
+ }
48
+ }, React.createElement(ImageComponent, (0, _extends2["default"])({}, rest, {
49
+ importantForAccessibility: importantForAccessibility,
50
+ style: [_reactNative.StyleSheet.absoluteFill, {
51
+ height: flattenedStyle == null ? void 0 : flattenedStyle.height,
52
+ width: flattenedStyle == null ? void 0 : flattenedStyle.width
53
+ }, imageStyle],
54
+ __self: _this,
55
+ __source: {
56
+ fileName: _jsxFileName,
57
+ lineNumber: 55,
58
+ columnNumber: 7
59
+ }
60
+ })), children);
61
+ };
62
+
63
+ exports.ImageBackground = ImageBackground;
64
+ //# sourceMappingURL=ImageBackground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ImageBackground.tsx"],"names":["ImageBackground","props","children","ImageComponent","Image","imageStyle","importantForAccessibility","style","rest","flattenedStyle","StyleSheet","flatten","absoluteFill","height","width"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA;;;;;;;;;;;AA+BO,IAAMA,eAIZ,GAAG,SAJSA,eAIT,CAACC,KAAD,EAAW;AACb,MACEC,QADF,GAOID,KAPJ,CACEC,QADF;AAAA,8BAOID,KAPJ,CAEEE,cAFF;AAAA,MAEEA,cAFF,sCAEmBC,kBAFnB;AAAA,MAGEC,UAHF,GAOIJ,KAPJ,CAGEI,UAHF;AAAA,MAIEC,yBAJF,GAOIL,KAPJ,CAIEK,yBAJF;AAAA,MAKEC,KALF,GAOIN,KAPJ,CAKEM,KALF;AAAA,MAMKC,IANL,6CAOIP,KAPJ;;AASA,MAAMQ,cAAc,GAAGC,wBAAWC,OAAX,CAAmBJ,KAAnB,CAAvB;;AACA,SACE,oBAAC,iBAAD;AACE,IAAA,gCAAgC,EAAE,IADpC;AAEE,IAAA,yBAAyB,EAAED,yBAF7B;AAGE,IAAA,KAAK,EAAEC,KAHT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAKE,oBAAC,cAAD,gCACMC,IADN;AAEE,IAAA,yBAAyB,EAAEF,yBAF7B;AAGE,IAAA,KAAK,EAAE,CACLI,wBAAWE,YADN,EAEL;AAQEC,MAAAA,MAAM,EAAEJ,cAAF,oBAAEA,cAAc,CAAEI,MAR1B;AASEC,MAAAA,KAAK,EAAEL,cAAF,oBAAEA,cAAc,CAAEK;AATzB,KAFK,EAaLT,UAbK,CAHT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KALF,EAwBGH,QAxBH,CADF;AA4BD,CA3CM","sourcesContent":["import * as React from 'react';\n\nimport { Image, ImageBackgroundProps, ImageProps, StyleSheet, View } from 'react-native';\n\n/**\n * DISCLAIMER: This component has been pretty-much copied from react-native's source code\n * https://github.com/facebook/react-native/blob/main/Libraries/Image/ImageBackground.js\n * Few modifications have been done such as converting to functional component, removing ref related logic (since its not required).\n * Also support for prop `ImageComponent` has been introduced to allow rendering custom\n * component instead of `Image`.\n *\n *\n * Very simple drop-in replacement for <Image> which supports nesting views.\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, ImageBackground, Text } from 'react-native';\n *\n * class DisplayAnImageBackground extends Component {\n * render() {\n * return (\n * <ImageBackground\n * style={{width: 50, height: 50}}\n * source={{uri: 'https://reactnative.dev/img/opengraph.png'}}\n * >\n * <Text>React</Text>\n * </ImageBackground>\n * );\n * }\n * }\n *\n */\n\nexport const ImageBackground: React.ComponentType<\n ImageBackgroundProps & {\n ImageComponent?: React.ComponentType<ImageProps>;\n }\n> = (props) => {\n const {\n children,\n ImageComponent = Image,\n imageStyle,\n importantForAccessibility,\n style,\n ...rest\n } = props;\n\n const flattenedStyle = StyleSheet.flatten(style);\n return (\n <View\n accessibilityIgnoresInvertColors={true}\n importantForAccessibility={importantForAccessibility}\n style={style}\n >\n <ImageComponent\n {...rest}\n importantForAccessibility={importantForAccessibility}\n style={[\n StyleSheet.absoluteFill,\n {\n // Temporary Workaround:\n // Current (imperfect yet) implementation of <Image> overwrites width and height styles\n // (which is not quite correct), and these styles conflict with explicitly set styles\n // of <ImageBackground> and with our internal layout model here.\n // So, we have to proxy/reapply these styles explicitly for actual <Image> component.\n // This workaround should be removed after implementing proper support of\n // intrinsic content size of the <Image>.\n height: flattenedStyle?.height,\n width: flattenedStyle?.width,\n },\n imageStyle,\n ]}\n />\n {children}\n </View>\n );\n};\n"]}
@@ -61,7 +61,6 @@ var MessageWithContext = function MessageWithContext(props) {
61
61
 
62
62
  var isMessageTypeDeleted = props.message.type === 'deleted';
63
63
  var channel = props.channel,
64
- client = props.client,
65
64
  disabled = props.disabled,
66
65
  dismissKeyboard = props.dismissKeyboard,
67
66
  dismissKeyboardOnMessageTouch = props.dismissKeyboardOnMessageTouch,
@@ -84,6 +83,7 @@ var MessageWithContext = function MessageWithContext(props) {
84
83
  handleReactionProp = props.handleReaction,
85
84
  handleRetry = props.handleRetry,
86
85
  handleThreadReply = props.handleThreadReply,
86
+ chatContext = props.chatContext,
87
87
  lastReceivedId = props.lastReceivedId,
88
88
  members = props.members,
89
89
  message = props.message,
@@ -119,6 +119,7 @@ var MessageWithContext = function MessageWithContext(props) {
119
119
  _props$threadList = props.threadList,
120
120
  threadList = _props$threadList === void 0 ? false : _props$threadList,
121
121
  updateMessage = props.updateMessage;
122
+ var client = chatContext.client;
122
123
 
123
124
  var _useTheme = (0, _ThemeContext.useTheme)(),
124
125
  _useTheme$theme = _useTheme.theme,
@@ -402,6 +403,7 @@ var MessageWithContext = function MessageWithContext(props) {
402
403
  });
403
404
  setData({
404
405
  alignment: alignment,
406
+ chatContext: chatContext,
405
407
  clientId: client.userID,
406
408
  files: attachments.files,
407
409
  groupStyles: groupStyles,
@@ -555,7 +557,7 @@ var MessageWithContext = function MessageWithContext(props) {
555
557
  __self: _this,
556
558
  __source: {
557
559
  fileName: _jsxFileName,
558
- lineNumber: 689,
560
+ lineNumber: 690,
559
561
  columnNumber: 5
560
562
  }
561
563
  }, _react["default"].createElement(_reactNative.View, {
@@ -565,7 +567,7 @@ var MessageWithContext = function MessageWithContext(props) {
565
567
  __self: _this,
566
568
  __source: {
567
569
  fileName: _jsxFileName,
568
- lineNumber: 693,
570
+ lineNumber: 694,
569
571
  columnNumber: 7
570
572
  }
571
573
  }, _react["default"].createElement(_reactNative.View, {
@@ -575,7 +577,7 @@ var MessageWithContext = function MessageWithContext(props) {
575
577
  __self: _this,
576
578
  __source: {
577
579
  fileName: _jsxFileName,
578
- lineNumber: 701,
580
+ lineNumber: 702,
579
581
  columnNumber: 9
580
582
  }
581
583
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -583,14 +585,14 @@ var MessageWithContext = function MessageWithContext(props) {
583
585
  __self: _this,
584
586
  __source: {
585
587
  fileName: _jsxFileName,
586
- lineNumber: 708,
588
+ lineNumber: 709,
587
589
  columnNumber: 11
588
590
  }
589
591
  }, _react["default"].createElement(MessageSimple, {
590
592
  __self: _this,
591
593
  __source: {
592
594
  fileName: _jsxFileName,
593
- lineNumber: 709,
595
+ lineNumber: 710,
594
596
  columnNumber: 13
595
597
  }
596
598
  })))));
@@ -599,21 +601,21 @@ var MessageWithContext = function MessageWithContext(props) {
599
601
  var areEqual = function areEqual(prevProps, nextProps) {
600
602
  var _prevMessage$quoted_m, _nextMessage$quoted_m, _prevMessage$quoted_m2, _nextMessage$quoted_m2, _prevMessage$user, _nextMessage$user;
601
603
 
602
- var prevGoToMessage = prevProps.goToMessage,
604
+ var prevMutedUsers = prevProps.chatContext.mutedUsers,
605
+ prevGoToMessage = prevProps.goToMessage,
603
606
  isAttachmentEqual = prevProps.isAttachmentEqual,
604
607
  prevIsTargetedMessage = prevProps.isTargetedMessage,
605
608
  prevLastReceivedId = prevProps.lastReceivedId,
606
609
  prevMembers = prevProps.members,
607
610
  prevMessage = prevProps.message,
608
- prevMutedUsers = prevProps.mutedUsers,
609
611
  prevShowUnreadUnderlay = prevProps.showUnreadUnderlay,
610
612
  prevT = prevProps.t;
611
- var nextGoToMessage = nextProps.goToMessage,
613
+ var nextMutedUsers = nextProps.chatContext.mutedUsers,
614
+ nextGoToMessage = nextProps.goToMessage,
612
615
  nextIsTargetedMessage = nextProps.isTargetedMessage,
613
616
  nextLastReceivedId = nextProps.lastReceivedId,
614
617
  nextMembers = nextProps.members,
615
618
  nextMessage = nextProps.message,
616
- nextMutedUsers = nextProps.mutedUsers,
617
619
  nextShowUnreadUnderlay = nextProps.showUnreadUnderlay,
618
620
  nextT = nextProps.t;
619
621
  var membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;
@@ -677,9 +679,7 @@ var Message = function Message(props) {
677
679
  enforceUniqueReaction = _useChannelContext.enforceUniqueReaction,
678
680
  members = _useChannelContext.members;
679
681
 
680
- var _useChatContext = (0, _ChatContext.useChatContext)(),
681
- client = _useChatContext.client,
682
- mutedUsers = _useChatContext.mutedUsers;
682
+ var chatContext = (0, _ChatContext.useChatContext)();
683
683
 
684
684
  var _useKeyboardContext = (0, _KeyboardContext.useKeyboardContext)(),
685
685
  dismissKeyboard = _useKeyboardContext.dismissKeyboard;
@@ -700,13 +700,12 @@ var Message = function Message(props) {
700
700
 
701
701
  return _react["default"].createElement(MemoizedMessage, (0, _extends2["default"])({}, messagesContext, {
702
702
  channel: channel,
703
- client: client,
703
+ chatContext: chatContext,
704
704
  disabled: disabled,
705
705
  dismissKeyboard: dismissKeyboard,
706
706
  enforceUniqueReaction: enforceUniqueReaction,
707
707
  members: members,
708
708
  messagesContext: messagesContext,
709
- mutedUsers: mutedUsers,
710
709
  openThread: openThread,
711
710
  setData: setData,
712
711
  setOverlay: setOverlay,
@@ -715,7 +714,7 @@ var Message = function Message(props) {
715
714
  __self: _this,
716
715
  __source: {
717
716
  fileName: _jsxFileName,
718
- lineNumber: 869,
717
+ lineNumber: 870,
719
718
  columnNumber: 5
720
719
  }
721
720
  }));
@@ -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 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
+ {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","channel","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","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","client","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","prevMutedUsers","mutedUsers","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","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<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 chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n channel,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { 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 chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[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 chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -11,6 +11,8 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _reactNative = require("react-native");
13
13
 
14
+ var _ChatContext = require("../../../contexts/chatContext/ChatContext");
15
+
14
16
  var _MessageContext = require("../../../contexts/messageContext/MessageContext");
15
17
 
16
18
  var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
@@ -24,6 +26,7 @@ var MessageAvatarWithContext = function MessageAvatarWithContext(props) {
24
26
  var _message$user, _message$user2, _message$user3;
25
27
 
26
28
  var alignment = props.alignment,
29
+ ImageComponent = props.ImageComponent,
27
30
  lastGroupMessage = props.lastGroupMessage,
28
31
  message = props.message,
29
32
  showAvatar = props.showAvatar,
@@ -45,17 +48,18 @@ var MessageAvatarWithContext = function MessageAvatarWithContext(props) {
45
48
  __self: _this,
46
49
  __source: {
47
50
  fileName: _jsxFileName,
48
- lineNumber: 39,
51
+ lineNumber: 41,
49
52
  columnNumber: 5
50
53
  }
51
54
  }, visible ? _react["default"].createElement(_Avatar.Avatar, {
52
55
  image: (_message$user = message.user) == null ? void 0 : _message$user.image,
56
+ ImageComponent: ImageComponent,
53
57
  name: ((_message$user2 = message.user) == null ? void 0 : _message$user2.name) || ((_message$user3 = message.user) == null ? void 0 : _message$user3.id),
54
58
  size: size || BASE_AVATAR_SIZE,
55
59
  __self: _this,
56
60
  __source: {
57
61
  fileName: _jsxFileName,
58
- lineNumber: 44,
62
+ lineNumber: 46,
59
63
  columnNumber: 9
60
64
  }
61
65
  }) : _react["default"].createElement(_reactNative.View, {
@@ -64,7 +68,7 @@ var MessageAvatarWithContext = function MessageAvatarWithContext(props) {
64
68
  __self: _this,
65
69
  __source: {
66
70
  fileName: _jsxFileName,
67
- lineNumber: 50,
71
+ lineNumber: 53,
68
72
  columnNumber: 9
69
73
  }
70
74
  }));
@@ -93,8 +97,12 @@ var MessageAvatar = function MessageAvatar(props) {
93
97
  message = _useMessageContext.message,
94
98
  showAvatar = _useMessageContext.showAvatar;
95
99
 
100
+ var _useChatContext = (0, _ChatContext.useChatContext)(),
101
+ ImageComponent = _useChatContext.ImageComponent;
102
+
96
103
  return _react["default"].createElement(MemoizedMessageAvatar, (0, _extends2["default"])({
97
104
  alignment: alignment,
105
+ ImageComponent: ImageComponent,
98
106
  lastGroupMessage: lastGroupMessage,
99
107
  message: message,
100
108
  showAvatar: showAvatar
@@ -102,7 +110,7 @@ var MessageAvatar = function MessageAvatar(props) {
102
110
  __self: _this,
103
111
  __source: {
104
112
  fileName: _jsxFileName,
105
- lineNumber: 93,
113
+ lineNumber: 96,
106
114
  columnNumber: 5
107
115
  }
108
116
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageAvatar.tsx"],"names":["MessageAvatarWithContext","props","alignment","lastGroupMessage","message","showAvatar","size","theme","BASE_AVATAR_SIZE","avatar","messageSimple","avatarWrapper","container","leftAlign","rightAlign","spacer","visible","user","image","name","id","areEqual","prevProps","nextProps","prevLastGroupMessage","prevMessage","nextLastGroupMessage","nextMessage","lastGroupMessageEqual","userEqual","MemoizedMessageAvatar","React","memo","MessageAvatar","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { Avatar, AvatarProps } from '../../Avatar/Avatar';\n\nexport type MessageAvatarPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'alignment' | 'lastGroupMessage' | 'message' | 'showAvatar'\n> &\n Partial<Pick<AvatarProps, 'size'>>;\n\nconst MessageAvatarWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageAvatarPropsWithContext<StreamChatGenerics>,\n) => {\n const { alignment, lastGroupMessage, message, showAvatar, size } = props;\n const {\n theme: {\n avatar: { BASE_AVATAR_SIZE },\n messageSimple: {\n avatarWrapper: { container, leftAlign, rightAlign, spacer },\n },\n },\n } = useTheme();\n\n const visible = typeof showAvatar === 'boolean' ? showAvatar : lastGroupMessage;\n\n return (\n <View\n style={[alignment === 'left' ? leftAlign : rightAlign, container]}\n testID='message-avatar'\n >\n {visible ? (\n <Avatar\n image={message.user?.image}\n name={message.user?.name || message.user?.id}\n size={size || BASE_AVATAR_SIZE}\n />\n ) : (\n <View style={spacer} testID='spacer' />\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageAvatarPropsWithContext<StreamChatGenerics>,\n nextProps: MessageAvatarPropsWithContext<StreamChatGenerics>,\n) => {\n const { lastGroupMessage: prevLastGroupMessage, message: prevMessage } = prevProps;\n const { lastGroupMessage: nextLastGroupMessage, message: nextMessage } = nextProps;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const userEqual =\n prevMessage.user?.image === nextMessage.user?.image &&\n prevMessage.user?.name === nextMessage.user?.name &&\n prevMessage.user?.id === nextMessage.user?.id;\n if (!userEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageAvatar = React.memo(\n MessageAvatarWithContext,\n areEqual,\n) as typeof MessageAvatarWithContext;\n\nexport type MessageAvatarProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageAvatarPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageAvatar = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageAvatarProps<StreamChatGenerics>,\n) => {\n const { alignment, lastGroupMessage, message, showAvatar } =\n useMessageContext<StreamChatGenerics>();\n\n return (\n <MemoizedMessageAvatar\n {...{\n alignment,\n lastGroupMessage,\n message,\n showAvatar,\n }}\n {...props}\n />\n );\n};\n\nMessageAvatar.displayName = 'MessageAvatar{messageSimple{avatarWrapper}}';\n"]}
1
+ {"version":3,"sources":["MessageAvatar.tsx"],"names":["MessageAvatarWithContext","props","alignment","ImageComponent","lastGroupMessage","message","showAvatar","size","theme","BASE_AVATAR_SIZE","avatar","messageSimple","avatarWrapper","container","leftAlign","rightAlign","spacer","visible","user","image","name","id","areEqual","prevProps","nextProps","prevLastGroupMessage","prevMessage","nextLastGroupMessage","nextMessage","lastGroupMessageEqual","userEqual","MemoizedMessageAvatar","React","memo","MessageAvatar","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { ChatContextValue, useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { Avatar, AvatarProps } from '../../Avatar/Avatar';\n\nexport type MessageAvatarPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n 'alignment' | 'lastGroupMessage' | 'message' | 'showAvatar'\n> &\n Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'> &\n Partial<Pick<AvatarProps, 'size'>>;\n\nconst MessageAvatarWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageAvatarPropsWithContext<StreamChatGenerics>,\n) => {\n const { alignment, ImageComponent, lastGroupMessage, message, showAvatar, size } = props;\n const {\n theme: {\n avatar: { BASE_AVATAR_SIZE },\n messageSimple: {\n avatarWrapper: { container, leftAlign, rightAlign, spacer },\n },\n },\n } = useTheme();\n\n const visible = typeof showAvatar === 'boolean' ? showAvatar : lastGroupMessage;\n\n return (\n <View\n style={[alignment === 'left' ? leftAlign : rightAlign, container]}\n testID='message-avatar'\n >\n {visible ? (\n <Avatar\n image={message.user?.image}\n ImageComponent={ImageComponent}\n name={message.user?.name || message.user?.id}\n size={size || BASE_AVATAR_SIZE}\n />\n ) : (\n <View style={spacer} testID='spacer' />\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageAvatarPropsWithContext<StreamChatGenerics>,\n nextProps: MessageAvatarPropsWithContext<StreamChatGenerics>,\n) => {\n const { lastGroupMessage: prevLastGroupMessage, message: prevMessage } = prevProps;\n const { lastGroupMessage: nextLastGroupMessage, message: nextMessage } = nextProps;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const userEqual =\n prevMessage.user?.image === nextMessage.user?.image &&\n prevMessage.user?.name === nextMessage.user?.name &&\n prevMessage.user?.id === nextMessage.user?.id;\n if (!userEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageAvatar = React.memo(\n MessageAvatarWithContext,\n areEqual,\n) as typeof MessageAvatarWithContext;\n\nexport type MessageAvatarProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageAvatarPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageAvatar = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageAvatarProps<StreamChatGenerics>,\n) => {\n const { alignment, lastGroupMessage, message, showAvatar } =\n useMessageContext<StreamChatGenerics>();\n const { ImageComponent } = useChatContext<StreamChatGenerics>();\n return (\n <MemoizedMessageAvatar\n {...{\n alignment,\n ImageComponent,\n lastGroupMessage,\n message,\n showAvatar,\n }}\n {...props}\n />\n );\n};\n\nMessageAvatar.displayName = 'MessageAvatar{messageSimple{avatarWrapper}}';\n"]}