stream-chat-react-native-core 4.7.0-beta.5 → 4.7.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Attachment.js +23 -13
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Card.js +17 -24
- package/lib/commonjs/components/Attachment/Card.js.map +1 -1
- package/lib/commonjs/components/Attachment/FileAttachment.js +10 -17
- package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +22 -10
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/utils/openUrlSafely.js +54 -0
- package/lib/commonjs/components/Attachment/utils/openUrlSafely.js.map +1 -0
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +90 -56
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +23 -22
- package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
- package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +10 -7
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/native.js +8 -2
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +23 -13
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Attachment/Card.js +17 -24
- package/lib/module/components/Attachment/Card.js.map +1 -1
- package/lib/module/components/Attachment/FileAttachment.js +10 -17
- package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +22 -10
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/utils/openUrlSafely.js +54 -0
- package/lib/module/components/Attachment/utils/openUrlSafely.js.map +1 -0
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +90 -56
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +23 -22
- package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +8 -8
- package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
- package/lib/module/components/Message/Message.js +10 -7
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/native.js +8 -2
- package/lib/module/native.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/__tests__/openUrlSafely.test.d.ts +1 -0
- package/lib/typescript/components/Attachment/utils/openUrlSafely.d.ts +1 -0
- package/lib/typescript/native.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/Attachment/Attachment.tsx +4 -1
- package/src/components/Attachment/Card.tsx +2 -4
- package/src/components/Attachment/FileAttachment.tsx +2 -4
- package/src/components/Attachment/Gallery.tsx +17 -4
- package/src/components/Attachment/__tests__/Attachment.test.js +0 -39
- package/src/components/Attachment/__tests__/openUrlSafely.test.ts +48 -0
- package/src/components/Attachment/utils/openUrlSafely.ts +17 -0
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +5 -3
- package/src/components/ImageGallery/ImageGallery.tsx +7 -3
- package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +16 -13
- package/src/components/Message/Message.tsx +5 -2
- package/src/native.ts +3 -1
- package/src/version.json +1 -1
- package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +0 -42
- package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +0 -1
- package/lib/module/components/Attachment/hooks/useGoToURL.js +0 -42
- package/lib/module/components/Attachment/hooks/useGoToURL.js.map +0 -1
- package/lib/typescript/components/Attachment/hooks/useGoToURL.d.ts +0 -2
- package/src/components/Attachment/hooks/useGoToURL.ts +0 -27
|
@@ -21,6 +21,8 @@ var _buildGallery = require("./utils/buildGallery/buildGallery");
|
|
|
21
21
|
|
|
22
22
|
var _getGalleryImageBorderRadius = require("./utils/getGalleryImageBorderRadius");
|
|
23
23
|
|
|
24
|
+
var _openUrlSafely = require("./utils/openUrlSafely");
|
|
25
|
+
|
|
24
26
|
var _ImageGalleryContext = require("../../contexts/imageGalleryContext/ImageGalleryContext");
|
|
25
27
|
|
|
26
28
|
var _MessageContext = require("../../contexts/messageContext/MessageContext");
|
|
@@ -31,6 +33,8 @@ var _OverlayContext = require("../../contexts/overlayContext/OverlayContext");
|
|
|
31
33
|
|
|
32
34
|
var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
33
35
|
|
|
36
|
+
var _native = require("../../native");
|
|
37
|
+
|
|
34
38
|
var _utils = require("../../utils/utils");
|
|
35
39
|
|
|
36
40
|
var _excluded = ["uri"];
|
|
@@ -53,7 +57,7 @@ var GalleryImage = function GalleryImage(props) {
|
|
|
53
57
|
__self: _this,
|
|
54
58
|
__source: {
|
|
55
59
|
fileName: _jsxFileName,
|
|
56
|
-
lineNumber:
|
|
60
|
+
lineNumber: 40,
|
|
57
61
|
columnNumber: 5
|
|
58
62
|
}
|
|
59
63
|
}));
|
|
@@ -164,7 +168,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
164
168
|
__self: _this,
|
|
165
169
|
__source: {
|
|
166
170
|
fileName: _jsxFileName,
|
|
167
|
-
lineNumber:
|
|
171
|
+
lineNumber: 183,
|
|
168
172
|
columnNumber: 5
|
|
169
173
|
}
|
|
170
174
|
}, thumbnailGrid.map(function (rows, colIndex) {
|
|
@@ -178,7 +182,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
178
182
|
__self: _this,
|
|
179
183
|
__source: {
|
|
180
184
|
fileName: _jsxFileName,
|
|
181
|
-
lineNumber:
|
|
185
|
+
lineNumber: 200,
|
|
182
186
|
columnNumber: 11
|
|
183
187
|
}
|
|
184
188
|
}, rows.map(function (_ref, rowIndex) {
|
|
@@ -188,7 +192,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
188
192
|
url = _ref.url,
|
|
189
193
|
width = _ref.width;
|
|
190
194
|
|
|
191
|
-
var
|
|
195
|
+
var openImageViewer = function openImageViewer() {
|
|
192
196
|
if (!legacyImageViewerSwipeBehaviour && message) {
|
|
193
197
|
setImages([message]);
|
|
194
198
|
setImage({
|
|
@@ -205,6 +209,14 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
205
209
|
}
|
|
206
210
|
};
|
|
207
211
|
|
|
212
|
+
var defaultOnPress = function defaultOnPress() {
|
|
213
|
+
if (type === 'video' && !(0, _native.isVideoPackageAvailable)()) {
|
|
214
|
+
(0, _openUrlSafely.openUrlSafely)(url);
|
|
215
|
+
} else {
|
|
216
|
+
openImageViewer();
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
|
|
208
220
|
var borderRadius = (0, _getGalleryImageBorderRadius.getGalleryImageBorderRadius)({
|
|
209
221
|
alignment: alignment,
|
|
210
222
|
colIndex: colIndex,
|
|
@@ -259,7 +271,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
259
271
|
__self: _this,
|
|
260
272
|
__source: {
|
|
261
273
|
fileName: _jsxFileName,
|
|
262
|
-
lineNumber:
|
|
274
|
+
lineNumber: 252,
|
|
263
275
|
columnNumber: 17
|
|
264
276
|
}
|
|
265
277
|
}), type === 'video' ? _react["default"].createElement(VideoThumbnail, {
|
|
@@ -270,7 +282,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
270
282
|
__self: _this,
|
|
271
283
|
__source: {
|
|
272
284
|
fileName: _jsxFileName,
|
|
273
|
-
lineNumber:
|
|
285
|
+
lineNumber: 296,
|
|
274
286
|
columnNumber: 21
|
|
275
287
|
}
|
|
276
288
|
}) : _react["default"].createElement(MemoizedGalleryImage, {
|
|
@@ -283,7 +295,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
283
295
|
__self: _this,
|
|
284
296
|
__source: {
|
|
285
297
|
fileName: _jsxFileName,
|
|
286
|
-
lineNumber:
|
|
298
|
+
lineNumber: 307,
|
|
287
299
|
columnNumber: 21
|
|
288
300
|
}
|
|
289
301
|
}), colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? _react["default"].createElement(_reactNative.View, {
|
|
@@ -293,7 +305,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
293
305
|
__self: _this,
|
|
294
306
|
__source: {
|
|
295
307
|
fileName: _jsxFileName,
|
|
296
|
-
lineNumber:
|
|
308
|
+
lineNumber: 323,
|
|
297
309
|
columnNumber: 21
|
|
298
310
|
}
|
|
299
311
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -301,7 +313,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
301
313
|
__self: _this,
|
|
302
314
|
__source: {
|
|
303
315
|
fileName: _jsxFileName,
|
|
304
|
-
lineNumber:
|
|
316
|
+
lineNumber: 331,
|
|
305
317
|
columnNumber: 23
|
|
306
318
|
}
|
|
307
319
|
}, "+" + (imagesAndVideos.length - 4))) : null);
|
|
@@ -415,7 +427,7 @@ var Gallery = function Gallery(props) {
|
|
|
415
427
|
__self: _this,
|
|
416
428
|
__source: {
|
|
417
429
|
fileName: _jsxFileName,
|
|
418
|
-
lineNumber:
|
|
430
|
+
lineNumber: 466,
|
|
419
431
|
columnNumber: 5
|
|
420
432
|
}
|
|
421
433
|
});
|
|
@@ -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");
|
|
@@ -109,38 +109,72 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
109
109
|
|
|
110
110
|
var size = (0, _utils.vw)(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;
|
|
111
111
|
|
|
112
|
-
var onPressVideo = function
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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;
|
|
123
131
|
|
|
124
|
-
|
|
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
|
+
}
|
|
125
163
|
}
|
|
164
|
+
}, _callee);
|
|
165
|
+
}));
|
|
126
166
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
type: 'video',
|
|
132
|
-
uri: asset.uri
|
|
133
|
-
}]);
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
};
|
|
167
|
+
return function onPressVideo() {
|
|
168
|
+
return _ref.apply(this, arguments);
|
|
169
|
+
};
|
|
170
|
+
}();
|
|
137
171
|
|
|
138
172
|
return _react["default"].createElement(_bottomSheet.TouchableOpacity, {
|
|
139
173
|
onPress: onPressVideo,
|
|
140
174
|
__self: _this,
|
|
141
175
|
__source: {
|
|
142
176
|
fileName: _jsxFileName,
|
|
143
|
-
lineNumber:
|
|
177
|
+
lineNumber: 138,
|
|
144
178
|
columnNumber: 5
|
|
145
179
|
}
|
|
146
180
|
}, _react["default"].createElement(_reactNative.ImageBackground, {
|
|
@@ -155,7 +189,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
155
189
|
__self: _this,
|
|
156
190
|
__source: {
|
|
157
191
|
fileName: _jsxFileName,
|
|
158
|
-
lineNumber:
|
|
192
|
+
lineNumber: 139,
|
|
159
193
|
columnNumber: 7
|
|
160
194
|
}
|
|
161
195
|
}, selected && _react["default"].createElement(_reactNative.View, {
|
|
@@ -165,14 +199,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
165
199
|
__self: _this,
|
|
166
200
|
__source: {
|
|
167
201
|
fileName: _jsxFileName,
|
|
168
|
-
lineNumber:
|
|
202
|
+
lineNumber: 151,
|
|
169
203
|
columnNumber: 11
|
|
170
204
|
}
|
|
171
205
|
}, _react["default"].createElement(ImageOverlaySelectedComponent, {
|
|
172
206
|
__self: _this,
|
|
173
207
|
__source: {
|
|
174
208
|
fileName: _jsxFileName,
|
|
175
|
-
lineNumber:
|
|
209
|
+
lineNumber: 152,
|
|
176
210
|
columnNumber: 13
|
|
177
211
|
}
|
|
178
212
|
})), _react["default"].createElement(_reactNative.View, {
|
|
@@ -180,7 +214,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
180
214
|
__self: _this,
|
|
181
215
|
__source: {
|
|
182
216
|
fileName: _jsxFileName,
|
|
183
|
-
lineNumber:
|
|
217
|
+
lineNumber: 155,
|
|
184
218
|
columnNumber: 9
|
|
185
219
|
}
|
|
186
220
|
}, _react["default"].createElement(_icons.Recorder, {
|
|
@@ -190,7 +224,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
190
224
|
__self: _this,
|
|
191
225
|
__source: {
|
|
192
226
|
fileName: _jsxFileName,
|
|
193
|
-
lineNumber:
|
|
227
|
+
lineNumber: 156,
|
|
194
228
|
columnNumber: 11
|
|
195
229
|
}
|
|
196
230
|
}), videoDuration ? _react["default"].createElement(_reactNative.Text, {
|
|
@@ -200,7 +234,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
200
234
|
__self: _this,
|
|
201
235
|
__source: {
|
|
202
236
|
fileName: _jsxFileName,
|
|
203
|
-
lineNumber:
|
|
237
|
+
lineNumber: 158,
|
|
204
238
|
columnNumber: 13
|
|
205
239
|
}
|
|
206
240
|
}, durationLabel) : null)));
|
|
@@ -250,7 +284,7 @@ var AttachmentImage = function AttachmentImage(props) {
|
|
|
250
284
|
__self: _this,
|
|
251
285
|
__source: {
|
|
252
286
|
fileName: _jsxFileName,
|
|
253
|
-
lineNumber:
|
|
287
|
+
lineNumber: 204,
|
|
254
288
|
columnNumber: 5
|
|
255
289
|
}
|
|
256
290
|
}, _react["default"].createElement(_reactNative.ImageBackground, {
|
|
@@ -265,7 +299,7 @@ var AttachmentImage = function AttachmentImage(props) {
|
|
|
265
299
|
__self: _this,
|
|
266
300
|
__source: {
|
|
267
301
|
fileName: _jsxFileName,
|
|
268
|
-
lineNumber:
|
|
302
|
+
lineNumber: 205,
|
|
269
303
|
columnNumber: 7
|
|
270
304
|
}
|
|
271
305
|
}, selected && _react["default"].createElement(_reactNative.View, {
|
|
@@ -275,21 +309,21 @@ var AttachmentImage = function AttachmentImage(props) {
|
|
|
275
309
|
__self: _this,
|
|
276
310
|
__source: {
|
|
277
311
|
fileName: _jsxFileName,
|
|
278
|
-
lineNumber:
|
|
312
|
+
lineNumber: 217,
|
|
279
313
|
columnNumber: 11
|
|
280
314
|
}
|
|
281
315
|
}, _react["default"].createElement(ImageOverlaySelectedComponent, {
|
|
282
316
|
__self: _this,
|
|
283
317
|
__source: {
|
|
284
318
|
fileName: _jsxFileName,
|
|
285
|
-
lineNumber:
|
|
319
|
+
lineNumber: 218,
|
|
286
320
|
columnNumber: 13
|
|
287
321
|
}
|
|
288
322
|
}))));
|
|
289
323
|
};
|
|
290
324
|
|
|
291
|
-
var renderItem = function renderItem(
|
|
292
|
-
var item =
|
|
325
|
+
var renderItem = function renderItem(_ref2) {
|
|
326
|
+
var item = _ref2.item;
|
|
293
327
|
var asset = item.asset,
|
|
294
328
|
ImageOverlaySelectedComponent = item.ImageOverlaySelectedComponent,
|
|
295
329
|
maxNumberOfFiles = item.maxNumberOfFiles,
|
|
@@ -311,7 +345,7 @@ var renderItem = function renderItem(_ref) {
|
|
|
311
345
|
__self: _this,
|
|
312
346
|
__source: {
|
|
313
347
|
fileName: _jsxFileName,
|
|
314
|
-
lineNumber:
|
|
348
|
+
lineNumber: 249,
|
|
315
349
|
columnNumber: 5
|
|
316
350
|
}
|
|
317
351
|
}) : _react["default"].createElement(AttachmentVideo, {
|
|
@@ -325,7 +359,7 @@ var renderItem = function renderItem(_ref) {
|
|
|
325
359
|
__self: _this,
|
|
326
360
|
__source: {
|
|
327
361
|
fileName: _jsxFileName,
|
|
328
|
-
lineNumber:
|
|
362
|
+
lineNumber: 259,
|
|
329
363
|
columnNumber: 5
|
|
330
364
|
}
|
|
331
365
|
});
|
|
@@ -395,27 +429,27 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
|
|
|
395
429
|
var bottomSheetCloseOnKeyboardShowTimeout = (0, _react.useRef)();
|
|
396
430
|
|
|
397
431
|
var getMorePhotos = function () {
|
|
398
|
-
var
|
|
432
|
+
var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
|
|
399
433
|
var results;
|
|
400
|
-
return _regenerator["default"].wrap(function
|
|
434
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
401
435
|
while (1) {
|
|
402
|
-
switch (
|
|
436
|
+
switch (_context2.prev = _context2.next) {
|
|
403
437
|
case 0:
|
|
404
438
|
if (!(hasNextPage && !loadingPhotos && currentIndex > -1 && selectedPicker === 'images')) {
|
|
405
|
-
|
|
439
|
+
_context2.next = 16;
|
|
406
440
|
break;
|
|
407
441
|
}
|
|
408
442
|
|
|
409
443
|
setLoadingPhotos(true);
|
|
410
|
-
|
|
411
|
-
|
|
444
|
+
_context2.prev = 2;
|
|
445
|
+
_context2.next = 5;
|
|
412
446
|
return (0, _native.getPhotos)({
|
|
413
447
|
after: endCursor,
|
|
414
448
|
first: numberOfAttachmentImagesToLoadPerCall != null ? numberOfAttachmentImagesToLoadPerCall : 60
|
|
415
449
|
});
|
|
416
450
|
|
|
417
451
|
case 5:
|
|
418
|
-
results =
|
|
452
|
+
results = _context2.sent;
|
|
419
453
|
|
|
420
454
|
if (endCursor) {
|
|
421
455
|
setPhotos([].concat((0, _toConsumableArray2["default"])(photos), (0, _toConsumableArray2["default"])(results.assets)));
|
|
@@ -425,13 +459,13 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
|
|
|
425
459
|
|
|
426
460
|
setEndCursor(results.endCursor);
|
|
427
461
|
setHasNextPage(results.hasNextPage || false);
|
|
428
|
-
|
|
462
|
+
_context2.next = 15;
|
|
429
463
|
break;
|
|
430
464
|
|
|
431
465
|
case 11:
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
console.log(
|
|
466
|
+
_context2.prev = 11;
|
|
467
|
+
_context2.t0 = _context2["catch"](2);
|
|
468
|
+
console.log(_context2.t0);
|
|
435
469
|
setPhotoError(true);
|
|
436
470
|
|
|
437
471
|
case 15:
|
|
@@ -439,14 +473,14 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
|
|
|
439
473
|
|
|
440
474
|
case 16:
|
|
441
475
|
case "end":
|
|
442
|
-
return
|
|
476
|
+
return _context2.stop();
|
|
443
477
|
}
|
|
444
478
|
}
|
|
445
|
-
},
|
|
479
|
+
}, _callee2, null, [[2, 11]]);
|
|
446
480
|
}));
|
|
447
481
|
|
|
448
482
|
return function getMorePhotos() {
|
|
449
|
-
return
|
|
483
|
+
return _ref3.apply(this, arguments);
|
|
450
484
|
};
|
|
451
485
|
}();
|
|
452
486
|
|
|
@@ -552,7 +586,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
|
|
|
552
586
|
__self: _this,
|
|
553
587
|
__source: {
|
|
554
588
|
fileName: _jsxFileName,
|
|
555
|
-
lineNumber:
|
|
589
|
+
lineNumber: 507,
|
|
556
590
|
columnNumber: 9
|
|
557
591
|
}
|
|
558
592
|
}, _react["default"].createElement(_bottomSheet.BottomSheetFlatList, {
|
|
@@ -571,7 +605,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
|
|
|
571
605
|
__self: _this,
|
|
572
606
|
__source: {
|
|
573
607
|
fileName: _jsxFileName,
|
|
574
|
-
lineNumber:
|
|
608
|
+
lineNumber: 523,
|
|
575
609
|
columnNumber: 11
|
|
576
610
|
}
|
|
577
611
|
})), selectedPicker === 'images' && photoError && _react["default"].createElement(AttachmentPickerError, {
|
|
@@ -582,7 +616,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
|
|
|
582
616
|
__self: _this,
|
|
583
617
|
__source: {
|
|
584
618
|
fileName: _jsxFileName,
|
|
585
|
-
lineNumber:
|
|
619
|
+
lineNumber: 538,
|
|
586
620
|
columnNumber: 11
|
|
587
621
|
}
|
|
588
622
|
}));
|