fix(app): can't expand workspaces

This commit is contained in:
Adam
2026-01-16 13:21:07 -06:00
parent 00ec29dae6
commit e92d5b592c

View File

@@ -5,6 +5,7 @@ import {
createSignal, createSignal,
For, For,
Match, Match,
on,
onCleanup, onCleanup,
onMount, onMount,
ParentProps, ParentProps,
@@ -275,12 +276,21 @@ export default function Layout(props: ParentProps) {
return bUpdated - aUpdated return bUpdated - aUpdated
} }
function scrollToSession(sessionId: string) { const [scrollSessionKey, setScrollSessionKey] = createSignal<string | undefined>(undefined)
function scrollToSession(sessionId: string, sessionKey: string) {
if (!scrollContainerRef) return if (!scrollContainerRef) return
if (scrollSessionKey() === sessionKey) return
const element = scrollContainerRef.querySelector(`[data-session-id="${sessionId}"]`) const element = scrollContainerRef.querySelector(`[data-session-id="${sessionId}"]`)
if (element) { if (!element) return
element.scrollIntoView({ block: "nearest", behavior: "smooth" }) const containerRect = scrollContainerRef.getBoundingClientRect()
const elementRect = element.getBoundingClientRect()
if (elementRect.top >= containerRect.top && elementRect.bottom <= containerRect.bottom) {
setScrollSessionKey(sessionKey)
return
} }
setScrollSessionKey(sessionKey)
element.scrollIntoView({ block: "nearest", behavior: "smooth" })
} }
const currentProject = createMemo(() => { const currentProject = createMemo(() => {
@@ -325,9 +335,12 @@ export default function Layout(props: ParentProps) {
createEffect(() => { createEffect(() => {
if (!pageReady()) return if (!pageReady()) return
if (!layoutReady()) return if (!layoutReady()) return
const projects = layout.projects.list()
for (const [directory, expanded] of Object.entries(store.workspaceExpanded)) { for (const [directory, expanded] of Object.entries(store.workspaceExpanded)) {
if (layout.sidebar.workspaces(directory)()) continue
if (!expanded) continue if (!expanded) continue
const project = projects.find((item) => item.worktree === directory || item.sandboxes?.includes(directory))
if (!project) continue
if (layout.sidebar.workspaces(project.worktree)()) continue
setStore("workspaceExpanded", directory, false) setStore("workspaceExpanded", directory, false)
} }
}) })
@@ -533,7 +546,7 @@ export default function Layout(props: ParentProps) {
}) })
} }
navigateToSession(session) navigateToSession(session)
queueMicrotask(() => scrollToSession(session.id)) queueMicrotask(() => scrollToSession(session.id, `${session.directory}:${session.id}`))
} }
async function archiveSession(session: Session) { async function archiveSession(session: Session) {
@@ -721,16 +734,23 @@ export default function Layout(props: ParentProps) {
} }
} }
createEffect(() => { createEffect(
if (!pageReady()) return on(
if (!params.dir || !params.id) return () => ({ ready: pageReady(), dir: params.dir, id: params.id }),
const directory = base64Decode(params.dir) (value) => {
const id = params.id if (!value.ready) return
setStore("lastSession", directory, id) const dir = value.dir
notification.session.markViewed(id) const id = value.id
untrack(() => setStore("workspaceExpanded", directory, (value) => value ?? true)) if (!dir || !id) return
requestAnimationFrame(() => scrollToSession(id)) const directory = base64Decode(dir)
}) setStore("lastSession", directory, id)
notification.session.markViewed(id)
untrack(() => setStore("workspaceExpanded", directory, (current) => current ?? true))
requestAnimationFrame(() => scrollToSession(id, `${directory}:${id}`))
},
{ defer: true },
),
)
createEffect(() => { createEffect(() => {
const project = currentProject() const project = currentProject()