stream-chat-react-native-core 5.8.1-beta.3 → 5.9.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +38 -65
  2. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  3. package/lib/commonjs/components/ChannelList/ChannelList.js +6 -2
  4. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  5. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +22 -17
  6. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  7. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +17 -7
  8. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  9. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +22 -21
  10. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  11. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +82 -112
  12. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  13. package/lib/commonjs/types/types.js.map +1 -1
  14. package/lib/commonjs/version.json +1 -1
  15. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +38 -65
  16. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  17. package/lib/module/components/ChannelList/ChannelList.js +6 -2
  18. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  19. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +22 -17
  20. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  21. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +17 -7
  22. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  23. package/lib/module/components/MessageInput/FileUploadPreview.js +22 -21
  24. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  25. package/lib/module/contexts/messageInputContext/MessageInputContext.js +82 -112
  26. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  27. package/lib/module/types/types.js.map +1 -1
  28. package/lib/module/version.json +1 -1
  29. package/lib/typescript/components/ChannelList/ChannelList.d.ts +23 -0
  30. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessage.d.ts +3 -2
  31. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts +2 -1
  32. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -6
  33. package/lib/typescript/types/types.d.ts +1 -0
  34. package/package.json +1 -1
  35. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +3 -5
  36. package/src/components/ChannelList/ChannelList.tsx +34 -0
  37. package/src/components/ChannelList/__tests__/ChannelList.test.js +37 -0
  38. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +29 -19
  39. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +10 -0
  40. package/src/components/MessageInput/FileUploadPreview.tsx +1 -0
  41. package/src/contexts/messageInputContext/MessageInputContext.tsx +10 -32
  42. package/src/types/types.ts +1 -0
  43. package/src/version.json +1 -1
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.renderAttachmentPickerItem = void 0;
6
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
6
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
8
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
9
7
  var _react = _interopRequireDefault(require("react"));
10
8
  var _reactNative = require("react-native");
11
9
  var _bottomSheet = require("@gorhom/bottom-sheet");
@@ -13,7 +11,6 @@ var _dayjs = _interopRequireDefault(require("dayjs"));
13
11
  var _mimeTypes = require("mime-types");
14
12
  var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
15
13
  var _icons = require("../../../icons");
16
- var _native = require("../../../native");
17
14
  var _utils = require("../../../utils/utils");
18
15
  var _this = this,
19
16
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx";
@@ -47,60 +44,36 @@ var AttachmentVideo = function AttachmentVideo(props) {
47
44
  durationLabel = formattedVideoDuration;
48
45
  }
49
46
  var size = (0, _utils.vw)(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;
50
- var onPressVideo = function () {
51
- var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
52
- var localAssetURI;
53
- return _regenerator["default"].wrap(function _callee$(_context) {
54
- while (1) switch (_context.prev = _context.next) {
55
- case 0:
56
- _context.t0 = asset.id;
57
- if (!_context.t0) {
58
- _context.next = 5;
59
- break;
60
- }
61
- _context.next = 4;
62
- return (0, _native.getLocalAssetUri)(asset.id);
63
- case 4:
64
- _context.t0 = _context.sent;
65
- case 5:
66
- localAssetURI = _context.t0;
67
- if (selected) {
68
- setSelectedFiles(function (files) {
69
- return files.filter(function (file) {
70
- return file.uri !== asset.uri;
71
- });
72
- });
73
- } else {
74
- setSelectedFiles(function (files) {
75
- if (numberOfUploads >= maxNumberOfFiles) {
76
- _reactNative.Alert.alert('Maximum number of files reached');
77
- return files;
78
- }
79
- return [].concat((0, _toConsumableArray2["default"])(files), [{
80
- duration: durationLabel,
81
- name: asset.filename,
82
- size: asset.fileSize,
83
- type: 'video',
84
- uri: localAssetURI || asset.uri
85
- }]);
86
- });
87
- }
88
- case 7:
89
- case "end":
90
- return _context.stop();
47
+ var onPressVideo = function onPressVideo() {
48
+ if (selected) {
49
+ setSelectedFiles(function (files) {
50
+ return files.filter(function (file) {
51
+ return file.uri !== asset.uri;
52
+ });
53
+ });
54
+ } else {
55
+ setSelectedFiles(function (files) {
56
+ if (numberOfUploads >= maxNumberOfFiles) {
57
+ _reactNative.Alert.alert('Maximum number of files reached');
58
+ return files;
91
59
  }
92
- }, _callee);
93
- }));
94
- return function onPressVideo() {
95
- return _ref.apply(this, arguments);
96
- };
97
- }();
60
+ return [].concat((0, _toConsumableArray2["default"])(files), [{
61
+ duration: durationLabel,
62
+ id: asset.id,
63
+ name: asset.filename,
64
+ size: asset.fileSize,
65
+ type: 'video',
66
+ uri: asset.uri
67
+ }]);
68
+ });
69
+ }
70
+ };
98
71
  return _react["default"].createElement(_bottomSheet.TouchableOpacity, {
99
72
  onPress: onPressVideo,
100
73
  __self: _this,
101
74
  __source: {
102
75
  fileName: _jsxFileName,
103
- lineNumber: 93,
76
+ lineNumber: 91,
104
77
  columnNumber: 5
105
78
  }
106
79
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -115,7 +88,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
115
88
  __self: _this,
116
89
  __source: {
117
90
  fileName: _jsxFileName,
118
- lineNumber: 94,
91
+ lineNumber: 92,
119
92
  columnNumber: 7
120
93
  }
121
94
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -125,14 +98,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
125
98
  __self: _this,
126
99
  __source: {
127
100
  fileName: _jsxFileName,
128
- lineNumber: 106,
101
+ lineNumber: 104,
129
102
  columnNumber: 11
130
103
  }
131
104
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
132
105
  __self: _this,
133
106
  __source: {
134
107
  fileName: _jsxFileName,
135
- lineNumber: 107,
108
+ lineNumber: 105,
136
109
  columnNumber: 13
137
110
  }
138
111
  })), _react["default"].createElement(_reactNative.View, {
@@ -140,7 +113,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
140
113
  __self: _this,
141
114
  __source: {
142
115
  fileName: _jsxFileName,
143
- lineNumber: 110,
116
+ lineNumber: 108,
144
117
  columnNumber: 9
145
118
  }
146
119
  }, _react["default"].createElement(_icons.Recorder, {
@@ -150,7 +123,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
150
123
  __self: _this,
151
124
  __source: {
152
125
  fileName: _jsxFileName,
153
- lineNumber: 111,
126
+ lineNumber: 109,
154
127
  columnNumber: 11
155
128
  }
156
129
  }), videoDuration ? _react["default"].createElement(_reactNative.Text, {
@@ -160,7 +133,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
160
133
  __self: _this,
161
134
  __source: {
162
135
  fileName: _jsxFileName,
163
- lineNumber: 113,
136
+ lineNumber: 111,
164
137
  columnNumber: 13
165
138
  }
166
139
  }, durationLabel) : null)));
@@ -203,7 +176,7 @@ var AttachmentImage = function AttachmentImage(props) {
203
176
  __self: _this,
204
177
  __source: {
205
178
  fileName: _jsxFileName,
206
- lineNumber: 159,
179
+ lineNumber: 157,
207
180
  columnNumber: 5
208
181
  }
209
182
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -218,7 +191,7 @@ var AttachmentImage = function AttachmentImage(props) {
218
191
  __self: _this,
219
192
  __source: {
220
193
  fileName: _jsxFileName,
221
- lineNumber: 160,
194
+ lineNumber: 158,
222
195
  columnNumber: 7
223
196
  }
224
197
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -228,14 +201,14 @@ var AttachmentImage = function AttachmentImage(props) {
228
201
  __self: _this,
229
202
  __source: {
230
203
  fileName: _jsxFileName,
231
- lineNumber: 172,
204
+ lineNumber: 170,
232
205
  columnNumber: 11
233
206
  }
234
207
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
235
208
  __self: _this,
236
209
  __source: {
237
210
  fileName: _jsxFileName,
238
- lineNumber: 173,
211
+ lineNumber: 171,
239
212
  columnNumber: 13
240
213
  }
241
214
  }))));
@@ -249,8 +222,8 @@ var getFileType = function getFileType(asset) {
249
222
  return asset.type === 'video' ? 'video' : 'image';
250
223
  }
251
224
  };
252
- var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref2) {
253
- var item = _ref2.item;
225
+ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
226
+ var item = _ref.item;
254
227
  var asset = item.asset,
255
228
  ImageOverlaySelectedComponent = item.ImageOverlaySelectedComponent,
256
229
  maxNumberOfFiles = item.maxNumberOfFiles,
@@ -271,7 +244,7 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref2) {
271
244
  __self: _this,
272
245
  __source: {
273
246
  fileName: _jsxFileName,
274
- lineNumber: 206,
247
+ lineNumber: 204,
275
248
  columnNumber: 5
276
249
  }
277
250
  }) : _react["default"].createElement(AttachmentVideo, {
@@ -285,7 +258,7 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref2) {
285
258
  __self: _this,
286
259
  __source: {
287
260
  fileName: _jsxFileName,
288
- lineNumber: 216,
261
+ lineNumber: 214,
289
262
  columnNumber: 5
290
263
  }
291
264
  });
@@ -1 +1 @@
1
- {"version":3,"names":["AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","useTheme","theme","attachmentPicker","durationText","image","imageOverlay","colors","overlay","white","duration","playableDuration","uri","videoDuration","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","id","getLocalAssetUri","localAssetURI","files","filter","file","Alert","alert","name","filename","fileSize","type","height","margin","width","styles","backgroundColor","videoView","color","AttachmentImage","setSelectedImages","onPressImage","images","getFileType","contentType","lookup","startsWith","renderAttachmentPickerItem","item","fileType","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport { getLocalAssetUri } from '../../../native';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration, playableDuration, uri } = asset;\n\n const videoDuration = duration ? duration : playableDuration;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = async () => {\n // For the case of expo messaging app where you need to fetch the asset uri from asset id\n const localAssetURI = asset.id && (await getLocalAssetUri(asset.id));\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n return [\n ...files,\n {\n duration: durationLabel,\n name: asset.filename,\n size: asset.fileSize,\n type: 'video',\n uri: localAssetURI || asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst getFileType = (asset: Asset) => {\n const { filename } = asset;\n if (filename) {\n const contentType = lookup(filename) || 'multipart/form-data';\n return contentType.startsWith('image/') ? 'image' : 'video';\n } else {\n return asset.type === 'video' ? 'video' : 'image';\n }\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n const fileType = getFileType(asset);\n\n return fileType === 'image' ? (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n ) : (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","useTheme","theme","attachmentPicker","durationText","image","imageOverlay","colors","overlay","white","duration","playableDuration","uri","videoDuration","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","id","name","filename","fileSize","type","height","margin","width","styles","backgroundColor","videoView","color","AttachmentImage","setSelectedImages","onPressImage","images","getFileType","contentType","lookup","startsWith","renderAttachmentPickerItem","item","fileType","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration, playableDuration, uri } = asset;\n\n const videoDuration = duration ? duration : playableDuration;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n name: asset.filename,\n size: asset.fileSize,\n type: 'video',\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst getFileType = (asset: Asset) => {\n const { filename } = asset;\n if (filename) {\n const contentType = lookup(filename) || 'multipart/form-data';\n return contentType.startsWith('image/') ? 'image' : 'video';\n } else {\n return asset.type === 'video' ? 'video' : 'image';\n }\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n const fileType = getFileType(asset);\n\n return fileType === 'image' ? (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n ) : (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
@@ -74,6 +74,8 @@ var ChannelList = function ChannelList(props) {
74
74
  onMessageNew = props.onMessageNew,
75
75
  onRemovedFromChannel = props.onRemovedFromChannel,
76
76
  onSelect = props.onSelect,
77
+ onNewMessage = props.onNewMessage,
78
+ onNewMessageNotification = props.onNewMessageNotification,
77
79
  _props$options = props.options,
78
80
  options = _props$options === void 0 ? DEFAULT_OPTIONS : _props$options,
79
81
  _props$Preview = props.Preview,
@@ -140,10 +142,12 @@ var ChannelList = function ChannelList(props) {
140
142
  });
141
143
  (0, _useNewMessage.useNewMessage)({
142
144
  lockChannelOrder: lockChannelOrder,
145
+ onNewMessage: onNewMessage,
143
146
  setChannels: setChannels
144
147
  });
145
148
  (0, _useNewMessageNotification.useNewMessageNotification)({
146
149
  onMessageNew: onMessageNew,
150
+ onNewMessageNotification: onNewMessageNotification,
147
151
  setChannels: setChannels
148
152
  });
149
153
  (0, _useRemovedFromChannelNotification.useRemovedFromChannelNotification)({
@@ -209,14 +213,14 @@ var ChannelList = function ChannelList(props) {
209
213
  __self: _this,
210
214
  __source: {
211
215
  fileName: _jsxFileName,
212
- lineNumber: 370,
216
+ lineNumber: 404,
213
217
  columnNumber: 5
214
218
  }
215
219
  }, _react["default"].createElement(List, {
216
220
  __self: _this,
217
221
  __source: {
218
222
  fileName: _jsxFileName,
219
- lineNumber: 371,
223
+ lineNumber: 405,
220
224
  columnNumber: 7
221
225
  }
222
226
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_FILTERS","DEFAULT_OPTIONS","DEFAULT_SORT","ChannelList","props","additionalFlatListProps","EmptyStateIndicator","EmptyStateIndicatorDefault","FooterLoadingIndicator","ChannelListFooterLoadingIndicator","filters","HeaderErrorIndicator","ChannelListHeaderErrorIndicator","HeaderNetworkDownIndicator","ChannelListHeaderNetworkDownIndicator","List","ChannelListMessenger","ListHeaderComponent","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","ChannelListLoadingIndicator","loadMoreThreshold","lockChannelOrder","maxUnreadCount","numberOfSkeletons","onAddedToChannel","onChannelDeleted","onChannelHidden","onChannelVisible","onChannelTruncated","onChannelUpdated","onMessageNew","onRemovedFromChannel","onSelect","options","Preview","ChannelPreviewMessenger","PreviewAvatar","PreviewMessage","PreviewStatus","PreviewTitle","PreviewUnreadCount","setFlatListRef","Skeleton","SkeletonDefault","sort","useState","forceUpdate","setForceUpdate","useChatContext","enableOfflineSupport","usePaginatedChannels","channels","error","hasNextPage","loadingChannels","loadingNextPage","loadNextPage","refreshing","refreshList","reloadList","setChannels","staticChannelsActive","useAddedToChannelNotification","useChannelDeleted","useChannelHidden","useChannelTruncated","useChannelUpdated","useChannelVisible","useNewMessage","useNewMessageNotification","useRemovedFromChannelNotification","useUserPresence","channelIdsStr","reduce","acc","channel","cid","useEffect","upsertCidsForQuery","cids","map","c","channelsContext","useCreateChannelsContext","ref"],"sources":["ChannelList.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { FlatList } from 'react-native-gesture-handler';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort, Event } from 'stream-chat';\n\nimport { ChannelListFooterLoadingIndicator } from './ChannelListFooterLoadingIndicator';\nimport { ChannelListHeaderErrorIndicator } from './ChannelListHeaderErrorIndicator';\nimport { ChannelListHeaderNetworkDownIndicator } from './ChannelListHeaderNetworkDownIndicator';\nimport { ChannelListLoadingIndicator } from './ChannelListLoadingIndicator';\nimport { ChannelListMessenger, ChannelListMessengerProps } from './ChannelListMessenger';\nimport { useAddedToChannelNotification } from './hooks/listeners/useAddedToChannelNotification';\nimport { useChannelDeleted } from './hooks/listeners/useChannelDeleted';\nimport { useChannelHidden } from './hooks/listeners/useChannelHidden';\nimport { useChannelTruncated } from './hooks/listeners/useChannelTruncated';\nimport { useChannelUpdated } from './hooks/listeners/useChannelUpdated';\nimport { useChannelVisible } from './hooks/listeners/useChannelVisible';\nimport { useNewMessage } from './hooks/listeners/useNewMessage';\nimport { useNewMessageNotification } from './hooks/listeners/useNewMessageNotification';\nimport { useRemovedFromChannelNotification } from './hooks/listeners/useRemovedFromChannelNotification';\nimport { useUserPresence } from './hooks/listeners/useUserPresence';\nimport { useCreateChannelsContext } from './hooks/useCreateChannelsContext';\nimport { usePaginatedChannels } from './hooks/usePaginatedChannels';\nimport { Skeleton as SkeletonDefault } from './Skeleton';\n\nimport {\n ChannelsContextValue,\n ChannelsProvider,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { upsertCidsForQuery } from '../../store/apis/upsertCidsForQuery';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreviewMessenger } from '../ChannelPreview/ChannelPreviewMessenger';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport { LoadingErrorIndicator as LoadingErrorIndicatorDefault } from '../Indicators/LoadingErrorIndicator';\n\nexport type ChannelListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<\n ChannelsContextValue<StreamChatGenerics>,\n | 'additionalFlatListProps'\n | 'EmptyStateIndicator'\n | 'FooterLoadingIndicator'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'LoadingErrorIndicator'\n | 'LoadingIndicator'\n | 'Preview'\n | 'setFlatListRef'\n | 'ListHeaderComponent'\n | 'onSelect'\n | 'PreviewAvatar'\n | 'PreviewMessage'\n | 'PreviewStatus'\n | 'PreviewTitle'\n | 'PreviewUnreadCount'\n | 'loadMoreThreshold'\n | 'Skeleton'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n >\n> & {\n /**\n * Object containing channel query filters\n *\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available filter fields\n *\n * @overrideType object\n * */\n filters?: ChannelFilters<StreamChatGenerics>;\n /**\n * Custom UI component to display the list of channels\n *\n * Default: [ChannelListMessenger](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-list-messenger/)\n */\n List?: React.ComponentType<ChannelListMessengerProps<StreamChatGenerics>>;\n /**\n * If set to true, channels won't dynamically sort by most recent message, defaults to false\n */\n lockChannelOrder?: boolean;\n /**\n * Function that overrides default behavior when a user gets added to a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event Object](https://getstream.io/chat/docs/event_object) corresponding to `notification.added_to_channel` event\n *\n * @overrideType Function\n * */\n onAddedToChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets deleted. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.deleted` event\n *\n * @overrideType Function\n * */\n onChannelDeleted?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets hidden. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.hidden` event\n *\n * @overrideType Function\n * */\n onChannelHidden?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function to customize behavior when a channel gets truncated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.truncated` event\n *\n * @overrideType Function\n * */\n onChannelTruncated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets updated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.updated` event\n *\n * @overrideType Function\n * */\n onChannelUpdated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets visible. In absence of this prop, the channel will be added to the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.visible` event\n *\n * @overrideType Function\n * */\n onChannelVisible?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Override the default listener/handler for event `notification.message_new`\n * This event is received on channel, which is not being watched.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.message_new` event\n *\n * @overrideType Function\n * */\n onMessageNew?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a user gets removed from a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.removed_from_channel` event\n *\n * @overrideType Function\n * */\n onRemovedFromChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Object containing channel query options\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available option fields\n * */\n options?: ChannelOptions;\n /**\n * Object containing channel sort parameters\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available sorting fields\n * */\n sort?: ChannelSort<StreamChatGenerics>;\n};\n\nconst DEFAULT_FILTERS = {};\nconst DEFAULT_OPTIONS = {};\nconst DEFAULT_SORT = {};\n\n/**\n * This component fetches a list of channels, allowing you to select the channel you want to open.\n * The ChannelList doesn't provide any UI for the underlying React Native FlatList. UI is determined by the `List` component which is\n * provided to the ChannelList component as a prop. By default, the ChannelListMessenger component is used as the list UI.\n *\n * @example ./ChannelList.md\n */\nexport const ChannelList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps = {},\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n FooterLoadingIndicator = ChannelListFooterLoadingIndicator,\n filters = DEFAULT_FILTERS,\n HeaderErrorIndicator = ChannelListHeaderErrorIndicator,\n HeaderNetworkDownIndicator = ChannelListHeaderNetworkDownIndicator,\n List = ChannelListMessenger,\n ListHeaderComponent,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = ChannelListLoadingIndicator,\n // https://stackoverflow.com/a/60666252/10826415\n loadMoreThreshold = 0.1,\n lockChannelOrder = false,\n maxUnreadCount = 255,\n numberOfSkeletons = 6,\n onAddedToChannel,\n onChannelDeleted,\n onChannelHidden,\n onChannelVisible,\n onChannelTruncated,\n onChannelUpdated,\n onMessageNew,\n onRemovedFromChannel,\n onSelect,\n options = DEFAULT_OPTIONS,\n Preview = ChannelPreviewMessenger,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n setFlatListRef,\n Skeleton = SkeletonDefault,\n sort = DEFAULT_SORT,\n } = props;\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n staticChannelsActive,\n } = usePaginatedChannels<StreamChatGenerics>({\n enableOfflineSupport,\n filters,\n options,\n setForceUpdate,\n sort,\n });\n\n // Setup event listeners\n useAddedToChannelNotification({\n onAddedToChannel,\n setChannels,\n });\n\n useChannelDeleted({\n onChannelDeleted,\n setChannels,\n });\n\n useChannelHidden({\n onChannelHidden,\n setChannels,\n });\n\n useChannelTruncated({\n onChannelTruncated,\n refreshList,\n setChannels,\n setForceUpdate,\n });\n\n useChannelUpdated({\n onChannelUpdated,\n setChannels,\n });\n\n useChannelVisible({\n onChannelVisible,\n setChannels,\n });\n\n useNewMessage({\n lockChannelOrder,\n setChannels,\n });\n\n useNewMessageNotification({\n onMessageNew,\n setChannels,\n });\n\n useRemovedFromChannelNotification({\n onRemovedFromChannel,\n setChannels,\n });\n\n useUserPresence({\n setChannels,\n });\n\n const channelIdsStr = channels?.reduce((acc, channel) => `${acc}${channel.cid}`, '');\n\n useEffect(() => {\n if (channels === null || staticChannelsActive || !enableOfflineSupport) {\n return;\n }\n\n upsertCidsForQuery({\n cids: channels.map((c) => c.cid),\n filters,\n sort,\n });\n }, [channelIdsStr, staticChannelsActive]);\n\n const channelsContext = useCreateChannelsContext({\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n hasNextPage,\n HeaderErrorIndicator,\n HeaderNetworkDownIndicator,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n maxUnreadCount,\n numberOfSkeletons,\n onSelect,\n Preview,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef: (ref: FlatList<Channel<StreamChatGenerics>> | null) => {\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n },\n Skeleton,\n });\n\n return (\n <ChannelsProvider value={channelsContext}>\n <List<StreamChatGenerics> />\n </ChannelsProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["DEFAULT_FILTERS","DEFAULT_OPTIONS","DEFAULT_SORT","ChannelList","props","additionalFlatListProps","EmptyStateIndicator","EmptyStateIndicatorDefault","FooterLoadingIndicator","ChannelListFooterLoadingIndicator","filters","HeaderErrorIndicator","ChannelListHeaderErrorIndicator","HeaderNetworkDownIndicator","ChannelListHeaderNetworkDownIndicator","List","ChannelListMessenger","ListHeaderComponent","LoadingErrorIndicator","LoadingErrorIndicatorDefault","LoadingIndicator","ChannelListLoadingIndicator","loadMoreThreshold","lockChannelOrder","maxUnreadCount","numberOfSkeletons","onAddedToChannel","onChannelDeleted","onChannelHidden","onChannelVisible","onChannelTruncated","onChannelUpdated","onMessageNew","onRemovedFromChannel","onSelect","onNewMessage","onNewMessageNotification","options","Preview","ChannelPreviewMessenger","PreviewAvatar","PreviewMessage","PreviewStatus","PreviewTitle","PreviewUnreadCount","setFlatListRef","Skeleton","SkeletonDefault","sort","useState","forceUpdate","setForceUpdate","useChatContext","enableOfflineSupport","usePaginatedChannels","channels","error","hasNextPage","loadingChannels","loadingNextPage","loadNextPage","refreshing","refreshList","reloadList","setChannels","staticChannelsActive","useAddedToChannelNotification","useChannelDeleted","useChannelHidden","useChannelTruncated","useChannelUpdated","useChannelVisible","useNewMessage","useNewMessageNotification","useRemovedFromChannelNotification","useUserPresence","channelIdsStr","reduce","acc","channel","cid","useEffect","upsertCidsForQuery","cids","map","c","channelsContext","useCreateChannelsContext","ref"],"sources":["ChannelList.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport type { FlatList } from 'react-native-gesture-handler';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort, Event } from 'stream-chat';\n\nimport { ChannelListFooterLoadingIndicator } from './ChannelListFooterLoadingIndicator';\nimport { ChannelListHeaderErrorIndicator } from './ChannelListHeaderErrorIndicator';\nimport { ChannelListHeaderNetworkDownIndicator } from './ChannelListHeaderNetworkDownIndicator';\nimport { ChannelListLoadingIndicator } from './ChannelListLoadingIndicator';\nimport { ChannelListMessenger, ChannelListMessengerProps } from './ChannelListMessenger';\nimport { useAddedToChannelNotification } from './hooks/listeners/useAddedToChannelNotification';\nimport { useChannelDeleted } from './hooks/listeners/useChannelDeleted';\nimport { useChannelHidden } from './hooks/listeners/useChannelHidden';\nimport { useChannelTruncated } from './hooks/listeners/useChannelTruncated';\nimport { useChannelUpdated } from './hooks/listeners/useChannelUpdated';\nimport { useChannelVisible } from './hooks/listeners/useChannelVisible';\nimport { useNewMessage } from './hooks/listeners/useNewMessage';\nimport { useNewMessageNotification } from './hooks/listeners/useNewMessageNotification';\nimport { useRemovedFromChannelNotification } from './hooks/listeners/useRemovedFromChannelNotification';\nimport { useUserPresence } from './hooks/listeners/useUserPresence';\nimport { useCreateChannelsContext } from './hooks/useCreateChannelsContext';\nimport { usePaginatedChannels } from './hooks/usePaginatedChannels';\nimport { Skeleton as SkeletonDefault } from './Skeleton';\n\nimport {\n ChannelsContextValue,\n ChannelsProvider,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { upsertCidsForQuery } from '../../store/apis/upsertCidsForQuery';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreviewMessenger } from '../ChannelPreview/ChannelPreviewMessenger';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport { LoadingErrorIndicator as LoadingErrorIndicatorDefault } from '../Indicators/LoadingErrorIndicator';\n\nexport type ChannelListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<\n ChannelsContextValue<StreamChatGenerics>,\n | 'additionalFlatListProps'\n | 'EmptyStateIndicator'\n | 'FooterLoadingIndicator'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'LoadingErrorIndicator'\n | 'LoadingIndicator'\n | 'Preview'\n | 'setFlatListRef'\n | 'ListHeaderComponent'\n | 'onSelect'\n | 'PreviewAvatar'\n | 'PreviewMessage'\n | 'PreviewStatus'\n | 'PreviewTitle'\n | 'PreviewUnreadCount'\n | 'loadMoreThreshold'\n | 'Skeleton'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n >\n> & {\n /**\n * Object containing channel query filters\n *\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available filter fields\n *\n * @overrideType object\n * */\n filters?: ChannelFilters<StreamChatGenerics>;\n /**\n * Custom UI component to display the list of channels\n *\n * Default: [ChannelListMessenger](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-list-messenger/)\n */\n List?: React.ComponentType<ChannelListMessengerProps<StreamChatGenerics>>;\n /**\n * If set to true, channels won't dynamically sort by most recent message, defaults to false\n */\n lockChannelOrder?: boolean;\n /**\n * Function that overrides default behavior when a user gets added to a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event Object](https://getstream.io/chat/docs/event_object) corresponding to `notification.added_to_channel` event\n *\n * @overrideType Function\n * */\n onAddedToChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets deleted. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.deleted` event\n *\n * @overrideType Function\n * */\n onChannelDeleted?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets hidden. In absence of this prop, the channel will be removed from the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.hidden` event\n *\n * @overrideType Function\n * */\n onChannelHidden?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function to customize behavior when a channel gets truncated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.truncated` event\n *\n * @overrideType Function\n * */\n onChannelTruncated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets updated\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.updated` event\n *\n * @overrideType Function\n * */\n onChannelUpdated?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a channel gets visible. In absence of this prop, the channel will be added to the list.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `channel.visible` event\n *\n * @overrideType Function\n * */\n onChannelVisible?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * @deprecated use onNewMessageNotification instead\n *\n * Override the default listener/handler for event `notification.message_new`\n * This event is received on channel, which is not being watched.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.message_new` event\n *\n * @overrideType Function\n * */\n onMessageNew?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Override the default listener/handler for event `message.new`\n * This event is received on channel, when a new message is added on a channel.\n *\n * @param lockChannelOrder If set to true, channels won't dynamically sort by most recent message, defaults to false\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `message.new` event\n *\n * @overrideType Function\n * */\n onNewMessage?: (\n lockChannelOrder: boolean,\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Override the default listener/handler for event `notification.message_new`\n * This event is received on channel, which is not being watched.\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.message_new` event\n *\n * @overrideType Function\n * */\n onNewMessageNotification?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Function that overrides default behavior when a user gets removed from a channel\n *\n * @param setChannels Setter for internal state property - `channels`. It's created from useState() hook.\n * @param event An [Event object](https://getstream.io/chat/docs/event_object) corresponding to `notification.removed_from_channel` event\n *\n * @overrideType Function\n * */\n onRemovedFromChannel?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n /**\n * Object containing channel query options\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available option fields\n * */\n options?: ChannelOptions;\n /**\n * Object containing channel sort parameters\n * @see See [Channel query documentation](https://getstream.io/chat/docs/query_channels) for a list of available sorting fields\n * */\n sort?: ChannelSort<StreamChatGenerics>;\n};\n\nconst DEFAULT_FILTERS = {};\nconst DEFAULT_OPTIONS = {};\nconst DEFAULT_SORT = {};\n\n/**\n * This component fetches a list of channels, allowing you to select the channel you want to open.\n * The ChannelList doesn't provide any UI for the underlying React Native FlatList. UI is determined by the `List` component which is\n * provided to the ChannelList component as a prop. By default, the ChannelListMessenger component is used as the list UI.\n *\n * @example ./ChannelList.md\n */\nexport const ChannelList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps = {},\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n FooterLoadingIndicator = ChannelListFooterLoadingIndicator,\n filters = DEFAULT_FILTERS,\n HeaderErrorIndicator = ChannelListHeaderErrorIndicator,\n HeaderNetworkDownIndicator = ChannelListHeaderNetworkDownIndicator,\n List = ChannelListMessenger,\n ListHeaderComponent,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = ChannelListLoadingIndicator,\n // https://stackoverflow.com/a/60666252/10826415\n loadMoreThreshold = 0.1,\n lockChannelOrder = false,\n maxUnreadCount = 255,\n numberOfSkeletons = 6,\n onAddedToChannel,\n onChannelDeleted,\n onChannelHidden,\n onChannelVisible,\n onChannelTruncated,\n onChannelUpdated,\n onMessageNew,\n onRemovedFromChannel,\n onSelect,\n onNewMessage,\n onNewMessageNotification,\n options = DEFAULT_OPTIONS,\n Preview = ChannelPreviewMessenger,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n setFlatListRef,\n Skeleton = SkeletonDefault,\n sort = DEFAULT_SORT,\n } = props;\n\n const [forceUpdate, setForceUpdate] = useState(0);\n const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n staticChannelsActive,\n } = usePaginatedChannels<StreamChatGenerics>({\n enableOfflineSupport,\n filters,\n options,\n setForceUpdate,\n sort,\n });\n\n // Setup event listeners\n useAddedToChannelNotification({\n onAddedToChannel,\n setChannels,\n });\n\n useChannelDeleted({\n onChannelDeleted,\n setChannels,\n });\n\n useChannelHidden({\n onChannelHidden,\n setChannels,\n });\n\n useChannelTruncated({\n onChannelTruncated,\n refreshList,\n setChannels,\n setForceUpdate,\n });\n\n useChannelUpdated({\n onChannelUpdated,\n setChannels,\n });\n\n useChannelVisible({\n onChannelVisible,\n setChannels,\n });\n\n useNewMessage({\n lockChannelOrder,\n onNewMessage,\n setChannels,\n });\n\n useNewMessageNotification({\n onMessageNew,\n onNewMessageNotification,\n setChannels,\n });\n\n useRemovedFromChannelNotification({\n onRemovedFromChannel,\n setChannels,\n });\n\n useUserPresence({\n setChannels,\n });\n\n const channelIdsStr = channels?.reduce((acc, channel) => `${acc}${channel.cid}`, '');\n\n useEffect(() => {\n if (channels === null || staticChannelsActive || !enableOfflineSupport) {\n return;\n }\n\n upsertCidsForQuery({\n cids: channels.map((c) => c.cid),\n filters,\n sort,\n });\n }, [channelIdsStr, staticChannelsActive]);\n\n const channelsContext = useCreateChannelsContext({\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n hasNextPage,\n HeaderErrorIndicator,\n HeaderNetworkDownIndicator,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n maxUnreadCount,\n numberOfSkeletons,\n onSelect,\n Preview,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef: (ref: FlatList<Channel<StreamChatGenerics>> | null) => {\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n },\n Skeleton,\n });\n\n return (\n <ChannelsProvider value={channelsContext}>\n <List<StreamChatGenerics> />\n </ChannelsProvider>\n );\n};\n"],"mappings":"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"}
@@ -9,30 +9,35 @@ var _ChatContext = require("../../../../contexts/chatContext/ChatContext");
9
9
  var _utils = require("../../utils");
10
10
  var useNewMessage = function useNewMessage(_ref) {
11
11
  var lockChannelOrder = _ref.lockChannelOrder,
12
+ onNewMessage = _ref.onNewMessage,
12
13
  setChannels = _ref.setChannels;
13
14
  var _useChatContext = (0, _ChatContext.useChatContext)(),
14
15
  client = _useChatContext.client;
15
16
  (0, _react.useEffect)(function () {
16
17
  var handleEvent = function handleEvent(event) {
17
- setChannels(function (channels) {
18
- if (!channels) return channels;
19
- if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {
20
- var targetChannelIndex = channels.findIndex(function (c) {
21
- return c.cid === event.cid;
22
- });
23
- if (targetChannelIndex >= 0) {
24
- return (0, _utils.moveChannelUp)({
25
- channels: channels,
26
- cid: event.cid
18
+ if (typeof onNewMessage === 'function') {
19
+ onNewMessage(lockChannelOrder, setChannels, event);
20
+ } else {
21
+ setChannels(function (channels) {
22
+ if (!channels) return channels;
23
+ if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {
24
+ var targetChannelIndex = channels.findIndex(function (c) {
25
+ return c.cid === event.cid;
27
26
  });
27
+ if (targetChannelIndex >= 0) {
28
+ return (0, _utils.moveChannelUp)({
29
+ channels: channels,
30
+ cid: event.cid
31
+ });
32
+ }
33
+ var channel = client.channel(event.channel_type, event.channel_id);
34
+ if (channel.initialized) {
35
+ return [channel].concat((0, _toConsumableArray2["default"])(channels));
36
+ }
28
37
  }
29
- var channel = client.channel(event.channel_type, event.channel_id);
30
- if (channel.initialized) {
31
- return [channel].concat((0, _toConsumableArray2["default"])(channels));
32
- }
33
- }
34
- return (0, _toConsumableArray2["default"])(channels);
35
- });
38
+ return (0, _toConsumableArray2["default"])(channels);
39
+ });
40
+ }
36
41
  };
37
42
  var listener = client == null ? void 0 : client.on('message.new', handleEvent);
38
43
  return function () {
@@ -1 +1 @@
1
- {"version":3,"names":["useNewMessage","lockChannelOrder","setChannels","useChatContext","client","useEffect","handleEvent","event","channels","cid","channel_type","channel_id","targetChannelIndex","findIndex","c","moveChannelUp","channel","initialized","listener","on","unsubscribe"],"sources":["useNewMessage.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport type { Channel, Event } from 'stream-chat';\n\nimport { useChatContext } from '../../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport { moveChannelUp } from '../../utils';\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n lockChannelOrder: boolean;\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>;\n };\n\nexport const useNewMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n lockChannelOrder,\n setChannels,\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n useEffect(() => {\n const handleEvent = (event: Event<StreamChatGenerics>) => {\n setChannels((channels) => {\n if (!channels) return channels;\n\n if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {\n const targetChannelIndex = channels.findIndex((c) => c.cid === event.cid);\n\n if (targetChannelIndex >= 0) {\n return moveChannelUp<StreamChatGenerics>({\n channels,\n cid: event.cid,\n });\n }\n\n // If channel doesn't exist in existing list, check in activeChannels as well.\n // It may happen that channel was hidden using channel.hide(). In that case\n // We remove it from `channels` state, but its still being watched and exists in client.activeChannels.\n const channel = client.channel(event.channel_type, event.channel_id);\n\n if (channel.initialized) {\n return [channel, ...channels];\n }\n }\n\n return [...channels];\n });\n };\n\n const listener = client?.on('message.new', handleEvent);\n return () => listener?.unsubscribe();\n }, []);\n};\n"],"mappings":";;;;;;AAAA;AAIA;AAGA;AAQO,IAAMA,aAAa,GAAG,SAAhBA,aAAa,OAKY;EAAA,IAFpCC,gBAAgB,QAAhBA,gBAAgB;IAChBC,WAAW,QAAXA,WAAW;EAEX,sBAAmB,IAAAC,2BAAc,GAAsB;IAA/CC,MAAM,mBAANA,MAAM;EAEd,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIC,KAAgC,EAAK;MACxDL,WAAW,CAAC,UAACM,QAAQ,EAAK;QACxB,IAAI,CAACA,QAAQ,EAAE,OAAOA,QAAQ;QAE9B,IAAI,CAACP,gBAAgB,IAAIM,KAAK,CAACE,GAAG,IAAIF,KAAK,CAACG,YAAY,IAAIH,KAAK,CAACI,UAAU,EAAE;UAC5E,IAAMC,kBAAkB,GAAGJ,QAAQ,CAACK,SAAS,CAAC,UAACC,CAAC;YAAA,OAAKA,CAAC,CAACL,GAAG,KAAKF,KAAK,CAACE,GAAG;UAAA,EAAC;UAEzE,IAAIG,kBAAkB,IAAI,CAAC,EAAE;YAC3B,OAAO,IAAAG,oBAAa,EAAqB;cACvCP,QAAQ,EAARA,QAAQ;cACRC,GAAG,EAAEF,KAAK,CAACE;YACb,CAAC,CAAC;UACJ;UAKA,IAAMO,OAAO,GAAGZ,MAAM,CAACY,OAAO,CAACT,KAAK,CAACG,YAAY,EAAEH,KAAK,CAACI,UAAU,CAAC;UAEpE,IAAIK,OAAO,CAACC,WAAW,EAAE;YACvB,QAAQD,OAAO,6CAAKR,QAAQ;UAC9B;QACF;QAEA,2CAAWA,QAAQ;MACrB,CAAC,CAAC;IACJ,CAAC;IAED,IAAMU,QAAQ,GAAGd,MAAM,oBAANA,MAAM,CAAEe,EAAE,CAAC,aAAa,EAAEb,WAAW,CAAC;IACvD,OAAO;MAAA,OAAMY,QAAQ,oBAARA,QAAQ,CAAEE,WAAW,EAAE;IAAA;EACtC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC"}
1
+ {"version":3,"names":["useNewMessage","lockChannelOrder","onNewMessage","setChannels","useChatContext","client","useEffect","handleEvent","event","channels","cid","channel_type","channel_id","targetChannelIndex","findIndex","c","moveChannelUp","channel","initialized","listener","on","unsubscribe"],"sources":["useNewMessage.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport type { Channel, Event } from 'stream-chat';\n\nimport { useChatContext } from '../../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport { moveChannelUp } from '../../utils';\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n lockChannelOrder: boolean;\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>;\n onNewMessage?: (\n lockChannelOrder: boolean,\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n };\n\nexport const useNewMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n lockChannelOrder,\n onNewMessage,\n setChannels,\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n useEffect(() => {\n const handleEvent = (event: Event<StreamChatGenerics>) => {\n if (typeof onNewMessage === 'function') {\n onNewMessage(lockChannelOrder, setChannels, event);\n } else {\n setChannels((channels) => {\n if (!channels) return channels;\n\n if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id) {\n const targetChannelIndex = channels.findIndex((c) => c.cid === event.cid);\n\n if (targetChannelIndex >= 0) {\n return moveChannelUp<StreamChatGenerics>({\n channels,\n cid: event.cid,\n });\n }\n\n // If channel doesn't exist in existing list, check in activeChannels as well.\n // It may happen that channel was hidden using channel.hide(). In that case\n // We remove it from `channels` state, but its still being watched and exists in client.activeChannels.\n const channel = client.channel(event.channel_type, event.channel_id);\n\n if (channel.initialized) {\n return [channel, ...channels];\n }\n }\n\n return [...channels];\n });\n }\n };\n\n const listener = client?.on('message.new', handleEvent);\n return () => listener?.unsubscribe();\n }, []);\n};\n"],"mappings":";;;;;;AAAA;AAIA;AAGA;AAaO,IAAMA,aAAa,GAAG,SAAhBA,aAAa,OAMY;EAAA,IAHpCC,gBAAgB,QAAhBA,gBAAgB;IAChBC,YAAY,QAAZA,YAAY;IACZC,WAAW,QAAXA,WAAW;EAEX,sBAAmB,IAAAC,2BAAc,GAAsB;IAA/CC,MAAM,mBAANA,MAAM;EAEd,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIC,KAAgC,EAAK;MACxD,IAAI,OAAON,YAAY,KAAK,UAAU,EAAE;QACtCA,YAAY,CAACD,gBAAgB,EAAEE,WAAW,EAAEK,KAAK,CAAC;MACpD,CAAC,MAAM;QACLL,WAAW,CAAC,UAACM,QAAQ,EAAK;UACxB,IAAI,CAACA,QAAQ,EAAE,OAAOA,QAAQ;UAE9B,IAAI,CAACR,gBAAgB,IAAIO,KAAK,CAACE,GAAG,IAAIF,KAAK,CAACG,YAAY,IAAIH,KAAK,CAACI,UAAU,EAAE;YAC5E,IAAMC,kBAAkB,GAAGJ,QAAQ,CAACK,SAAS,CAAC,UAACC,CAAC;cAAA,OAAKA,CAAC,CAACL,GAAG,KAAKF,KAAK,CAACE,GAAG;YAAA,EAAC;YAEzE,IAAIG,kBAAkB,IAAI,CAAC,EAAE;cAC3B,OAAO,IAAAG,oBAAa,EAAqB;gBACvCP,QAAQ,EAARA,QAAQ;gBACRC,GAAG,EAAEF,KAAK,CAACE;cACb,CAAC,CAAC;YACJ;YAKA,IAAMO,OAAO,GAAGZ,MAAM,CAACY,OAAO,CAACT,KAAK,CAACG,YAAY,EAAEH,KAAK,CAACI,UAAU,CAAC;YAEpE,IAAIK,OAAO,CAACC,WAAW,EAAE;cACvB,QAAQD,OAAO,6CAAKR,QAAQ;YAC9B;UACF;UAEA,2CAAWA,QAAQ;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAMU,QAAQ,GAAGd,MAAM,oBAANA,MAAM,CAAEe,EAAE,CAAC,aAAa,EAAEb,WAAW,CAAC;IACvD,OAAO;MAAA,OAAMY,QAAQ,oBAARA,QAAQ,CAAEE,WAAW,EAAE;IAAA;EACtC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC"}
@@ -12,6 +12,7 @@ var _ChatContext = require("../../../../contexts/chatContext/ChatContext");
12
12
  var _utils = require("../../utils");
13
13
  var useNewMessageNotification = function useNewMessageNotification(_ref) {
14
14
  var onMessageNew = _ref.onMessageNew,
15
+ onNewMessageNotification = _ref.onNewMessageNotification,
15
16
  setChannels = _ref.setChannels;
16
17
  var _useChatContext = (0, _ChatContext.useChatContext)(),
17
18
  client = _useChatContext.client;
@@ -23,29 +24,38 @@ var useNewMessageNotification = function useNewMessageNotification(_ref) {
23
24
  while (1) switch (_context.prev = _context.next) {
24
25
  case 0:
25
26
  if (!(typeof onMessageNew === 'function')) {
26
- _context.next = 4;
27
+ _context.next = 5;
27
28
  break;
28
29
  }
29
30
  onMessageNew(setChannels, event);
30
- _context.next = 9;
31
+ console.warn('onMessageNew is deprecated and will be removed in future release. Please use onNewMessageNotification to establish the same behaviour');
32
+ _context.next = 14;
31
33
  break;
32
- case 4:
33
- if (!((_event$channel = event.channel) != null && _event$channel.id && (_event$channel2 = event.channel) != null && _event$channel2.type)) {
34
+ case 5:
35
+ if (!(typeof onNewMessageNotification === 'function')) {
34
36
  _context.next = 9;
35
37
  break;
36
38
  }
37
- _context.next = 7;
39
+ onNewMessageNotification(setChannels, event);
40
+ _context.next = 14;
41
+ break;
42
+ case 9:
43
+ if (!((_event$channel = event.channel) != null && _event$channel.id && (_event$channel2 = event.channel) != null && _event$channel2.type)) {
44
+ _context.next = 14;
45
+ break;
46
+ }
47
+ _context.next = 12;
38
48
  return (0, _utils.getChannel)({
39
49
  client: client,
40
50
  id: event.channel.id,
41
51
  type: event.channel.type
42
52
  });
43
- case 7:
53
+ case 12:
44
54
  channel = _context.sent;
45
55
  setChannels(function (channels) {
46
56
  return channels ? (0, _uniqBy["default"])([channel].concat((0, _toConsumableArray2["default"])(channels)), 'cid') : channels;
47
57
  });
48
- case 9:
58
+ case 14:
49
59
  case "end":
50
60
  return _context.stop();
51
61
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useNewMessageNotification","onMessageNew","setChannels","useChatContext","client","useEffect","handleEvent","event","channel","id","type","getChannel","channels","uniqBy","listener","on","unsubscribe"],"sources":["useNewMessageNotification.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport uniqBy from 'lodash/uniqBy';\n\nimport type { Channel, Event } from 'stream-chat';\n\nimport { useChatContext } from '../../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport { getChannel } from '../../utils';\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>;\n onMessageNew?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n };\n\nexport const useNewMessageNotification = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n onMessageNew,\n setChannels,\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n useEffect(() => {\n const handleEvent = async (event: Event<StreamChatGenerics>) => {\n if (typeof onMessageNew === 'function') {\n onMessageNew(setChannels, event);\n } else {\n if (event.channel?.id && event.channel?.type) {\n const channel = await getChannel({\n client,\n id: event.channel.id,\n type: event.channel.type,\n });\n setChannels((channels) => (channels ? uniqBy([channel, ...channels], 'cid') : channels));\n }\n }\n };\n\n const listener = client?.on('notification.message_new', handleEvent);\n return () => listener?.unsubscribe();\n }, []);\n};\n"],"mappings":";;;;;;;;AAAA;AAEA;AAIA;AAGA;AAWO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyB,OAKA;EAAA,IAFpCC,YAAY,QAAZA,YAAY;IACZC,WAAW,QAAXA,WAAW;EAEX,sBAAmB,IAAAC,2BAAc,GAAsB;IAA/CC,MAAM,mBAANA,MAAM;EAEd,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAMC,WAAW;MAAA,4EAAG,iBAAOC,KAAgC;QAAA;QAAA;UAAA;YAAA;cAAA,MACrD,OAAON,YAAY,KAAK,UAAU;gBAAA;gBAAA;cAAA;cACpCA,YAAY,CAACC,WAAW,EAAEK,KAAK,CAAC;cAAC;cAAA;YAAA;cAAA,MAE7B,kBAAAA,KAAK,CAACC,OAAO,aAAb,eAAeC,EAAE,uBAAIF,KAAK,CAACC,OAAO,aAAb,gBAAeE,IAAI;gBAAA;gBAAA;cAAA;cAAA;cAAA,OACpB,IAAAC,iBAAU,EAAC;gBAC/BP,MAAM,EAANA,MAAM;gBACNK,EAAE,EAAEF,KAAK,CAACC,OAAO,CAACC,EAAE;gBACpBC,IAAI,EAAEH,KAAK,CAACC,OAAO,CAACE;cACtB,CAAC,CAAC;YAAA;cAJIF,OAAO;cAKbN,WAAW,CAAC,UAACU,QAAQ;gBAAA,OAAMA,QAAQ,GAAG,IAAAC,kBAAM,GAAEL,OAAO,6CAAKI,QAAQ,IAAG,KAAK,CAAC,GAAGA,QAAQ;cAAA,CAAC,CAAC;YAAC;YAAA;cAAA;UAAA;QAAA;MAAA,CAG9F;MAAA,gBAbKN,WAAW;QAAA;MAAA;IAAA,GAahB;IAED,IAAMQ,QAAQ,GAAGV,MAAM,oBAANA,MAAM,CAAEW,EAAE,CAAC,0BAA0B,EAAET,WAAW,CAAC;IACpE,OAAO;MAAA,OAAMQ,QAAQ,oBAARA,QAAQ,CAAEE,WAAW,EAAE;IAAA;EACtC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC"}
1
+ {"version":3,"names":["useNewMessageNotification","onMessageNew","onNewMessageNotification","setChannels","useChatContext","client","useEffect","handleEvent","event","console","warn","channel","id","type","getChannel","channels","uniqBy","listener","on","unsubscribe"],"sources":["useNewMessageNotification.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport uniqBy from 'lodash/uniqBy';\n\nimport type { Channel, Event } from 'stream-chat';\n\nimport { useChatContext } from '../../../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport { getChannel } from '../../utils';\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>;\n onMessageNew?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n onNewMessageNotification?: (\n setChannels: React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[] | null>>,\n event: Event<StreamChatGenerics>,\n ) => void;\n };\n\nexport const useNewMessageNotification = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n onMessageNew,\n onNewMessageNotification,\n setChannels,\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n\n useEffect(() => {\n const handleEvent = async (event: Event<StreamChatGenerics>) => {\n if (typeof onMessageNew === 'function') {\n onMessageNew(setChannels, event);\n console.warn(\n 'onMessageNew is deprecated and will be removed in future release. Please use onNewMessageNotification to establish the same behaviour',\n );\n } else if (typeof onNewMessageNotification === 'function') {\n onNewMessageNotification(setChannels, event);\n } else {\n if (event.channel?.id && event.channel?.type) {\n const channel = await getChannel({\n client,\n id: event.channel.id,\n type: event.channel.type,\n });\n setChannels((channels) => (channels ? uniqBy([channel, ...channels], 'cid') : channels));\n }\n }\n };\n\n const listener = client?.on('notification.message_new', handleEvent);\n return () => listener?.unsubscribe();\n }, []);\n};\n"],"mappings":";;;;;;;;AAAA;AAEA;AAIA;AAGA;AAeO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyB,OAMA;EAAA,IAHpCC,YAAY,QAAZA,YAAY;IACZC,wBAAwB,QAAxBA,wBAAwB;IACxBC,WAAW,QAAXA,WAAW;EAEX,sBAAmB,IAAAC,2BAAc,GAAsB;IAA/CC,MAAM,mBAANA,MAAM;EAEd,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAMC,WAAW;MAAA,4EAAG,iBAAOC,KAAgC;QAAA;QAAA;UAAA;YAAA;cAAA,MACrD,OAAOP,YAAY,KAAK,UAAU;gBAAA;gBAAA;cAAA;cACpCA,YAAY,CAACE,WAAW,EAAEK,KAAK,CAAC;cAChCC,OAAO,CAACC,IAAI,CACV,uIAAuI,CACxI;cAAC;cAAA;YAAA;cAAA,MACO,OAAOR,wBAAwB,KAAK,UAAU;gBAAA;gBAAA;cAAA;cACvDA,wBAAwB,CAACC,WAAW,EAAEK,KAAK,CAAC;cAAC;cAAA;YAAA;cAAA,MAEzC,kBAAAA,KAAK,CAACG,OAAO,aAAb,eAAeC,EAAE,uBAAIJ,KAAK,CAACG,OAAO,aAAb,gBAAeE,IAAI;gBAAA;gBAAA;cAAA;cAAA;cAAA,OACpB,IAAAC,iBAAU,EAAC;gBAC/BT,MAAM,EAANA,MAAM;gBACNO,EAAE,EAAEJ,KAAK,CAACG,OAAO,CAACC,EAAE;gBACpBC,IAAI,EAAEL,KAAK,CAACG,OAAO,CAACE;cACtB,CAAC,CAAC;YAAA;cAJIF,OAAO;cAKbR,WAAW,CAAC,UAACY,QAAQ;gBAAA,OAAMA,QAAQ,GAAG,IAAAC,kBAAM,GAAEL,OAAO,6CAAKI,QAAQ,IAAG,KAAK,CAAC,GAAGA,QAAQ;cAAA,CAAC,CAAC;YAAC;YAAA;cAAA;UAAA;QAAA;MAAA,CAG9F;MAAA,gBAlBKR,WAAW;QAAA;MAAA;IAAA,GAkBhB;IAED,IAAMU,QAAQ,GAAGZ,MAAM,oBAANA,MAAM,CAAEa,EAAE,CAAC,0BAA0B,EAAEX,WAAW,CAAC;IACpE,OAAO;MAAA,OAAMU,QAAQ,oBAARA,QAAQ,CAAEE,WAAW,EAAE;IAAA;EACtC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC"}