Skip to content

Commit 1504116

Browse files
committed
refactor: extract sticky scroll to wrapper
1 parent 115d663 commit 1504116

File tree

1 file changed

+1
-10
lines changed

1 file changed

+1
-10
lines changed

src/webview/chat.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const LINE_HEIGHT = 36;
6161
window.addEventListener("message", (event) => {
6262
const message = event.data;
6363
if (message.command === "add_result") {
64-
addMessageToUI(message.result);
64+
withStickyScroll(addMessageToUI)(message.result);
6565
} else if (message.command === "clear_chat") {
6666
clearAllMessages();
6767
} else if (message.command === "focus") {
@@ -98,7 +98,6 @@ const LINE_HEIGHT = 36;
9898

9999
// Function to add a user message to the chat interface
100100
function addUserMessageToUI(message) {
101-
const { scrollHeight: scrollHeightBefore } = messageContainer;
102101
const templateMessage = `
103102
${chatAvatar}
104103
<div class="sidebar__chat-assistant--chat-bubble-content-user">
@@ -112,8 +111,6 @@ const LINE_HEIGHT = 36;
112111
);
113112
userMessageElement.innerHTML = templateMessage;
114113
chatContainer.append(userMessageElement);
115-
const { scrollHeight: scrollHeightAfter } = messageContainer;
116-
stickyScrollToBottom(scrollHeightAfter - scrollHeightBefore);
117114
}
118115

119116
function addMessageToUI(result) {
@@ -160,7 +157,6 @@ const LINE_HEIGHT = 36;
160157
if (currentAssistantMessage != null && message.outcome !== "error") {
161158
replaceCurrentAssistantMessage();
162159
} else {
163-
const { scrollHeight: scrollHeightBefore } = messageContainer;
164160
const templateContents = `
165161
<!-- Using an absolute sourcery.ai URL for now, since I'm not sure how does VS Code extensions handle static assets. -->
166162
${assistantAvatar}
@@ -187,21 +183,16 @@ const LINE_HEIGHT = 36;
187183
".sidebar__chat-assistant--chat-bubble-text"
188184
);
189185
replaceCurrentAssistantMessage();
190-
const { scrollHeight: scrollHeightAfter } = messageContainer;
191-
stickyScrollToBottom(scrollHeightAfter - scrollHeightBefore);
192186
}
193187
}
194188

195189
function addAssistantThinkingMessageToUI() {
196-
const { scrollHeight: scrollHeightBefore } = messageContainer;
197190
if (thinkingMessage != null) {
198191
thinkingMessage.remove();
199192
thinkingMessage = null;
200193
}
201194
thinkingMessage = thinkingMessageElement;
202195
chatContainer.append(thinkingMessage);
203-
const { scrollHeight: scrollHeightAfter } = messageContainer;
204-
stickyScrollToBottom(scrollHeightAfter - scrollHeightBefore);
205196
}
206197

207198
// Enable/Disable send button depending on whether text area is empty

0 commit comments

Comments
 (0)