diff options
| author | Kit Langton <[email protected]> | 2026-02-26 19:18:59 -0500 |
|---|---|---|
| committer | Kit Langton <[email protected]> | 2026-02-26 19:20:56 -0500 |
| commit | 9a6bfeb782766099d4ce3a98bb9e7b4e79f8bfe6 (patch) | |
| tree | 864fee64e27789391fa12c282fcc2d631a7d17fd | |
| parent | fa119423ecd3c56a1f831f9169139303a14aa6fa (diff) | |
| download | opencode-9a6bfeb782766099d4ce3a98bb9e7b4e79f8bfe6.tar.gz opencode-9a6bfeb782766099d4ce3a98bb9e7b4e79f8bfe6.zip | |
refactor(app): dedupe filetree scroll state
| -rw-r--r-- | packages/app/src/pages/session/session-side-panel.tsx | 22 |
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 |
