Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit 7ade6d3

Browse files
committed
wip(desktop): progress
1 parent 2613f44 commit 7ade6d3

4 files changed

Lines changed: 42 additions & 34 deletions

File tree

packages/desktop/src/app.tsx

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
import "@/index.css"
2+
import { Show } from "solid-js"
23
import { Router, Route, Navigate } from "@solidjs/router"
34
import { MetaProvider } from "@solidjs/meta"
45
import { Font } from "@opencode-ai/ui/font"
56
import { MarkedProvider } from "@opencode-ai/ui/context/marked"
67
import { DiffComponentProvider } from "@opencode-ai/ui/context/diff"
78
import { Diff } from "@opencode-ai/ui/diff"
8-
import { GlobalSyncProvider } from "./context/global-sync"
9+
import { GlobalSyncProvider } from "@/context/global-sync"
10+
import { LayoutProvider } from "@/context/layout"
11+
import { GlobalSDKProvider } from "@/context/global-sdk"
12+
import { SessionProvider } from "@/context/session"
13+
import { NotificationProvider } from "@/context/notification"
14+
import { DialogProvider } from "@/context/dialog"
915
import Layout from "@/pages/layout"
1016
import Home from "@/pages/home"
1117
import DirectoryLayout from "@/pages/directory-layout"
1218
import Session from "@/pages/session"
13-
import { LayoutProvider } from "./context/layout"
14-
import { GlobalSDKProvider } from "./context/global-sdk"
15-
import { SessionProvider } from "./context/session"
16-
import { Show } from "solid-js"
17-
import { NotificationProvider } from "./context/notification"
1819

1920
declare global {
2021
interface Window {
@@ -38,27 +39,29 @@ export function App() {
3839
<GlobalSDKProvider url={url}>
3940
<GlobalSyncProvider>
4041
<LayoutProvider>
41-
<NotificationProvider>
42-
<MetaProvider>
43-
<Font />
44-
<Router root={Layout}>
45-
<Route path="/" component={Home} />
46-
<Route path="/:dir" component={DirectoryLayout}>
47-
<Route path="/" component={() => <Navigate href="session" />} />
48-
<Route
49-
path="/session/:id?"
50-
component={(p) => (
51-
<Show when={p.params.id || true} keyed>
52-
<SessionProvider>
53-
<Session />
54-
</SessionProvider>
55-
</Show>
56-
)}
57-
/>
58-
</Route>
59-
</Router>
60-
</MetaProvider>
61-
</NotificationProvider>
42+
<DialogProvider>
43+
<NotificationProvider>
44+
<MetaProvider>
45+
<Font />
46+
<Router root={Layout}>
47+
<Route path="/" component={Home} />
48+
<Route path="/:dir" component={DirectoryLayout}>
49+
<Route path="/" component={() => <Navigate href="session" />} />
50+
<Route
51+
path="/session/:id?"
52+
component={(p) => (
53+
<Show when={p.params.id || true} keyed>
54+
<SessionProvider>
55+
<Session />
56+
</SessionProvider>
57+
</Show>
58+
)}
59+
/>
60+
</Route>
61+
</Router>
62+
</MetaProvider>
63+
</NotificationProvider>
64+
</DialogProvider>
6265
</LayoutProvider>
6366
</GlobalSyncProvider>
6467
</GlobalSDKProvider>

packages/desktop/src/pages/directory-layout.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { LocalProvider } from "@/context/local"
66
import { base64Decode } from "@opencode-ai/util/encode"
77
import { DataProvider } from "@opencode-ai/ui/context"
88
import { iife } from "@opencode-ai/util/iife"
9-
import { DialogProvider, DialogRoot } from "@/context/dialog"
9+
import { DialogRoot } from "@/context/dialog"
1010

1111
export default function Layout(props: ParentProps) {
1212
const params = useParams()
@@ -22,9 +22,7 @@ export default function Layout(props: ParentProps) {
2222
return (
2323
<DataProvider data={sync.data} directory={directory()}>
2424
<LocalProvider>
25-
<DialogProvider>
26-
<DialogRoot>{props.children}</DialogRoot>
27-
</DialogProvider>
25+
<DialogRoot>{props.children}</DialogRoot>
2826
</LocalProvider>
2927
</DataProvider>
3028
)

packages/desktop/src/pages/layout.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ import { useGlobalSDK } from "@/context/global-sdk"
3333
import { useNotification } from "@/context/notification"
3434
import { Binary } from "@opencode-ai/util/binary"
3535
import { Header } from "@/components/header"
36+
import { useDialog } from "@/context/dialog"
37+
import { DialogSelectProvider } from "@/components/dialog-select-provider"
3638

3739
export default function Layout(props: ParentProps) {
3840
const [store, setStore] = createStore({
@@ -48,6 +50,11 @@ export default function Layout(props: ParentProps) {
4850
const notification = useNotification()
4951
const navigate = useNavigate()
5052
const providers = useProviders()
53+
const dialog = useDialog()
54+
55+
function connectProvider() {
56+
dialog.replace(() => <DialogSelectProvider />)
57+
}
5158

5259
function navigateToProject(directory: string | undefined) {
5360
if (!directory) return
@@ -488,7 +495,7 @@ export default function Layout(props: ParentProps) {
488495
class="flex w-full text-left justify-start text-12-medium text-text-strong stroke-[1.5px] rounded-lg rounded-t-none shadow-none border-t border-border-weak-base pl-2.25 pb-px"
489496
size="large"
490497
icon="plus"
491-
// onClick={connectProvider}
498+
onClick={connectProvider}
492499
>
493500
<Show when={layout.sidebar.opened()}>Connect provider</Show>
494501
</Button>
@@ -502,7 +509,7 @@ export default function Layout(props: ParentProps) {
502509
variant="ghost"
503510
size="large"
504511
icon="plus"
505-
// onClick={connectProvider}
512+
onClick={connectProvider}
506513
>
507514
<Show when={layout.sidebar.opened()}>Connect provider</Show>
508515
</Button>

packages/ui/src/components/dialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface DialogProps extends DialogRootProps {
1414
classList?: ComponentProps<"div">["classList"]
1515
}
1616

17-
export function DialogRoot(props: DialogProps) {
17+
function DialogRoot(props: DialogProps) {
1818
let trigger!: HTMLElement
1919
const [local, others] = splitProps(props, ["trigger", "class", "classList", "children"])
2020

0 commit comments

Comments
 (0)