diff options
Diffstat (limited to 'packages/app/src/pages')
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 57 |
1 files changed, 19 insertions, 38 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index a694ce094..ce4513a5b 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -2,6 +2,7 @@ import { batch, createEffect, createMemo, + createResource, For, on, onCleanup, @@ -277,16 +278,6 @@ export default function Layout(props: ParentProps) { setHoverProject(undefined) }) - const autoselecting = createMemo(() => { - if (params.dir) return false - if (!state.autoselect) return false - if (!pageReady()) return true - if (!layoutReady()) return true - const list = layout.projects.list() - if (list.length > 0) return true - return !!server.projects.last() - }) - createEffect(() => { if (!state.autoselect) return const dir = params.dir @@ -572,33 +563,22 @@ export default function Layout(props: ParentProps) { return projects.find((p) => p.worktree === root) }) - createEffect( - on( - () => ({ ready: pageReady(), layoutReady: layoutReady(), dir: params.dir, list: layout.projects.list() }), - (value) => { - if (!value.ready) return - if (!value.layoutReady) return - if (!state.autoselect) return - if (value.dir) return - - const last = server.projects.last() - - if (value.list.length === 0) { - if (!last) return - setState("autoselect", false) - openProject(last, false) - navigateToProject(last) - return - } + const [autoselecting] = createResource(async () => { + await ready.promise + await layout.ready.promise - const next = value.list.find((project) => project.worktree === last) ?? value.list[0] - if (!next) return - setState("autoselect", false) - openProject(next.worktree, false) - navigateToProject(next.worktree) - }, - ), - ) + const list = layout.projects.list() + const last = server.projects.last() + + if (list.length === 0) { + if (!last) return + await openProject(last, true) + } else { + const next = list.find((project) => project.worktree === last) ?? list[0] + if (!next) return + await openProject(next.worktree, true) + } + }) const workspaceName = (directory: string, projectId?: string, branch?: string) => { const key = workspaceKey(directory) @@ -1311,7 +1291,7 @@ export default function Layout(props: ParentProps) { function openProject(directory: string, navigate = true) { layout.projects.open(directory) - if (navigate) navigateToProject(directory) + if (navigate) return navigateToProject(directory) } const handleDeepLinks = (urls: string[]) => { @@ -2381,7 +2361,8 @@ export default function Layout(props: ParentProps) { "size-full overflow-x-hidden flex flex-col items-start contain-strict border-t border-border-weak-base bg-background-base xl:border-l xl:rounded-tl-[12px]": true, }} > - <Show when={!autoselecting()} fallback={<div class="size-full" />}> + <Show when={!autoselecting.loading} fallback={<div class="size-full" />}> + slkdjflkj {props.children} </Show> </main> |
