stream-chat-react-native-core 5.2.0-beta.1 → 5.3.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Card.js +29 -18
- package/lib/commonjs/components/Attachment/Card.js.map +1 -1
- package/lib/commonjs/components/Attachment/Gallery.js +16 -20
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/GalleryImage.js +34 -6
- package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/commonjs/components/Attachment/Giphy.js +37 -29
- package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js +10 -8
- package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/Avatar/GroupAvatar.js +3 -1
- package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelList.js +4 -4
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +4 -4
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +1 -1
- package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +6 -7
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +30 -6
- package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +8 -5
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -0
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/commonjs/components/ImageBackground.js +64 -0
- package/lib/commonjs/components/ImageBackground.js.map +1 -0
- package/lib/commonjs/components/Message/Message.js +15 -16
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +12 -4
- package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +26 -5
- package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +58 -47
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +19 -19
- package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
- package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Card.js +29 -18
- package/lib/module/components/Attachment/Card.js.map +1 -1
- package/lib/module/components/Attachment/Gallery.js +16 -20
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/GalleryImage.js +34 -6
- package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
- package/lib/module/components/Attachment/Giphy.js +37 -29
- package/lib/module/components/Attachment/Giphy.js.map +1 -1
- package/lib/module/components/Avatar/Avatar.js +10 -8
- package/lib/module/components/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/Avatar/GroupAvatar.js +3 -1
- package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelList.js +4 -4
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListMessenger.js +4 -4
- package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +1 -1
- package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +6 -7
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelAvatar.js +30 -6
- package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +8 -5
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -0
- package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/module/components/ImageBackground.js +64 -0
- package/lib/module/components/ImageBackground.js.map +1 -0
- package/lib/module/components/Message/Message.js +15 -16
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageAvatar.js +12 -4
- package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +26 -5
- package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageOverlay.js +58 -47
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactions.js +19 -19
- package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/contexts/chatContext/ChatContext.js +2 -2
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
- package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Card.d.ts +3 -2
- package/lib/typescript/components/Attachment/GalleryImage.d.ts +8 -2
- package/lib/typescript/components/Attachment/Giphy.d.ts +2 -1
- package/lib/typescript/components/Avatar/Avatar.d.ts +2 -1
- package/lib/typescript/components/Avatar/GroupAvatar.d.ts +2 -1
- package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelAvatar.d.ts +2 -0
- package/lib/typescript/components/Chat/Chat.d.ts +1 -1
- package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
- package/lib/typescript/components/ImageBackground.d.ts +33 -0
- package/lib/typescript/components/Message/Message.d.ts +2 -1
- package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts +2 -1
- package/lib/typescript/components/Message/MessageSimple/MessageRepliesAvatars.d.ts +2 -0
- package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +1 -0
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +1 -1
- package/lib/typescript/contexts/chatContext/ChatContext.d.ts +3 -1
- package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +4 -0
- package/package.json +1 -1
- package/src/__tests__/offline-feature.test.js +3 -1
- package/src/components/Attachment/Card.tsx +11 -2
- package/src/components/Attachment/Gallery.tsx +1 -7
- package/src/components/Attachment/GalleryImage.tsx +31 -9
- package/src/components/Attachment/Giphy.tsx +8 -2
- package/src/components/Avatar/Avatar.tsx +12 -2
- package/src/components/Avatar/GroupAvatar.tsx +4 -4
- package/src/components/ChannelList/ChannelList.tsx +3 -2
- package/src/components/ChannelList/ChannelListMessenger.tsx +3 -3
- package/src/components/ChannelList/__tests__/ChannelList.test.js +1 -1
- package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +2 -1
- package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +1 -1
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +12 -11
- package/src/components/ChannelPreview/ChannelAvatar.tsx +23 -4
- package/src/components/Chat/Chat.tsx +98 -95
- package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
- package/src/components/ImageBackground.tsx +77 -0
- package/src/components/Message/Message.tsx +8 -8
- package/src/components/Message/MessageSimple/MessageAvatar.tsx +6 -2
- package/src/components/Message/MessageSimple/MessageRepliesAvatars.tsx +15 -3
- package/src/components/MessageOverlay/MessageOverlay.tsx +210 -205
- package/src/components/MessageOverlay/OverlayReactions.tsx +1 -0
- package/src/contexts/channelsContext/ChannelsContext.tsx +1 -1
- package/src/contexts/chatContext/ChatContext.tsx +3 -1
- package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +8 -1
- package/src/version.json +1 -1
|
@@ -190,11 +190,11 @@ var ChannelList = function ChannelList(props) {
|
|
|
190
190
|
(0, _useUserPresence.useUserPresence)({
|
|
191
191
|
setChannels: setChannels
|
|
192
192
|
});
|
|
193
|
-
var channelIdsStr = channels.reduce(function (acc, channel) {
|
|
193
|
+
var channelIdsStr = channels == null ? void 0 : channels.reduce(function (acc, channel) {
|
|
194
194
|
return "" + acc + channel.cid;
|
|
195
195
|
}, '');
|
|
196
196
|
(0, _react.useEffect)(function () {
|
|
197
|
-
if (staticChannelsActive || !enableOfflineSupport) {
|
|
197
|
+
if (channels === null || staticChannelsActive || !enableOfflineSupport) {
|
|
198
198
|
return;
|
|
199
199
|
}
|
|
200
200
|
|
|
@@ -258,14 +258,14 @@ var ChannelList = function ChannelList(props) {
|
|
|
258
258
|
__self: _this,
|
|
259
259
|
__source: {
|
|
260
260
|
fileName: _jsxFileName,
|
|
261
|
-
lineNumber:
|
|
261
|
+
lineNumber: 378,
|
|
262
262
|
columnNumber: 5
|
|
263
263
|
}
|
|
264
264
|
}, _react["default"].createElement(List, {
|
|
265
265
|
__self: _this,
|
|
266
266
|
__source: {
|
|
267
267
|
fileName: _jsxFileName,
|
|
268
|
-
lineNumber:
|
|
268
|
+
lineNumber: 379,
|
|
269
269
|
columnNumber: 7
|
|
270
270
|
}
|
|
271
271
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChannelList.tsx"],"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","forceUpdate","setForceUpdate","enableOfflineSupport","subscribeConnectionRecoveredCallback","channels","error","hasNextPage","loadingChannels","loadingNextPage","loadNextPage","refreshing","refreshList","reloadList","setChannels","staticChannelsActive","channelIdsStr","reduce","acc","channel","cid","cids","map","c","unsubscribe","count","channelsContext","ref"],"mappings":"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","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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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://github.com/facebook/react-native/blob/a7a7970e543959e9db5281914d5f132beb01db8d/Libraries/Lists/VirtualizedList.js#L466\n loadMoreThreshold = 2,\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, subscribeConnectionRecoveredCallback } = useChatContext();\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 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 (staticChannelsActive || !enableOfflineSupport) {\n return;\n }\n upsertCidsForQuery({\n cids: channels.map((c) => c.cid),\n filters,\n sort,\n });\n }, [channelIdsStr, staticChannelsActive]);\n\n useEffect(() => {\n const unsubscribe = subscribeConnectionRecoveredCallback(() => {\n refreshList();\n setForceUpdate((count) => count + 1);\n });\n\n return () => unsubscribe();\n });\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"]}
|
|
1
|
+
{"version":3,"sources":["ChannelList.tsx"],"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","forceUpdate","setForceUpdate","enableOfflineSupport","subscribeConnectionRecoveredCallback","channels","error","hasNextPage","loadingChannels","loadingNextPage","loadNextPage","refreshing","refreshList","reloadList","setChannels","staticChannelsActive","channelIdsStr","reduce","acc","channel","cid","cids","map","c","unsubscribe","count","channelsContext","ref"],"mappings":"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","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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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>[]>>,\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://github.com/facebook/react-native/blob/a7a7970e543959e9db5281914d5f132beb01db8d/Libraries/Lists/VirtualizedList.js#L466\n loadMoreThreshold = 2,\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, subscribeConnectionRecoveredCallback } = useChatContext();\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 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 useEffect(() => {\n const unsubscribe = subscribeConnectionRecoveredCallback(() => {\n refreshList();\n setForceUpdate((count) => count + 1);\n });\n\n return () => unsubscribe();\n });\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"]}
|
|
@@ -160,7 +160,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
160
160
|
if (debugRef.current.setEventType) debugRef.current.setEventType('send');
|
|
161
161
|
if (debugRef.current.setSendEventParams) debugRef.current.setSendEventParams({
|
|
162
162
|
action: 'Channels',
|
|
163
|
-
data: channels.map(function (channel) {
|
|
163
|
+
data: channels == null ? void 0 : channels.map(function (channel) {
|
|
164
164
|
return {
|
|
165
165
|
data: channel.data,
|
|
166
166
|
members: channel.state.members
|
|
@@ -169,7 +169,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
if (error && !refreshing && !loadingChannels &&
|
|
172
|
+
if (error && !refreshing && !loadingChannels && channels === null) {
|
|
173
173
|
return _react["default"].createElement(LoadingErrorIndicator, {
|
|
174
174
|
error: error,
|
|
175
175
|
listType: "channel",
|
|
@@ -191,12 +191,12 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
191
191
|
};
|
|
192
192
|
|
|
193
193
|
var ListFooterComponent = function ListFooterComponent() {
|
|
194
|
-
return channels.length && ListHeaderComponent ? _react["default"].createElement(ListHeaderComponent, {
|
|
194
|
+
return channels != null && channels.length && ListHeaderComponent ? _react["default"].createElement(ListHeaderComponent, {
|
|
195
195
|
__self: _this,
|
|
196
196
|
__source: {
|
|
197
197
|
fileName: _jsxFileName,
|
|
198
198
|
lineNumber: 160,
|
|
199
|
-
columnNumber:
|
|
199
|
+
columnNumber: 47
|
|
200
200
|
}
|
|
201
201
|
}) : null;
|
|
202
202
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChannelListMessenger.tsx"],"names":["styles","StyleSheet","create","flatList","flex","flatListContentContainer","flexGrow","statusIndicator","left","position","right","top","StatusIndicator","isOnline","error","HeaderErrorIndicator","HeaderNetworkDownIndicator","loadingChannels","refreshList","renderItem","item","keyExtractor","cid","ChannelListMessengerWithContext","props","additionalFlatListProps","channels","EmptyStateIndicator","FooterLoadingIndicator","forceUpdate","ListHeaderComponent","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","refreshing","reloadList","setFlatListRef","theme","channelListMessenger","flatListContent","white_snow","colors","loading","setLoading","debugRef","isDebugModeEnabled","__DEV__","current","setEventType","setSendEventParams","action","data","map","channel","members","state","length","onEndReached","ListFooterComponent","backgroundColor","undefined","ChannelListMessenger","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n// RNGR's FlatList ist currently breaking the pull-to-refresh behaviour on Android\n// See https://github.com/software-mansion/react-native-gesture-handler/issues/598\nimport { FlatList, RefreshControl, StyleSheet, View } from 'react-native';\n\nimport type { Channel } from 'stream-chat';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreview } from '../ChannelPreview/ChannelPreview';\n\nconst styles = StyleSheet.create({\n flatList: { flex: 1 },\n flatListContentContainer: { flexGrow: 1 },\n statusIndicator: { left: 0, position: 'absolute', right: 0, top: 0 },\n});\n\nexport type ChannelListMessengerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Omit<\n ChannelsContextValue<StreamChatGenerics>,\n | 'hasNextPage'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n | 'onSelect'\n | 'Preview'\n | 'PreviewTitle'\n | 'PreviewStatus'\n | 'PreviewAvatar'\n | 'previewMessage'\n | 'Skeleton'\n>;\n\nconst StatusIndicator = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const { isOnline } = useChatContext<StreamChatGenerics>();\n const { error, HeaderErrorIndicator, HeaderNetworkDownIndicator, loadingChannels, refreshList } =\n useChannelsContext<StreamChatGenerics>();\n\n if (loadingChannels) return null;\n\n if (!isOnline) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderNetworkDownIndicator />\n </View>\n );\n } else if (error) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderErrorIndicator onPress={refreshList} />\n </View>\n );\n }\n return null;\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: Channel<StreamChatGenerics>;\n}) => <ChannelPreview<StreamChatGenerics> channel={item} />;\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: Channel<StreamChatGenerics>,\n) => item.cid;\n\nconst ChannelListMessengerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = props;\n\n const {\n theme: {\n channelListMessenger: { flatList, flatListContent },\n colors: { white_snow },\n },\n } = useTheme();\n\n /**\n * In order to prevent the EmptyStateIndicator component from showing up briefly on mount,\n * we set the loading state one cycle behind to ensure the channels are set before the\n * change to loadingChannels is registered.\n */\n const [loading, setLoading] = useState(true);\n const debugRef = useDebugContext();\n\n useEffect(() => {\n if (!!loadingChannels !== loading) {\n setLoading(!!loadingChannels);\n }\n }, [loading, loadingChannels]);\n\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Channels',\n data: channels.map((channel) => ({\n data: channel.data,\n members: channel.state.members,\n })),\n });\n }\n\n if (error && !refreshing && !loadingChannels && !channels?.length) {\n return (\n <LoadingErrorIndicator\n error={error}\n listType='channel'\n loadNextPage={loadNextPage}\n retry={reloadList}\n />\n );\n }\n\n const onEndReached = () => {\n if (loadNextPage) {\n loadNextPage();\n }\n };\n\n const ListFooterComponent = () =>\n channels.length && ListHeaderComponent ? <ListHeaderComponent /> : null;\n\n if (loadingChannels) {\n return <LoadingIndicator listType='channel' />;\n }\n\n return (\n <>\n <FlatList\n contentContainerStyle={[\n styles.flatListContentContainer,\n { backgroundColor: white_snow },\n flatListContent,\n ]}\n data={channels}\n extraData={forceUpdate}\n keyExtractor={keyExtractor}\n ListEmptyComponent={\n loading ? (\n <LoadingIndicator listType='channel' />\n ) : (\n <EmptyStateIndicator listType='channel' />\n )\n }\n ListFooterComponent={loadingNextPage ? <FooterLoadingIndicator /> : undefined}\n ListHeaderComponent={ListFooterComponent}\n onEndReached={onEndReached}\n onEndReachedThreshold={loadMoreThreshold}\n ref={setFlatListRef}\n refreshControl={<RefreshControl onRefresh={refreshList} refreshing={refreshing} />}\n renderItem={renderItem}\n style={[styles.flatList, { backgroundColor: white_snow }, flatList]}\n testID='channel-list-messenger'\n {...additionalFlatListProps}\n />\n <StatusIndicator<StreamChatGenerics> />\n </>\n );\n};\n\nexport type ChannelListMessengerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ChannelListMessengerPropsWithContext<StreamChatGenerics>>;\n\n/**\n * This UI component displays the preview list of channels and handles Channel navigation. It\n * receives all props from the ChannelList component.\n *\n * @example ./ChannelListMessenger.md\n */\nexport const ChannelListMessenger = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = useChannelsContext<StreamChatGenerics>();\n\n return (\n <ChannelListMessengerWithContext\n {...{\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n }}\n {...props}\n />\n );\n};\n\nChannelListMessenger.displayName = 'ChannelListMessenger{channelListMessenger}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ChannelListMessenger.tsx"],"names":["styles","StyleSheet","create","flatList","flex","flatListContentContainer","flexGrow","statusIndicator","left","position","right","top","StatusIndicator","isOnline","error","HeaderErrorIndicator","HeaderNetworkDownIndicator","loadingChannels","refreshList","renderItem","item","keyExtractor","cid","ChannelListMessengerWithContext","props","additionalFlatListProps","channels","EmptyStateIndicator","FooterLoadingIndicator","forceUpdate","ListHeaderComponent","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","refreshing","reloadList","setFlatListRef","theme","channelListMessenger","flatListContent","white_snow","colors","loading","setLoading","debugRef","isDebugModeEnabled","__DEV__","current","setEventType","setSendEventParams","action","data","map","channel","members","state","onEndReached","ListFooterComponent","length","backgroundColor","undefined","ChannelListMessenger","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n// RNGR's FlatList ist currently breaking the pull-to-refresh behaviour on Android\n// See https://github.com/software-mansion/react-native-gesture-handler/issues/598\nimport { FlatList, RefreshControl, StyleSheet, View } from 'react-native';\n\nimport type { Channel } from 'stream-chat';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreview } from '../ChannelPreview/ChannelPreview';\n\nconst styles = StyleSheet.create({\n flatList: { flex: 1 },\n flatListContentContainer: { flexGrow: 1 },\n statusIndicator: { left: 0, position: 'absolute', right: 0, top: 0 },\n});\n\nexport type ChannelListMessengerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Omit<\n ChannelsContextValue<StreamChatGenerics>,\n | 'hasNextPage'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n | 'onSelect'\n | 'Preview'\n | 'PreviewTitle'\n | 'PreviewStatus'\n | 'PreviewAvatar'\n | 'previewMessage'\n | 'Skeleton'\n>;\n\nconst StatusIndicator = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const { isOnline } = useChatContext<StreamChatGenerics>();\n const { error, HeaderErrorIndicator, HeaderNetworkDownIndicator, loadingChannels, refreshList } =\n useChannelsContext<StreamChatGenerics>();\n\n if (loadingChannels) return null;\n\n if (!isOnline) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderNetworkDownIndicator />\n </View>\n );\n } else if (error) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderErrorIndicator onPress={refreshList} />\n </View>\n );\n }\n return null;\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: Channel<StreamChatGenerics>;\n}) => <ChannelPreview<StreamChatGenerics> channel={item} />;\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: Channel<StreamChatGenerics>,\n) => item.cid;\n\nconst ChannelListMessengerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = props;\n\n const {\n theme: {\n channelListMessenger: { flatList, flatListContent },\n colors: { white_snow },\n },\n } = useTheme();\n\n /**\n * In order to prevent the EmptyStateIndicator component from showing up briefly on mount,\n * we set the loading state one cycle behind to ensure the channels are set before the\n * change to loadingChannels is registered.\n */\n const [loading, setLoading] = useState(true);\n const debugRef = useDebugContext();\n\n useEffect(() => {\n if (!!loadingChannels !== loading) {\n setLoading(!!loadingChannels);\n }\n }, [loading, loadingChannels]);\n\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Channels',\n data: channels?.map((channel) => ({\n data: channel.data,\n members: channel.state.members,\n })),\n });\n }\n\n if (error && !refreshing && !loadingChannels && channels === null) {\n return (\n <LoadingErrorIndicator\n error={error}\n listType='channel'\n loadNextPage={loadNextPage}\n retry={reloadList}\n />\n );\n }\n\n const onEndReached = () => {\n if (loadNextPage) {\n loadNextPage();\n }\n };\n\n const ListFooterComponent = () =>\n channels?.length && ListHeaderComponent ? <ListHeaderComponent /> : null;\n\n if (loadingChannels) {\n return <LoadingIndicator listType='channel' />;\n }\n\n return (\n <>\n <FlatList\n contentContainerStyle={[\n styles.flatListContentContainer,\n { backgroundColor: white_snow },\n flatListContent,\n ]}\n data={channels}\n extraData={forceUpdate}\n keyExtractor={keyExtractor}\n ListEmptyComponent={\n loading ? (\n <LoadingIndicator listType='channel' />\n ) : (\n <EmptyStateIndicator listType='channel' />\n )\n }\n ListFooterComponent={loadingNextPage ? <FooterLoadingIndicator /> : undefined}\n ListHeaderComponent={ListFooterComponent}\n onEndReached={onEndReached}\n onEndReachedThreshold={loadMoreThreshold}\n ref={setFlatListRef}\n refreshControl={<RefreshControl onRefresh={refreshList} refreshing={refreshing} />}\n renderItem={renderItem}\n style={[styles.flatList, { backgroundColor: white_snow }, flatList]}\n testID='channel-list-messenger'\n {...additionalFlatListProps}\n />\n <StatusIndicator<StreamChatGenerics> />\n </>\n );\n};\n\nexport type ChannelListMessengerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ChannelListMessengerPropsWithContext<StreamChatGenerics>>;\n\n/**\n * This UI component displays the preview list of channels and handles Channel navigation. It\n * receives all props from the ChannelList component.\n *\n * @example ./ChannelListMessenger.md\n */\nexport const ChannelListMessenger = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = useChannelsContext<StreamChatGenerics>();\n\n return (\n <ChannelListMessengerWithContext\n {...{\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n }}\n {...props}\n />\n );\n};\n\nChannelListMessenger.displayName = 'ChannelListMessenger{channelListMessenger}';\n"]}
|
|
@@ -36,7 +36,7 @@ var useCreateChannelsContext = function useCreateChannelsContext(_ref) {
|
|
|
36
36
|
reloadList = _ref.reloadList,
|
|
37
37
|
setFlatListRef = _ref.setFlatListRef,
|
|
38
38
|
Skeleton = _ref.Skeleton;
|
|
39
|
-
var channelValueString = channels.map(function (channel) {
|
|
39
|
+
var channelValueString = channels == null ? void 0 : channels.map(function (channel) {
|
|
40
40
|
var _channel$data$name, _channel$data, _channel$id;
|
|
41
41
|
|
|
42
42
|
return "" + ((_channel$data$name = (_channel$data = channel.data) == null ? void 0 : _channel$data.name) != null ? _channel$data$name : '') + ((_channel$id = channel.id) != null ? _channel$id : '') + Object.values(channel.state.members).map(function (member) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useCreateChannelsContext.ts"],"names":["useCreateChannelsContext","additionalFlatListProps","channels","EmptyStateIndicator","error","FooterLoadingIndicator","forceUpdate","hasNextPage","HeaderErrorIndicator","HeaderNetworkDownIndicator","ListHeaderComponent","loadingChannels","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","maxUnreadCount","numberOfSkeletons","onSelect","Preview","PreviewAvatar","PreviewMessage","PreviewStatus","PreviewTitle","PreviewUnreadCount","refreshing","refreshList","reloadList","setFlatListRef","Skeleton","channelValueString","map","channel","data","name","id","Object","values","state","members","member","user","online","join","channelsContext"],"mappings":";;;;;AAAA;;AAKO,IAAMA,wBAAwB,GAAG,SAA3BA,wBAA2B,OAiCQ;AAAA,MA9B9CC,uBA8B8C,QA9B9CA,uBA8B8C;AAAA,MA7B9CC,QA6B8C,QA7B9CA,QA6B8C;AAAA,MA5B9CC,mBA4B8C,QA5B9CA,mBA4B8C;AAAA,MA3B9CC,KA2B8C,QA3B9CA,KA2B8C;AAAA,MA1B9CC,sBA0B8C,QA1B9CA,sBA0B8C;AAAA,MAzB9CC,WAyB8C,QAzB9CA,WAyB8C;AAAA,MAxB9CC,WAwB8C,QAxB9CA,WAwB8C;AAAA,MAvB9CC,oBAuB8C,QAvB9CA,oBAuB8C;AAAA,MAtB9CC,0BAsB8C,QAtB9CA,0BAsB8C;AAAA,MArB9CC,mBAqB8C,QArB9CA,mBAqB8C;AAAA,MApB9CC,eAoB8C,QApB9CA,eAoB8C;AAAA,MAnB9CC,qBAmB8C,QAnB9CA,qBAmB8C;AAAA,MAlB9CC,gBAkB8C,QAlB9CA,gBAkB8C;AAAA,MAjB9CC,eAiB8C,QAjB9CA,eAiB8C;AAAA,MAhB9CC,iBAgB8C,QAhB9CA,iBAgB8C;AAAA,MAf9CC,YAe8C,QAf9CA,YAe8C;AAAA,MAd9CC,cAc8C,QAd9CA,cAc8C;AAAA,MAb9CC,iBAa8C,QAb9CA,iBAa8C;AAAA,MAZ9CC,QAY8C,QAZ9CA,QAY8C;AAAA,MAX9CC,OAW8C,QAX9CA,OAW8C;AAAA,MAV9CC,aAU8C,QAV9CA,aAU8C;AAAA,MAT9CC,cAS8C,QAT9CA,cAS8C;AAAA,MAR9CC,aAQ8C,QAR9CA,aAQ8C;AAAA,MAP9CC,YAO8C,QAP9CA,YAO8C;AAAA,MAN9CC,kBAM8C,QAN9CA,kBAM8C;AAAA,MAL9CC,UAK8C,QAL9CA,UAK8C;AAAA,MAJ9CC,WAI8C,QAJ9CA,WAI8C;AAAA,MAH9CC,UAG8C,QAH9CA,UAG8C;AAAA,MAF9CC,cAE8C,QAF9CA,cAE8C;AAAA,MAD9CC,QAC8C,QAD9CA,QAC8C;AAC9C,MAAMC,kBAAkB,GAAG7B,QAAQ,
|
|
1
|
+
{"version":3,"sources":["useCreateChannelsContext.ts"],"names":["useCreateChannelsContext","additionalFlatListProps","channels","EmptyStateIndicator","error","FooterLoadingIndicator","forceUpdate","hasNextPage","HeaderErrorIndicator","HeaderNetworkDownIndicator","ListHeaderComponent","loadingChannels","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","maxUnreadCount","numberOfSkeletons","onSelect","Preview","PreviewAvatar","PreviewMessage","PreviewStatus","PreviewTitle","PreviewUnreadCount","refreshing","refreshList","reloadList","setFlatListRef","Skeleton","channelValueString","map","channel","data","name","id","Object","values","state","members","member","user","online","join","channelsContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { ChannelsContextValue } from '../../../contexts/channelsContext/ChannelsContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateChannelsContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\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,\n Skeleton,\n}: ChannelsContextValue<StreamChatGenerics>) => {\n const channelValueString = channels\n ?.map(\n (channel) =>\n `${channel.data?.name ?? ''}${channel.id ?? ''}${Object.values(channel.state.members)\n .map((member) => member.user?.online)\n .join()}`,\n )\n .join();\n const channelsContext: ChannelsContextValue<StreamChatGenerics> = useMemo(\n () => ({\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,\n Skeleton,\n }),\n [\n channelValueString,\n error,\n forceUpdate,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n refreshing,\n ],\n );\n\n return channelsContext;\n};\n"]}
|
|
@@ -53,14 +53,12 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
53
53
|
var _useChatContext = (0, _ChatContext.useChatContext)(),
|
|
54
54
|
client = _useChatContext.client;
|
|
55
55
|
|
|
56
|
-
var
|
|
57
|
-
|
|
58
|
-
var _useState = (0, _react.useState)(initialChannelsStateRef.current),
|
|
56
|
+
var _useState = (0, _react.useState)(null),
|
|
59
57
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
60
58
|
channels = _useState2[0],
|
|
61
59
|
setChannels = _useState2[1];
|
|
62
60
|
|
|
63
|
-
var _useState3 = (0, _react.useState)(
|
|
61
|
+
var _useState3 = (0, _react.useState)(false),
|
|
64
62
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
65
63
|
staticChannelsActive = _useState4[0],
|
|
66
64
|
setStaticChannelsActive = _useState4[1];
|
|
@@ -146,7 +144,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
146
144
|
setActiveQueryType(queryType);
|
|
147
145
|
newOptions = (0, _extends2["default"])({
|
|
148
146
|
limit: (_options$limit = options == null ? void 0 : options.limit) != null ? _options$limit : _utils.MAX_QUERY_CHANNELS_LIMIT,
|
|
149
|
-
offset: queryType === 'loadChannels' && !staticChannelsActive ? channels.length : 0
|
|
147
|
+
offset: queryType === 'loadChannels' && !staticChannelsActive && channels ? channels.length : 0
|
|
150
148
|
}, options);
|
|
151
149
|
_context.prev = 17;
|
|
152
150
|
_context.next = 20;
|
|
@@ -165,7 +163,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
165
163
|
return _context.abrupt("return");
|
|
166
164
|
|
|
167
165
|
case 23:
|
|
168
|
-
newChannels = queryType === 'loadChannels' && !staticChannelsActive ? [].concat((0, _toConsumableArray2["default"])(channels), (0, _toConsumableArray2["default"])(channelQueryResponse)) : channelQueryResponse;
|
|
166
|
+
newChannels = queryType === 'loadChannels' && !staticChannelsActive && channels ? [].concat((0, _toConsumableArray2["default"])(channels), (0, _toConsumableArray2["default"])(channelQueryResponse)) : channelQueryResponse;
|
|
169
167
|
setChannels(newChannels);
|
|
170
168
|
setStaticChannelsActive(false);
|
|
171
169
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
@@ -260,6 +258,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
260
258
|
setChannels(client.hydrateActiveChannels(channelsFromDB, {
|
|
261
259
|
offlineMode: true
|
|
262
260
|
}));
|
|
261
|
+
setStaticChannelsActive(true);
|
|
263
262
|
}
|
|
264
263
|
} catch (e) {
|
|
265
264
|
console.warn('Failed to get channels from database: ', e);
|
|
@@ -275,7 +274,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
275
274
|
channels: channels,
|
|
276
275
|
error: error,
|
|
277
276
|
hasNextPage: hasNextPage,
|
|
278
|
-
loadingChannels: activeQueryType === 'queryLocalDB' ? true : activeQueryType === 'reload' && channels ===
|
|
277
|
+
loadingChannels: activeQueryType === 'queryLocalDB' ? true : activeQueryType === 'reload' && channels === null,
|
|
279
278
|
loadingNextPage: activeQueryType === 'loadChannels',
|
|
280
279
|
loadNextPage: loadNextPage,
|
|
281
280
|
refreshing: activeQueryType === 'refresh',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","enableOfflineSupport","filters","options","sort","client","initialChannelsStateRef","current","channels","setChannels","staticChannelsActive","setStaticChannelsActive","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadChannels","user","id","channelsFromDB","currentUserId","hydrateActiveChannels","offlineMode","e","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannelsForFilterSort } from '../../../store/apis/getChannelsForFilterSort';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const initialChannelsStateRef = useRef([]);\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>(\n initialChannelsStateRef.current,\n );\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(true);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n queryType === 'refresh' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' && !staticChannelsActive ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n const loadChannels = () => {\n if (!client?.user?.id) return;\n if (enableOfflineSupport) {\n try {\n const channelsFromDB = getChannelsForFilterSort({\n currentUserId: client.user.id,\n filters,\n sort,\n });\n\n if (channelsFromDB) {\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n offlineMode: true,\n }),\n );\n }\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n }\n\n reloadList();\n };\n\n loadChannels();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : activeQueryType === 'reload' && channels === initialChannelsStateRef.current,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n staticChannelsActive,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","enableOfflineSupport","filters","options","sort","client","channels","setChannels","staticChannelsActive","setStaticChannelsActive","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadChannels","user","id","channelsFromDB","currentUserId","hydrateActiveChannels","offlineMode","e","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannelsForFilterSort } from '../../../store/apis/getChannelsForFilterSort';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[] | null>(null);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n queryType === 'refresh' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset:\n queryType === 'loadChannels' && !staticChannelsActive && channels ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive && channels\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n const loadChannels = () => {\n if (!client?.user?.id) return;\n if (enableOfflineSupport) {\n try {\n const channelsFromDB = getChannelsForFilterSort({\n currentUserId: client.user.id,\n filters,\n sort,\n });\n\n if (channelsFromDB) {\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n offlineMode: true,\n }),\n );\n setStaticChannelsActive(true);\n }\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n }\n\n reloadList();\n };\n\n loadChannels();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB' ? true : activeQueryType === 'reload' && channels === null,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n // Although channels can be null, there is no practical case where channels will be null\n // when setChannels is used. setChannels is only recommended to be used for overriding\n // event handler. Thus instead of adding if check for channels === null, its better to\n // simply reassign types here.\n setChannels: setChannels as React.Dispatch<React.SetStateAction<Channel<StreamChatGenerics>[]>>,\n staticChannelsActive,\n };\n};\n"]}
|
|
@@ -3,7 +3,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.ChannelAvatar = void 0;
|
|
6
|
+
exports.ChannelAvatarWithContext = exports.ChannelAvatar = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
9
|
|
|
8
10
|
var _react = _interopRequireDefault(require("react"));
|
|
9
11
|
|
|
@@ -11,6 +13,8 @@ var _useChannelPreviewDisplayAvatar = require("./hooks/useChannelPreviewDisplayA
|
|
|
11
13
|
|
|
12
14
|
var _useChannelPreviewDisplayPresence = require("./hooks/useChannelPreviewDisplayPresence");
|
|
13
15
|
|
|
16
|
+
var _ChatContext = require("../../contexts/chatContext/ChatContext");
|
|
17
|
+
|
|
14
18
|
var _Avatar = require("../Avatar/Avatar");
|
|
15
19
|
|
|
16
20
|
var _GroupAvatar = require("../Avatar/GroupAvatar");
|
|
@@ -18,38 +22,58 @@ var _GroupAvatar = require("../Avatar/GroupAvatar");
|
|
|
18
22
|
var _this = this,
|
|
19
23
|
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ChannelPreview/ChannelAvatar.tsx";
|
|
20
24
|
|
|
21
|
-
var
|
|
22
|
-
var channel = props.channel
|
|
25
|
+
var ChannelAvatarWithContext = function ChannelAvatarWithContext(props) {
|
|
26
|
+
var channel = props.channel,
|
|
27
|
+
ImageComponent = props.ImageComponent;
|
|
23
28
|
var displayAvatar = (0, _useChannelPreviewDisplayAvatar.useChannelPreviewDisplayAvatar)(channel);
|
|
24
29
|
var displayPresence = (0, _useChannelPreviewDisplayPresence.useChannelPreviewDisplayPresence)(channel);
|
|
25
30
|
|
|
26
31
|
if (displayAvatar.images) {
|
|
27
32
|
return _react["default"].createElement(_GroupAvatar.GroupAvatar, {
|
|
33
|
+
ImageComponent: ImageComponent,
|
|
28
34
|
images: displayAvatar.images,
|
|
29
35
|
names: displayAvatar.names,
|
|
30
36
|
size: 40,
|
|
31
37
|
__self: _this,
|
|
32
38
|
__source: {
|
|
33
39
|
fileName: _jsxFileName,
|
|
34
|
-
lineNumber:
|
|
35
|
-
columnNumber:
|
|
40
|
+
lineNumber: 31,
|
|
41
|
+
columnNumber: 7
|
|
36
42
|
}
|
|
37
43
|
});
|
|
38
44
|
}
|
|
39
45
|
|
|
40
46
|
return _react["default"].createElement(_Avatar.Avatar, {
|
|
41
47
|
image: displayAvatar.image,
|
|
48
|
+
ImageComponent: ImageComponent,
|
|
42
49
|
name: displayAvatar.name,
|
|
43
50
|
online: displayPresence,
|
|
44
51
|
size: 40,
|
|
45
52
|
__self: _this,
|
|
46
53
|
__source: {
|
|
47
54
|
fileName: _jsxFileName,
|
|
48
|
-
lineNumber:
|
|
55
|
+
lineNumber: 41,
|
|
49
56
|
columnNumber: 5
|
|
50
57
|
}
|
|
51
58
|
});
|
|
52
59
|
};
|
|
53
60
|
|
|
61
|
+
exports.ChannelAvatarWithContext = ChannelAvatarWithContext;
|
|
62
|
+
|
|
63
|
+
var ChannelAvatar = function ChannelAvatar(props) {
|
|
64
|
+
var _useChatContext = (0, _ChatContext.useChatContext)(),
|
|
65
|
+
ImageComponent = _useChatContext.ImageComponent;
|
|
66
|
+
|
|
67
|
+
return _react["default"].createElement(ChannelAvatarWithContext, (0, _extends2["default"])({}, props, {
|
|
68
|
+
ImageComponent: ImageComponent,
|
|
69
|
+
__self: _this,
|
|
70
|
+
__source: {
|
|
71
|
+
fileName: _jsxFileName,
|
|
72
|
+
lineNumber: 58,
|
|
73
|
+
columnNumber: 10
|
|
74
|
+
}
|
|
75
|
+
}));
|
|
76
|
+
};
|
|
77
|
+
|
|
54
78
|
exports.ChannelAvatar = ChannelAvatar;
|
|
55
79
|
//# sourceMappingURL=ChannelAvatar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChannelAvatar.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["ChannelAvatar.tsx"],"names":["ChannelAvatarWithContext","props","channel","ImageComponent","displayAvatar","displayPresence","images","names","image","name","ChannelAvatar"],"mappings":";;;;;;;;;AAAA;;AAGA;;AACA;;AAEA;;AAEA;;AACA;;;;;AASO,IAAMA,wBAAwB,GAAG,SAA3BA,wBAA2B,CAGtCC,KAHsC,EAInC;AACH,MAAQC,OAAR,GAAoCD,KAApC,CAAQC,OAAR;AAAA,MAAiBC,cAAjB,GAAoCF,KAApC,CAAiBE,cAAjB;AAEA,MAAMC,aAAa,GAAG,oEAA+BF,OAA/B,CAAtB;AACA,MAAMG,eAAe,GAAG,wEAAiCH,OAAjC,CAAxB;;AAEA,MAAIE,aAAa,CAACE,MAAlB,EAA0B;AACxB,WACE,gCAAC,wBAAD;AACE,MAAA,cAAc,EAAEH,cADlB;AAEE,MAAA,MAAM,EAAEC,aAAa,CAACE,MAFxB;AAGE,MAAA,KAAK,EAAEF,aAAa,CAACG,KAHvB;AAIE,MAAA,IAAI,EAAE,EAJR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF;AAQD;;AAED,SACE,gCAAC,cAAD;AACE,IAAA,KAAK,EAAEH,aAAa,CAACI,KADvB;AAEE,IAAA,cAAc,EAAEL,cAFlB;AAGE,IAAA,IAAI,EAAEC,aAAa,CAACK,IAHtB;AAIE,IAAA,MAAM,EAAEJ,eAJV;AAKE,IAAA,IAAI,EAAE,EALR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF;AASD,CA9BM;;;;AAgCA,IAAMK,aAAa,GAAG,SAAhBA,aAAgB,CAG3BT,KAH2B,EAIxB;AACH,wBAA2B,kCAA3B;AAAA,MAAQE,cAAR,mBAAQA,cAAR;;AAEA,SAAO,gCAAC,wBAAD,gCAA8BF,KAA9B;AAAqC,IAAA,cAAc,EAAEE,cAArD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React from 'react';\n\nimport type { ChannelPreviewProps } from './ChannelPreview';\nimport { useChannelPreviewDisplayAvatar } from './hooks/useChannelPreviewDisplayAvatar';\nimport { useChannelPreviewDisplayPresence } from './hooks/useChannelPreviewDisplayPresence';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { Avatar } from '../Avatar/Avatar';\nimport { GroupAvatar } from '../Avatar/GroupAvatar';\n\nexport type ChannelAvatarProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelPreviewProps<StreamChatGenerics>, 'channel'>;\n\n/**\n * This UI component displays an avatar for a particular channel.\n */\nexport const ChannelAvatarWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelAvatarProps<StreamChatGenerics> & Pick<ChatContextValue, 'ImageComponent'>,\n) => {\n const { channel, ImageComponent } = props;\n\n const displayAvatar = useChannelPreviewDisplayAvatar(channel);\n const displayPresence = useChannelPreviewDisplayPresence(channel);\n\n if (displayAvatar.images) {\n return (\n <GroupAvatar\n ImageComponent={ImageComponent}\n images={displayAvatar.images}\n names={displayAvatar.names}\n size={40}\n />\n );\n }\n\n return (\n <Avatar\n image={displayAvatar.image}\n ImageComponent={ImageComponent}\n name={displayAvatar.name}\n online={displayPresence}\n size={40}\n />\n );\n};\n\nexport const ChannelAvatar = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelAvatarProps<StreamChatGenerics>,\n) => {\n const { ImageComponent } = useChatContext<StreamChatGenerics>();\n\n return <ChannelAvatarWithContext {...props} ImageComponent={ImageComponent} />;\n};\n"]}
|
|
@@ -70,6 +70,8 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
70
70
|
_props$enableOfflineS = props.enableOfflineSupport,
|
|
71
71
|
enableOfflineSupport = _props$enableOfflineS === void 0 ? false : _props$enableOfflineS,
|
|
72
72
|
i18nInstance = props.i18nInstance,
|
|
73
|
+
_props$ImageComponent = props.ImageComponent,
|
|
74
|
+
ImageComponent = _props$ImageComponent === void 0 ? _reactNative.Image : _props$ImageComponent,
|
|
73
75
|
style = props.style;
|
|
74
76
|
|
|
75
77
|
var _useState = (0, _react.useState)(),
|
|
@@ -135,6 +137,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
135
137
|
client: client,
|
|
136
138
|
connectionRecovering: connectionRecovering,
|
|
137
139
|
enableOfflineSupport: enableOfflineSupport,
|
|
140
|
+
ImageComponent: ImageComponent,
|
|
138
141
|
isOnline: isOnline,
|
|
139
142
|
mutedUsers: mutedUsers,
|
|
140
143
|
setActiveChannel: setActiveChannel,
|
|
@@ -155,7 +158,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
155
158
|
__self: _this,
|
|
156
159
|
__source: {
|
|
157
160
|
fileName: _jsxFileName,
|
|
158
|
-
lineNumber:
|
|
161
|
+
lineNumber: 232,
|
|
159
162
|
columnNumber: 5
|
|
160
163
|
}
|
|
161
164
|
}, _react["default"].createElement(_TranslationContext.TranslationProvider, {
|
|
@@ -165,7 +168,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
165
168
|
__self: _this,
|
|
166
169
|
__source: {
|
|
167
170
|
fileName: _jsxFileName,
|
|
168
|
-
lineNumber:
|
|
171
|
+
lineNumber: 233,
|
|
169
172
|
columnNumber: 7
|
|
170
173
|
}
|
|
171
174
|
}, _react["default"].createElement(_ThemeContext.ThemeProvider, {
|
|
@@ -173,14 +176,14 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
173
176
|
__self: _this,
|
|
174
177
|
__source: {
|
|
175
178
|
fileName: _jsxFileName,
|
|
176
|
-
lineNumber:
|
|
179
|
+
lineNumber: 236,
|
|
177
180
|
columnNumber: 9
|
|
178
181
|
}
|
|
179
182
|
}, _react["default"].createElement(_ChannelsStateContext.ChannelsStateProvider, {
|
|
180
183
|
__self: _this,
|
|
181
184
|
__source: {
|
|
182
185
|
fileName: _jsxFileName,
|
|
183
|
-
lineNumber:
|
|
186
|
+
lineNumber: 237,
|
|
184
187
|
columnNumber: 11
|
|
185
188
|
}
|
|
186
189
|
}, children))));
|
|
@@ -196,7 +199,7 @@ var Chat = function Chat(props) {
|
|
|
196
199
|
__self: _this,
|
|
197
200
|
__source: {
|
|
198
201
|
fileName: _jsxFileName,
|
|
199
|
-
lineNumber:
|
|
202
|
+
lineNumber: 272,
|
|
200
203
|
columnNumber: 10
|
|
201
204
|
}
|
|
202
205
|
}));
|