diff --git a/package/src/components/MessageList/MessageList.tsx b/package/src/components/MessageList/MessageList.tsx index 5c17ed4684..a5ef639e2a 100644 --- a/package/src/components/MessageList/MessageList.tsx +++ b/package/src/components/MessageList/MessageList.tsx @@ -335,12 +335,14 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => { const [autoscrollToRecent, setAutoscrollToRecent] = useState(false); + const minIndexForVisible = Math.min(1, processedMessageList.length); + const maintainVisibleContentPosition = useMemo( () => ({ autoscrollToTopThreshold: autoscrollToRecent ? 10 : undefined, - minIndexForVisible: 1, + minIndexForVisible, }), - [autoscrollToRecent], + [autoscrollToRecent, minIndexForVisible], ); /** @@ -620,7 +622,7 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => { }, [threadList, messageListLengthAfterUpdate, topMessageAfterUpdate?.id]); useEffect(() => { - if (!rawMessageList.length) { + if (!processedMessageList.length) { return; } if (threadList) { @@ -637,7 +639,7 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => { } const latestNonCurrentMessageBeforeUpdate = latestNonCurrentMessageBeforeUpdateRef.current; latestNonCurrentMessageBeforeUpdateRef.current = undefined; - const latestCurrentMessageAfterUpdate = rawMessageList[rawMessageList.length - 1]; + const latestCurrentMessageAfterUpdate = processedMessageList[0]; if (!latestCurrentMessageAfterUpdate) { setAutoscrollToRecent(true); return; @@ -662,7 +664,7 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => { } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [channel, rawMessageList, threadList]); + }, [channel, processedMessageList, threadList]); const goToMessage = useStableCallback(async (messageId: string) => { const indexOfParentInMessageList = processedMessageList.findIndex(