1- import React , { useEffect , useState } from 'react' ;
1+ import React , { useCallback , useEffect , useRef , useState } from 'react' ;
22
33import type { FlatList } from 'react-native-gesture-handler' ;
44
@@ -16,16 +16,16 @@ import { ChannelListHeaderErrorIndicator } from './ChannelListHeaderErrorIndicat
1616import { ChannelListHeaderNetworkDownIndicator } from './ChannelListHeaderNetworkDownIndicator' ;
1717import { ChannelListLoadingIndicator } from './ChannelListLoadingIndicator' ;
1818import { ChannelListMessenger , ChannelListMessengerProps } from './ChannelListMessenger' ;
19- import { useAddedToChannelNotification } from './hooks/listeners/useAddedToChannelNotification' ;
20- import { useChannelDeleted } from './hooks/listeners/useChannelDeleted' ;
21- import { useChannelHidden } from './hooks/listeners/useChannelHidden' ;
22- import { useChannelTruncated } from './hooks/listeners/useChannelTruncated' ;
23- import { useChannelUpdated } from './hooks/listeners/useChannelUpdated' ;
24- import { useChannelVisible } from './hooks/listeners/useChannelVisible' ;
25- import { useNewMessage } from './hooks/listeners/useNewMessage' ;
26- import { useNewMessageNotification } from './hooks/listeners/useNewMessageNotification' ;
27- import { useRemovedFromChannelNotification } from './hooks/listeners/useRemovedFromChannelNotification' ;
28- import { useUserPresence } from './hooks/listeners/useUserPresence' ;
19+ // import { useAddedToChannelNotification } from './hooks/listeners/useAddedToChannelNotification';
20+ // import { useChannelDeleted } from './hooks/listeners/useChannelDeleted';
21+ // import { useChannelHidden } from './hooks/listeners/useChannelHidden';
22+ // import { useChannelTruncated } from './hooks/listeners/useChannelTruncated';
23+ // import { useChannelUpdated } from './hooks/listeners/useChannelUpdated';
24+ // import { useChannelVisible } from './hooks/listeners/useChannelVisible';
25+ // import { useNewMessage } from './hooks/listeners/useNewMessage';
26+ // import { useNewMessageNotification } from './hooks/listeners/useNewMessageNotification';
27+ // import { useRemovedFromChannelNotification } from './hooks/listeners/useRemovedFromChannelNotification';
28+ // import { useUserPresence } from './hooks/listeners/useUserPresence';
2929import { useCreateChannelsContext } from './hooks/useCreateChannelsContext' ;
3030import { usePaginatedChannels } from './hooks/usePaginatedChannels' ;
3131import { Skeleton as SkeletonDefault } from './Skeleton' ;
@@ -248,15 +248,15 @@ export const ChannelList = <
248248 lockChannelOrder = false ,
249249 maxUnreadCount = 255 ,
250250 numberOfSkeletons = 6 ,
251- onAddedToChannel,
252- onChannelDeleted,
253- onChannelHidden,
254- onChannelTruncated,
255- onChannelUpdated,
256- onChannelVisible,
257- onNewMessage,
258- onNewMessageNotification,
259- onRemovedFromChannel,
251+ // onAddedToChannel,
252+ // onChannelDeleted,
253+ // onChannelHidden,
254+ // onChannelTruncated,
255+ // onChannelUpdated,
256+ // onChannelVisible,
257+ // onNewMessage,
258+ // onNewMessageNotification,
259+ // onRemovedFromChannel,
260260 onSelect,
261261 options = DEFAULT_OPTIONS ,
262262 Preview = ChannelPreviewMessenger ,
@@ -272,20 +272,27 @@ export const ChannelList = <
272272 } = props ;
273273
274274 const [ forceUpdate , setForceUpdate ] = useState ( 0 ) ;
275- const [ channelManager , setChannelManager ] = useState < ChannelManager < StreamChatGenerics > | null > (
276- null ,
277- ) ;
278275 const { client, enableOfflineSupport } = useChatContext < StreamChatGenerics > ( ) ;
276+ const [ channelManager , setChannelManager ] = useState < ChannelManager < StreamChatGenerics > > (
277+ client . createChannelManager ( { options : { lockChannelOrder } } ) ,
278+ ) ;
279+ const clientRef = useRef ( client ) ;
279280
280281 useEffect ( ( ) => {
281- const manager = new ChannelManager < StreamChatGenerics > ( { client } ) ;
282- manager . registerSubscriptions ( ) ;
283- setChannelManager ( manager ) ;
282+ if ( clientRef . current !== client ) {
283+ const manager = client . createChannelManager ( { options : { lockChannelOrder } } ) ;
284+ setChannelManager ( manager ) ;
285+ clientRef . current = client ;
286+ }
287+ } , [ client , lockChannelOrder ] ) ;
288+
289+ useEffect ( ( ) => {
290+ channelManager . registerSubscriptions ( ) ;
284291
285292 return ( ) => {
286- manager ? .unregisterSubscriptions ( ) ;
293+ channelManager . unregisterSubscriptions ( ) ;
287294 } ;
288- } , [ client ] ) ;
295+ } , [ channelManager ] ) ;
289296
290297 const {
291298 channels,
@@ -299,12 +306,12 @@ export const ChannelList = <
299306 reloadList,
300307 staticChannelsActive,
301308 } = usePaginatedChannels < StreamChatGenerics > ( {
309+ channelManager,
302310 enableOfflineSupport,
303311 filters,
304312 options,
305313 setForceUpdate,
306314 sort,
307- channelManager,
308315 } ) ;
309316
310317 // Setup event listeners
0 commit comments