summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-02-26 19:18:59 -0500
committerKit Langton <[email protected]>2026-02-26 19:20:56 -0500
commit9a6bfeb782766099d4ce3a98bb9e7b4e79f8bfe6 (patch)
tree864fee64e27789391fa12c282fcc2d631a7d17fd
parentfa119423ecd3c56a1f831f9169139303a14aa6fa (diff)
downloadopencode-9a6bfeb782766099d4ce3a98bb9e7b4e79f8bfe6.tar.gz
opencode-9a6bfeb782766099d4ce3a98bb9e7b4e79f8bfe6.zip
refactor(app): dedupe filetree scroll state
-rw-r--r--packages/app/src/pages/session/session-side-panel.tsx22
1 files changed, 8 insertions, 14 deletions
diff --git a/packages/app/src/pages/session/session-side-panel.tsx b/packages/app/src/pages/session/session-side-panel.tsx
index a86e8b365..224099a51 100644
--- a/packages/app/src/pages/session/session-side-panel.tsx
+++ b/packages/app/src/pages/session/session-side-panel.tsx
@@ -151,6 +151,11 @@ export function SessionSidePanel(props: {
let changesEl: HTMLDivElement | undefined
let allEl: HTMLDivElement | undefined
+ const syncFileTreeScrolled = (el?: HTMLDivElement) => {
+ const next = (el?.scrollTop ?? 0) > 0
+ setStore("fileTreeScrolled", (current) => (current === next ? current : next))
+ }
+
const handleDragStart = (event: unknown) => {
const id = getDraggableId(event)
if (!id) return
@@ -173,10 +178,7 @@ export function SessionSidePanel(props: {
createEffect(() => {
if (!layout.fileTree.opened()) return
- const tab = fileTreeTab()
- const el = tab === "changes" ? changesEl : allEl
- const next = (el?.scrollTop ?? 0) > 0
- setStore("fileTreeScrolled", (current) => (current === next ? current : next))
+ syncFileTreeScrolled(fileTreeTab() === "changes" ? changesEl : allEl)
})
createEffect(() => {
@@ -359,11 +361,7 @@ export function SessionSidePanel(props: {
<Tabs.Content
value="changes"
ref={(el: HTMLDivElement) => (changesEl = el)}
- onScroll={(e: UIEvent & { currentTarget: HTMLDivElement }) => {
- if (fileTreeTab() !== "changes") return
- const next = e.currentTarget.scrollTop > 0
- setStore("fileTreeScrolled", (current) => (current === next ? current : next))
- }}
+ onScroll={(e: UIEvent & { currentTarget: HTMLDivElement }) => syncFileTreeScrolled(e.currentTarget)}
class="bg-background-stronger px-3 py-0"
>
<Switch>
@@ -397,11 +395,7 @@ export function SessionSidePanel(props: {
<Tabs.Content
value="all"
ref={(el: HTMLDivElement) => (allEl = el)}
- onScroll={(e: UIEvent & { currentTarget: HTMLDivElement }) => {
- if (fileTreeTab() !== "all") return
- const next = e.currentTarget.scrollTop > 0
- setStore("fileTreeScrolled", (current) => (current === next ? current : next))
- }}
+ onScroll={(e: UIEvent & { currentTarget: HTMLDivElement }) => syncFileTreeScrolled(e.currentTarget)}
class="bg-background-stronger px-3 py-0"
>
<FileTree