From 6119b7f3a53d62bcb21deebed453f456c164a831 Mon Sep 17 00:00:00 2001 From: Abbas-Askari Date: Mon, 10 Feb 2025 01:21:39 +0500 Subject: [PATCH 1/3] feat: Maintain Scroll Position When Closing a Thread #972 --- .../react/src/views/ChatHeader/ChatHeader.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/react/src/views/ChatHeader/ChatHeader.js b/packages/react/src/views/ChatHeader/ChatHeader.js index cf7457a9eb..2e8cc6a23e 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.js @@ -105,6 +105,20 @@ 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 +444,7 @@ const ChatHeader = ({ {isThreadOpen && ( )} From 8a9c570c44c86464ee7443829b4cb8fa18fa6e43 Mon Sep 17 00:00:00 2001 From: Abbas-Askari Date: Mon, 10 Feb 2025 19:30:27 +0500 Subject: [PATCH 2/3] remove scrolling to bottom on message staring/unstaring, pinning/unpining, copying, copying link, and qouting --- packages/react/src/views/ChatBody/ChatBody.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/react/src/views/ChatBody/ChatBody.js b/packages/react/src/views/ChatBody/ChatBody.js index 4a36e2aa96..d48d4a42c9 100644 --- a/packages/react/src/views/ChatBody/ChatBody.js +++ b/packages/react/src/views/ChatBody/ChatBody.js @@ -268,10 +268,14 @@ 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(); From 07f70c1bab9c6eeb09436e5476a1b5cb8df36a8f Mon Sep 17 00:00:00 2001 From: Abbas-Askari Date: Wed, 12 Feb 2025 21:53:46 +0500 Subject: [PATCH 3/3] fix lint errors --- packages/react/src/views/ChatBody/ChatBody.js | 5 +---- packages/react/src/views/ChatHeader/ChatHeader.js | 4 +++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/react/src/views/ChatBody/ChatBody.js b/packages/react/src/views/ChatBody/ChatBody.js index d48d4a42c9..35d51ba39f 100644 --- a/packages/react/src/views/ChatBody/ChatBody.js +++ b/packages/react/src/views/ChatBody/ChatBody.js @@ -269,10 +269,7 @@ const ChatBody = ({ useEffect(() => { const lastMessage = messages[0]; - if ( - lastMessage && - lastMessage.t !== "message_pinned" - ) { + if (lastMessage && lastMessage.t !== 'message_pinned') { scrollToBottom(); } }, [messages.length]); diff --git a/packages/react/src/views/ChatHeader/ChatHeader.js b/packages/react/src/views/ChatHeader/ChatHeader.js index 2e8cc6a23e..b454d23e3e 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.js @@ -109,7 +109,9 @@ const ChatHeader = ({ const threadMessageId = threadMainMessage?._id; closeThread(); setTimeout(() => { - const element = document.getElementById(`ec-message-body-${threadMessageId}`); + const element = document.getElementById( + `ec-message-body-${threadMessageId}` + ); if (element) { element.scrollIntoView({ behavior: 'instant',