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.
- package/README.md +0 -12
- package/lib/commonjs/components/Attachment/Gallery.js +25 -18
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +24 -15
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +14 -20
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/utils/utils.js +23 -11
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Gallery.js +25 -18
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +24 -15
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +14 -20
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/utils/utils.js +23 -11
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Gallery.d.ts +16 -1
- package/lib/typescript/components/Channel/Channel.d.ts +2 -2
- package/lib/typescript/utils/utils.d.ts +4 -1
- package/package.json +1 -1
- package/src/components/Attachment/Gallery.tsx +31 -9
- package/src/components/Channel/Channel.tsx +19 -2
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +1 -3
- package/src/utils/__tests__/utils.test.js +19 -0
- package/src/utils/utils.ts +14 -1
- 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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
+
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
2074
|
+
lineNumber: 1854,
|
|
2066
2075
|
columnNumber: 5
|
|
2067
2076
|
}
|
|
2068
2077
|
}));
|