summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/home.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-30 04:57:28 -0600
committerAdam <[email protected]>2025-12-30 04:57:37 -0600
commita576fdb5e4ecddc73dede97ff26239d90c94e72f (patch)
treef44d10ff36b1ecc6aa8e8222d0a9b9bf3f4221fc /packages/app/src/pages/home.tsx
parentae53f876f1e201363415279826e820b2e7769f56 (diff)
downloadopencode-a576fdb5e4ecddc73dede97ff26239d90c94e72f.tar.gz
opencode-a576fdb5e4ecddc73dede97ff26239d90c94e72f.zip
feat(web): open projects
Diffstat (limited to 'packages/app/src/pages/home.tsx')
-rw-r--r--packages/app/src/pages/home.tsx48
1 files changed, 29 insertions, 19 deletions
diff --git a/packages/app/src/pages/home.tsx b/packages/app/src/pages/home.tsx
index 7cd2916e8..129a50320 100644
--- a/packages/app/src/pages/home.tsx
+++ b/packages/app/src/pages/home.tsx
@@ -8,11 +8,14 @@ import { base64Encode } from "@opencode-ai/util/encode"
import { Icon } from "@opencode-ai/ui/icon"
import { usePlatform } from "@/context/platform"
import { DateTime } from "luxon"
+import { useDialog } from "@opencode-ai/ui/context/dialog"
+import { DialogSelectDirectory } from "@/components/dialog-select-directory"
export default function Home() {
const sync = useGlobalSync()
const layout = useLayout()
const platform = usePlatform()
+ const dialog = useDialog()
const navigate = useNavigate()
const homedir = createMemo(() => sync.data.path.home)
@@ -22,16 +25,27 @@ export default function Home() {
}
async function chooseProject() {
- const result = await platform.openDirectoryPickerDialog?.({
- title: "Open project",
- multiple: true,
- })
- if (Array.isArray(result)) {
- for (const directory of result) {
- openProject(directory)
+ function resolve(result: string | string[] | null) {
+ if (Array.isArray(result)) {
+ for (const directory of result) {
+ openProject(directory)
+ }
+ } else if (result) {
+ openProject(result)
}
- } else if (result) {
- openProject(result)
+ }
+
+ if (platform.openDirectoryPickerDialog) {
+ const result = await platform.openDirectoryPickerDialog?.({
+ title: "Open project",
+ multiple: true,
+ })
+ resolve(result)
+ } else {
+ dialog.show(
+ () => <DialogSelectDirectory multiple={true} onSelect={resolve} />,
+ () => resolve(null),
+ )
}
}
@@ -43,11 +57,9 @@ export default function Home() {
<div class="mt-20 w-full flex flex-col gap-4">
<div class="flex gap-2 items-center justify-between pl-3">
<div class="text-14-medium text-text-strong">Recent projects</div>
- <Show when={platform.openDirectoryPickerDialog}>
- <Button icon="folder-add-left" size="normal" class="pl-2 pr-3" onClick={chooseProject}>
- Open project
- </Button>
- </Show>
+ <Button icon="folder-add-left" size="normal" class="pl-2 pr-3" onClick={chooseProject}>
+ Open project
+ </Button>
</div>
<ul class="flex flex-col gap-2">
<For
@@ -80,11 +92,9 @@ export default function Home() {
<div class="text-12-regular text-text-weak">Get started by opening a local project</div>
</div>
<div />
- <Show when={platform.openDirectoryPickerDialog}>
- <Button class="px-3" onClick={chooseProject}>
- Open project
- </Button>
- </Show>
+ <Button class="px-3" onClick={chooseProject}>
+ Open project
+ </Button>
</div>
</Match>
</Switch>