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
@@ -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"}
@@ -73,7 +73,8 @@ var styles = _reactNative.StyleSheet.create({
73
73
  overlay: {
74
74
  borderRadius: 12,
75
75
  marginLeft: 8,
76
- marginRight: 8
76
+ marginRight: 8,
77
+ marginTop: 2
77
78
  },
78
79
  unsupportedFile: {
79
80
  flexDirection: 'row',
@@ -105,7 +106,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
105
106
  __self: _this,
106
107
  __source: {
107
108
  fileName: _jsxFileName,
108
- lineNumber: 106,
109
+ lineNumber: 107,
109
110
  columnNumber: 5
110
111
  }
111
112
  }, _react["default"].createElement(_Warning.Warning, {
@@ -116,7 +117,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
116
117
  __self: _this,
117
118
  __source: {
118
119
  fileName: _jsxFileName,
119
- lineNumber: 107,
120
+ lineNumber: 108,
120
121
  columnNumber: 7
121
122
  }
122
123
  }), _react["default"].createElement(_reactNative.Text, {
@@ -126,7 +127,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
126
127
  __self: _this,
127
128
  __source: {
128
129
  fileName: _jsxFileName,
129
- lineNumber: 113,
130
+ lineNumber: 114,
130
131
  columnNumber: 7
131
132
  }
132
133
  }, t('File type not supported'))) : _react["default"].createElement(_WritingDirectionAwareText.WritingDirectionAwareText, {
@@ -136,7 +137,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
136
137
  __self: _this,
137
138
  __source: {
138
139
  fileName: _jsxFileName,
139
- lineNumber: 118,
140
+ lineNumber: 119,
140
141
  columnNumber: 5
141
142
  }
142
143
  }, item.file.duration || (0, _FileAttachment.getFileSizeDisplayText)(item.file.size));
@@ -216,7 +217,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
216
217
  return _react["default"].createElement(_react["default"].Fragment, {
217
218
  __source: {
218
219
  fileName: _jsxFileName,
219
- lineNumber: 222,
220
+ lineNumber: 223,
220
221
  columnNumber: 7
221
222
  }
222
223
  }, _react["default"].createElement(_UploadProgressIndicator.UploadProgressIndicator, {
@@ -230,7 +231,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
230
231
  __self: _this,
231
232
  __source: {
232
233
  fileName: _jsxFileName,
233
- lineNumber: 223,
234
+ lineNumber: 224,
234
235
  columnNumber: 9
235
236
  }
236
237
  }, (_item$file$type = item.file.type) != null && _item$file$type.startsWith('audio/') && (0, _native.isAudioPackageAvailable)() ? _react["default"].createElement(_reactNative.View, {
@@ -240,7 +241,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
240
241
  __self: _this,
241
242
  __source: {
242
243
  fileName: _jsxFileName,
243
- lineNumber: 231,
244
+ lineNumber: 232,
244
245
  columnNumber: 13
245
246
  }
246
247
  }, _react["default"].createElement(_reactNative.View, {
@@ -255,7 +256,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
255
256
  __self: _this,
256
257
  __source: {
257
258
  fileName: _jsxFileName,
258
- lineNumber: 237,
259
+ lineNumber: 238,
259
260
  columnNumber: 15
260
261
  }
261
262
  }, _react["default"].createElement(AudioAttachment, {
@@ -267,7 +268,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
267
268
  __self: _this,
268
269
  __source: {
269
270
  fileName: _jsxFileName,
270
- lineNumber: 254,
271
+ lineNumber: 255,
271
272
  columnNumber: 17
272
273
  }
273
274
  }))) : _react["default"].createElement(_reactNative.View, {
@@ -280,7 +281,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
280
281
  __self: _this,
281
282
  __source: {
282
283
  fileName: _jsxFileName,
283
- lineNumber: 264,
284
+ lineNumber: 265,
284
285
  columnNumber: 13
285
286
  }
286
287
  }, _react["default"].createElement(_reactNative.View, {
@@ -288,7 +289,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
288
289
  __self: _this,
289
290
  __source: {
290
291
  fileName: _jsxFileName,
291
- lineNumber: 279,
292
+ lineNumber: 280,
292
293
  columnNumber: 15
293
294
  }
294
295
  }, _react["default"].createElement(_reactNative.View, {
@@ -296,7 +297,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
296
297
  __self: _this,
297
298
  __source: {
298
299
  fileName: _jsxFileName,
299
- lineNumber: 280,
300
+ lineNumber: 281,
300
301
  columnNumber: 17
301
302
  }
302
303
  }, _react["default"].createElement(FileAttachmentIcon, {
@@ -304,7 +305,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
304
305
  __self: _this,
305
306
  __source: {
306
307
  fileName: _jsxFileName,
307
- lineNumber: 281,
308
+ lineNumber: 282,
308
309
  columnNumber: 19
309
310
  }
310
311
  })), _react["default"].createElement(_reactNative.View, {
@@ -312,7 +313,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
312
313
  __self: _this,
313
314
  __source: {
314
315
  fileName: _jsxFileName,
315
- lineNumber: 283,
316
+ lineNumber: 284,
316
317
  columnNumber: 17
317
318
  }
318
319
  }, _react["default"].createElement(_reactNative.Text, {
@@ -328,7 +329,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
328
329
  __self: _this,
329
330
  __source: {
330
331
  fileName: _jsxFileName,
331
- lineNumber: 284,
332
+ lineNumber: 285,
332
333
  columnNumber: 19
333
334
  }
334
335
  }, item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)), indicatorType !== null && _react["default"].createElement(UnsupportedFileTypeOrFileSizeIndicator, {
@@ -337,7 +338,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
337
338
  __self: _this,
338
339
  __source: {
339
340
  fileName: _jsxFileName,
340
- lineNumber: 304,
341
+ lineNumber: 305,
341
342
  columnNumber: 21
342
343
  }
343
344
  })))), _react["default"].createElement(_reactNative.TouchableOpacity, {
@@ -351,7 +352,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
351
352
  __self: _this,
352
353
  __source: {
353
354
  fileName: _jsxFileName,
354
- lineNumber: 313,
355
+ lineNumber: 314,
355
356
  columnNumber: 11
356
357
  }
357
358
  }, _react["default"].createElement(_Close.Close, {
@@ -359,7 +360,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
359
360
  __self: _this,
360
361
  __source: {
361
362
  fileName: _jsxFileName,
362
- lineNumber: 320,
363
+ lineNumber: 321,
363
364
  columnNumber: 13
364
365
  }
365
366
  }))));
@@ -395,7 +396,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
395
396
  __self: _this,
396
397
  __source: {
397
398
  fileName: _jsxFileName,
398
- lineNumber: 336,
399
+ lineNumber: 337,
399
400
  columnNumber: 5
400
401
  }
401
402
  }) : null;
@@ -431,7 +432,7 @@ var FileUploadPreview = function FileUploadPreview(props) {
431
432
  __self: _this,
432
433
  __source: {
433
434
  fileName: _jsxFileName,
434
- lineNumber: 401,
435
+ lineNumber: 402,
435
436
  columnNumber: 5
436
437
  }
437
438
  }));