stream-chat-react-native-core 3.9.0-next.4 → 3.9.0-next.8

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 (29) hide show
  1. package/README.md +0 -12
  2. package/lib/commonjs/components/Attachment/Gallery.js +25 -18
  3. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  4. package/lib/commonjs/components/Channel/Channel.js +24 -15
  5. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  6. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +14 -20
  7. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  8. package/lib/commonjs/utils/utils.js +23 -11
  9. package/lib/commonjs/utils/utils.js.map +1 -1
  10. package/lib/commonjs/version.json +1 -1
  11. package/lib/module/components/Attachment/Gallery.js +25 -18
  12. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  13. package/lib/module/components/Channel/Channel.js +24 -15
  14. package/lib/module/components/Channel/Channel.js.map +1 -1
  15. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +14 -20
  16. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  17. package/lib/module/utils/utils.js +23 -11
  18. package/lib/module/utils/utils.js.map +1 -1
  19. package/lib/module/version.json +1 -1
  20. package/lib/typescript/components/Attachment/Gallery.d.ts +16 -1
  21. package/lib/typescript/components/Channel/Channel.d.ts +2 -2
  22. package/lib/typescript/utils/utils.d.ts +4 -1
  23. package/package.json +1 -1
  24. package/src/components/Attachment/Gallery.tsx +31 -9
  25. package/src/components/Channel/Channel.tsx +19 -2
  26. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +1 -3
  27. package/src/utils/__tests__/utils.test.js +19 -0
  28. package/src/utils/utils.ts +14 -1
  29. package/src/version.json +1 -1
package/README.md CHANGED
@@ -31,18 +31,6 @@
31
31
  - [Keep in mind](#-keep-in-mind)
32
32
  - [Contributing](#-contributing)
33
33
 
34
- ## 🔐 React Native Compatibility
35
-
36
- To use this library you need to ensure you match up with the correct version of React Native you are using.
37
-
38
- | `stream-chat-react-native` version | React Native Version | `stream-chat` Version |
39
- | ---------------------------------- | --------------------- | --------------------- |
40
- | `3.2.0` | `>= 0.60` | `>= 3.5.1` |
41
- | `3.0.0` | `>= 0.60` | `>= 3.0.0` |
42
- | `2.x.x` | `>= 0.60` | `< 3.0.0` |
43
- | `1.x.x` | `>= 0.59` | `< 3.0.0` |
44
- | `0.x.x` | `*` | `< 3.0.0` |
45
-
46
34
  ## 📖 React Native Chat Tutorial
47
35
 
48
36
  The best place to start is the [React Native Chat Tutorial](https://github.com/GetStream/stream-chat-react-native/wiki/Tutorial-v3.0). It teaches you how to use this SDK and also shows how to make frequently required changes.
@@ -63,7 +63,7 @@ var GalleryImage = function GalleryImage(props) {
63
63
  __self: _this,
64
64
  __source: {
65
65
  fileName: _jsxFileName,
66
- lineNumber: 53,
66
+ lineNumber: 54,
67
67
  columnNumber: 5
68
68
  }
69
69
  }));
@@ -111,7 +111,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
111
111
  legacyImageViewerSwipeBehaviour = props.legacyImageViewerSwipeBehaviour,
112
112
  message = props.message,
113
113
  messageId = props.messageId,
114
- messageText = props.messageText,
114
+ messageTextProp = props.messageText,
115
115
  _onLongPress = props.onLongPress,
116
116
  _onPress = props.onPress,
117
117
  _onPressIn = props.onPressIn,
@@ -172,6 +172,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
172
172
  return returnArray;
173
173
  }, []);
174
174
  var groupStyle = alignment + "_" + (groupStyles == null ? void 0 : (_groupStyles$ = groupStyles[0]) == null ? void 0 : _groupStyles$.toLowerCase == null ? void 0 : _groupStyles$.toLowerCase());
175
+ var messageText = messageTextProp || (message == null ? void 0 : message.text);
175
176
  return _react["default"].createElement(_reactNative.View, {
176
177
  style: [styles.galleryContainer, {
177
178
  width: width
@@ -180,7 +181,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
180
181
  __self: _this,
181
182
  __source: {
182
183
  fileName: _jsxFileName,
183
- lineNumber: 204,
184
+ lineNumber: 219,
184
185
  columnNumber: 5
185
186
  }
186
187
  }, galleryImages.map(function (column, colIndex) {
@@ -192,7 +193,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
192
193
  __self: _this,
193
194
  __source: {
194
195
  fileName: _jsxFileName,
195
- lineNumber: 215,
196
+ lineNumber: 230,
196
197
  columnNumber: 9
197
198
  }
198
199
  }, column.map(function (_ref, rowIndex) {
@@ -200,16 +201,22 @@ var GalleryWithContext = function GalleryWithContext(props) {
200
201
  url = _ref.url;
201
202
 
202
203
  var defaultOnPress = function defaultOnPress() {
203
- if (!legacyImageViewerSwipeBehaviour) {
204
+ if (!legacyImageViewerSwipeBehaviour && message) {
204
205
  setImages([message]);
206
+ setImage({
207
+ messageId: messageId || message.id,
208
+ url: url
209
+ });
210
+ setBlurType(blurType);
211
+ setOverlay('gallery');
212
+ } else if (legacyImageViewerSwipeBehaviour) {
213
+ setImage({
214
+ messageId: messageId || (message == null ? void 0 : message.id),
215
+ url: url
216
+ });
217
+ setBlurType(blurType);
218
+ setOverlay('gallery');
205
219
  }
206
-
207
- setImage({
208
- messageId: messageId,
209
- url: url
210
- });
211
- setBlurType(blurType);
212
- setOverlay('gallery');
213
220
  };
214
221
 
215
222
  return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({
@@ -250,7 +257,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
250
257
  __self: _this,
251
258
  __source: {
252
259
  fileName: _jsxFileName,
253
- lineNumber: 236,
260
+ lineNumber: 258,
254
261
  columnNumber: 15
255
262
  }
256
263
  }), _react["default"].createElement(MemoizedGalleryImage, {
@@ -266,7 +273,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
266
273
  __self: _this,
267
274
  __source: {
268
275
  fileName: _jsxFileName,
269
- lineNumber: 276,
276
+ lineNumber: 298,
270
277
  columnNumber: 17
271
278
  }
272
279
  }), colIndex === 1 && rowIndex === 1 && images.length > 3 ? _react["default"].createElement(_reactNative.View, {
@@ -276,7 +283,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
276
283
  __self: _this,
277
284
  __source: {
278
285
  fileName: _jsxFileName,
279
- lineNumber: 313,
286
+ lineNumber: 335,
280
287
  columnNumber: 19
281
288
  }
282
289
  }, _react["default"].createElement(_reactNative.Text, {
@@ -284,7 +291,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
284
291
  __self: _this,
285
292
  __source: {
286
293
  fileName: _jsxFileName,
287
- lineNumber: 321,
294
+ lineNumber: 343,
288
295
  columnNumber: 21
289
296
  }
290
297
  }, "+" + (images.length - 3))) : null);
@@ -308,7 +315,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
308
315
  var hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;
309
316
  if (!hasThreadRepliesEqual) return false;
310
317
  var imagesEqual = prevImages.length === nextImages.length && prevImages.every(function (image, index) {
311
- return image.image_url === nextImages[index].image_url && image.thumb_url === nextImages[index].thumb_url;
318
+ return (0, _utils.getUrlWithoutParams)(image.image_url) === (0, _utils.getUrlWithoutParams)(nextImages[index].image_url) && (0, _utils.getUrlWithoutParams)(image.thumb_url) === (0, _utils.getUrlWithoutParams)(nextImages[index].thumb_url);
312
319
  });
313
320
  if (!imagesEqual) return false;
314
321
  return true;
@@ -391,7 +398,7 @@ var Gallery = function Gallery(props) {
391
398
  __self: _this,
392
399
  __source: {
393
400
  fileName: _jsxFileName,
394
- lineNumber: 462,
401
+ lineNumber: 484,
395
402
  columnNumber: 5
396
403
  }
397
404
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Gallery.tsx"],"names":["GalleryImage","props","height","uri","rest","error","setError","includes","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MemoizedGalleryImage","React","memo","prevProps","nextProps","styles","StyleSheet","create","flex","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","padding","moreImagesContainer","alignItems","justifyContent","margin","moreImagesText","color","fontSize","fontWeight","GalleryWithContext","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","images","legacyImageViewerSwipeBehaviour","message","messageId","messageText","onLongPress","onPress","onPressIn","preventPress","setBlurType","setImage","setImages","setOverlay","threadList","theme","overlay","colors","blurType","imageGallery","messageSimple","gallery","galleryItemColumn","halfSize","image","size","width","length","galleryImages","slice","reduce","returnArray","currentImage","index","attachmentUrl","image_url","thumb_url","url","groupStyle","toLowerCase","map","column","colIndex","rowIndex","defaultOnPress","event","emitter","defaultHandler","borderBottomLeftRadius","borderBottomRightRadius","absoluteFillObject","backgroundColor","areEqual","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessageText","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessageText","messageTextEqual","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","MemoizedGallery","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetBlurType","propSetImage","propSetOverlay","propThreadList","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextAdditionalTouchableProps","contextSetBlurType","contextSetOverlay","reply_count","id","text","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Image,\n ImageProps,\n PixelRatio,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native';\n\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 { makeImageCompatibleUrl } from '../../utils/utils';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst GalleryImage: React.FC<\n Omit<ImageProps, 'height' | 'source'> & {\n height: number | string;\n uri: string;\n }\n> = (props) => {\n const { height, uri, ...rest } = props;\n\n const [error, setError] = useState(false);\n\n return (\n <Image\n key={uri}\n {...rest}\n onError={() => setError(true)}\n source={{\n uri: uri.includes('&h=%2A')\n ? error\n ? uri\n : uri.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`)\n : uri,\n }}\n testID='image-attachment-single'\n />\n );\n};\n\nconst MemoizedGalleryImage = React.memo(\n GalleryImage,\n (prevProps, nextProps) =>\n prevProps.height === nextProps.height && prevProps.uri === 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: { flex: 1, 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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ImageGalleryContextValue, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'additionalTouchableProps' | 'legacyImageViewerSwipeBehaviour'\n > &\n Pick<OverlayContextValue, 'setBlurType' | 'setOverlay'> & {\n hasThreadReplies?: boolean;\n messageId?: string;\n messageText?: string;\n };\n\nconst GalleryWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId,\n messageText,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { overlay },\n imageGallery: { blurType },\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n halfSize,\n image,\n imageContainer,\n moreImagesContainer,\n moreImagesText,\n size,\n width,\n },\n },\n },\n } = useTheme();\n\n if (!images?.length) return null;\n\n // [[{ height: number; url: string; }], [{ height: number; url: string; }, { height: number; url: string; }]]\n const galleryImages = images.slice(0, 4).reduce((returnArray, currentImage, index) => {\n const attachmentUrl = currentImage.image_url || currentImage.thumb_url;\n if (attachmentUrl) {\n const url = makeImageCompatibleUrl(attachmentUrl);\n if (images.length <= 2) {\n returnArray[0] = [...(returnArray[0] || []), { height: size || 200, url }];\n } else if (images.length === 3) {\n if (index === 0) {\n returnArray[0] = [{ height: size || 200, url }];\n } else {\n returnArray[1] = [...(returnArray[1] || []), { height: halfSize || 100, url }];\n }\n } else {\n returnArray[index % 2] = [\n ...(returnArray[index % 2] || []),\n { height: halfSize || 100, url },\n ];\n }\n }\n return returnArray;\n }, [] as { height: number | string; url: string }[][]);\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n width,\n },\n galleryContainer,\n ]}\n testID='image-multiple-container'\n >\n {galleryImages.map((column, colIndex) => (\n <View\n key={`gallery-item-column-${colIndex}`}\n style={[\n styles.flex,\n {\n flexDirection: images.length === 2 ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n >\n {column.map(({ height, url }, rowIndex) => {\n const defaultOnPress = () => {\n if (!legacyImageViewerSwipeBehaviour) {\n setImages([message]);\n }\n setImage({ messageId, url });\n setBlurType(blurType);\n setOverlay('gallery');\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${url}/${rowIndex}/${images.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 },\n imageContainer,\n ]}\n testID='image-multiple'\n {...additionalTouchableProps}\n >\n <MemoizedGalleryImage\n height={height}\n resizeMode='cover'\n style={[\n styles.flex,\n {\n borderBottomLeftRadius:\n (images.length === 1 ||\n (images.length === 2 && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 0) ||\n (images.length === 4 && colIndex === 0 && rowIndex === 1)) &&\n !messageText &&\n ((groupStyle !== 'left_bottom' && groupStyle !== 'left_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderBottomRightRadius:\n (images.length === 1 ||\n (colIndex === 1 && (images.length === 2 || rowIndex === 1))) &&\n !messageText &&\n ((groupStyle !== 'right_bottom' && groupStyle !== 'right_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderTopLeftRadius: colIndex === 0 && rowIndex === 0 ? 14 : 0,\n borderTopRightRadius:\n ((colIndex === 1 || images.length === 1) && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 1) ||\n (images.length === 2 && rowIndex === 1)\n ? 14\n : 0,\n },\n image,\n ]}\n uri={url}\n />\n {colIndex === 1 && rowIndex === 1 && images.length > 3 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${images.length - 3}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n messageText: prevMessageText,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n messageText: nextMessageText,\n } = nextProps;\n\n const messageTextEqual = prevMessageText === nextMessageText;\n if (!messageTextEqual) 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 image.image_url === nextImages[index].image_url &&\n image.thumb_url === nextImages[index].thumb_url,\n );\n if (!imagesEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n images: propImages,\n messageId,\n messageText,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setBlurType: propSetBlurType,\n setImage: propSetImage,\n setOverlay: propSetOverlay,\n threadList: propThreadList,\n } = props;\n\n const { setImage: contextSetImage, setImages } = useImageGalleryContext();\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 } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n legacyImageViewerSwipeBehaviour,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setBlurType: contextSetBlurType, setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n\n if (!images.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 setBlurType = propSetBlurType || contextSetBlurType;\n const setImage = propSetImage || contextSetImage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId: messageId || message?.id,\n messageText: messageText || message?.text,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
1
+ {"version":3,"sources":["Gallery.tsx"],"names":["GalleryImage","props","height","uri","rest","error","setError","includes","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MemoizedGalleryImage","React","memo","prevProps","nextProps","styles","StyleSheet","create","flex","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","padding","moreImagesContainer","alignItems","justifyContent","margin","moreImagesText","color","fontSize","fontWeight","GalleryWithContext","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","images","legacyImageViewerSwipeBehaviour","message","messageId","messageTextProp","messageText","onLongPress","onPress","onPressIn","preventPress","setBlurType","setImage","setImages","setOverlay","threadList","theme","overlay","colors","blurType","imageGallery","messageSimple","gallery","galleryItemColumn","halfSize","image","size","width","length","galleryImages","slice","reduce","returnArray","currentImage","index","attachmentUrl","image_url","thumb_url","url","groupStyle","toLowerCase","text","map","column","colIndex","rowIndex","defaultOnPress","id","event","emitter","defaultHandler","borderBottomLeftRadius","borderBottomRightRadius","absoluteFillObject","backgroundColor","areEqual","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessageText","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessageText","messageTextEqual","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","MemoizedGallery","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","propImages","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetBlurType","propSetImage","propSetOverlay","propThreadList","contextSetImage","contextAlignment","contextGroupStyles","contextImages","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextAdditionalTouchableProps","contextSetBlurType","contextSetOverlay","reply_count","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Image,\n ImageProps,\n PixelRatio,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} from 'react-native';\n\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 { getUrlWithoutParams, makeImageCompatibleUrl } from '../../utils/utils';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst GalleryImage: React.FC<\n Omit<ImageProps, 'height' | 'source'> & {\n height: number | string;\n uri: string;\n }\n> = (props) => {\n const { height, uri, ...rest } = props;\n\n const [error, setError] = useState(false);\n\n return (\n <Image\n key={uri}\n {...rest}\n onError={() => setError(true)}\n source={{\n uri: uri.includes('&h=%2A')\n ? error\n ? uri\n : uri.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`)\n : uri,\n }}\n testID='image-attachment-single'\n />\n );\n};\n\nconst MemoizedGalleryImage = React.memo(\n GalleryImage,\n (prevProps, nextProps) =>\n prevProps.height === nextProps.height && prevProps.uri === 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: { flex: 1, 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 At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ImageGalleryContextValue, 'setImage' | 'setImages'> &\n Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'additionalTouchableProps' | 'legacyImageViewerSwipeBehaviour'\n > &\n Pick<OverlayContextValue, 'setBlurType' | 'setOverlay'> & {\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[major]: remove messageId and messageText\n * TODO: Fix circular dependencies of imports\n */\n hasThreadReplies?: boolean;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n messageId?: string;\n messageText?: string;\n };\n\nconst GalleryWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId,\n messageText: messageTextProp,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { overlay },\n imageGallery: { blurType },\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n halfSize,\n image,\n imageContainer,\n moreImagesContainer,\n moreImagesText,\n size,\n width,\n },\n },\n },\n } = useTheme();\n\n if (!images?.length) return null;\n\n // [[{ height: number; url: string; }], [{ height: number; url: string; }, { height: number; url: string; }]]\n const galleryImages = images.slice(0, 4).reduce((returnArray, currentImage, index) => {\n const attachmentUrl = currentImage.image_url || currentImage.thumb_url;\n if (attachmentUrl) {\n const url = makeImageCompatibleUrl(attachmentUrl);\n if (images.length <= 2) {\n returnArray[0] = [...(returnArray[0] || []), { height: size || 200, url }];\n } else if (images.length === 3) {\n if (index === 0) {\n returnArray[0] = [{ height: size || 200, url }];\n } else {\n returnArray[1] = [...(returnArray[1] || []), { height: halfSize || 100, url }];\n }\n } else {\n returnArray[index % 2] = [\n ...(returnArray[index % 2] || []),\n { height: halfSize || 100, url },\n ];\n }\n }\n return returnArray;\n }, [] as { height: number | string; url: string }[][]);\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n const messageText = messageTextProp || message?.text;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n width,\n },\n galleryContainer,\n ]}\n testID='image-multiple-container'\n >\n {galleryImages.map((column, colIndex) => (\n <View\n key={`gallery-item-column-${colIndex}`}\n style={[\n styles.flex,\n {\n flexDirection: images.length === 2 ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n >\n {column.map(({ height, url }, 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: messageId || message.id, url });\n setBlurType(blurType);\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setImage({ messageId: messageId || message?.id, url });\n setBlurType(blurType);\n setOverlay('gallery');\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${url}/${rowIndex}/${images.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 },\n imageContainer,\n ]}\n testID='image-multiple'\n {...additionalTouchableProps}\n >\n <MemoizedGalleryImage\n height={height}\n resizeMode='cover'\n style={[\n styles.flex,\n {\n borderBottomLeftRadius:\n (images.length === 1 ||\n (images.length === 2 && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 0) ||\n (images.length === 4 && colIndex === 0 && rowIndex === 1)) &&\n !messageText &&\n ((groupStyle !== 'left_bottom' && groupStyle !== 'left_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderBottomRightRadius:\n (images.length === 1 ||\n (colIndex === 1 && (images.length === 2 || rowIndex === 1))) &&\n !messageText &&\n ((groupStyle !== 'right_bottom' && groupStyle !== 'right_single') ||\n (hasThreadReplies && !threadList))\n ? 14\n : 0,\n borderTopLeftRadius: colIndex === 0 && rowIndex === 0 ? 14 : 0,\n borderTopRightRadius:\n ((colIndex === 1 || images.length === 1) && rowIndex === 0) ||\n (images.length === 3 && colIndex === 0 && rowIndex === 1) ||\n (images.length === 2 && rowIndex === 1)\n ? 14\n : 0,\n },\n image,\n ]}\n uri={url}\n />\n {colIndex === 1 && rowIndex === 1 && images.length > 3 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${images.length - 3}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n messageText: prevMessageText,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n messageText: nextMessageText,\n } = nextProps;\n\n const messageTextEqual = prevMessageText === nextMessageText;\n if (!messageTextEqual) 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 return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<GalleryPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: GalleryProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n images: propImages,\n messageId,\n messageText,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setBlurType: propSetBlurType,\n setImage: propSetImage,\n setOverlay: propSetOverlay,\n threadList: propThreadList,\n } = props;\n\n const { setImage: contextSetImage, setImages } = useImageGalleryContext();\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 } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n legacyImageViewerSwipeBehaviour,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setBlurType: contextSetBlurType, setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n\n if (!images.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 setBlurType = propSetBlurType || contextSetBlurType;\n const setImage = propSetImage || contextSetImage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n messageId: messageId || message?.id,\n messageText: messageText || message?.text,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setBlurType,\n setImage,\n setImages,\n setOverlay,\n threadList,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
@@ -13,10 +13,10 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
13
13
 
14
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
15
 
16
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
-
18
16
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
19
17
 
18
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
+
20
20
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
21
21
 
22
22
  var _react = _interopRequireWildcard(require("react"));
@@ -193,7 +193,7 @@ var scrollToFirstUnreadThreshold = 4;
193
193
  var defaultThrottleInterval = 500;
194
194
  var defaultDebounceInterval = 500;
195
195
  var throttleOptions = {
196
- leading: false,
196
+ leading: true,
197
197
  trailing: true
198
198
  };
199
199
  var debounceOptions = {
@@ -361,6 +361,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
361
361
  mutesEnabledProp = props.mutesEnabled,
362
362
  muteUser = props.muteUser,
363
363
  myMessageTheme = props.myMessageTheme,
364
+ _props$newMessageStat = props.newMessageStateUpdateThrottleInterval,
365
+ newMessageStateUpdateThrottleInterval = _props$newMessageStat === void 0 ? defaultThrottleInterval : _props$newMessageStat,
364
366
  _props$NetworkDownInd = props.NetworkDownIndicator,
365
367
  NetworkDownIndicator = _props$NetworkDownInd === void 0 ? _NetworkDownIndicator.NetworkDownIndicator : _props$NetworkDownInd,
366
368
  _props$numberOfLines = props.numberOfLines,
@@ -584,6 +586,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
584
586
  (0, _streamChat.logChatPromiseExecution)(channel.markRead(), 'mark read');
585
587
  }
586
588
  }, defaultThrottleInterval, throttleOptions)).current;
589
+ var copyMessagesState = (0, _react.useRef)((0, _throttle["default"])(function () {
590
+ if (channel) {
591
+ setMessages((0, _toConsumableArray2["default"])(channel.state.messages));
592
+ }
593
+ }, newMessageStateUpdateThrottleInterval, throttleOptions)).current;
587
594
  var copyTypingState = (0, _react.useRef)((0, _throttle["default"])(function () {
588
595
  if (channel) {
589
596
  setTyping((0, _extends2["default"])({}, channel.state.typing));
@@ -640,6 +647,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
640
647
  copyTypingState();
641
648
  } else if (event.type === 'message.read') {
642
649
  copyReadState();
650
+ } else if (event.type === 'message.new') {
651
+ copyMessagesState();
643
652
  } else if (channel) {
644
653
  copyChannelState();
645
654
  }
@@ -1947,7 +1956,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1947
1956
  __self: _this,
1948
1957
  __source: {
1949
1958
  fileName: _jsxFileName,
1950
- lineNumber: 1767,
1959
+ lineNumber: 1784,
1951
1960
  columnNumber: 12
1952
1961
  }
1953
1962
  });
@@ -1962,7 +1971,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1962
1971
  __self: _this,
1963
1972
  __source: {
1964
1973
  fileName: _jsxFileName,
1965
- lineNumber: 1772,
1974
+ lineNumber: 1789,
1966
1975
  columnNumber: 7
1967
1976
  }
1968
1977
  }, t('Please select a channel first'));
@@ -1976,7 +1985,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1976
1985
  __self: _this,
1977
1986
  __source: {
1978
1987
  fileName: _jsxFileName,
1979
- lineNumber: 1779,
1988
+ lineNumber: 1796,
1980
1989
  columnNumber: 5
1981
1990
  }
1982
1991
  }), _react["default"].createElement(_ChannelContext.ChannelProvider, {
@@ -1984,7 +1993,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1984
1993
  __self: _this,
1985
1994
  __source: {
1986
1995
  fileName: _jsxFileName,
1987
- lineNumber: 1785,
1996
+ lineNumber: 1802,
1988
1997
  columnNumber: 7
1989
1998
  }
1990
1999
  }, _react["default"].createElement(_TypingContext.TypingProvider, {
@@ -1992,7 +2001,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1992
2001
  __self: _this,
1993
2002
  __source: {
1994
2003
  fileName: _jsxFileName,
1995
- lineNumber: 1786,
2004
+ lineNumber: 1803,
1996
2005
  columnNumber: 9
1997
2006
  }
1998
2007
  }, _react["default"].createElement(_PaginatedMessageListContext.PaginatedMessageListProvider, {
@@ -2000,7 +2009,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2000
2009
  __self: _this,
2001
2010
  __source: {
2002
2011
  fileName: _jsxFileName,
2003
- lineNumber: 1787,
2012
+ lineNumber: 1804,
2004
2013
  columnNumber: 11
2005
2014
  }
2006
2015
  }, _react["default"].createElement(_MessagesContext.MessagesProvider, {
@@ -2008,7 +2017,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2008
2017
  __self: _this,
2009
2018
  __source: {
2010
2019
  fileName: _jsxFileName,
2011
- lineNumber: 1788,
2020
+ lineNumber: 1805,
2012
2021
  columnNumber: 13
2013
2022
  }
2014
2023
  }, _react["default"].createElement(_ThreadContext.ThreadProvider, {
@@ -2016,7 +2025,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2016
2025
  __self: _this,
2017
2026
  __source: {
2018
2027
  fileName: _jsxFileName,
2019
- lineNumber: 1789,
2028
+ lineNumber: 1806,
2020
2029
  columnNumber: 15
2021
2030
  }
2022
2031
  }, _react["default"].createElement(_SuggestionsContext.SuggestionsProvider, {
@@ -2024,7 +2033,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2024
2033
  __self: _this,
2025
2034
  __source: {
2026
2035
  fileName: _jsxFileName,
2027
- lineNumber: 1790,
2036
+ lineNumber: 1807,
2028
2037
  columnNumber: 17
2029
2038
  }
2030
2039
  }, _react["default"].createElement(_MessageInputContext.MessageInputProvider, {
@@ -2032,7 +2041,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2032
2041
  __self: _this,
2033
2042
  __source: {
2034
2043
  fileName: _jsxFileName,
2035
- lineNumber: 1791,
2044
+ lineNumber: 1808,
2036
2045
  columnNumber: 19
2037
2046
  }
2038
2047
  }, _react["default"].createElement(_reactNative.View, {
@@ -2042,7 +2051,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2042
2051
  __self: _this,
2043
2052
  __source: {
2044
2053
  fileName: _jsxFileName,
2045
- lineNumber: 1792,
2054
+ lineNumber: 1809,
2046
2055
  columnNumber: 21
2047
2056
  }
2048
2057
  }, children)))))))));
@@ -2062,7 +2071,7 @@ var Channel = function Channel(props) {
2062
2071
  __self: _this,
2063
2072
  __source: {
2064
2073
  fileName: _jsxFileName,
2065
- lineNumber: 1837,
2074
+ lineNumber: 1854,
2066
2075
  columnNumber: 5
2067
2076
  }
2068
2077
  }));