stream-chat-react-native-core 4.7.0-beta.4 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +23 -13
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Card.js +17 -24
  4. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachment.js +10 -17
  6. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/Gallery.js +22 -10
  8. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/utils/openUrlSafely.js +54 -0
  10. package/lib/commonjs/components/Attachment/utils/openUrlSafely.js.map +1 -0
  11. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +101 -57
  12. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  13. package/lib/commonjs/components/ImageGallery/ImageGallery.js +23 -22
  14. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  15. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
  16. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  17. package/lib/commonjs/components/Message/Message.js +10 -7
  18. package/lib/commonjs/components/Message/Message.js.map +1 -1
  19. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +12 -11
  20. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  21. package/lib/commonjs/native.js +8 -2
  22. package/lib/commonjs/native.js.map +1 -1
  23. package/lib/commonjs/version.json +1 -1
  24. package/lib/module/components/Attachment/Attachment.js +23 -13
  25. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  26. package/lib/module/components/Attachment/Card.js +17 -24
  27. package/lib/module/components/Attachment/Card.js.map +1 -1
  28. package/lib/module/components/Attachment/FileAttachment.js +10 -17
  29. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  30. package/lib/module/components/Attachment/Gallery.js +22 -10
  31. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  32. package/lib/module/components/Attachment/utils/openUrlSafely.js +54 -0
  33. package/lib/module/components/Attachment/utils/openUrlSafely.js.map +1 -0
  34. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +101 -57
  35. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  36. package/lib/module/components/ImageGallery/ImageGallery.js +23 -22
  37. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  38. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
  39. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  40. package/lib/module/components/Message/Message.js +10 -7
  41. package/lib/module/components/Message/Message.js.map +1 -1
  42. package/lib/module/contexts/messageInputContext/MessageInputContext.js +12 -11
  43. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  44. package/lib/module/native.js +8 -2
  45. package/lib/module/native.js.map +1 -1
  46. package/lib/module/version.json +1 -1
  47. package/lib/typescript/components/Attachment/__tests__/openUrlSafely.test.d.ts +1 -0
  48. package/lib/typescript/components/Attachment/utils/openUrlSafely.d.ts +1 -0
  49. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts +11 -0
  50. package/lib/typescript/native.d.ts +1 -0
  51. package/package.json +1 -1
  52. package/src/components/Attachment/Attachment.tsx +4 -1
  53. package/src/components/Attachment/Card.tsx +2 -4
  54. package/src/components/Attachment/FileAttachment.tsx +2 -4
  55. package/src/components/Attachment/Gallery.tsx +17 -4
  56. package/src/components/Attachment/__tests__/Attachment.test.js +0 -39
  57. package/src/components/Attachment/__tests__/openUrlSafely.test.ts +48 -0
  58. package/src/components/Attachment/utils/openUrlSafely.ts +17 -0
  59. package/src/components/AttachmentPicker/AttachmentPicker.tsx +24 -28
  60. package/src/components/ImageGallery/ImageGallery.tsx +7 -3
  61. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +16 -13
  62. package/src/components/Message/Message.tsx +5 -2
  63. package/src/contexts/messageInputContext/MessageInputContext.tsx +4 -3
  64. package/src/native.ts +3 -1
  65. package/src/version.json +1 -1
  66. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +0 -42
  67. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +0 -1
  68. package/lib/module/components/Attachment/hooks/useGoToURL.js +0 -42
  69. package/lib/module/components/Attachment/hooks/useGoToURL.js.map +0 -1
  70. package/lib/typescript/components/Attachment/hooks/useGoToURL.d.ts +0 -2
  71. package/src/components/Attachment/hooks/useGoToURL.ts +0 -27
@@ -1 +1 @@
1
- {"version":3,"sources":["Gallery.tsx"],"names":["GalleryImage","props","uri","rest","MemoizedGalleryImage","React","memo","prevProps","nextProps","styles","StyleSheet","create","flex","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","display","justifyContent","padding","moreImagesContainer","alignItems","margin","moreImagesText","color","fontSize","fontWeight","GalleryWithContext","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setImage","setImages","setOverlay","threadList","videos","VideoThumbnail","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","defaultOnPress","borderRadius","event","emitter","defaultHandler","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","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetImage","propSetOverlay","propThreadList","propVideos","PropVideoThumbnail","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","contextAdditionalTouchableProps","ContextVideoThumnbnail","contextSetOverlay","channelId","cid","reply_count","displayName"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react';\nimport { Image, ImageProps, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\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 type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams, makeImageCompatibleUrl } from '../../utils/utils';\n\nconst GalleryImage: React.FC<\n Omit<ImageProps, 'height' | 'source'> & {\n uri: string;\n }\n> = (props) => {\n const { uri, ...rest } = props;\n\n return (\n <Image\n {...rest}\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n testID='image-attachment-single'\n />\n );\n};\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 flex: { flex: 1 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: { display: 'flex', flexDirection: 'row', justifyContent: 'center', padding: 1 },\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' | 'legacyImageViewerSwipeBehaviour' | 'VideoThumbnail'\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 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 {\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 defaultOnPress = () => {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n if (!legacyImageViewerSwipeBehaviour && message) {\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 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 <MemoizedGalleryImage\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 )}\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 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 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\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\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":["GalleryImage","props","uri","rest","MemoizedGalleryImage","React","memo","prevProps","nextProps","styles","StyleSheet","create","flex","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","display","justifyContent","padding","moreImagesContainer","alignItems","margin","moreImagesText","color","fontSize","fontWeight","GalleryWithContext","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setImage","setImages","setOverlay","threadList","videos","VideoThumbnail","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","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","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetImage","propSetOverlay","propThreadList","propVideos","PropVideoThumbnail","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","contextAdditionalTouchableProps","ContextVideoThumnbnail","contextSetOverlay","channelId","cid","reply_count","displayName"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react';\nimport { Image, ImageProps, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\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, makeImageCompatibleUrl } from '../../utils/utils';\n\nconst GalleryImage: React.FC<\n Omit<ImageProps, 'height' | 'source'> & {\n uri: string;\n }\n> = (props) => {\n const { uri, ...rest } = props;\n\n return (\n <Image\n {...rest}\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n testID='image-attachment-single'\n />\n );\n};\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 flex: { flex: 1 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: { display: 'flex', flexDirection: 'row', justifyContent: 'center', padding: 1 },\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' | 'legacyImageViewerSwipeBehaviour' | 'VideoThumbnail'\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 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 {\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 <MemoizedGalleryImage\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 )}\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 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 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\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\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"]}
@@ -0,0 +1,54 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.openUrlSafely = void 0;
7
+
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+
12
+ var _reactNative = require("react-native");
13
+
14
+ var openUrlSafely = function () {
15
+ var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(url) {
16
+ var finalUrl, pattern, supported;
17
+ return _regenerator["default"].wrap(function _callee$(_context) {
18
+ while (1) {
19
+ switch (_context.prev = _context.next) {
20
+ case 0:
21
+ finalUrl = url;
22
+ pattern = new RegExp(/^\S+:\/\//);
23
+
24
+ if (!pattern.test(finalUrl)) {
25
+ finalUrl = 'http://' + url;
26
+ }
27
+
28
+ _context.next = 5;
29
+ return _reactNative.Linking.canOpenURL(finalUrl);
30
+
31
+ case 5:
32
+ supported = _context.sent;
33
+
34
+ if (supported) {
35
+ _reactNative.Linking.openURL(finalUrl);
36
+ } else {
37
+ console.warn("Don't know how to open URI: " + finalUrl);
38
+ }
39
+
40
+ case 7:
41
+ case "end":
42
+ return _context.stop();
43
+ }
44
+ }
45
+ }, _callee);
46
+ }));
47
+
48
+ return function openUrlSafely(_x) {
49
+ return _ref.apply(this, arguments);
50
+ };
51
+ }();
52
+
53
+ exports.openUrlSafely = openUrlSafely;
54
+ //# sourceMappingURL=openUrlSafely.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["openUrlSafely.ts"],"names":["openUrlSafely","url","finalUrl","pattern","RegExp","test","Linking","canOpenURL","supported","openURL","console","warn"],"mappings":";;;;;;;;;;;AAAA;;AAEO,IAAMA,aAAa;AAAA,6EAAG,iBAAOC,GAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACvBC,YAAAA,QADuB,GACZD,GADY;AAErBE,YAAAA,OAFqB,GAEX,IAAIC,MAAJ,CAAW,WAAX,CAFW;;AAI3B,gBAAI,CAACD,OAAO,CAACE,IAAR,CAAaH,QAAb,CAAL,EAA6B;AAC3BA,cAAAA,QAAQ,GAAG,YAAYD,GAAvB;AACD;;AAN0B;AAAA,mBAOHK,qBAAQC,UAAR,CAAmBL,QAAnB,CAPG;;AAAA;AAOrBM,YAAAA,SAPqB;;AAS3B,gBAAIA,SAAJ,EAAe;AACbF,mCAAQG,OAAR,CAAgBP,QAAhB;AACD,aAFD,MAEO;AACLQ,cAAAA,OAAO,CAACC,IAAR,kCAA4CT,QAA5C;AACD;;AAb0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAH;;AAAA,kBAAbF,aAAa;AAAA;AAAA;AAAA,GAAnB","sourcesContent":["import { Linking } from 'react-native';\n\nexport const openUrlSafely = async (url?: string) => {\n let finalUrl = url as string;\n const pattern = new RegExp(/^\\S+:\\/\\//);\n\n if (!pattern.test(finalUrl)) {\n finalUrl = 'http://' + url;\n }\n const supported = await Linking.canOpenURL(finalUrl);\n\n if (supported) {\n Linking.openURL(finalUrl);\n } else {\n console.warn(`Don't know how to open URI: ${finalUrl}`);\n }\n};\n"]}
@@ -9,12 +9,12 @@ exports.AttachmentPicker = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
13
 
16
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
15
 
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _reactNative = require("react-native");
@@ -77,6 +77,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
77
77
  ImageOverlaySelectedComponent = props.ImageOverlaySelectedComponent,
78
78
  maxNumberOfFiles = props.maxNumberOfFiles,
79
79
  numberOfAttachmentPickerImageColumns = props.numberOfAttachmentPickerImageColumns,
80
+ numberOfUploads = props.numberOfUploads,
80
81
  selected = props.selected,
81
82
  setSelectedFiles = props.setSelectedFiles;
82
83
 
@@ -108,36 +109,72 @@ var AttachmentVideo = function AttachmentVideo(props) {
108
109
 
109
110
  var size = (0, _utils.vw)(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;
110
111
 
111
- var onPressVideo = function onPressVideo() {
112
- if (selected) {
113
- setSelectedFiles(function (files) {
114
- return files.filter(function (file) {
115
- return file.uri !== asset.uri;
116
- });
117
- });
118
- } else {
119
- setSelectedFiles(function (files) {
120
- if (files.length >= maxNumberOfFiles) {
121
- return files;
112
+ var onPressVideo = function () {
113
+ var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
114
+ var localAssetURI;
115
+ return _regenerator["default"].wrap(function _callee$(_context) {
116
+ while (1) {
117
+ switch (_context.prev = _context.next) {
118
+ case 0:
119
+ _context.t0 = asset.id;
120
+
121
+ if (!_context.t0) {
122
+ _context.next = 5;
123
+ break;
124
+ }
125
+
126
+ _context.next = 4;
127
+ return (0, _native.getLocalAssetUri)(asset.id);
128
+
129
+ case 4:
130
+ _context.t0 = _context.sent;
131
+
132
+ case 5:
133
+ localAssetURI = _context.t0;
134
+
135
+ if (selected) {
136
+ setSelectedFiles(function (files) {
137
+ return files.filter(function (file) {
138
+ return file.uri !== asset.uri;
139
+ });
140
+ });
141
+ } else {
142
+ setSelectedFiles(function (files) {
143
+ if (numberOfUploads >= maxNumberOfFiles) {
144
+ _reactNative.Alert.alert('Maximum number of files reached');
145
+
146
+ return files;
147
+ }
148
+
149
+ return [].concat((0, _toConsumableArray2["default"])(files), [{
150
+ duration: durationLabel,
151
+ name: asset.filename,
152
+ size: asset.fileSize,
153
+ type: 'video',
154
+ uri: localAssetURI || asset.uri
155
+ }]);
156
+ });
157
+ }
158
+
159
+ case 7:
160
+ case "end":
161
+ return _context.stop();
162
+ }
122
163
  }
164
+ }, _callee);
165
+ }));
123
166
 
124
- return [].concat((0, _toConsumableArray2["default"])(files), [{
125
- duration: durationLabel,
126
- name: asset.filename,
127
- size: asset.fileSize,
128
- type: 'video',
129
- uri: asset.uri
130
- }]);
131
- });
132
- }
133
- };
167
+ return function onPressVideo() {
168
+ return _ref.apply(this, arguments);
169
+ };
170
+ }();
134
171
 
135
172
  return _react["default"].createElement(_bottomSheet.TouchableOpacity, {
136
173
  onPress: onPressVideo,
137
174
  __self: _this,
138
175
  __source: {
139
176
  fileName: _jsxFileName,
140
- lineNumber: 136,
177
+ lineNumber: 138,
141
178
  columnNumber: 5
142
179
  }
143
180
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -152,7 +189,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
152
189
  __self: _this,
153
190
  __source: {
154
191
  fileName: _jsxFileName,
155
- lineNumber: 137,
192
+ lineNumber: 139,
156
193
  columnNumber: 7
157
194
  }
158
195
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -162,14 +199,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
162
199
  __self: _this,
163
200
  __source: {
164
201
  fileName: _jsxFileName,
165
- lineNumber: 149,
202
+ lineNumber: 151,
166
203
  columnNumber: 11
167
204
  }
168
205
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
169
206
  __self: _this,
170
207
  __source: {
171
208
  fileName: _jsxFileName,
172
- lineNumber: 150,
209
+ lineNumber: 152,
173
210
  columnNumber: 13
174
211
  }
175
212
  })), _react["default"].createElement(_reactNative.View, {
@@ -177,7 +214,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
177
214
  __self: _this,
178
215
  __source: {
179
216
  fileName: _jsxFileName,
180
- lineNumber: 153,
217
+ lineNumber: 155,
181
218
  columnNumber: 9
182
219
  }
183
220
  }, _react["default"].createElement(_icons.Recorder, {
@@ -187,7 +224,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
187
224
  __self: _this,
188
225
  __source: {
189
226
  fileName: _jsxFileName,
190
- lineNumber: 154,
227
+ lineNumber: 156,
191
228
  columnNumber: 11
192
229
  }
193
230
  }), videoDuration ? _react["default"].createElement(_reactNative.Text, {
@@ -197,7 +234,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
197
234
  __self: _this,
198
235
  __source: {
199
236
  fileName: _jsxFileName,
200
- lineNumber: 156,
237
+ lineNumber: 158,
201
238
  columnNumber: 13
202
239
  }
203
240
  }, durationLabel) : null)));
@@ -208,6 +245,7 @@ var AttachmentImage = function AttachmentImage(props) {
208
245
  ImageOverlaySelectedComponent = props.ImageOverlaySelectedComponent,
209
246
  maxNumberOfFiles = props.maxNumberOfFiles,
210
247
  numberOfAttachmentPickerImageColumns = props.numberOfAttachmentPickerImageColumns,
248
+ numberOfUploads = props.numberOfUploads,
211
249
  selected = props.selected,
212
250
  setSelectedImages = props.setSelectedImages;
213
251
 
@@ -230,7 +268,9 @@ var AttachmentImage = function AttachmentImage(props) {
230
268
  });
231
269
  } else {
232
270
  setSelectedImages(function (images) {
233
- if (images.length >= maxNumberOfFiles) {
271
+ if (numberOfUploads >= maxNumberOfFiles) {
272
+ _reactNative.Alert.alert('Maximum number of files reached');
273
+
234
274
  return images;
235
275
  }
236
276
 
@@ -244,7 +284,7 @@ var AttachmentImage = function AttachmentImage(props) {
244
284
  __self: _this,
245
285
  __source: {
246
286
  fileName: _jsxFileName,
247
- lineNumber: 200,
287
+ lineNumber: 204,
248
288
  columnNumber: 5
249
289
  }
250
290
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -259,7 +299,7 @@ var AttachmentImage = function AttachmentImage(props) {
259
299
  __self: _this,
260
300
  __source: {
261
301
  fileName: _jsxFileName,
262
- lineNumber: 201,
302
+ lineNumber: 205,
263
303
  columnNumber: 7
264
304
  }
265
305
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -269,25 +309,26 @@ var AttachmentImage = function AttachmentImage(props) {
269
309
  __self: _this,
270
310
  __source: {
271
311
  fileName: _jsxFileName,
272
- lineNumber: 213,
312
+ lineNumber: 217,
273
313
  columnNumber: 11
274
314
  }
275
315
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
276
316
  __self: _this,
277
317
  __source: {
278
318
  fileName: _jsxFileName,
279
- lineNumber: 214,
319
+ lineNumber: 218,
280
320
  columnNumber: 13
281
321
  }
282
322
  }))));
283
323
  };
284
324
 
285
- var renderImage = function renderImage(_ref) {
286
- var item = _ref.item;
325
+ var renderItem = function renderItem(_ref2) {
326
+ var item = _ref2.item;
287
327
  var asset = item.asset,
288
328
  ImageOverlaySelectedComponent = item.ImageOverlaySelectedComponent,
289
329
  maxNumberOfFiles = item.maxNumberOfFiles,
290
330
  numberOfAttachmentPickerImageColumns = item.numberOfAttachmentPickerImageColumns,
331
+ numberOfUploads = item.numberOfUploads,
291
332
  selected = item.selected,
292
333
  setSelectedFiles = item.setSelectedFiles,
293
334
  setSelectedImages = item.setSelectedImages;
@@ -298,12 +339,13 @@ var renderImage = function renderImage(_ref) {
298
339
  ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
299
340
  maxNumberOfFiles: maxNumberOfFiles,
300
341
  numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
342
+ numberOfUploads: numberOfUploads,
301
343
  selected: selected,
302
344
  setSelectedImages: setSelectedImages,
303
345
  __self: _this,
304
346
  __source: {
305
347
  fileName: _jsxFileName,
306
- lineNumber: 256,
348
+ lineNumber: 249,
307
349
  columnNumber: 5
308
350
  }
309
351
  }) : _react["default"].createElement(AttachmentVideo, {
@@ -311,12 +353,13 @@ var renderImage = function renderImage(_ref) {
311
353
  ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
312
354
  maxNumberOfFiles: maxNumberOfFiles,
313
355
  numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
356
+ numberOfUploads: numberOfUploads,
314
357
  selected: selected,
315
358
  setSelectedFiles: setSelectedFiles,
316
359
  __self: _this,
317
360
  __source: {
318
361
  fileName: _jsxFileName,
319
- lineNumber: 265,
362
+ lineNumber: 259,
320
363
  columnNumber: 5
321
364
  }
322
365
  });
@@ -386,27 +429,27 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
386
429
  var bottomSheetCloseOnKeyboardShowTimeout = (0, _react.useRef)();
387
430
 
388
431
  var getMorePhotos = function () {
389
- var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
432
+ var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
390
433
  var results;
391
- return _regenerator["default"].wrap(function _callee$(_context) {
434
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
392
435
  while (1) {
393
- switch (_context.prev = _context.next) {
436
+ switch (_context2.prev = _context2.next) {
394
437
  case 0:
395
438
  if (!(hasNextPage && !loadingPhotos && currentIndex > -1 && selectedPicker === 'images')) {
396
- _context.next = 16;
439
+ _context2.next = 16;
397
440
  break;
398
441
  }
399
442
 
400
443
  setLoadingPhotos(true);
401
- _context.prev = 2;
402
- _context.next = 5;
444
+ _context2.prev = 2;
445
+ _context2.next = 5;
403
446
  return (0, _native.getPhotos)({
404
447
  after: endCursor,
405
448
  first: numberOfAttachmentImagesToLoadPerCall != null ? numberOfAttachmentImagesToLoadPerCall : 60
406
449
  });
407
450
 
408
451
  case 5:
409
- results = _context.sent;
452
+ results = _context2.sent;
410
453
 
411
454
  if (endCursor) {
412
455
  setPhotos([].concat((0, _toConsumableArray2["default"])(photos), (0, _toConsumableArray2["default"])(results.assets)));
@@ -416,13 +459,13 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
416
459
 
417
460
  setEndCursor(results.endCursor);
418
461
  setHasNextPage(results.hasNextPage || false);
419
- _context.next = 15;
462
+ _context2.next = 15;
420
463
  break;
421
464
 
422
465
  case 11:
423
- _context.prev = 11;
424
- _context.t0 = _context["catch"](2);
425
- console.log(_context.t0);
466
+ _context2.prev = 11;
467
+ _context2.t0 = _context2["catch"](2);
468
+ console.log(_context2.t0);
426
469
  setPhotoError(true);
427
470
 
428
471
  case 15:
@@ -430,14 +473,14 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
430
473
 
431
474
  case 16:
432
475
  case "end":
433
- return _context.stop();
476
+ return _context2.stop();
434
477
  }
435
478
  }
436
- }, _callee, null, [[2, 11]]);
479
+ }, _callee2, null, [[2, 11]]);
437
480
  }));
438
481
 
439
482
  return function getMorePhotos() {
440
- return _ref2.apply(this, arguments);
483
+ return _ref3.apply(this, arguments);
441
484
  };
442
485
  }();
443
486
 
@@ -512,6 +555,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
512
555
  ImageOverlaySelectedComponent: ImageOverlaySelectedComponent,
513
556
  maxNumberOfFiles: maxNumberOfFiles,
514
557
  numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
558
+ numberOfUploads: selectedFiles.length + selectedImages.length,
515
559
  selected: selectedImages.some(function (image) {
516
560
  return image.uri === asset.uri;
517
561
  }) || selectedFiles.some(function (file) {
@@ -542,7 +586,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
542
586
  __self: _this,
543
587
  __source: {
544
588
  fileName: _jsxFileName,
545
- lineNumber: 511,
589
+ lineNumber: 507,
546
590
  columnNumber: 9
547
591
  }
548
592
  }, _react["default"].createElement(_bottomSheet.BottomSheetFlatList, {
@@ -557,11 +601,11 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
557
601
  },
558
602
  numColumns: numberOfAttachmentPickerImageColumns != null ? numberOfAttachmentPickerImageColumns : 3,
559
603
  onEndReached: getMorePhotos,
560
- renderItem: renderImage,
604
+ renderItem: renderItem,
561
605
  __self: _this,
562
606
  __source: {
563
607
  fileName: _jsxFileName,
564
- lineNumber: 527,
608
+ lineNumber: 523,
565
609
  columnNumber: 11
566
610
  }
567
611
  })), selectedPicker === 'images' && photoError && _react["default"].createElement(AttachmentPickerError, {
@@ -572,7 +616,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
572
616
  __self: _this,
573
617
  __source: {
574
618
  fileName: _jsxFileName,
575
- lineNumber: 542,
619
+ lineNumber: 538,
576
620
  columnNumber: 11
577
621
  }
578
622
  }));