Skip to content

Commit feea8ee

Browse files
authored
fix: scroll to recent issues (#2775)
* fix: scroll to recent issues * fix: load more messages when querying to avoid merging issues * fix: cover all edge cases
1 parent 5db6b5d commit feea8ee

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

package/src/components/Channel/Channel.tsx

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

package/src/components/MessageList/MessageList.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -862,9 +862,7 @@ const MessageListWithContext = <
862862

863863
const goToNewMessages = async () => {
864864
const isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
865-
if (isNotLatestSet && hasNoMoreRecentMessagesToLoad) {
866-
loadChannelAroundMessage({});
867-
} else if (!hasNoMoreRecentMessagesToLoad) {
865+
if (isNotLatestSet) {
868866
resetPaginationTrackersRef.current();
869867
await reloadChannel();
870868
} else if (flatListRef.current) {

0 commit comments

Comments
 (0)