stream-chat-react-native-core 5.6.0-beta.0 → 5.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +21 -16
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/GalleryImage.js +3 -3
  4. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +34 -30
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +5 -1
  8. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  9. package/lib/commonjs/components/Message/hooks/useMessageActions.js +2 -2
  10. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  11. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +18 -21
  12. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  13. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +7 -32
  14. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  15. package/lib/commonjs/components/index.js +1 -1
  16. package/lib/commonjs/components/index.js.map +1 -1
  17. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +128 -89
  18. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  19. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  20. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  21. package/lib/commonjs/utils/DBSyncManager.js +16 -16
  22. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  23. package/lib/commonjs/{components/Message/utils → utils}/removeReservedFields.js +1 -1
  24. package/lib/commonjs/utils/removeReservedFields.js.map +1 -0
  25. package/lib/commonjs/utils/utils.js +2 -2
  26. package/lib/commonjs/utils/utils.js.map +1 -1
  27. package/lib/commonjs/version.json +1 -1
  28. package/lib/module/components/Attachment/Gallery.js +21 -16
  29. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  30. package/lib/module/components/Attachment/GalleryImage.js +3 -3
  31. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  32. package/lib/module/components/Channel/Channel.js +34 -30
  33. package/lib/module/components/Channel/Channel.js.map +1 -1
  34. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +5 -1
  35. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  36. package/lib/module/components/Message/hooks/useMessageActions.js +2 -2
  37. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  38. package/lib/module/components/MessageInput/FileUploadPreview.js +18 -21
  39. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  40. package/lib/module/components/MessageInput/ImageUploadPreview.js +7 -32
  41. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  42. package/lib/module/components/index.js +1 -1
  43. package/lib/module/components/index.js.map +1 -1
  44. package/lib/module/contexts/messageInputContext/MessageInputContext.js +128 -89
  45. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  46. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  47. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  48. package/lib/module/utils/DBSyncManager.js +16 -16
  49. package/lib/module/utils/DBSyncManager.js.map +1 -1
  50. package/lib/module/{components/Message/utils → utils}/removeReservedFields.js +1 -1
  51. package/lib/module/utils/removeReservedFields.js.map +1 -0
  52. package/lib/module/utils/utils.js +2 -2
  53. package/lib/module/utils/utils.js.map +1 -1
  54. package/lib/module/version.json +1 -1
  55. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  56. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +1 -1
  57. package/lib/typescript/components/index.d.ts +1 -1
  58. package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +0 -8
  59. package/lib/typescript/store/types.d.ts +0 -4
  60. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  61. package/lib/typescript/{components/Message/utils → utils}/removeReservedFields.d.ts +2 -2
  62. package/lib/typescript/utils/utils.d.ts +1 -1
  63. package/package.json +1 -1
  64. package/src/components/Attachment/Gallery.tsx +5 -1
  65. package/src/components/Attachment/GalleryImage.tsx +2 -0
  66. package/src/components/Channel/Channel.tsx +12 -11
  67. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -4
  68. package/src/components/Message/hooks/useMessageActions.tsx +1 -1
  69. package/src/components/MessageInput/FileUploadPreview.tsx +4 -5
  70. package/src/components/MessageInput/ImageUploadPreview.tsx +10 -35
  71. package/src/components/index.ts +1 -1
  72. package/src/contexts/messageInputContext/MessageInputContext.tsx +94 -75
  73. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +0 -3
  74. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +1 -0
  75. package/src/store/types.ts +0 -5
  76. package/src/utils/DBSyncManager.ts +1 -1
  77. package/src/{components/Message/utils → utils}/removeReservedFields.ts +7 -3
  78. package/src/utils/utils.ts +7 -6
  79. package/src/version.json +1 -1
  80. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +0 -1
  81. package/lib/commonjs/utils/pendingTaskUtils.js +0 -302
  82. package/lib/commonjs/utils/pendingTaskUtils.js.map +0 -1
  83. package/lib/module/components/Message/utils/removeReservedFields.js.map +0 -1
  84. package/lib/module/utils/pendingTaskUtils.js +0 -302
  85. package/lib/module/utils/pendingTaskUtils.js.map +0 -1
  86. package/lib/typescript/utils/pendingTaskUtils.d.ts +0 -13
  87. package/src/utils/pendingTaskUtils.ts +0 -131
@@ -138,13 +138,18 @@ var GalleryWithContext = function GalleryWithContext(props) {
138
138
  minWidth: minWidth
139
139
  };
140
140
  var imagesAndVideos = [].concat((0, _toConsumableArray2["default"])(images || []), (0, _toConsumableArray2["default"])(videos || []));
141
+ var imagesAndVideosValue = "" + (images == null ? void 0 : images.length) + (videos == null ? void 0 : videos.length) + (images == null ? void 0 : images.map(function (i) {
142
+ return "" + i.image_url + i.thumb_url;
143
+ }).join('')) + (videos == null ? void 0 : videos.map(function (i) {
144
+ return "" + i.image_url + i.thumb_url;
145
+ }).join(''));
141
146
 
142
147
  var _useMemo = (0, _react.useMemo)(function () {
143
148
  return (0, _buildGallery.buildGallery)({
144
149
  images: imagesAndVideos,
145
150
  sizeConfig: sizeConfig
146
151
  });
147
- }, [imagesAndVideos.length]),
152
+ }, [imagesAndVideosValue]),
148
153
  height = _useMemo.height,
149
154
  invertedDirections = _useMemo.invertedDirections,
150
155
  thumbnailGrid = _useMemo.thumbnailGrid,
@@ -163,7 +168,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
163
168
  __self: _this,
164
169
  __source: {
165
170
  fileName: _jsxFileName,
166
- lineNumber: 186,
171
+ lineNumber: 190,
167
172
  columnNumber: 5
168
173
  }
169
174
  }, thumbnailGrid.map(function (rows, colIndex) {
@@ -177,7 +182,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
177
182
  __self: _this,
178
183
  __source: {
179
184
  fileName: _jsxFileName,
180
- lineNumber: 203,
185
+ lineNumber: 207,
181
186
  columnNumber: 11
182
187
  }
183
188
  }, rows.map(function (thumbnail, rowIndex) {
@@ -227,7 +232,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
227
232
  __self: _this,
228
233
  __source: {
229
234
  fileName: _jsxFileName,
230
- lineNumber: 235,
235
+ lineNumber: 239,
231
236
  columnNumber: 17
232
237
  }
233
238
  });
@@ -331,7 +336,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
331
336
  __self: _this,
332
337
  __source: {
333
338
  fileName: _jsxFileName,
334
- lineNumber: 359,
339
+ lineNumber: 363,
335
340
  columnNumber: 5
336
341
  }
337
342
  }), thumbnail.type === 'video' ? _react["default"].createElement(VideoThumbnail, {
@@ -343,7 +348,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
343
348
  __self: _this,
344
349
  __source: {
345
350
  fileName: _jsxFileName,
346
- lineNumber: 401,
351
+ lineNumber: 405,
347
352
  columnNumber: 9
348
353
  }
349
354
  }) : _react["default"].createElement(_reactNative.View, {
@@ -351,7 +356,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
351
356
  __self: _this,
352
357
  __source: {
353
358
  fileName: _jsxFileName,
354
- lineNumber: 413,
359
+ lineNumber: 417,
355
360
  columnNumber: 9
356
361
  }
357
362
  }, _react["default"].createElement(GalleryImageThumbnail, {
@@ -362,7 +367,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
362
367
  __self: _this,
363
368
  __source: {
364
369
  fileName: _jsxFileName,
365
- lineNumber: 414,
370
+ lineNumber: 418,
366
371
  columnNumber: 11
367
372
  }
368
373
  })), colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? _react["default"].createElement(_reactNative.View, {
@@ -372,7 +377,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
372
377
  __self: _this,
373
378
  __source: {
374
379
  fileName: _jsxFileName,
375
- lineNumber: 423,
380
+ lineNumber: 427,
376
381
  columnNumber: 9
377
382
  }
378
383
  }, _react["default"].createElement(_reactNative.Text, {
@@ -380,7 +385,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
380
385
  __self: _this,
381
386
  __source: {
382
387
  fileName: _jsxFileName,
383
- lineNumber: 431,
388
+ lineNumber: 435,
384
389
  columnNumber: 11
385
390
  }
386
391
  }, "+" + (imagesAndVideos.length - 4))) : null);
@@ -409,7 +414,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
409
414
  __self: _this,
410
415
  __source: {
411
416
  fileName: _jsxFileName,
412
- lineNumber: 463,
417
+ lineNumber: 467,
413
418
  columnNumber: 5
414
419
  }
415
420
  }, isLoadingImageError ? _react["default"].createElement(ImageLoadingFailedIndicator, {
@@ -417,7 +422,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
417
422
  __self: _this,
418
423
  __source: {
419
424
  fileName: _jsxFileName,
420
- lineNumber: 470,
425
+ lineNumber: 474,
421
426
  columnNumber: 9
422
427
  }
423
428
  }) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_GalleryImage.GalleryImage, {
@@ -441,7 +446,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
441
446
  __self: _this,
442
447
  __source: {
443
448
  fileName: _jsxFileName,
444
- lineNumber: 473,
449
+ lineNumber: 477,
445
450
  columnNumber: 11
446
451
  }
447
452
  }), isLoadingImage && _react["default"].createElement(_reactNative.View, {
@@ -449,7 +454,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
449
454
  __self: _this,
450
455
  __source: {
451
456
  fileName: _jsxFileName,
452
- lineNumber: 493,
457
+ lineNumber: 497,
453
458
  columnNumber: 13
454
459
  }
455
460
  }, _react["default"].createElement(ImageLoadingIndicator, {
@@ -457,7 +462,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
457
462
  __self: _this,
458
463
  __source: {
459
464
  fileName: _jsxFileName,
460
- lineNumber: 494,
465
+ lineNumber: 498,
461
466
  columnNumber: 15
462
467
  }
463
468
  }))));
@@ -579,7 +584,7 @@ var Gallery = function Gallery(props) {
579
584
  __self: _this,
580
585
  __source: {
581
586
  fileName: _jsxFileName,
582
- lineNumber: 635,
587
+ lineNumber: 639,
583
588
  columnNumber: 5
584
589
  }
585
590
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Gallery.tsx"],"names":["styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorContainer","height","width","imageLoadingIndicatorStyle","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","length","invertedDirections","thumbnailGrid","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","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","image_url","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","contextSetSelectedMessage","contextAlignment","contextGroupStyles","contextImages","contextMessage","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 './GalleryImage';\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 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 imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\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>, 'setSelectedMessage' | 'setMessages'> &\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 setMessages,\n setOverlay,\n setSelectedMessage,\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 setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\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>, 'setSelectedMessage' | 'setMessages'> &\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 setMessages,\n setOverlay,\n setSelectedMessage,\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 setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ 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 <GalleryImage\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={[styles.imageLoadingIndicatorContainer]}>\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 =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\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 message: propMessage,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\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 const message = propMessage || contextMessage;\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 setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\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 setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
1
+ {"version":3,"sources":["Gallery.tsx"],"names":["styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorContainer","height","width","imageLoadingIndicatorStyle","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","invertedDirections","thumbnailGrid","numOfColumns","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","messageText","text","undefined","GalleryThumbnail","overlay","colors","image","openImageViewer","messageId","id","url","defaultOnPress","type","event","emitter","defaultHandler","absoluteFillObject","backgroundColor","GalleryImageThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","error","console","warn","resizeMode","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","contextSetSelectedMessage","contextAlignment","contextGroupStyles","contextImages","contextMessage","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 './GalleryImage';\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 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 imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\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>, 'setSelectedMessage' | 'setMessages'> &\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 setMessages,\n setOverlay,\n setSelectedMessage,\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 imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\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 setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\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>, 'setSelectedMessage' | 'setMessages'> &\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 setMessages,\n setOverlay,\n setSelectedMessage,\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 setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ 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 <GalleryImage\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={[styles.imageLoadingIndicatorContainer]}>\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 =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\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 message: propMessage,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\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 const message = propMessage || contextMessage;\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 setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\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 setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
@@ -37,7 +37,7 @@ var GalleryImageWithContext = function GalleryImageWithContext(props) {
37
37
  __self: _this,
38
38
  __source: {
39
39
  fileName: _jsxFileName,
40
- lineNumber: 18,
40
+ lineNumber: 20,
41
41
  columnNumber: 7
42
42
  }
43
43
  }));
@@ -51,7 +51,7 @@ var GalleryImageWithContext = function GalleryImageWithContext(props) {
51
51
  __self: _this,
52
52
  __source: {
53
53
  fileName: _jsxFileName,
54
- lineNumber: 29,
54
+ lineNumber: 31,
55
55
  columnNumber: 5
56
56
  }
57
57
  }));
@@ -75,7 +75,7 @@ var GalleryImage = function GalleryImage(props) {
75
75
  __self: _this,
76
76
  __source: {
77
77
  fileName: _jsxFileName,
78
- lineNumber: 55,
78
+ lineNumber: 57,
79
79
  columnNumber: 10
80
80
  }
81
81
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["GalleryImage.tsx"],"names":["GalleryImageWithContext","props","ImageComponent","Image","uri","rest","MemoizedGalleryImage","React","memo","prevProps","nextProps","GalleryImage"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;;;;AAMO,IAAMA,uBAA+D,GAAG,SAAlEA,uBAAkE,CAACC,KAAD,EAAW;AACxF,8BAAiDA,KAAjD,CAAQC,cAAR;AAAA,MAAQA,cAAR,sCAAyBC,kBAAzB;AAAA,MAAgCC,GAAhC,GAAiDH,KAAjD,CAAgCG,GAAhC;AAAA,MAAwCC,IAAxC,6CAAiDJ,KAAjD;;AAEA,MAAI,CAAC,uBAAWG,GAAX,CAAL,EAAsB;AACpB,WACE,gCAAC,cAAD,gCACMC,IADN;AAEE,MAAA,kBAAkB,EAAC,eAFrB;AAGE,MAAA,MAAM,EAAE;AACND,QAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,OAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OADF;AASD;;AAED,SACE,gCAAC,kBAAD,gCACMC,IADN;AAEE,IAAA,kBAAkB,EAAC,eAFrB;AAGE,IAAA,MAAM,EAAE;AACND,MAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,KAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AASD,CAxBM;;;;AA0BA,IAAME,oBAAoB,GAAGC,kBAAMC,IAAN,CAClCR,uBADkC,EAElC,UAACS,SAAD,EAAYC,SAAZ;AAAA,SACE,gCAAoBD,SAAS,CAACL,GAA9B,MAAuC,gCAAoBM,SAAS,CAACN,GAA9B,CADzC;AAAA,CAFkC,CAA7B;;;;AASA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAG1BV,KAH0B,EAIvB;AACH,wBAA2B,kCAA3B;AAAA,MAAQC,cAAR,mBAAQA,cAAR;;AAEA,SAAO,gCAAC,oBAAD;AAAsB,IAAA,cAAc,EAAEA;AAAtC,KAA0DD,KAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React from 'react';\nimport { Image, ImageProps } from 'react-native';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams, isLocalUrl, makeImageCompatibleUrl } from '../../utils/utils';\n\nexport type GalleryImageWithContextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = GalleryImageProps & Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>;\n\nexport const GalleryImageWithContext: React.FC<GalleryImageWithContextProps> = (props) => {\n const { ImageComponent = Image, uri, ...rest } = props;\n\n if (!isLocalUrl(uri)) {\n return (\n <ImageComponent\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n }\n\n return (\n <Image\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n};\n\nexport const MemoizedGalleryImage = React.memo(\n GalleryImageWithContext,\n (prevProps, nextProps) =>\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n);\nexport type GalleryImageProps = Omit<ImageProps, 'height' | 'source'> & {\n uri: string;\n};\n\nexport const GalleryImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryImageProps,\n) => {\n const { ImageComponent } = useChatContext<StreamChatGenerics>();\n\n return <MemoizedGalleryImage ImageComponent={ImageComponent} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["GalleryImage.tsx"],"names":["GalleryImageWithContext","props","ImageComponent","Image","uri","rest","MemoizedGalleryImage","React","memo","prevProps","nextProps","GalleryImage"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;;;;AAMO,IAAMA,uBAA+D,GAAG,SAAlEA,uBAAkE,CAACC,KAAD,EAAW;AACxF,8BAAiDA,KAAjD,CAAQC,cAAR;AAAA,MAAQA,cAAR,sCAAyBC,kBAAzB;AAAA,MAAgCC,GAAhC,GAAiDH,KAAjD,CAAgCG,GAAhC;AAAA,MAAwCC,IAAxC,6CAAiDJ,KAAjD;;AAIA,MAAI,CAAC,uBAAWG,GAAX,CAAL,EAAsB;AACpB,WACE,gCAAC,cAAD,gCACMC,IADN;AAEE,MAAA,kBAAkB,EAAC,eAFrB;AAGE,MAAA,MAAM,EAAE;AACND,QAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,OAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OADF;AASD;;AAED,SACE,gCAAC,kBAAD,gCACMC,IADN;AAEE,IAAA,kBAAkB,EAAC,eAFrB;AAGE,IAAA,MAAM,EAAE;AACND,MAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,KAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AASD,CA1BM;;;;AA4BA,IAAME,oBAAoB,GAAGC,kBAAMC,IAAN,CAClCR,uBADkC,EAElC,UAACS,SAAD,EAAYC,SAAZ;AAAA,SACE,gCAAoBD,SAAS,CAACL,GAA9B,MAAuC,gCAAoBM,SAAS,CAACN,GAA9B,CADzC;AAAA,CAFkC,CAA7B;;;;AASA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAG1BV,KAH0B,EAIvB;AACH,wBAA2B,kCAA3B;AAAA,MAAQC,cAAR,mBAAQA,cAAR;;AAEA,SAAO,gCAAC,oBAAD;AAAsB,IAAA,cAAc,EAAEA;AAAtC,KAA0DD,KAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React from 'react';\nimport { Image, ImageProps } from 'react-native';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams, isLocalUrl, makeImageCompatibleUrl } from '../../utils/utils';\n\nexport type GalleryImageWithContextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = GalleryImageProps & Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>;\n\nexport const GalleryImageWithContext: React.FC<GalleryImageWithContextProps> = (props) => {\n const { ImageComponent = Image, uri, ...rest } = props;\n\n // Caching image components such as FastImage will not work with local images.\n // This for the case of local uris, we use the default Image component.\n if (!isLocalUrl(uri)) {\n return (\n <ImageComponent\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n }\n\n return (\n <Image\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n};\n\nexport const MemoizedGalleryImage = React.memo(\n GalleryImageWithContext,\n (prevProps, nextProps) =>\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n);\nexport type GalleryImageProps = Omit<ImageProps, 'height' | 'source'> & {\n uri: string;\n};\n\nexport const GalleryImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryImageProps,\n) => {\n const { ImageComponent } = useChatContext<StreamChatGenerics>();\n\n return <MemoizedGalleryImage ImageComponent={ImageComponent} {...props} />;\n};\n"]}
@@ -83,8 +83,6 @@ var _addReactionToLocalState = require("../../utils/addReactionToLocalState");
83
83
 
84
84
  var _DBSyncManager = require("../../utils/DBSyncManager");
85
85
 
86
- var _pendingTaskUtils = require("../../utils/pendingTaskUtils");
87
-
88
86
  var _removeReactionFromLocalState = require("../../utils/removeReactionFromLocalState");
89
87
 
90
88
  var _utils = require("../../utils/utils");
@@ -241,7 +239,7 @@ var throttleOptions = {
241
239
  trailing: true
242
240
  };
243
241
  var debounceOptions = {
244
- leading: false,
242
+ leading: true,
245
243
  trailing: true
246
244
  };
247
245
 
@@ -634,11 +632,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
634
632
  (0, _streamChat.logChatPromiseExecution)(channel.markRead(), 'mark read');
635
633
  }
636
634
  }, defaultThrottleInterval, throttleOptions)).current;
637
- var copyMessagesState = (0, _react.useRef)((0, _debounce["default"])(function () {
635
+ var copyMessagesState = (0, _react.useRef)((0, _throttle["default"])(function () {
638
636
  if (channel) {
639
637
  setMessages((0, _toConsumableArray2["default"])(channel.state.messages));
640
638
  }
641
- }, newMessageStateUpdateThrottleInterval, debounceOptions)).current;
639
+ }, newMessageStateUpdateThrottleInterval, throttleOptions)).current;
642
640
  var copyTypingState = (0, _react.useRef)((0, _throttle["default"])(function () {
643
641
  if (channel) {
644
642
  setTyping((0, _extends2["default"])({}, channel.state.typing));
@@ -649,7 +647,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
649
647
  setRead((0, _extends2["default"])({}, channel.state.read));
650
648
  }
651
649
  }, stateUpdateThrottleInterval, throttleOptions)).current;
652
- var copyChannelState = (0, _react.useRef)((0, _debounce["default"])(function () {
650
+ var copyChannelState = (0, _react.useRef)((0, _throttle["default"])(function () {
653
651
  setLoading(false);
654
652
 
655
653
  if (channel) {
@@ -660,7 +658,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
660
658
  setWatcherCount(channel.state.watcher_count);
661
659
  setWatchers((0, _extends2["default"])({}, channel.state.watchers));
662
660
  }
663
- }, stateUpdateThrottleInterval, debounceOptions)).current;
661
+ }, stateUpdateThrottleInterval, throttleOptions)).current;
664
662
 
665
663
  var connectionChangedHandler = function connectionChangedHandler() {
666
664
  if (shouldSyncChannel) {
@@ -1384,7 +1382,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1384
1382
  updatedMessage = (0, _extends2["default"])({}, message);
1385
1383
 
1386
1384
  if (!((_updatedMessage$attac = updatedMessage.attachments) != null && _updatedMessage$attac.length)) {
1387
- _context12.next = 39;
1385
+ _context12.next = 40;
1388
1386
  break;
1389
1387
  }
1390
1388
 
@@ -1392,7 +1390,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1392
1390
 
1393
1391
  case 3:
1394
1392
  if (!(i < ((_updatedMessage$attac2 = updatedMessage.attachments) == null ? void 0 : _updatedMessage$attac2.length))) {
1395
- _context12.next = 39;
1393
+ _context12.next = 40;
1396
1394
  break;
1397
1395
  }
1398
1396
 
@@ -1439,7 +1437,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1439
1437
 
1440
1438
  case 22:
1441
1439
  if (!((attachment.type === 'file' || attachment.type === 'audio' || attachment.type === 'video') && attachment.asset_url && (0, _utils.isLocalUrl)(attachment.asset_url) && file != null && file.uri)) {
1442
- _context12.next = 36;
1440
+ _context12.next = 37;
1443
1441
  break;
1444
1442
  }
1445
1443
 
@@ -1466,6 +1464,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
1466
1464
  case 32:
1467
1465
  response = _context12.t1;
1468
1466
  attachment.asset_url = response.file;
1467
+
1468
+ if (response.thumb_url) {
1469
+ attachment.thumb_url = response.thumb_url;
1470
+ }
1471
+
1469
1472
  delete attachment.originalFile;
1470
1473
  dbApi.updateMessage({
1471
1474
  message: (0, _extends2["default"])({}, updatedMessage, {
@@ -1473,15 +1476,15 @@ var ChannelWithContext = function ChannelWithContext(props) {
1473
1476
  })
1474
1477
  });
1475
1478
 
1476
- case 36:
1479
+ case 37:
1477
1480
  i++;
1478
1481
  _context12.next = 3;
1479
1482
  break;
1480
1483
 
1481
- case 39:
1484
+ case 40:
1482
1485
  return _context12.abrupt("return", updatedMessage);
1483
1486
 
1484
- case 40:
1487
+ case 41:
1485
1488
  case "end":
1486
1489
  return _context12.stop();
1487
1490
  }
@@ -1958,7 +1961,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1958
1961
  });
1959
1962
  setMessages(channel.state.messages);
1960
1963
  _context18.next = 11;
1961
- return (0, _pendingTaskUtils.queueTask)({
1964
+ return _DBSyncManager.DBSyncManager.queueTask({
1962
1965
  client: client,
1963
1966
  task: {
1964
1967
  channelId: channel.id,
@@ -2014,9 +2017,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
2014
2017
  break;
2015
2018
  }
2016
2019
 
2017
- (0, _pendingTaskUtils.dropPendingTasks)({
2020
+ _DBSyncManager.DBSyncManager.dropPendingTasks({
2018
2021
  messageId: message.id
2019
2022
  });
2023
+
2020
2024
  removeMessage(message);
2021
2025
  _context19.next = 16;
2022
2026
  break;
@@ -2028,7 +2032,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2028
2032
  type: 'deleted'
2029
2033
  }));
2030
2034
  _context19.next = 14;
2031
- return (0, _pendingTaskUtils.queueTask)({
2035
+ return _DBSyncManager.DBSyncManager.queueTask({
2032
2036
  client: client,
2033
2037
  task: {
2034
2038
  channelId: channel.id,
@@ -2096,7 +2100,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2096
2100
  });
2097
2101
  setMessages(channel.state.messages);
2098
2102
  _context20.next = 11;
2099
- return (0, _pendingTaskUtils.queueTask)({
2103
+ return _DBSyncManager.DBSyncManager.queueTask({
2100
2104
  client: client,
2101
2105
  task: {
2102
2106
  channelId: channel.id,
@@ -2418,7 +2422,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2418
2422
  __self: _this,
2419
2423
  __source: {
2420
2424
  fileName: _jsxFileName,
2421
- lineNumber: 1961,
2425
+ lineNumber: 1962,
2422
2426
  columnNumber: 12
2423
2427
  }
2424
2428
  });
@@ -2433,7 +2437,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2433
2437
  __self: _this,
2434
2438
  __source: {
2435
2439
  fileName: _jsxFileName,
2436
- lineNumber: 1966,
2440
+ lineNumber: 1967,
2437
2441
  columnNumber: 7
2438
2442
  }
2439
2443
  }, t('Please select a channel first'));
@@ -2447,7 +2451,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2447
2451
  __self: _this,
2448
2452
  __source: {
2449
2453
  fileName: _jsxFileName,
2450
- lineNumber: 1973,
2454
+ lineNumber: 1974,
2451
2455
  columnNumber: 5
2452
2456
  }
2453
2457
  }), _react["default"].createElement(_ChannelContext.ChannelProvider, {
@@ -2455,7 +2459,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2455
2459
  __self: _this,
2456
2460
  __source: {
2457
2461
  fileName: _jsxFileName,
2458
- lineNumber: 1979,
2462
+ lineNumber: 1980,
2459
2463
  columnNumber: 7
2460
2464
  }
2461
2465
  }, _react["default"].createElement(_OwnCapabilitiesContext.OwnCapabilitiesProvider, {
@@ -2463,7 +2467,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2463
2467
  __self: _this,
2464
2468
  __source: {
2465
2469
  fileName: _jsxFileName,
2466
- lineNumber: 1980,
2470
+ lineNumber: 1981,
2467
2471
  columnNumber: 9
2468
2472
  }
2469
2473
  }, _react["default"].createElement(_TypingContext.TypingProvider, {
@@ -2471,7 +2475,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2471
2475
  __self: _this,
2472
2476
  __source: {
2473
2477
  fileName: _jsxFileName,
2474
- lineNumber: 1981,
2478
+ lineNumber: 1982,
2475
2479
  columnNumber: 11
2476
2480
  }
2477
2481
  }, _react["default"].createElement(_PaginatedMessageListContext.PaginatedMessageListProvider, {
@@ -2479,7 +2483,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2479
2483
  __self: _this,
2480
2484
  __source: {
2481
2485
  fileName: _jsxFileName,
2482
- lineNumber: 1982,
2486
+ lineNumber: 1983,
2483
2487
  columnNumber: 13
2484
2488
  }
2485
2489
  }, _react["default"].createElement(_MessagesContext.MessagesProvider, {
@@ -2487,7 +2491,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2487
2491
  __self: _this,
2488
2492
  __source: {
2489
2493
  fileName: _jsxFileName,
2490
- lineNumber: 1983,
2494
+ lineNumber: 1984,
2491
2495
  columnNumber: 15
2492
2496
  }
2493
2497
  }, _react["default"].createElement(_ThreadContext.ThreadProvider, {
@@ -2495,7 +2499,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2495
2499
  __self: _this,
2496
2500
  __source: {
2497
2501
  fileName: _jsxFileName,
2498
- lineNumber: 1984,
2502
+ lineNumber: 1985,
2499
2503
  columnNumber: 17
2500
2504
  }
2501
2505
  }, _react["default"].createElement(_SuggestionsContext.SuggestionsProvider, {
@@ -2503,7 +2507,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2503
2507
  __self: _this,
2504
2508
  __source: {
2505
2509
  fileName: _jsxFileName,
2506
- lineNumber: 1985,
2510
+ lineNumber: 1986,
2507
2511
  columnNumber: 19
2508
2512
  }
2509
2513
  }, _react["default"].createElement(_MessageInputContext.MessageInputProvider, {
@@ -2511,7 +2515,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2511
2515
  __self: _this,
2512
2516
  __source: {
2513
2517
  fileName: _jsxFileName,
2514
- lineNumber: 1986,
2518
+ lineNumber: 1987,
2515
2519
  columnNumber: 21
2516
2520
  }
2517
2521
  }, _react["default"].createElement(_reactNative.View, {
@@ -2521,7 +2525,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2521
2525
  __self: _this,
2522
2526
  __source: {
2523
2527
  fileName: _jsxFileName,
2524
- lineNumber: 1987,
2528
+ lineNumber: 1988,
2525
2529
  columnNumber: 23
2526
2530
  }
2527
2531
  }, children))))))))));
@@ -2578,7 +2582,7 @@ var Channel = function Channel(props) {
2578
2582
  __self: _this,
2579
2583
  __source: {
2580
2584
  fileName: _jsxFileName,
2581
- lineNumber: 2044,
2585
+ lineNumber: 2045,
2582
2586
  columnNumber: 5
2583
2587
  }
2584
2588
  }));