stream-chat-react-native-core 5.0.0-offline-support.6 → 5.0.0-offline-support.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Gallery.js +5 -5
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/VideoThumbnail.js +18 -16
- package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/handleEventToSyncDB.js +2 -2
- package/lib/commonjs/components/ChannelList/hooks/listeners/handleEventToSyncDB.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +15 -8
- package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +3 -2
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +4 -2
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +4 -1
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +21 -13
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -2
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +5 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Gallery.js +5 -5
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/VideoThumbnail.js +18 -16
- package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/handleEventToSyncDB.js +2 -2
- package/lib/module/components/ChannelList/hooks/listeners/handleEventToSyncDB.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelPreview.js +15 -8
- package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +3 -2
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +4 -2
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/ImageUploadPreview.js +4 -1
- package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +21 -13
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -2
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +5 -1
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/VideoThumbnail.d.ts +4 -2
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +4 -0
- package/package.json +1 -1
- package/src/components/Attachment/Gallery.tsx +5 -5
- package/src/components/Attachment/VideoThumbnail.tsx +14 -4
- package/src/components/ChannelList/hooks/listeners/handleEventToSyncDB.ts +2 -2
- package/src/components/ChannelPreview/ChannelPreview.tsx +12 -10
- package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +2 -2
- package/src/components/MessageInput/FileUploadPreview.tsx +3 -3
- package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
- package/src/components/Reply/Reply.tsx +14 -2
- package/src/contexts/messageInputContext/MessageInputContext.tsx +7 -7
- package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +3 -3
- package/src/contexts/themeContext/utils/theme.ts +8 -0
- package/src/version.json +1 -1
|
@@ -73,16 +73,16 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
73
73
|
flex: 1,
|
|
74
74
|
justifyContent: 'center'
|
|
75
75
|
},
|
|
76
|
+
imageLoadingErrorIndicatorStyle: {
|
|
77
|
+
bottom: 4,
|
|
78
|
+
left: 4,
|
|
79
|
+
position: 'absolute'
|
|
80
|
+
},
|
|
76
81
|
imageLoadingIndicatorStyle: {
|
|
77
82
|
alignItems: 'center',
|
|
78
83
|
justifyContent: 'center',
|
|
79
84
|
position: 'absolute'
|
|
80
85
|
},
|
|
81
|
-
imageLoadingErrorIndicatorStyle: {
|
|
82
|
-
position: 'absolute',
|
|
83
|
-
bottom: 4,
|
|
84
|
-
left: 4
|
|
85
|
-
},
|
|
86
86
|
moreImagesContainer: {
|
|
87
87
|
alignItems: 'center',
|
|
88
88
|
justifyContent: 'center',
|
|
@@ -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","imageLoadingErrorIndicatorStyle","bottom","left","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","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","length","height","invertedDirections","thumbnailGrid","width","numOfColumns","map","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","messageText","text","undefined","GalleryThumbnail","overlay","colors","image","openImageViewer","messageId","id","url","defaultOnPress","type","event","emitter","defaultHandler","thumb_url","absoluteFillObject","backgroundColor","GalleryImageThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","error","console","warn","resizeMode","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 type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GallaryImage';\n\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\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 { useLoadingImage } from '../../hooks/useLoadingImage';\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 imageLoadingErrorIndicatorStyle: {\n position: 'absolute',\n bottom: 4,\n left: 4,\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 {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\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 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((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setImage={setImage}\n setImages={setImages}\n setOverlay={setOverlay}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setImage,\n setImages,\n setOverlay,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\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: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if (thumbnail.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(thumbnail.url);\n } else {\n openImageViewer();\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${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: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && 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\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n messageSimple: {\n gallery: { image },\n },\n },\n } = useTheme();\n\n return (\n <View\n style={{\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n }}\n >\n {isLoadingImageError ? (\n <ImageLoadingFailedIndicator style={[styles.imageLoadingErrorIndicatorStyle]} />\n ) : (\n <>\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={thumbnail.resizeMode}\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={{ position: 'absolute' }}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\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","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorStyle","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","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","length","height","invertedDirections","thumbnailGrid","width","numOfColumns","map","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","messageText","text","undefined","GalleryThumbnail","overlay","colors","image","openImageViewer","messageId","id","url","defaultOnPress","type","event","emitter","defaultHandler","thumb_url","absoluteFillObject","backgroundColor","GalleryImageThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","error","console","warn","resizeMode","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 type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GallaryImage';\n\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\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 { useLoadingImage } from '../../hooks/useLoadingImage';\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 imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\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 {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\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 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((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setImage={setImage}\n setImages={setImages}\n setOverlay={setOverlay}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setImage,\n setImages,\n setOverlay,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\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: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if (thumbnail.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(thumbnail.url);\n } else {\n openImageViewer();\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${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: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && 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\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n messageSimple: {\n gallery: { image },\n },\n },\n } = useTheme();\n\n return (\n <View\n style={{\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n }}\n >\n {isLoadingImageError ? (\n <ImageLoadingFailedIndicator style={[styles.imageLoadingErrorIndicatorStyle]} />\n ) : (\n <>\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={thumbnail.resizeMode}\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={{ position: 'absolute' }}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\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"]}
|
|
@@ -5,10 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.VideoThumbnail = void 0;
|
|
7
7
|
|
|
8
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
-
|
|
10
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
-
|
|
12
8
|
var _react = _interopRequireDefault(require("react"));
|
|
13
9
|
|
|
14
10
|
var _reactNative = require("react-native");
|
|
@@ -17,8 +13,6 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
|
17
13
|
|
|
18
14
|
var _icons = require("../../icons");
|
|
19
15
|
|
|
20
|
-
var _excluded = ["style", "thumb_url"];
|
|
21
|
-
|
|
22
16
|
var _this = this,
|
|
23
17
|
_jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/Attachment/VideoThumbnail.tsx";
|
|
24
18
|
|
|
@@ -36,8 +30,16 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
36
30
|
backgroundColor: '#fff',
|
|
37
31
|
borderRadius: 50,
|
|
38
32
|
display: 'flex',
|
|
33
|
+
elevation: 6,
|
|
39
34
|
height: 36,
|
|
40
35
|
justifyContent: 'center',
|
|
36
|
+
shadowColor: '#000',
|
|
37
|
+
shadowOffset: {
|
|
38
|
+
height: 3,
|
|
39
|
+
width: 0
|
|
40
|
+
},
|
|
41
|
+
shadowOpacity: 0.27,
|
|
42
|
+
shadowRadius: 4.65,
|
|
41
43
|
width: 36
|
|
42
44
|
}
|
|
43
45
|
});
|
|
@@ -48,28 +50,28 @@ var VideoThumbnail = function VideoThumbnail(props) {
|
|
|
48
50
|
container = _useTheme$theme$messa.container,
|
|
49
51
|
roundedView = _useTheme$theme$messa.roundedView;
|
|
50
52
|
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return _react["default"].createElement(_reactNative.ImageBackground,
|
|
53
|
+
var imageStyle = props.imageStyle,
|
|
54
|
+
style = props.style,
|
|
55
|
+
thumb_url = props.thumb_url;
|
|
56
|
+
return _react["default"].createElement(_reactNative.ImageBackground, {
|
|
55
57
|
accessibilityLabel: "video-thumbnail",
|
|
58
|
+
imageStyle: imageStyle,
|
|
56
59
|
source: {
|
|
57
60
|
uri: thumb_url
|
|
58
|
-
}
|
|
59
|
-
}, rest, {
|
|
61
|
+
},
|
|
60
62
|
style: [styles.container, container, style],
|
|
61
63
|
__self: _this,
|
|
62
64
|
__source: {
|
|
63
65
|
fileName: _jsxFileName,
|
|
64
|
-
lineNumber:
|
|
66
|
+
lineNumber: 51,
|
|
65
67
|
columnNumber: 5
|
|
66
68
|
}
|
|
67
|
-
}
|
|
69
|
+
}, _react["default"].createElement(_reactNative.View, {
|
|
68
70
|
style: [styles.roundedView, roundedView],
|
|
69
71
|
__self: _this,
|
|
70
72
|
__source: {
|
|
71
73
|
fileName: _jsxFileName,
|
|
72
|
-
lineNumber:
|
|
74
|
+
lineNumber: 57,
|
|
73
75
|
columnNumber: 7
|
|
74
76
|
}
|
|
75
77
|
}, _react["default"].createElement(_icons.Play, {
|
|
@@ -79,7 +81,7 @@ var VideoThumbnail = function VideoThumbnail(props) {
|
|
|
79
81
|
__self: _this,
|
|
80
82
|
__source: {
|
|
81
83
|
fileName: _jsxFileName,
|
|
82
|
-
lineNumber:
|
|
84
|
+
lineNumber: 58,
|
|
83
85
|
columnNumber: 9
|
|
84
86
|
}
|
|
85
87
|
})));
|
|
@@ -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","
|
|
1
|
+
{"version":3,"sources":["VideoThumbnail.tsx"],"names":["styles","StyleSheet","create","container","alignItems","backgroundColor","display","height","justifyContent","width","roundedView","borderRadius","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","VideoThumbnail","props","theme","messageSimple","videoThumbnail","imageStyle","style","thumb_url","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;AAKXM,IAAAA,SAAS,EAAE,CALA;AAMXL,IAAAA,MAAM,EAAE,EANG;AAOXC,IAAAA,cAAc,EAAE,QAPL;AAQXK,IAAAA,WAAW,EAAE,MARF;AASXC,IAAAA,YAAY,EAAE;AACZP,MAAAA,MAAM,EAAE,CADI;AAEZE,MAAAA,KAAK,EAAE;AAFK,KATH;AAaXM,IAAAA,aAAa,EAAE,IAbJ;AAcXC,IAAAA,YAAY,EAAE,IAdH;AAeXP,IAAAA,KAAK,EAAE;AAfI;AATkB,CAAlB,CAAf;;AAkCO,IAAMQ,cAA6C,GAAG,SAAhDA,cAAgD,CAACC,KAAD,EAAW;AACtE,kBAMI,6BANJ;AAAA,wCACEC,KADF,CAEIC,aAFJ,CAGMC,cAHN;AAAA,MAGwBlB,SAHxB,yBAGwBA,SAHxB;AAAA,MAGmCO,WAHnC,yBAGmCA,WAHnC;;AAOA,MAAQY,UAAR,GAAyCJ,KAAzC,CAAQI,UAAR;AAAA,MAAoBC,KAApB,GAAyCL,KAAzC,CAAoBK,KAApB;AAAA,MAA2BC,SAA3B,GAAyCN,KAAzC,CAA2BM,SAA3B;AACA,SACE,gCAAC,4BAAD;AACE,IAAA,kBAAkB,EAAC,iBADrB;AAEE,IAAA,UAAU,EAAEF,UAFd;AAGE,IAAA,MAAM,EAAE;AAAEG,MAAAA,GAAG,EAAED;AAAP,KAHV;AAIE,IAAA,KAAK,EAAE,CAACxB,MAAM,CAACG,SAAR,EAAmBA,SAAnB,EAA8BoB,KAA9B,CAJT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAME,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACvB,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, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } 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 elevation: 6,\n height: 36,\n justifyContent: 'center',\n shadowColor: '#000',\n shadowOffset: {\n height: 3,\n width: 0,\n },\n shadowOpacity: 0.27,\n shadowRadius: 4.65,\n width: 36,\n },\n});\n\nexport type VideoThumbnailProps = {\n imageStyle?: StyleProp<ImageStyle>;\n style?: StyleProp<ViewStyle>;\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 { imageStyle, style, thumb_url } = props;\n return (\n <ImageBackground\n accessibilityLabel='video-thumbnail'\n imageStyle={imageStyle}\n source={{ uri: thumb_url }}\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"]}
|
|
@@ -41,7 +41,7 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
if (type === 'message.new') {
|
|
44
|
-
if (event.message && !event.message.parent_id) {
|
|
44
|
+
if (event.message && (!event.message.parent_id || event.message.show_in_channel)) {
|
|
45
45
|
return (0, _upsertMessages.upsertMessages)({
|
|
46
46
|
flush: flush,
|
|
47
47
|
messages: [event.message]
|
|
@@ -60,7 +60,7 @@ var handleEventToSyncDB = function handleEventToSyncDB(event, flush) {
|
|
|
60
60
|
|
|
61
61
|
if (type === 'reaction.updated') {
|
|
62
62
|
if (event.message && event.reaction) {
|
|
63
|
-
(0, _updateMessage.updateMessage)({
|
|
63
|
+
return (0, _updateMessage.updateMessage)({
|
|
64
64
|
flush: flush,
|
|
65
65
|
message: event.message
|
|
66
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["handleEventToSyncDB.ts"],"names":["handleEventToSyncDB","event","flush","type","user","id","cid","reads","last_read","received_at","unread_messages","message","parent_id","messages","reaction","channel","queriedChannels","channels","length","isLatestMessagesSet","isLatestMessageSet","member","members"],"mappings":";;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,KAAD,EAAeC,KAAf,EAAmC;AACpE,MAAQC,IAAR,GAAiBF,KAAjB,CAAQE,IAAR;;AAEA,MAAIA,IAAI,KAAK,cAAb,EAA6B;AAAA;;AAC3B,QAAI,eAAAF,KAAK,CAACG,IAAN,yBAAYC,EAAZ,IAAkBJ,KAAK,CAACK,GAA5B,EAAiC;AAC/B,aAAO,8BAAY;AACjBA,QAAAA,GAAG,EAAEL,KAAK,CAACK,GADM;AAEjBJ,QAAAA,KAAK,EAALA,KAFiB;AAGjBK,QAAAA,KAAK,EAAE,CACL;AACEC,UAAAA,SAAS,EAAEP,KAAK,CAACQ,WADnB;AAEEC,UAAAA,eAAe,EAAE,CAFnB;AAGEN,UAAAA,IAAI,EAAEH,KAAK,CAACG;AAHd,SADK;AAHU,OAAZ,CAAP;AAWD;AACF;;AAED,MAAID,IAAI,KAAK,aAAb,EAA4B;AAC1B,QAAIF,KAAK,CAACU,OAAN,
|
|
1
|
+
{"version":3,"sources":["handleEventToSyncDB.ts"],"names":["handleEventToSyncDB","event","flush","type","user","id","cid","reads","last_read","received_at","unread_messages","message","parent_id","show_in_channel","messages","reaction","channel","queriedChannels","channels","length","isLatestMessagesSet","isLatestMessageSet","member","members"],"mappings":"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","sourcesContent":["import type { Event } from 'stream-chat';\n\nimport { deleteChannel } from '../../../../store/apis/deleteChannel';\nimport { deleteMember } from '../../../../store/apis/deleteMember';\nimport { deleteMessagesForChannel } from '../../../../store/apis/deleteMessagesForChannel';\nimport { updateMessage } from '../../../../store/apis/updateMessage';\nimport { upsertChannelData } from '../../../../store/apis/upsertChannelData';\nimport { upsertChannels } from '../../../../store/apis/upsertChannels';\nimport { upsertMembers } from '../../../../store/apis/upsertMembers';\nimport { upsertMessages } from '../../../../store/apis/upsertMessages';\nimport { upsertReads } from '../../../../store/apis/upsertReads';\n\nexport const handleEventToSyncDB = (event: Event, flush?: boolean) => {\n const { type } = event;\n\n if (type === 'message.read') {\n if (event.user?.id && event.cid) {\n return upsertReads({\n cid: event.cid,\n flush,\n reads: [\n {\n last_read: event.received_at as string,\n unread_messages: 0,\n user: event.user,\n },\n ],\n });\n }\n }\n\n if (type === 'message.new') {\n if (event.message && (!event.message.parent_id || event.message.show_in_channel)) {\n return upsertMessages({\n flush,\n messages: [event.message],\n });\n }\n }\n\n if (type === 'message.updated' || type === 'message.deleted') {\n if (event.message && !event.message.parent_id) {\n // Update only if it exists, otherwise event could be related\n // to a message which is not in database.\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.updated') {\n if (event.message && event.reaction) {\n // We update the entire message to make sure we also update\n // reaction_counts.\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (type === 'reaction.new' || type === 'reaction.deleted') {\n if (event.message && !event.message.parent_id) {\n // Here we are relying on the fact message.latest_reactions always includes\n // the new reaction. So we first delete all the existing reactions and populate\n // the reactions table with message.latest_reactions\n return updateMessage({\n flush,\n message: event.message,\n });\n }\n }\n\n if (\n type === 'channel.updated' ||\n type === 'channel.visible' ||\n type === 'notification.added_to_channel' ||\n type === 'notification.message_new'\n ) {\n if (event.channel) {\n return upsertChannelData({\n channel: event.channel,\n flush,\n });\n }\n }\n\n if (\n type === 'channel.hidden' ||\n type === 'channel.deleted' ||\n type === 'notification.removed_from_channel'\n ) {\n if (event.channel) {\n return deleteChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channel.truncated') {\n if (event.channel) {\n return deleteMessagesForChannel({\n cid: event.channel.cid,\n flush,\n });\n }\n }\n\n if (type === 'channels.queried') {\n if (event.queriedChannels?.channels?.length) {\n return upsertChannels({\n channels: event.queriedChannels?.channels,\n flush,\n isLatestMessagesSet: event.queriedChannels?.isLatestMessageSet,\n });\n }\n }\n\n if (type === 'member.added' || type === 'member.updated') {\n if (event.member && event.cid) {\n return upsertMembers({\n cid: event.cid,\n flush,\n members: [event.member],\n });\n }\n }\n\n if (type === 'member.removed') {\n if (event.member && event.cid) {\n return deleteMember({\n cid: event.cid,\n flush,\n member: event.member,\n });\n }\n }\n\n return [];\n};\n"]}
|
|
@@ -65,19 +65,26 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
|
|
|
65
65
|
}
|
|
66
66
|
}, [channelLastMessageString]);
|
|
67
67
|
(0, _react.useEffect)(function () {
|
|
68
|
-
var
|
|
69
|
-
|
|
68
|
+
var handleNewMessageEvent = function handleNewMessageEvent(event) {
|
|
69
|
+
var message = event.message;
|
|
70
|
+
|
|
71
|
+
if (message && (!message.parent_id || message.show_in_channel)) {
|
|
70
72
|
setLastMessage(event.message);
|
|
73
|
+
setUnread(channel.countUnread());
|
|
71
74
|
}
|
|
75
|
+
};
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
var handleUpdatedOrDeletedMessage = function handleUpdatedOrDeletedMessage(event) {
|
|
78
|
+
var _event$message;
|
|
79
|
+
|
|
80
|
+
if (((_event$message = event.message) == null ? void 0 : _event$message.id) === (lastMessage == null ? void 0 : lastMessage.id)) {
|
|
81
|
+
setLastMessage(event.message);
|
|
75
82
|
}
|
|
76
83
|
};
|
|
77
84
|
|
|
78
|
-
var listeners = [channel.on('message.new',
|
|
85
|
+
var listeners = [channel.on('message.new', handleNewMessageEvent), channel.on('message.updated', handleUpdatedOrDeletedMessage), channel.on('message.deleted', handleUpdatedOrDeletedMessage)];
|
|
79
86
|
return function () {
|
|
80
|
-
listeners.forEach(function (l) {
|
|
87
|
+
return listeners.forEach(function (l) {
|
|
81
88
|
return l.unsubscribe();
|
|
82
89
|
});
|
|
83
90
|
};
|
|
@@ -107,7 +114,7 @@ var ChannelPreviewWithContext = function ChannelPreviewWithContext(props) {
|
|
|
107
114
|
__self: _this,
|
|
108
115
|
__source: {
|
|
109
116
|
fileName: _jsxFileName,
|
|
110
|
-
lineNumber:
|
|
117
|
+
lineNumber: 108,
|
|
111
118
|
columnNumber: 10
|
|
112
119
|
}
|
|
113
120
|
});
|
|
@@ -127,7 +134,7 @@ var ChannelPreview = function ChannelPreview(props) {
|
|
|
127
134
|
__self: _this,
|
|
128
135
|
__source: {
|
|
129
136
|
fileName: _jsxFileName,
|
|
130
|
-
lineNumber:
|
|
137
|
+
lineNumber: 124,
|
|
131
138
|
columnNumber: 10
|
|
132
139
|
}
|
|
133
140
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChannelPreview.tsx"],"names":["ChannelPreviewWithContext","props","channel","client","Preview","state","messages","length","lastMessage","setLastMessage","translatedLastMessage","forceUpdate","setForceUpdate","countUnread","unread","setUnread","latestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","newUnreadCount","
|
|
1
|
+
{"version":3,"sources":["ChannelPreview.tsx"],"names":["ChannelPreviewWithContext","props","channel","client","Preview","state","messages","length","lastMessage","setLastMessage","translatedLastMessage","forceUpdate","setForceUpdate","countUnread","unread","setUnread","latestMessagePreview","channelLastMessage","channelLastMessageString","id","updated_at","newUnreadCount","handleNewMessageEvent","event","message","parent_id","show_in_channel","handleUpdatedOrDeletedMessage","listeners","on","forEach","l","unsubscribe","handleReadEvent","user","userID","prev","listener","ChannelPreview"],"mappings":";;;;;;;;;;;;;AAAA;;AAIA;;AAEA;;AAIA;;AAEA;;;;;;;;;AAiBA,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAGhCC,KAHgC,EAI7B;AACH,MAAQC,OAAR,GAAqCD,KAArC,CAAQC,OAAR;AAAA,MAAiBC,MAAjB,GAAqCF,KAArC,CAAiBE,MAAjB;AAAA,MAAyBC,OAAzB,GAAqCH,KAArC,CAAyBG,OAAzB;;AAEA,kBAAsC,qBAIpCF,OAAO,CAACG,KAAR,CAAcC,QAAd,CAAuBJ,OAAO,CAACG,KAAR,CAAcC,QAAd,CAAuBC,MAAvB,GAAgC,CAAvD,CAJoC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAMA,MAAMC,qBAAqB,GAAG,gDAC5BF,WAAW,IAAK,EADY,CAA9B;;AAIA,mBAAsC,qBAAS,CAAT,CAAtC;AAAA;AAAA,MAAOG,WAAP;AAAA,MAAoBC,cAApB;;AACA,mBAA4B,qBAASV,OAAO,CAACW,WAAR,EAAT,CAA5B;AAAA;AAAA,MAAOC,MAAP;AAAA,MAAeC,SAAf;;AAEA,MAAMC,oBAAoB,GAAG,sDAAwBd,OAAxB,EAAiCS,WAAjC,EAA8CD,qBAA9C,CAA7B;AAEA,MAAMO,kBAAkB,GAAGf,OAAO,CAACM,WAAR,EAA3B;AACA,MAAMU,wBAAwB,SAAMD,kBAAN,oBAAMA,kBAAkB,CAAEE,EAA1B,KAA+BF,kBAA/B,oBAA+BA,kBAAkB,CAAEG,UAAnD,CAA9B;AAEA,wBAAU,YAAM;AACd,QACEH,kBAAkB,KACjBA,kBAAkB,CAACE,EAAnB,MAA0BX,WAA1B,oBAA0BA,WAAW,CAAEW,EAAvC,KACCF,kBAAkB,CAACG,UAAnB,MAAkCZ,WAAlC,oBAAkCA,WAAW,CAAEY,UAA/C,CAFgB,CADpB,EAIE;AACAX,MAAAA,cAAc,CAACQ,kBAAD,CAAd;AACD;;AAED,QAAMI,cAAc,GAAGnB,OAAO,CAACW,WAAR,EAAvB;;AAEA,QAAIQ,cAAc,KAAKP,MAAvB,EAA+B;AAC7BC,MAAAA,SAAS,CAACM,cAAD,CAAT;AACD;AACF,GAdD,EAcG,CAACH,wBAAD,CAdH;AAgBA,wBAAU,YAAM;AACd,QAAMI,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,KAAD,EAAsC;AAClE,UAAMC,OAAO,GAAGD,KAAK,CAACC,OAAtB;;AACA,UAAIA,OAAO,KAAK,CAACA,OAAO,CAACC,SAAT,IAAsBD,OAAO,CAACE,eAAnC,CAAX,EAAgE;AAC9DjB,QAAAA,cAAc,CAACc,KAAK,CAACC,OAAP,CAAd;AACAT,QAAAA,SAAS,CAACb,OAAO,CAACW,WAAR,EAAD,CAAT;AACD;AACF,KAND;;AAQA,QAAMc,6BAA6B,GAAG,SAAhCA,6BAAgC,CAACJ,KAAD,EAAsC;AAAA;;AAC1E,UAAI,mBAAAA,KAAK,CAACC,OAAN,oCAAeL,EAAf,OAAsBX,WAAtB,oBAAsBA,WAAW,CAAEW,EAAnC,CAAJ,EAA2C;AACzCV,QAAAA,cAAc,CAACc,KAAK,CAACC,OAAP,CAAd;AACD;AACF,KAJD;;AAMA,QAAMI,SAAS,GAAG,CAChB1B,OAAO,CAAC2B,EAAR,CAAW,aAAX,EAA0BP,qBAA1B,CADgB,EAEhBpB,OAAO,CAAC2B,EAAR,CAAW,iBAAX,EAA8BF,6BAA9B,CAFgB,EAGhBzB,OAAO,CAAC2B,EAAR,CAAW,iBAAX,EAA8BF,6BAA9B,CAHgB,CAAlB;AAMA,WAAO;AAAA,aAAMC,SAAS,CAACE,OAAV,CAAkB,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,WAAF,EAAP;AAAA,OAAlB,CAAN;AAAA,KAAP;AACD,GAtBD,EAsBG,EAtBH;AAwBA,wBAAU,YAAM;AACd,QAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACV,KAAD,EAAsC;AAAA;;AAC5D,UAAI,gBAAAA,KAAK,CAACW,IAAN,iCAAYf,EAAZ,MAAmBhB,MAAM,CAACgC,MAA9B,EAAsC;AACpCpB,QAAAA,SAAS,CAAC,CAAD,CAAT;AACD,OAFD,MAEO,oBAAIQ,KAAK,CAACW,IAAV,aAAI,aAAYf,EAAhB,EAAoB;AACzBP,QAAAA,cAAc,CAAC,UAACwB,IAAD;AAAA,iBAAUA,IAAI,GAAG,CAAjB;AAAA,SAAD,CAAd;AACD;AACF,KAND;;AAQA,QAAMC,QAAQ,GAAGnC,OAAO,CAAC2B,EAAR,CAAW,cAAX,EAA2BI,eAA3B,CAAjB;AACA,WAAO;AAAA,aAAMI,QAAQ,CAACL,WAAT,EAAN;AAAA,KAAP;AACD,GAXD,EAWG,EAXH;AAaA,SAAO,gCAAC,OAAD;AAAS,IAAA,OAAO,EAAE9B,OAAlB;AAA2B,IAAA,oBAAoB,EAAEc,oBAAjD;AAAuE,IAAA,MAAM,EAAEF,MAA/E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAP;AACD,CA/ED;;AAsFO,IAAMwB,cAAc,GAAG,SAAjBA,cAAiB,CAG5BrC,KAH4B,EAIzB;AACH,wBAAmB,kCAAnB;AAAA,MAAQE,MAAR,mBAAQA,MAAR;;AACA,4BAAoB,0CAApB;AAAA,MAAQC,OAAR,uBAAQA,OAAR;;AAEA,SAAO,gCAAC,yBAAD;AAAiCD,IAAAA,MAAM,EAANA,MAAjC;AAAyCC,IAAAA,OAAO,EAAPA;AAAzC,KAAwDH,KAAxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CATM","sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { Channel, ChannelState, Event, MessageResponse } from 'stream-chat';\n\nimport { useLatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport { useTranslatedMessage } from '../../hooks/useTranslatedMessage';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nexport type ChannelPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ChannelsContextValue<StreamChatGenerics>, 'Preview'> & {\n /**\n * The previewed channel\n */\n channel: Channel<StreamChatGenerics>;\n };\n\n/**\n * This component manages state for the ChannelPreviewMessenger UI component and receives\n * all props from the ChannelListMessenger component.\n */\nconst ChannelPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { channel, client, Preview } = props;\n\n const [lastMessage, setLastMessage] = useState<\n | ReturnType<ChannelState<StreamChatGenerics>['formatMessage']>\n | MessageResponse<StreamChatGenerics>\n | undefined\n >(channel.state.messages[channel.state.messages.length - 1]);\n\n const translatedLastMessage = useTranslatedMessage<StreamChatGenerics>(\n lastMessage || ({} as MessageResponse<StreamChatGenerics>),\n );\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const [unread, setUnread] = useState(channel.countUnread());\n\n const latestMessagePreview = useLatestMessagePreview(channel, forceUpdate, translatedLastMessage);\n\n const channelLastMessage = channel.lastMessage();\n const channelLastMessageString = `${channelLastMessage?.id}${channelLastMessage?.updated_at}`;\n\n useEffect(() => {\n if (\n channelLastMessage &&\n (channelLastMessage.id !== lastMessage?.id ||\n channelLastMessage.updated_at !== lastMessage?.updated_at)\n ) {\n setLastMessage(channelLastMessage);\n }\n\n const newUnreadCount = channel.countUnread();\n\n if (newUnreadCount !== unread) {\n setUnread(newUnreadCount);\n }\n }, [channelLastMessageString]);\n\n useEffect(() => {\n const handleNewMessageEvent = (event: Event<StreamChatGenerics>) => {\n const message = event.message;\n if (message && (!message.parent_id || message.show_in_channel)) {\n setLastMessage(event.message);\n setUnread(channel.countUnread());\n }\n };\n\n const handleUpdatedOrDeletedMessage = (event: Event<StreamChatGenerics>) => {\n if (event.message?.id === lastMessage?.id) {\n setLastMessage(event.message);\n }\n };\n\n const listeners = [\n channel.on('message.new', handleNewMessageEvent),\n channel.on('message.updated', handleUpdatedOrDeletedMessage),\n channel.on('message.deleted', handleUpdatedOrDeletedMessage),\n ];\n\n return () => listeners.forEach((l) => l.unsubscribe());\n }, []);\n\n useEffect(() => {\n const handleReadEvent = (event: Event<StreamChatGenerics>) => {\n if (event.user?.id === client.userID) {\n setUnread(0);\n } else if (event.user?.id) {\n setForceUpdate((prev) => prev + 1);\n }\n };\n\n const listener = channel.on('message.read', handleReadEvent);\n return () => listener.unsubscribe();\n }, []);\n\n return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;\n};\n\nexport type ChannelPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPreviewPropsWithContext<StreamChatGenerics>, 'channel'>;\n\nexport const ChannelPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelPreviewProps<StreamChatGenerics>,\n) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const { Preview } = useChannelsContext<StreamChatGenerics>();\n\n return <ChannelPreviewWithContext {...{ client, Preview }} {...props} />;\n};\n"]}
|
|
@@ -128,7 +128,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
128
128
|
|
|
129
129
|
var share = function () {
|
|
130
130
|
var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
131
|
-
var _photo$mime_type, _photo$user,
|
|
131
|
+
var _photo$mime_type, _photo$user, extension, localFile;
|
|
132
132
|
|
|
133
133
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
134
134
|
while (1) {
|
|
@@ -147,7 +147,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
147
147
|
localFile = _context.sent;
|
|
148
148
|
_context.next = 8;
|
|
149
149
|
return (0, _native.shareImage)({
|
|
150
|
-
type:
|
|
150
|
+
type: photo.mime_type || 'image/jpeg',
|
|
151
151
|
url: localFile
|
|
152
152
|
});
|
|
153
153
|
|
|
@@ -255,6 +255,7 @@ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props
|
|
|
255
255
|
columnNumber: 15
|
|
256
256
|
}
|
|
257
257
|
}, ShareIcon ? ShareIcon : _react["default"].createElement(_icons.Share, {
|
|
258
|
+
pathFill: black,
|
|
258
259
|
__self: _this,
|
|
259
260
|
__source: {
|
|
260
261
|
fileName: _jsxFileName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGalleryFooter.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","centerElement","duration","GridIcon","leftElement","onPlayPause","onProgressDrag","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","visible","setHeight","shareMenuOpen","setShareMenuOpen","theme","colors","black","white","imageGallery","footer","container","t","footerStyle","value","transform","translateY","Extrapolate","CLAMP","share","extension","mime_type","split","fileName","user","id","messageId","fromUrl","uri","localFile","type","url","console","log","event","nativeEvent","layout","backgroundColor","color","index","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n paused: boolean;\n progress: number;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n onProgressDrag,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n onProgressDrag,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: {\n centerContainer,\n container,\n imageCountText,\n innerContainer,\n leftContainer,\n rightContainer,\n },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n // `image/jpeg` is added for the case where the mime_type isn't available for a file/image\n await shareImage({ type: photo.mime_type ?? 'image/jpeg', url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle, { backgroundColor: white }]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, onProgressDrag, paused, progress })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n paused={paused}\n progress={progress}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: white }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ImageGalleryFooter.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","centerElement","duration","GridIcon","leftElement","onPlayPause","onProgressDrag","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","visible","setHeight","shareMenuOpen","setShareMenuOpen","theme","colors","black","white","imageGallery","footer","container","t","footerStyle","value","transform","translateY","Extrapolate","CLAMP","share","extension","mime_type","split","fileName","user","id","messageId","fromUrl","uri","localFile","type","url","console","log","event","nativeEvent","layout","backgroundColor","color","index","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n paused: boolean;\n progress: number;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n onProgressDrag,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n onProgressDrag,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: {\n centerContainer,\n container,\n imageCountText,\n innerContainer,\n leftContainer,\n rightContainer,\n },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n // `image/jpeg` is added for the case where the mime_type isn't available for a file/image\n await shareImage({ type: photo.mime_type || 'image/jpeg', url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle, { backgroundColor: white }]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, onProgressDrag, paused, progress })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n paused={paused}\n progress={progress}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: white }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault pathFill={black} />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"]}
|