diff --git a/packages/react/src/views/ChatBody/ChatBody.js b/packages/react/src/views/ChatBody/ChatBody.js index 4a36e2aa96..35d51ba39f 100644 --- a/packages/react/src/views/ChatBody/ChatBody.js +++ b/packages/react/src/views/ChatBody/ChatBody.js @@ -268,10 +268,11 @@ const ChatBody = ({ }; useEffect(() => { - if (messageListRef.current) { - messageListRef.current.scrollTop = messageListRef.current.scrollHeight; + const lastMessage = messages[0]; + if (lastMessage && lastMessage.t !== 'message_pinned') { + scrollToBottom(); } - }, [messages]); + }, [messages.length]); useEffect(() => { checkOverflow(); diff --git a/packages/react/src/views/ChatHeader/ChatHeader.js b/packages/react/src/views/ChatHeader/ChatHeader.js index cf7457a9eb..b454d23e3e 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.js @@ -105,6 +105,22 @@ const ChatHeader = ({ const closeThread = useMessageStore((state) => state.closeThread); + const handleCloseThread = useCallback(() => { + const threadMessageId = threadMainMessage?._id; + closeThread(); + setTimeout(() => { + const element = document.getElementById( + `ec-message-body-${threadMessageId}` + ); + if (element) { + element.scrollIntoView({ + behavior: 'instant', + block: 'start', + }); + } + }, 300); + }, [closeThread, threadMainMessage]); + const setShowMembers = useMemberStore((state) => state.setShowMembers); const setShowSearch = useSearchMessageStore((state) => state.setShowSearch); const setShowPinned = usePinnedMessageStore((state) => state.setShowPinned); @@ -430,7 +446,7 @@ const ChatHeader = ({ {isThreadOpen && ( )}