stream-chat-react-native-core 5.8.0 → 5.8.1-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/ChannelList/ChannelList.js +5 -3
- package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +2 -0
- package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +23 -25
- package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +5 -2
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +11 -8
- package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +64 -48
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
- package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelList/ChannelList.js +5 -3
- package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +2 -0
- package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
- package/lib/module/components/ChannelList/ChannelListMessenger.js +23 -25
- package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +5 -2
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +11 -8
- package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +64 -48
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/Message/utils/messageActions.js.map +1 -1
- package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/ChannelList/ChannelListMessenger.d.ts +1 -1
- package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessage.d.ts +3 -2
- package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts +3 -2
- package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +2 -2
- package/lib/typescript/components/Message/utils/messageActions.d.ts +1 -1
- package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/ChannelList/ChannelList.tsx +4 -2
- package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +1 -1
- package/src/components/ChannelList/ChannelListMessenger.tsx +9 -7
- package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +14 -2
- package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +8 -2
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +11 -12
- package/src/components/Message/utils/messageActions.ts +1 -1
- package/src/contexts/channelsContext/ChannelsContext.tsx +1 -1
- package/src/version.json +1 -1
|
@@ -47,14 +47,14 @@ var StatusIndicator = function StatusIndicator() {
|
|
|
47
47
|
__self: _this,
|
|
48
48
|
__source: {
|
|
49
49
|
fileName: _jsxFileName,
|
|
50
|
-
lineNumber:
|
|
50
|
+
lineNumber: 53,
|
|
51
51
|
columnNumber: 7
|
|
52
52
|
}
|
|
53
53
|
}, _react["default"].createElement(HeaderNetworkDownIndicator, {
|
|
54
54
|
__self: _this,
|
|
55
55
|
__source: {
|
|
56
56
|
fileName: _jsxFileName,
|
|
57
|
-
lineNumber:
|
|
57
|
+
lineNumber: 54,
|
|
58
58
|
columnNumber: 9
|
|
59
59
|
}
|
|
60
60
|
}));
|
|
@@ -64,7 +64,7 @@ var StatusIndicator = function StatusIndicator() {
|
|
|
64
64
|
__self: _this,
|
|
65
65
|
__source: {
|
|
66
66
|
fileName: _jsxFileName,
|
|
67
|
-
lineNumber:
|
|
67
|
+
lineNumber: 59,
|
|
68
68
|
columnNumber: 7
|
|
69
69
|
}
|
|
70
70
|
}, _react["default"].createElement(HeaderErrorIndicator, {
|
|
@@ -72,7 +72,7 @@ var StatusIndicator = function StatusIndicator() {
|
|
|
72
72
|
__self: _this,
|
|
73
73
|
__source: {
|
|
74
74
|
fileName: _jsxFileName,
|
|
75
|
-
lineNumber:
|
|
75
|
+
lineNumber: 60,
|
|
76
76
|
columnNumber: 9
|
|
77
77
|
}
|
|
78
78
|
}));
|
|
@@ -86,7 +86,7 @@ var renderItem = function renderItem(_ref) {
|
|
|
86
86
|
__self: _this,
|
|
87
87
|
__source: {
|
|
88
88
|
fileName: _jsxFileName,
|
|
89
|
-
lineNumber:
|
|
89
|
+
lineNumber: 73,
|
|
90
90
|
columnNumber: 7
|
|
91
91
|
}
|
|
92
92
|
});
|
|
@@ -95,12 +95,14 @@ var keyExtractor = function keyExtractor(item) {
|
|
|
95
95
|
return item.cid;
|
|
96
96
|
};
|
|
97
97
|
var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(props) {
|
|
98
|
+
var onEndReachedCalledDuringCurrentScrollRef = (0, _react.useRef)(false);
|
|
98
99
|
var additionalFlatListProps = props.additionalFlatListProps,
|
|
99
100
|
channels = props.channels,
|
|
100
101
|
EmptyStateIndicator = props.EmptyStateIndicator,
|
|
101
102
|
error = props.error,
|
|
102
103
|
FooterLoadingIndicator = props.FooterLoadingIndicator,
|
|
103
104
|
forceUpdate = props.forceUpdate,
|
|
105
|
+
hasNextPage = props.hasNextPage,
|
|
104
106
|
ListHeaderComponent = props.ListHeaderComponent,
|
|
105
107
|
loadingChannels = props.loadingChannels,
|
|
106
108
|
LoadingErrorIndicator = props.LoadingErrorIndicator,
|
|
@@ -150,33 +152,24 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
150
152
|
__self: _this,
|
|
151
153
|
__source: {
|
|
152
154
|
fileName: _jsxFileName,
|
|
153
|
-
lineNumber:
|
|
155
|
+
lineNumber: 145,
|
|
154
156
|
columnNumber: 7
|
|
155
157
|
}
|
|
156
158
|
});
|
|
157
159
|
}
|
|
158
160
|
var onEndReached = function onEndReached() {
|
|
159
|
-
if (
|
|
161
|
+
if (!onEndReachedCalledDuringCurrentScrollRef.current && hasNextPage) {
|
|
160
162
|
loadNextPage();
|
|
163
|
+
onEndReachedCalledDuringCurrentScrollRef.current = true;
|
|
161
164
|
}
|
|
162
165
|
};
|
|
163
|
-
var ListFooterComponent = function ListFooterComponent() {
|
|
164
|
-
return channels != null && channels.length && ListHeaderComponent ? _react["default"].createElement(ListHeaderComponent, {
|
|
165
|
-
__self: _this,
|
|
166
|
-
__source: {
|
|
167
|
-
fileName: _jsxFileName,
|
|
168
|
-
lineNumber: 160,
|
|
169
|
-
columnNumber: 47
|
|
170
|
-
}
|
|
171
|
-
}) : null;
|
|
172
|
-
};
|
|
173
166
|
if (loadingChannels) {
|
|
174
167
|
return _react["default"].createElement(LoadingIndicator, {
|
|
175
168
|
listType: "channel",
|
|
176
169
|
__self: _this,
|
|
177
170
|
__source: {
|
|
178
171
|
fileName: _jsxFileName,
|
|
179
|
-
lineNumber:
|
|
172
|
+
lineNumber: 162,
|
|
180
173
|
columnNumber: 12
|
|
181
174
|
}
|
|
182
175
|
});
|
|
@@ -184,7 +177,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
184
177
|
return _react["default"].createElement(_react["default"].Fragment, {
|
|
185
178
|
__source: {
|
|
186
179
|
fileName: _jsxFileName,
|
|
187
|
-
lineNumber:
|
|
180
|
+
lineNumber: 166,
|
|
188
181
|
columnNumber: 5
|
|
189
182
|
}
|
|
190
183
|
}, _react["default"].createElement(_reactNative.FlatList, (0, _extends2["default"])({
|
|
@@ -199,7 +192,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
199
192
|
__self: _this,
|
|
200
193
|
__source: {
|
|
201
194
|
fileName: _jsxFileName,
|
|
202
|
-
lineNumber:
|
|
195
|
+
lineNumber: 178,
|
|
203
196
|
columnNumber: 13
|
|
204
197
|
}
|
|
205
198
|
}) : _react["default"].createElement(EmptyStateIndicator, {
|
|
@@ -207,7 +200,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
207
200
|
__self: _this,
|
|
208
201
|
__source: {
|
|
209
202
|
fileName: _jsxFileName,
|
|
210
|
-
lineNumber:
|
|
203
|
+
lineNumber: 180,
|
|
211
204
|
columnNumber: 13
|
|
212
205
|
}
|
|
213
206
|
}),
|
|
@@ -215,13 +208,16 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
215
208
|
__self: _this,
|
|
216
209
|
__source: {
|
|
217
210
|
fileName: _jsxFileName,
|
|
218
|
-
lineNumber:
|
|
211
|
+
lineNumber: 183,
|
|
219
212
|
columnNumber: 48
|
|
220
213
|
}
|
|
221
214
|
}) : undefined,
|
|
222
|
-
ListHeaderComponent:
|
|
215
|
+
ListHeaderComponent: ListHeaderComponent,
|
|
223
216
|
onEndReached: onEndReached,
|
|
224
217
|
onEndReachedThreshold: loadMoreThreshold,
|
|
218
|
+
onMomentumScrollBegin: function onMomentumScrollBegin() {
|
|
219
|
+
return onEndReachedCalledDuringCurrentScrollRef.current = false;
|
|
220
|
+
},
|
|
225
221
|
ref: setFlatListRef,
|
|
226
222
|
refreshControl: _react["default"].createElement(_reactNative.RefreshControl, {
|
|
227
223
|
onRefresh: refreshList,
|
|
@@ -242,7 +238,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
|
|
|
242
238
|
__self: _this,
|
|
243
239
|
__source: {
|
|
244
240
|
fileName: _jsxFileName,
|
|
245
|
-
lineNumber:
|
|
241
|
+
lineNumber: 167,
|
|
246
242
|
columnNumber: 7
|
|
247
243
|
}
|
|
248
244
|
})), _react["default"].createElement(StatusIndicator, {
|
|
@@ -262,6 +258,7 @@ var ChannelListMessenger = function ChannelListMessenger(props) {
|
|
|
262
258
|
error = _useChannelsContext2.error,
|
|
263
259
|
FooterLoadingIndicator = _useChannelsContext2.FooterLoadingIndicator,
|
|
264
260
|
forceUpdate = _useChannelsContext2.forceUpdate,
|
|
261
|
+
hasNextPage = _useChannelsContext2.hasNextPage,
|
|
265
262
|
ListHeaderComponent = _useChannelsContext2.ListHeaderComponent,
|
|
266
263
|
loadingChannels = _useChannelsContext2.loadingChannels,
|
|
267
264
|
LoadingErrorIndicator = _useChannelsContext2.LoadingErrorIndicator,
|
|
@@ -280,6 +277,7 @@ var ChannelListMessenger = function ChannelListMessenger(props) {
|
|
|
280
277
|
error: error,
|
|
281
278
|
FooterLoadingIndicator: FooterLoadingIndicator,
|
|
282
279
|
forceUpdate: forceUpdate,
|
|
280
|
+
hasNextPage: hasNextPage,
|
|
283
281
|
ListHeaderComponent: ListHeaderComponent,
|
|
284
282
|
loadingChannels: loadingChannels,
|
|
285
283
|
LoadingErrorIndicator: LoadingErrorIndicator,
|
|
@@ -295,7 +293,7 @@ var ChannelListMessenger = function ChannelListMessenger(props) {
|
|
|
295
293
|
__self: _this,
|
|
296
294
|
__source: {
|
|
297
295
|
fileName: _jsxFileName,
|
|
298
|
-
lineNumber:
|
|
296
|
+
lineNumber: 237,
|
|
299
297
|
columnNumber: 5
|
|
300
298
|
}
|
|
301
299
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["styles","StyleSheet","create","flatList","flex","flatListContentContainer","flexGrow","statusIndicator","left","position","right","top","StatusIndicator","useChatContext","isOnline","useChannelsContext","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","useTheme","theme","channelListMessenger","flatListContent","white_snow","colors","useState","loading","setLoading","debugRef","useDebugContext","useEffect","isDebugModeEnabled","__DEV__","current","setEventType","setSendEventParams","action","data","map","channel","members","state","onEndReached","ListFooterComponent","length","backgroundColor","undefined","ChannelListMessenger","displayName"],"sources":["ChannelListMessenger.tsx"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["styles","StyleSheet","create","flatList","flex","flatListContentContainer","flexGrow","statusIndicator","left","position","right","top","StatusIndicator","useChatContext","isOnline","useChannelsContext","error","HeaderErrorIndicator","HeaderNetworkDownIndicator","loadingChannels","refreshList","renderItem","item","keyExtractor","cid","ChannelListMessengerWithContext","props","onEndReachedCalledDuringCurrentScrollRef","useRef","additionalFlatListProps","channels","EmptyStateIndicator","FooterLoadingIndicator","forceUpdate","hasNextPage","ListHeaderComponent","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","refreshing","reloadList","setFlatListRef","useTheme","theme","channelListMessenger","flatListContent","white_snow","colors","useState","loading","setLoading","debugRef","useDebugContext","useEffect","isDebugModeEnabled","__DEV__","current","setEventType","setSendEventParams","action","data","map","channel","members","state","onEndReached","backgroundColor","undefined","ChannelListMessenger","displayName"],"sources":["ChannelListMessenger.tsx"],"sourcesContent":["import React, { useEffect, useRef, 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 | '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 onEndReachedCalledDuringCurrentScrollRef = useRef<boolean>(false);\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n hasNextPage,\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 (!onEndReachedCalledDuringCurrentScrollRef.current && hasNextPage) {\n loadNextPage();\n onEndReachedCalledDuringCurrentScrollRef.current = true;\n }\n };\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={ListHeaderComponent}\n onEndReached={onEndReached}\n onEndReachedThreshold={loadMoreThreshold}\n onMomentumScrollBegin={() => (onEndReachedCalledDuringCurrentScrollRef.current = false)}\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 hasNextPage,\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 hasNextPage,\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"],"mappings":"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"}
|
|
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
exports.useNewMessage = void 0;
|
|
6
6
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
7
7
|
var _react = require("react");
|
|
8
|
+
var _lodash = require("lodash");
|
|
8
9
|
var _ChatContext = require("../../../../contexts/chatContext/ChatContext");
|
|
9
10
|
var _utils = require("../../utils");
|
|
10
11
|
var useNewMessage = function useNewMessage(_ref) {
|
|
11
|
-
var
|
|
12
|
+
var filters = _ref.filters,
|
|
13
|
+
lockChannelOrder = _ref.lockChannelOrder,
|
|
12
14
|
setChannels = _ref.setChannels;
|
|
13
15
|
var _useChatContext = (0, _ChatContext.useChatContext)(),
|
|
14
16
|
client = _useChatContext.client;
|
|
@@ -16,7 +18,8 @@ var useNewMessage = function useNewMessage(_ref) {
|
|
|
16
18
|
var handleEvent = function handleEvent(event) {
|
|
17
19
|
setChannels(function (channels) {
|
|
18
20
|
if (!channels) return channels;
|
|
19
|
-
|
|
21
|
+
var areFiltersTypeMatchingToEventChannelType = (0, _lodash.isEmpty)(filters) || event.channel_type === (filters == null ? void 0 : filters.type);
|
|
22
|
+
if (!lockChannelOrder && event.cid && event.channel_type && event.channel_id && areFiltersTypeMatchingToEventChannelType) {
|
|
20
23
|
var targetChannelIndex = channels.findIndex(function (c) {
|
|
21
24
|
return c.cid === event.cid;
|
|
22
25
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useNewMessage","lockChannelOrder","setChannels","useChatContext","client","useEffect","handleEvent","event","channels","
|
|
1
|
+
{"version":3,"names":["useNewMessage","filters","lockChannelOrder","setChannels","useChatContext","client","useEffect","handleEvent","event","channels","areFiltersTypeMatchingToEventChannelType","isEmpty","channel_type","type","cid","channel_id","targetChannelIndex","findIndex","c","moveChannelUp","channel","initialized","listener","on","unsubscribe"],"sources":["useNewMessage.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { isEmpty } from 'lodash';\nimport type { Channel, ChannelFilters, 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 filters?: ChannelFilters<StreamChatGenerics>;\n };\n\nexport const useNewMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters,\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 const areFiltersTypeMatchingToEventChannelType =\n isEmpty(filters) || event.channel_type === filters?.type;\n\n if (\n !lockChannelOrder &&\n event.cid &&\n event.channel_type &&\n event.channel_id &&\n areFiltersTypeMatchingToEventChannelType\n ) {\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;AAEA;AAGA;AAGA;AASO,IAAMA,aAAa,GAAG,SAAhBA,aAAa,OAMY;EAAA,IAHpCC,OAAO,QAAPA,OAAO;IACPC,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,IAAMC,wCAAwC,GAC5C,IAAAC,eAAO,EAACV,OAAO,CAAC,IAAIO,KAAK,CAACI,YAAY,MAAKX,OAAO,oBAAPA,OAAO,CAAEY,IAAI;QAE1D,IACE,CAACX,gBAAgB,IACjBM,KAAK,CAACM,GAAG,IACTN,KAAK,CAACI,YAAY,IAClBJ,KAAK,CAACO,UAAU,IAChBL,wCAAwC,EACxC;UACA,IAAMM,kBAAkB,GAAGP,QAAQ,CAACQ,SAAS,CAAC,UAACC,CAAC;YAAA,OAAKA,CAAC,CAACJ,GAAG,KAAKN,KAAK,CAACM,GAAG;UAAA,EAAC;UAEzE,IAAIE,kBAAkB,IAAI,CAAC,EAAE;YAC3B,OAAO,IAAAG,oBAAa,EAAqB;cACvCV,QAAQ,EAARA,QAAQ;cACRK,GAAG,EAAEN,KAAK,CAACM;YACb,CAAC,CAAC;UACJ;UAKA,IAAMM,OAAO,GAAGf,MAAM,CAACe,OAAO,CAACZ,KAAK,CAACI,YAAY,EAAEJ,KAAK,CAACO,UAAU,CAAC;UAEpE,IAAIK,OAAO,CAACC,WAAW,EAAE;YACvB,QAAQD,OAAO,6CAAKX,QAAQ;UAC9B;QACF;QAEA,2CAAWA,QAAQ;MACrB,CAAC,CAAC;IACJ,CAAC;IAED,IAAMa,QAAQ,GAAGjB,MAAM,oBAANA,MAAM,CAAEkB,EAAE,CAAC,aAAa,EAAEhB,WAAW,CAAC;IACvD,OAAO;MAAA,OAAMe,QAAQ,oBAARA,QAAQ,CAAEE,WAAW,EAAE;IAAA;EACtC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC"}
|
|
@@ -7,18 +7,20 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
7
7
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
8
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
9
9
|
var _react = require("react");
|
|
10
|
+
var _lodash = require("lodash");
|
|
10
11
|
var _uniqBy = _interopRequireDefault(require("lodash/uniqBy"));
|
|
11
12
|
var _ChatContext = require("../../../../contexts/chatContext/ChatContext");
|
|
12
13
|
var _utils = require("../../utils");
|
|
13
14
|
var useNewMessageNotification = function useNewMessageNotification(_ref) {
|
|
14
|
-
var
|
|
15
|
+
var filters = _ref.filters,
|
|
16
|
+
onMessageNew = _ref.onMessageNew,
|
|
15
17
|
setChannels = _ref.setChannels;
|
|
16
18
|
var _useChatContext = (0, _ChatContext.useChatContext)(),
|
|
17
19
|
client = _useChatContext.client;
|
|
18
20
|
(0, _react.useEffect)(function () {
|
|
19
21
|
var handleEvent = function () {
|
|
20
22
|
var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(event) {
|
|
21
|
-
var _event$channel, _event$channel2, channel;
|
|
23
|
+
var _event$channel, _event$channel2, _event$channel3, areFiltersTypeMatchingToEventChannelType, channel;
|
|
22
24
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
23
25
|
while (1) switch (_context.prev = _context.next) {
|
|
24
26
|
case 0:
|
|
@@ -27,25 +29,26 @@ var useNewMessageNotification = function useNewMessageNotification(_ref) {
|
|
|
27
29
|
break;
|
|
28
30
|
}
|
|
29
31
|
onMessageNew(setChannels, event);
|
|
30
|
-
_context.next =
|
|
32
|
+
_context.next = 10;
|
|
31
33
|
break;
|
|
32
34
|
case 4:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
areFiltersTypeMatchingToEventChannelType = (0, _lodash.isEmpty)(filters) || ((_event$channel = event.channel) == null ? void 0 : _event$channel.type) === (filters == null ? void 0 : filters.type);
|
|
36
|
+
if (!((_event$channel2 = event.channel) != null && _event$channel2.id && (_event$channel3 = event.channel) != null && _event$channel3.type && areFiltersTypeMatchingToEventChannelType)) {
|
|
37
|
+
_context.next = 10;
|
|
35
38
|
break;
|
|
36
39
|
}
|
|
37
|
-
_context.next =
|
|
40
|
+
_context.next = 8;
|
|
38
41
|
return (0, _utils.getChannel)({
|
|
39
42
|
client: client,
|
|
40
43
|
id: event.channel.id,
|
|
41
44
|
type: event.channel.type
|
|
42
45
|
});
|
|
43
|
-
case
|
|
46
|
+
case 8:
|
|
44
47
|
channel = _context.sent;
|
|
45
48
|
setChannels(function (channels) {
|
|
46
49
|
return channels ? (0, _uniqBy["default"])([channel].concat((0, _toConsumableArray2["default"])(channels)), 'cid') : channels;
|
|
47
50
|
});
|
|
48
|
-
case
|
|
51
|
+
case 10:
|
|
49
52
|
case "end":
|
|
50
53
|
return _context.stop();
|
|
51
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useNewMessageNotification","onMessageNew","setChannels","useChatContext","client","useEffect","handleEvent","event","
|
|
1
|
+
{"version":3,"names":["useNewMessageNotification","filters","onMessageNew","setChannels","useChatContext","client","useEffect","handleEvent","event","areFiltersTypeMatchingToEventChannelType","isEmpty","channel","type","id","getChannel","channels","uniqBy","listener","on","unsubscribe"],"sources":["useNewMessageNotification.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { isEmpty } from 'lodash';\nimport uniqBy from 'lodash/uniqBy';\n\nimport type { Channel, ChannelFilters, 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 filters?: ChannelFilters<StreamChatGenerics>;\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 filters,\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 const areFiltersTypeMatchingToEventChannelType =\n isEmpty(filters) || event.channel?.type === filters?.type;\n\n if (event.channel?.id && event.channel?.type && areFiltersTypeMatchingToEventChannelType) {\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;AACA;AAIA;AAGA;AAYO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAAyB,OAMA;EAAA,IAHpCC,OAAO,QAAPA,OAAO;IACPC,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;cAE3BC,wCAAwC,GAC5C,IAAAC,eAAO,EAACT,OAAO,CAAC,IAAI,mBAAAO,KAAK,CAACG,OAAO,qBAAb,eAAeC,IAAI,OAAKX,OAAO,oBAAPA,OAAO,CAAEW,IAAI;cAAA,MAEvD,mBAAAJ,KAAK,CAACG,OAAO,aAAb,gBAAeE,EAAE,uBAAIL,KAAK,CAACG,OAAO,aAAb,gBAAeC,IAAI,IAAIH,wCAAwC;gBAAA;gBAAA;cAAA;cAAA;cAAA,OAChE,IAAAK,iBAAU,EAAC;gBAC/BT,MAAM,EAANA,MAAM;gBACNQ,EAAE,EAAEL,KAAK,CAACG,OAAO,CAACE,EAAE;gBACpBD,IAAI,EAAEJ,KAAK,CAACG,OAAO,CAACC;cACtB,CAAC,CAAC;YAAA;cAJID,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,gBAhBKR,WAAW;QAAA;MAAA;IAAA,GAgBhB;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"}
|
|
@@ -35,35 +35,35 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
35
35
|
setForceUpdate = _ref.setForceUpdate,
|
|
36
36
|
_ref$sort = _ref.sort,
|
|
37
37
|
sort = _ref$sort === void 0 ? {} : _ref$sort;
|
|
38
|
-
var _useChatContext = (0, _ChatContext.useChatContext)(),
|
|
39
|
-
client = _useChatContext.client;
|
|
40
38
|
var _useState = (0, _react.useState)(null),
|
|
41
39
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
42
40
|
channels = _useState2[0],
|
|
43
41
|
setChannels = _useState2[1];
|
|
44
|
-
var _useState3 = (0, _react.useState)(
|
|
42
|
+
var _useState3 = (0, _react.useState)(undefined),
|
|
45
43
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var
|
|
49
|
-
var _useState5 = (0, _react.useState)(),
|
|
44
|
+
error = _useState4[0],
|
|
45
|
+
setError = _useState4[1];
|
|
46
|
+
var _useState5 = (0, _react.useState)(false),
|
|
50
47
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
var _useState7 = (0, _react.useState)(
|
|
48
|
+
staticChannelsActive = _useState6[0],
|
|
49
|
+
setStaticChannelsActive = _useState6[1];
|
|
50
|
+
var _useState7 = (0, _react.useState)('queryLocalDB'),
|
|
54
51
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var
|
|
58
|
-
var isQueryingRef = (0, _react.useRef)(false);
|
|
59
|
-
var _useState9 = (0, _react.useState)('queryLocalDB'),
|
|
52
|
+
activeQueryType = _useState8[0],
|
|
53
|
+
setActiveQueryType = _useState8[1];
|
|
54
|
+
var _useState9 = (0, _react.useState)(false),
|
|
60
55
|
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
hasNextPage = _useState10[0],
|
|
57
|
+
setHasNextPage = _useState10[1];
|
|
58
|
+
var activeChannels = (0, _ActiveChannelsRefContext.useActiveChannelsRefContext)();
|
|
63
59
|
var isMountedRef = (0, _useIsMountedRef.useIsMountedRef)();
|
|
60
|
+
var _useChatContext = (0, _ChatContext.useChatContext)(),
|
|
61
|
+
client = _useChatContext.client;
|
|
64
62
|
var filtersRef = (0, _react.useRef)(null);
|
|
65
63
|
var sortRef = (0, _react.useRef)(null);
|
|
66
64
|
var activeRequestId = (0, _react.useRef)(0);
|
|
65
|
+
var isQueryingRef = (0, _react.useRef)(false);
|
|
66
|
+
var lastRefresh = (0, _react.useRef)(Date.now());
|
|
67
67
|
var queryChannels = function () {
|
|
68
68
|
var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
69
69
|
var _options$limit;
|
|
@@ -143,54 +143,70 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
143
143
|
setChannels(newChannels);
|
|
144
144
|
setStaticChannelsActive(false);
|
|
145
145
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
146
|
-
setError(undefined);
|
|
147
146
|
isQueryingRef.current = false;
|
|
148
|
-
_context.next =
|
|
147
|
+
_context.next = 45;
|
|
149
148
|
break;
|
|
150
|
-
case
|
|
151
|
-
_context.prev =
|
|
149
|
+
case 32:
|
|
150
|
+
_context.prev = 32;
|
|
152
151
|
_context.t0 = _context["catch"](17);
|
|
153
152
|
isQueryingRef.current = false;
|
|
154
|
-
_context.next =
|
|
153
|
+
_context.next = 37;
|
|
155
154
|
return waitSeconds(2);
|
|
156
|
-
case
|
|
155
|
+
case 37:
|
|
157
156
|
if (!isQueryStale()) {
|
|
158
|
-
_context.next =
|
|
157
|
+
_context.next = 39;
|
|
159
158
|
break;
|
|
160
159
|
}
|
|
161
160
|
return _context.abrupt("return");
|
|
162
|
-
case
|
|
161
|
+
case 39:
|
|
163
162
|
if (!(retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current)) {
|
|
164
|
-
_context.next =
|
|
163
|
+
_context.next = 44;
|
|
165
164
|
break;
|
|
166
165
|
}
|
|
167
166
|
setActiveQueryType(null);
|
|
168
167
|
console.warn(_context.t0);
|
|
169
168
|
setError(new Error("Maximum number of retries reached in queryChannels. Last error message is: " + _context.t0));
|
|
170
169
|
return _context.abrupt("return");
|
|
171
|
-
case
|
|
170
|
+
case 44:
|
|
172
171
|
return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
|
|
173
|
-
case
|
|
172
|
+
case 45:
|
|
174
173
|
setActiveQueryType(null);
|
|
175
|
-
case
|
|
174
|
+
case 46:
|
|
176
175
|
case "end":
|
|
177
176
|
return _context.stop();
|
|
178
177
|
}
|
|
179
|
-
}, _callee, null, [[17,
|
|
178
|
+
}, _callee, null, [[17, 32]]);
|
|
180
179
|
}));
|
|
181
180
|
return function queryChannels() {
|
|
182
181
|
return _ref2.apply(this, arguments);
|
|
183
182
|
};
|
|
184
183
|
}();
|
|
185
|
-
var
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
184
|
+
var refreshList = function () {
|
|
185
|
+
var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
|
|
186
|
+
var now;
|
|
187
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
188
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
189
|
+
case 0:
|
|
190
|
+
now = Date.now();
|
|
191
|
+
if (!(now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined)) {
|
|
192
|
+
_context2.next = 3;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
return _context2.abrupt("return");
|
|
196
|
+
case 3:
|
|
197
|
+
lastRefresh.current = Date.now();
|
|
198
|
+
_context2.next = 6;
|
|
199
|
+
return queryChannels('refresh');
|
|
200
|
+
case 6:
|
|
201
|
+
case "end":
|
|
202
|
+
return _context2.stop();
|
|
203
|
+
}
|
|
204
|
+
}, _callee2);
|
|
205
|
+
}));
|
|
206
|
+
return function refreshList() {
|
|
207
|
+
return _ref3.apply(this, arguments);
|
|
208
|
+
};
|
|
209
|
+
}();
|
|
194
210
|
var reloadList = function reloadList() {
|
|
195
211
|
return queryChannels('reload');
|
|
196
212
|
};
|
|
@@ -236,15 +252,15 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
236
252
|
}
|
|
237
253
|
} else {
|
|
238
254
|
listener = client.on('connection.changed', function () {
|
|
239
|
-
var
|
|
240
|
-
return _regenerator["default"].wrap(function
|
|
241
|
-
while (1) switch (
|
|
255
|
+
var _ref4 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(event) {
|
|
256
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
257
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
242
258
|
case 0:
|
|
243
259
|
if (!event.online) {
|
|
244
|
-
|
|
260
|
+
_context3.next = 4;
|
|
245
261
|
break;
|
|
246
262
|
}
|
|
247
|
-
|
|
263
|
+
_context3.next = 3;
|
|
248
264
|
return refreshList();
|
|
249
265
|
case 3:
|
|
250
266
|
setForceUpdate(function (u) {
|
|
@@ -252,12 +268,12 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
252
268
|
});
|
|
253
269
|
case 4:
|
|
254
270
|
case "end":
|
|
255
|
-
return
|
|
271
|
+
return _context3.stop();
|
|
256
272
|
}
|
|
257
|
-
},
|
|
273
|
+
}, _callee3);
|
|
258
274
|
}));
|
|
259
275
|
return function (_x) {
|
|
260
|
-
return
|
|
276
|
+
return _ref4.apply(this, arguments);
|
|
261
277
|
};
|
|
262
278
|
}());
|
|
263
279
|
reloadList();
|
|
@@ -273,7 +289,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
273
289
|
hasNextPage: hasNextPage,
|
|
274
290
|
loadingChannels: activeQueryType === 'queryLocalDB' ? true : (activeQueryType === 'reload' || activeQueryType === null) && channels === null,
|
|
275
291
|
loadingNextPage: activeQueryType === 'loadChannels',
|
|
276
|
-
loadNextPage:
|
|
292
|
+
loadNextPage: queryChannels,
|
|
277
293
|
refreshing: activeQueryType === 'refresh',
|
|
278
294
|
refreshList: refreshList,
|
|
279
295
|
reloadList: reloadList,
|