@@ -1207,6 +1207,7 @@ const ChannelWithContext = <
12071207 await channel . query ( { } , 'latest' ) ;
12081208 }
12091209 await channel . state . loadMessageIntoState ( 'latest' ) ;
1210+ setMessages ( [ ...channel . state . messages ] ) ;
12101211 } ) ;
12111212
12121213 const loadChannel = ( ) =>
@@ -1403,13 +1404,17 @@ const ChannelWithContext = <
14031404 } , [ enableOfflineSupport , shouldSyncChannel ] ) ;
14041405
14051406 const reloadChannel = ( ) =>
1406- channelQueryCallRef . current ( async ( ) => {
1407- setLoading ( true ) ;
1408- await loadLatestMessagesRef . current ( true ) ;
1409- setLoading ( false ) ;
1410- channel ?. state . setIsUpToDate ( true ) ;
1411- setHasNoMoreRecentMessagesToLoad ( true ) ;
1412- } ) ;
1407+ channelQueryCallRef . current (
1408+ async ( ) => {
1409+ setLoading ( true ) ;
1410+ await loadLatestMessagesRef . current ( true ) ;
1411+ setLoading ( false ) ;
1412+ } ,
1413+ ( ) => {
1414+ channel ?. state . setIsUpToDate ( true ) ;
1415+ setHasNoMoreRecentMessagesToLoad ( true ) ;
1416+ } ,
1417+ ) ;
14131418
14141419 /**
14151420 * @deprecated
@@ -1888,10 +1893,12 @@ const ChannelWithContext = <
18881893 const latestLengthBeforeMerge = latestMessageSet ?. messages . length || 0 ;
18891894 const didMerge = mergeOverlappingMessageSetsRef . current ( true ) ;
18901895 if ( didMerge ) {
1891- if ( latestMessageSet && latestLengthBeforeMerge >= limit ) {
1896+ if ( latestMessageSet && latestLengthBeforeMerge > 0 ) {
1897+ const shouldSetStateUpToDate =
1898+ latestMessageSet . messages . length < limit && latestMessageSet . isCurrent ;
18921899 setLoadingMoreRecent ( true ) ;
1893- channel . state . setIsUpToDate ( true ) ;
1894- setHasNoMoreRecentMessagesToLoad ( true ) ;
1900+ channel . state . setIsUpToDate ( shouldSetStateUpToDate ) ;
1901+ setHasNoMoreRecentMessagesToLoad ( shouldSetStateUpToDate ) ;
18951902 loadMoreRecentFinished ( channel . state . messages ) ;
18961903 restartSetsMergeFuncRef . current ( ) ;
18971904 return ;
0 commit comments