stream-chat-react-native-core 4.9.0-beta.3 → 4.9.0-beta.4

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 (73) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +11 -9
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/VideoThumbnail.js +11 -5
  4. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +1 -0
  6. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  7. package/lib/commonjs/components/Message/Message.js +7 -6
  8. package/lib/commonjs/components/Message/Message.js.map +1 -1
  9. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +20 -27
  10. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  11. package/lib/commonjs/mock-builders/generator/attachment.js +3 -2
  12. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  13. package/lib/commonjs/utils/getUrlOfImageAttachment.js +1 -1
  14. package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -1
  15. package/lib/commonjs/version.json +1 -1
  16. package/lib/module/components/Attachment/Gallery.js +11 -9
  17. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  18. package/lib/module/components/Attachment/VideoThumbnail.js +11 -5
  19. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  20. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +1 -0
  21. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  22. package/lib/module/components/Message/Message.js +7 -6
  23. package/lib/module/components/Message/Message.js.map +1 -1
  24. package/lib/module/contexts/messageInputContext/MessageInputContext.js +20 -27
  25. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  26. package/lib/module/mock-builders/generator/attachment.js +3 -2
  27. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  28. package/lib/module/utils/getUrlOfImageAttachment.js +1 -1
  29. package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -1
  30. package/lib/module/version.json +1 -1
  31. package/lib/typescript/components/Attachment/VideoThumbnail.d.ts +3 -1
  32. package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +1 -0
  33. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -0
  34. package/lib/typescript/contexts/messageInputContext/__tests__/MessageInputContext.test.d.ts +1 -0
  35. package/lib/typescript/contexts/messageInputContext/__tests__/isValidMessage.test.d.ts +1 -0
  36. package/lib/typescript/contexts/messageInputContext/__tests__/pickFile.test.d.ts +1 -0
  37. package/lib/typescript/contexts/messageInputContext/__tests__/removeFile.test.d.ts +1 -0
  38. package/lib/typescript/contexts/messageInputContext/__tests__/removeImage.test.d.ts +1 -0
  39. package/lib/typescript/contexts/messageInputContext/__tests__/sendMessage.test.d.ts +1 -0
  40. package/lib/typescript/contexts/messageInputContext/__tests__/sendMessageAsync.test.d.ts +1 -0
  41. package/lib/typescript/contexts/messageInputContext/__tests__/updateMessage.test.d.ts +1 -0
  42. package/lib/typescript/contexts/messageInputContext/__tests__/uploadFile.test.d.ts +1 -0
  43. package/lib/typescript/contexts/messageInputContext/__tests__/uploadImage.test.d.ts +1 -0
  44. package/lib/typescript/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.d.ts +1 -0
  45. package/lib/typescript/mock-builders/generator/attachment.d.ts +10 -0
  46. package/lib/typescript/mock-builders/generator/channel.d.ts +13 -13
  47. package/lib/typescript/mock-builders/generator/message.d.ts +38 -0
  48. package/lib/typescript/mock-builders/generator/user.d.ts +9 -9
  49. package/package.json +5 -4
  50. package/src/components/Attachment/Gallery.tsx +2 -1
  51. package/src/components/Attachment/VideoThumbnail.tsx +12 -5
  52. package/src/components/Attachment/__tests__/Attachment.test.js +12 -0
  53. package/src/components/Attachment/__tests__/Gallery.test.js +23 -1
  54. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +1 -0
  55. package/src/components/Attachment/utils/buildGallery/types.ts +1 -0
  56. package/src/components/Message/Message.tsx +5 -1
  57. package/src/contexts/messageInputContext/MessageInputContext.tsx +3 -4
  58. package/src/contexts/messageInputContext/__tests__/MessageInputContext.test.tsx +208 -0
  59. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +109 -0
  60. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessageAsync.test.tsx.snap +33 -0
  61. package/src/contexts/messageInputContext/__tests__/isValidMessage.test.tsx +71 -0
  62. package/src/contexts/messageInputContext/__tests__/pickFile.test.tsx +67 -0
  63. package/src/contexts/messageInputContext/__tests__/removeFile.test.tsx +82 -0
  64. package/src/contexts/messageInputContext/__tests__/removeImage.test.tsx +80 -0
  65. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +286 -0
  66. package/src/contexts/messageInputContext/__tests__/sendMessageAsync.test.tsx +124 -0
  67. package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +92 -0
  68. package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +76 -0
  69. package/src/contexts/messageInputContext/__tests__/uploadImage.test.tsx +55 -0
  70. package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +62 -0
  71. package/src/mock-builders/generator/attachment.js +4 -2
  72. package/src/utils/getUrlOfImageAttachment.ts +1 -1
  73. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["Gallery.tsx"],"names":["MemoizedGalleryImage","React","memo","GalleryImage","prevProps","nextProps","uri","styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingIndicatorStyle","position","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setImage","setImages","setOverlay","threadList","videos","VideoThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","theme","overlay","colors","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","image","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","length","height","invertedDirections","thumbnailGrid","width","messageText","text","messageId","id","numOfColumns","map","rows","colIndex","numOfRows","rowIndex","resizeMode","type","url","openImageViewer","defaultOnPress","borderRadius","event","emitter","defaultHandler","error","console","warn","absoluteFillObject","backgroundColor","areEqual","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","image_url","thumb_url","videosEqual","MemoizedGallery","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetImage","propSetOverlay","propThreadList","propVideos","PropVideoThumbnail","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","contextSetOverlay","channelId","cid","reply_count","displayName"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { GalleryImage } from './GallaryImage';\nimport { useLoadingImage } from './hooks/useLoadingImage';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nconst MemoizedGalleryImage = React.memo(\n GalleryImage,\n (prevProps, nextProps) =>\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n) as typeof GalleryImage;\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"exccesive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n image,\n imageContainer,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n moreImagesContainer,\n moreImagesText,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideos.length],\n );\n\n if (!imagesAndVideos?.length) return null;\n const messageText = message?.text;\n const messageId = message?.id;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n height,\n width,\n },\n galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n },\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map(({ height, resizeMode, type, url, width }, rowIndex) => {\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setImages([message]);\n setImage({ messageId: message.id, url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: message?.id, url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if (type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(url);\n } else {\n openImageViewer();\n }\n };\n\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${messageId}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height,\n width,\n },\n imageContainer,\n ]}\n testID={`gallery-${\n invertedDirections ? 'row' : 'column'\n }-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n image,\n {\n height: height - 1,\n width: width - 1,\n },\n ]}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <MemoizedGalleryImage\n onError={(error) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={resizeMode}\n style={[\n borderRadius,\n image,\n {\n height: height - 1,\n width: width - 1,\n },\n ]}\n uri={url}\n />\n {isLoadingImage && (\n <View style={{ position: 'absolute' }}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n {isLoadingImageError && (\n <View style={{ position: 'absolute' }}>\n <ImageLoadingFailedIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </View>\n )}\n {colIndex === numOfColumns - 1 &&\n rowIndex === numOfRows - 1 &&\n imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual = prevMessage?.id === nextMessage?.id;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setImage: propSetImage,\n setOverlay: propSetOverlay,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setImage: contextSetImage, setImages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setImage = propSetImage || contextSetImage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
1
+ {"version":3,"sources":["Gallery.tsx"],"names":["MemoizedGalleryImage","React","memo","GalleryImage","prevProps","nextProps","uri","styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingIndicatorStyle","position","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setImage","setImages","setOverlay","threadList","videos","VideoThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","theme","overlay","colors","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","image","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","length","height","invertedDirections","thumbnailGrid","width","messageText","text","messageId","id","numOfColumns","map","rows","colIndex","numOfRows","rowIndex","resizeMode","thumb_url","type","url","openImageViewer","defaultOnPress","borderRadius","event","emitter","defaultHandler","error","console","warn","absoluteFillObject","backgroundColor","areEqual","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","image_url","videosEqual","MemoizedGallery","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetImage","propSetOverlay","propThreadList","propVideos","PropVideoThumbnail","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","contextSetOverlay","channelId","cid","reply_count","displayName"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { GalleryImage } from './GallaryImage';\nimport { useLoadingImage } from './hooks/useLoadingImage';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nconst MemoizedGalleryImage = React.memo(\n GalleryImage,\n (prevProps, nextProps) =>\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n) as typeof GalleryImage;\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"exccesive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n image,\n imageContainer,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n moreImagesContainer,\n moreImagesText,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideos.length],\n );\n\n if (!imagesAndVideos?.length) return null;\n const messageText = message?.text;\n const messageId = message?.id;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n height,\n width,\n },\n galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n },\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map(({ height, resizeMode, thumb_url, type, url, width }, rowIndex) => {\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setImages([message]);\n setImage({ messageId: message.id, url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: message?.id, url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if (type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(url);\n } else {\n openImageViewer();\n }\n };\n\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${messageId}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height,\n width,\n },\n imageContainer,\n ]}\n testID={`gallery-${\n invertedDirections ? 'row' : 'column'\n }-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n image,\n {\n height: height - 1,\n width: width - 1,\n },\n ]}\n thumb_url={thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <MemoizedGalleryImage\n onError={(error) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={resizeMode}\n style={[\n borderRadius,\n image,\n {\n height: height - 1,\n width: width - 1,\n },\n ]}\n uri={url}\n />\n {isLoadingImage && (\n <View style={{ position: 'absolute' }}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n {isLoadingImageError && (\n <View style={{ position: 'absolute' }}>\n <ImageLoadingFailedIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </View>\n )}\n {colIndex === numOfColumns - 1 &&\n rowIndex === numOfRows - 1 &&\n imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual = prevMessage?.id === nextMessage?.id;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setImage: propSetImage,\n setOverlay: propSetOverlay,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setImage: contextSetImage, setImages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setImage = propSetImage || contextSetImage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setImage,\n setImages,\n setOverlay,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
@@ -17,7 +17,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
17
17
 
18
18
  var _icons = require("../../icons");
19
19
 
20
- var _excluded = ["style"];
20
+ var _excluded = ["style", "thumb_url"];
21
21
 
22
22
  var _this = this,
23
23
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Attachment/VideoThumbnail.tsx";
@@ -49,13 +49,19 @@ var VideoThumbnail = function VideoThumbnail(props) {
49
49
  roundedView = _useTheme$theme$messa.roundedView;
50
50
 
51
51
  var style = props.style,
52
+ thumb_url = props.thumb_url,
52
53
  rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
53
- return _react["default"].createElement(_reactNative.View, (0, _extends2["default"])({}, rest, {
54
+ return _react["default"].createElement(_reactNative.ImageBackground, (0, _extends2["default"])({
55
+ accessibilityLabel: "video-thumbnail",
56
+ source: {
57
+ uri: thumb_url
58
+ }
59
+ }, rest, {
54
60
  style: [styles.container, container, style],
55
61
  __self: _this,
56
62
  __source: {
57
63
  fileName: _jsxFileName,
58
- lineNumber: 39,
64
+ lineNumber: 41,
59
65
  columnNumber: 5
60
66
  }
61
67
  }), _react["default"].createElement(_reactNative.View, {
@@ -63,7 +69,7 @@ var VideoThumbnail = function VideoThumbnail(props) {
63
69
  __self: _this,
64
70
  __source: {
65
71
  fileName: _jsxFileName,
66
- lineNumber: 40,
72
+ lineNumber: 47,
67
73
  columnNumber: 7
68
74
  }
69
75
  }, _react["default"].createElement(_icons.Play, {
@@ -73,7 +79,7 @@ var VideoThumbnail = function VideoThumbnail(props) {
73
79
  __self: _this,
74
80
  __source: {
75
81
  fileName: _jsxFileName,
76
- lineNumber: 41,
82
+ lineNumber: 48,
77
83
  columnNumber: 9
78
84
  }
79
85
  })));
@@ -1 +1 @@
1
- {"version":3,"sources":["VideoThumbnail.tsx"],"names":["styles","StyleSheet","create","container","alignItems","backgroundColor","display","height","justifyContent","width","roundedView","borderRadius","VideoThumbnail","props","theme","messageSimple","videoThumbnail","style","rest"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,eAAe,EAAE,OAFR;AAGTC,IAAAA,OAAO,EAAE,MAHA;AAITC,IAAAA,MAAM,EAAE,MAJC;AAKTC,IAAAA,cAAc,EAAE,QALP;AAMTC,IAAAA,KAAK,EAAE;AANE,GADoB;AAS/BC,EAAAA,WAAW,EAAE;AACXN,IAAAA,UAAU,EAAE,QADD;AAEXC,IAAAA,eAAe,EAAE,MAFN;AAGXM,IAAAA,YAAY,EAAE,EAHH;AAIXL,IAAAA,OAAO,EAAE,MAJE;AAKXC,IAAAA,MAAM,EAAE,EALG;AAMXC,IAAAA,cAAc,EAAE,QANL;AAOXC,IAAAA,KAAK,EAAE;AAPI;AATkB,CAAlB,CAAf;;AAsBO,IAAMG,cAA6C,GAAG,SAAhDA,cAAgD,CAACC,KAAD,EAAW;AACtE,kBAMI,6BANJ;AAAA,wCACEC,KADF,CAEIC,aAFJ,CAGMC,cAHN;AAAA,MAGwBb,SAHxB,yBAGwBA,SAHxB;AAAA,MAGmCO,WAHnC,yBAGmCA,WAHnC;;AAOA,MAAQO,KAAR,GAA2BJ,KAA3B,CAAQI,KAAR;AAAA,MAAkBC,IAAlB,6CAA2BL,KAA3B;AACA,SACE,gCAAC,iBAAD,gCAAUK,IAAV;AAAgB,IAAA,KAAK,EAAE,CAAClB,MAAM,CAACG,SAAR,EAAmBA,SAAnB,EAA8Bc,KAA9B,CAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACjB,MAAM,CAACU,WAAR,EAAqBA,WAArB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,WAAD;AAAM,IAAA,MAAM,EAAE,EAAd;AAAkB,IAAA,QAAQ,EAAE,MAA5B;AAAoC,IAAA,KAAK,EAAE,EAA3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CADF,CADF;AAOD,CAhBM","sourcesContent":["import React from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Play } from '../../icons';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n backgroundColor: 'black',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n roundedView: {\n alignItems: 'center',\n backgroundColor: '#fff',\n borderRadius: 50,\n display: 'flex',\n height: 36,\n justifyContent: 'center',\n width: 36,\n },\n});\n\nexport type VideoThumbnailProps = ViewProps;\n\nexport const VideoThumbnail: React.FC<VideoThumbnailProps> = (props) => {\n const {\n theme: {\n messageSimple: {\n videoThumbnail: { container, roundedView },\n },\n },\n } = useTheme();\n const { style, ...rest } = props;\n return (\n <View {...rest} style={[styles.container, container, style]}>\n <View style={[styles.roundedView, roundedView]}>\n <Play height={24} pathFill={'#000'} width={24} />\n </View>\n </View>\n );\n};\n"]}
1
+ {"version":3,"sources":["VideoThumbnail.tsx"],"names":["styles","StyleSheet","create","container","alignItems","backgroundColor","display","height","justifyContent","width","roundedView","borderRadius","VideoThumbnail","props","theme","messageSimple","videoThumbnail","style","thumb_url","rest","uri"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,eAAe,EAAE,OAFR;AAGTC,IAAAA,OAAO,EAAE,MAHA;AAITC,IAAAA,MAAM,EAAE,MAJC;AAKTC,IAAAA,cAAc,EAAE,QALP;AAMTC,IAAAA,KAAK,EAAE;AANE,GADoB;AAS/BC,EAAAA,WAAW,EAAE;AACXN,IAAAA,UAAU,EAAE,QADD;AAEXC,IAAAA,eAAe,EAAE,MAFN;AAGXM,IAAAA,YAAY,EAAE,EAHH;AAIXL,IAAAA,OAAO,EAAE,MAJE;AAKXC,IAAAA,MAAM,EAAE,EALG;AAMXC,IAAAA,cAAc,EAAE,QANL;AAOXC,IAAAA,KAAK,EAAE;AAPI;AATkB,CAAlB,CAAf;;AAwBO,IAAMG,cAA6C,GAAG,SAAhDA,cAAgD,CAACC,KAAD,EAAW;AACtE,kBAMI,6BANJ;AAAA,wCACEC,KADF,CAEIC,aAFJ,CAGMC,cAHN;AAAA,MAGwBb,SAHxB,yBAGwBA,SAHxB;AAAA,MAGmCO,WAHnC,yBAGmCA,WAHnC;;AAOA,MAAQO,KAAR,GAAsCJ,KAAtC,CAAQI,KAAR;AAAA,MAAeC,SAAf,GAAsCL,KAAtC,CAAeK,SAAf;AAAA,MAA6BC,IAA7B,6CAAsCN,KAAtC;AACA,SACE,gCAAC,4BAAD;AACE,IAAA,kBAAkB,EAAC,iBADrB;AAEE,IAAA,MAAM,EAAE;AAAEO,MAAAA,GAAG,EAAEF;AAAP;AAFV,KAGMC,IAHN;AAIE,IAAA,KAAK,EAAE,CAACnB,MAAM,CAACG,SAAR,EAAmBA,SAAnB,EAA8Bc,KAA9B,CAJT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAME,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACjB,MAAM,CAACU,WAAR,EAAqBA,WAArB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,WAAD;AAAM,IAAA,MAAM,EAAE,EAAd;AAAkB,IAAA,QAAQ,EAAE,MAA5B;AAAoC,IAAA,KAAK,EAAE,EAA3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CANF,CADF;AAYD,CArBM","sourcesContent":["import React from 'react';\nimport { ImageBackground, StyleSheet, View, ViewProps } from 'react-native';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Play } from '../../icons';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n backgroundColor: 'black',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n roundedView: {\n alignItems: 'center',\n backgroundColor: '#fff',\n borderRadius: 50,\n display: 'flex',\n height: 36,\n justifyContent: 'center',\n width: 36,\n },\n});\n\nexport type VideoThumbnailProps = ViewProps & {\n thumb_url?: string;\n};\n\nexport const VideoThumbnail: React.FC<VideoThumbnailProps> = (props) => {\n const {\n theme: {\n messageSimple: {\n videoThumbnail: { container, roundedView },\n },\n },\n } = useTheme();\n const { style, thumb_url, ...rest } = props;\n return (\n <ImageBackground\n accessibilityLabel='video-thumbnail'\n source={{ uri: thumb_url }}\n {...rest}\n style={[styles.container, container, style]}\n >\n <View style={[styles.roundedView, roundedView]}>\n <Play height={24} pathFill={'#000'} width={24} />\n </View>\n </ImageBackground>\n );\n};\n"]}
@@ -19,6 +19,7 @@ function buildThumbnail(_ref) {
19
19
  return {
20
20
  height: height,
21
21
  resizeMode: resizeMode ? resizeMode : image.original_height && image.original_width ? 'contain' : 'cover',
22
+ thumb_url: image.thumb_url,
22
23
  type: image.type,
23
24
  url: shouldResize ? (0, _getResizedImageUrl.getResizedImageUrl)({
24
25
  height: height,
@@ -1 +1 @@
1
- {"version":3,"sources":["buildThumbnail.ts"],"names":["buildThumbnail","height","image","resizeMode","width","originalImageHeight","original_height","originalImageWidth","original_width","shouldResize","imageUrl","type","url"],"mappings":";;;;;AAQA;;AACA;;AAEO,SAASA,cAAT,OAYO;AAAA,MATZC,MASY,QATZA,MASY;AAAA,MARZC,KAQY,QARZA,KAQY;AAAA,MAPZC,UAOY,QAPZA,UAOY;AAAA,MANZC,KAMY,QANZA,KAMY;AACZ,MAAyBC,mBAAzB,GAAqFH,KAArF,CAAQI,eAAR;AAAA,MAA8DC,kBAA9D,GAAqFL,KAArF,CAA8CM,cAA9C;AAGA,MAAMC,YAAY,GAChBJ,mBAAmB,IAAIE,kBAAvB,GACIF,mBAAmB,GAAGE,kBAAtB,GAA2CN,MAAM,GAAGG,KADxD,GAEI,IAHN;AAIA,MAAMM,QAAQ,GAAG,sDAAwBR,KAAxB,CAAjB;AAEA,SAAO;AACLD,IAAAA,MAAM,EAANA,MADK;AAELE,IAAAA,UAAU,EAAEA,UAAU,GAClBA,UADkB,GAEhBD,KAAK,CAACI,eAAN,IAAyBJ,KAAK,CAACM,cAA/B,GAAgD,SAAhD,GAA4D,OAJ7D;AAKLG,IAAAA,IAAI,EAAET,KAAK,CAACS,IALP;AAMLC,IAAAA,GAAG,EAAEH,YAAY,GACb,4CAAmB;AACjBR,MAAAA,MAAM,EAANA,MADiB;AAEjBW,MAAAA,GAAG,EAAEF,QAFY;AAGjBN,MAAAA,KAAK,EAALA;AAHiB,KAAnB,CADa,GAMbM,QAZC;AAaLN,IAAAA,KAAK,EAALA;AAbK,GAAP;AAeD","sourcesContent":["import type { ImageResizeMode } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport type { Thumbnail } from './types';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\n\nimport { getResizedImageUrl } from '../../../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../../../utils/getUrlOfImageAttachment';\n\nexport function buildThumbnail<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n height,\n image,\n resizeMode,\n width,\n}: {\n height: number;\n image: Attachment<StreamChatGenerics>;\n width: number;\n resizeMode?: ImageResizeMode;\n}): Thumbnail {\n const { original_height: originalImageHeight, original_width: originalImageWidth } = image;\n\n // Only resize if the original image is larger than the thumbnail container size.\n const shouldResize =\n originalImageHeight && originalImageWidth\n ? originalImageHeight + originalImageWidth > height + width\n : true;\n const imageUrl = getUrlOfImageAttachment(image) as string;\n\n return {\n height,\n resizeMode: resizeMode\n ? resizeMode\n : ((image.original_height && image.original_width ? 'contain' : 'cover') as ImageResizeMode),\n type: image.type,\n url: shouldResize\n ? getResizedImageUrl({\n height,\n url: imageUrl,\n width,\n })\n : imageUrl,\n width,\n };\n}\n"]}
1
+ {"version":3,"sources":["buildThumbnail.ts"],"names":["buildThumbnail","height","image","resizeMode","width","originalImageHeight","original_height","originalImageWidth","original_width","shouldResize","imageUrl","thumb_url","type","url"],"mappings":";;;;;AAQA;;AACA;;AAEO,SAASA,cAAT,OAYO;AAAA,MATZC,MASY,QATZA,MASY;AAAA,MARZC,KAQY,QARZA,KAQY;AAAA,MAPZC,UAOY,QAPZA,UAOY;AAAA,MANZC,KAMY,QANZA,KAMY;AACZ,MAAyBC,mBAAzB,GAAqFH,KAArF,CAAQI,eAAR;AAAA,MAA8DC,kBAA9D,GAAqFL,KAArF,CAA8CM,cAA9C;AAGA,MAAMC,YAAY,GAChBJ,mBAAmB,IAAIE,kBAAvB,GACIF,mBAAmB,GAAGE,kBAAtB,GAA2CN,MAAM,GAAGG,KADxD,GAEI,IAHN;AAIA,MAAMM,QAAQ,GAAG,sDAAwBR,KAAxB,CAAjB;AAEA,SAAO;AACLD,IAAAA,MAAM,EAANA,MADK;AAELE,IAAAA,UAAU,EAAEA,UAAU,GAClBA,UADkB,GAEhBD,KAAK,CAACI,eAAN,IAAyBJ,KAAK,CAACM,cAA/B,GAAgD,SAAhD,GAA4D,OAJ7D;AAKLG,IAAAA,SAAS,EAAET,KAAK,CAACS,SALZ;AAMLC,IAAAA,IAAI,EAAEV,KAAK,CAACU,IANP;AAOLC,IAAAA,GAAG,EAAEJ,YAAY,GACb,4CAAmB;AACjBR,MAAAA,MAAM,EAANA,MADiB;AAEjBY,MAAAA,GAAG,EAAEH,QAFY;AAGjBN,MAAAA,KAAK,EAALA;AAHiB,KAAnB,CADa,GAMbM,QAbC;AAcLN,IAAAA,KAAK,EAALA;AAdK,GAAP;AAgBD","sourcesContent":["import type { ImageResizeMode } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport type { Thumbnail } from './types';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\n\nimport { getResizedImageUrl } from '../../../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../../../utils/getUrlOfImageAttachment';\n\nexport function buildThumbnail<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n height,\n image,\n resizeMode,\n width,\n}: {\n height: number;\n image: Attachment<StreamChatGenerics>;\n width: number;\n resizeMode?: ImageResizeMode;\n}): Thumbnail {\n const { original_height: originalImageHeight, original_width: originalImageWidth } = image;\n\n // Only resize if the original image is larger than the thumbnail container size.\n const shouldResize =\n originalImageHeight && originalImageWidth\n ? originalImageHeight + originalImageWidth > height + width\n : true;\n const imageUrl = getUrlOfImageAttachment(image) as string;\n\n return {\n height,\n resizeMode: resizeMode\n ? resizeMode\n : ((image.original_height && image.original_width ? 'contain' : 'cover') as ImageResizeMode),\n thumb_url: image.thumb_url,\n type: image.type,\n url: shouldResize\n ? getResizedImageUrl({\n height,\n url: imageUrl,\n width,\n })\n : imageUrl,\n width,\n };\n}\n"]}
@@ -201,6 +201,7 @@ var MessageWithContext = function MessageWithContext(props) {
201
201
  } else if (cur.type === 'video' && !cur.og_scrape_url && (0, _native.isVideoPackageAvailable)()) {
202
202
  acc.videos.push({
203
203
  image_url: cur.asset_url,
204
+ thumb_url: cur.thumb_url,
204
205
  type: 'video'
205
206
  });
206
207
  acc.other = [];
@@ -548,7 +549,7 @@ var MessageWithContext = function MessageWithContext(props) {
548
549
  __self: _this,
549
550
  __source: {
550
551
  fileName: _jsxFileName,
551
- lineNumber: 673,
552
+ lineNumber: 677,
552
553
  columnNumber: 5
553
554
  }
554
555
  }, _react["default"].createElement(_reactNative.View, {
@@ -558,7 +559,7 @@ var MessageWithContext = function MessageWithContext(props) {
558
559
  __self: _this,
559
560
  __source: {
560
561
  fileName: _jsxFileName,
561
- lineNumber: 677,
562
+ lineNumber: 681,
562
563
  columnNumber: 7
563
564
  }
564
565
  }, _react["default"].createElement(_reactNative.View, {
@@ -568,7 +569,7 @@ var MessageWithContext = function MessageWithContext(props) {
568
569
  __self: _this,
569
570
  __source: {
570
571
  fileName: _jsxFileName,
571
- lineNumber: 685,
572
+ lineNumber: 689,
572
573
  columnNumber: 9
573
574
  }
574
575
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -576,14 +577,14 @@ var MessageWithContext = function MessageWithContext(props) {
576
577
  __self: _this,
577
578
  __source: {
578
579
  fileName: _jsxFileName,
579
- lineNumber: 692,
580
+ lineNumber: 696,
580
581
  columnNumber: 11
581
582
  }
582
583
  }, _react["default"].createElement(MessageSimple, {
583
584
  __self: _this,
584
585
  __source: {
585
586
  fileName: _jsxFileName,
586
- lineNumber: 693,
587
+ lineNumber: 697,
587
588
  columnNumber: 13
588
589
  }
589
590
  })))));
@@ -708,7 +709,7 @@ var Message = function Message(props) {
708
709
  __self: _this,
709
710
  __source: {
710
711
  fileName: _jsxFileName,
711
- lineNumber: 853,
712
+ lineNumber: 857,
712
713
  columnNumber: 5
713
714
  }
714
715
  }));
@@ -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","title_link","thumb_url","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","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevMutedUsers","mutedUsers","prevShowUnreadUnderlay","prevT","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: TouchableEmitter;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n channel,\n client,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({ image_url: cur.asset_url, type: 'video' });\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 === '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 /**\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 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 videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[message.pinned && { backgroundColor: targetedMessageBackground }]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n prevMessage.updated_at === nextMessage.updated_at;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const { client, mutedUsers } = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","channel","client","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","theme","colors","bg_gradient_start","targetedMessageBackground","targetedMessageUnderlay","messageSimple","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","deleteMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevMutedUsers","mutedUsers","prevShowUnreadUnderlay","prevT","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: TouchableEmitter;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n channel,\n client,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === '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 /**\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 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 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"]}