Skip to content

Commit 23631a9

Browse files
committed
fix(app): navigate to last project on open
1 parent f1e0c31 commit 23631a9

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

packages/app/src/pages/layout.tsx

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ export default function Layout(props: ParentProps) {
109109
const command = useCommand()
110110
const theme = useTheme()
111111
const language = useLanguage()
112-
const initialDir = params.dir
112+
const initialDirectory = decode64(params.dir)
113113
const availableThemeEntries = createMemo(() => Object.entries(theme.themes()))
114114
const colorSchemeOrder: ColorScheme[] = ["system", "light", "dark"]
115115
const colorSchemeKey: Record<ColorScheme, "theme.scheme.system" | "theme.scheme.light" | "theme.scheme.dark"> = {
@@ -120,7 +120,7 @@ export default function Layout(props: ParentProps) {
120120
const colorSchemeLabel = (scheme: ColorScheme) => language.t(colorSchemeKey[scheme])
121121

122122
const [state, setState] = createStore({
123-
autoselect: !params.dir,
123+
autoselect: !initialDirectory,
124124
busyWorkspaces: new Set<string>(),
125125
hoverSession: undefined as string | undefined,
126126
hoverProject: undefined as string | undefined,
@@ -180,13 +180,21 @@ export default function Layout(props: ParentProps) {
180180

181181
const autoselecting = createMemo(() => {
182182
if (params.dir) return false
183-
if (initialDir) return false
184183
if (!state.autoselect) return false
185184
if (!pageReady()) return true
186185
if (!layoutReady()) return true
187186
const list = layout.projects.list()
188-
if (list.length === 0) return false
189-
return true
187+
if (list.length > 0) return true
188+
return !!server.projects.last()
189+
})
190+
191+
createEffect(() => {
192+
if (!state.autoselect) return
193+
const dir = params.dir
194+
if (!dir) return
195+
const directory = decode64(dir)
196+
if (!directory) return
197+
setState("autoselect", false)
190198
})
191199

192200
const editorOpen = (id: string) => editor.active === id
@@ -566,11 +574,18 @@ export default function Layout(props: ParentProps) {
566574
if (!value.ready) return
567575
if (!value.layoutReady) return
568576
if (!state.autoselect) return
569-
if (initialDir) return
570577
if (value.dir) return
571-
if (value.list.length === 0) return
572578

573579
const last = server.projects.last()
580+
581+
if (value.list.length === 0) {
582+
if (!last) return
583+
setState("autoselect", false)
584+
openProject(last, false)
585+
navigateToProject(last)
586+
return
587+
}
588+
574589
const next = value.list.find((project) => project.worktree === last) ?? value.list[0]
575590
if (!next) return
576591
setState("autoselect", false)

0 commit comments

Comments
 (0)