summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/ui/src/components/session-turn.tsx8
1 files changed, 7 insertions, 1 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx
index a4a762fc6..196e0bdb6 100644
--- a/packages/ui/src/components/session-turn.tsx
+++ b/packages/ui/src/components/session-turn.tsx
@@ -55,11 +55,13 @@ export function SessionTurn(
userScrolled: false,
stickyHeaderHeight: 0,
scrollY: 0,
+ autoScrolling: false,
})
function handleScroll() {
if (!scrollRef) return
setState("scrollY", scrollRef.scrollTop)
+ if (state.autoScrolling) return
const { scrollTop, scrollHeight, clientHeight } = scrollRef
const atBottom = scrollHeight - scrollTop - clientHeight < 50
if (!atBottom && working()) {
@@ -74,9 +76,13 @@ export function SessionTurn(
}
function scrollToBottom() {
- if (!scrollRef || state.userScrolled || !working()) return
+ if (!scrollRef || state.userScrolled || !working() || state.autoScrolling) return
+ setState("autoScrolling", true)
requestAnimationFrame(() => {
scrollRef?.scrollTo({ top: scrollRef.scrollHeight, behavior: "auto" })
+ requestAnimationFrame(() => {
+ setState("autoScrolling", false)
+ })
})
}