Skip to content

Commit 9a90939

Browse files
committed
fix: use diff context instead of prop drilling
1 parent 123a136 commit 9a90939

File tree

9 files changed

+280
-315
lines changed

9 files changed

+280
-315
lines changed

packages/desktop/src/index.tsx

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { MetaProvider } from "@solidjs/meta"
66
import { Font } from "@opencode-ai/ui/font"
77
import { Favicon } from "@opencode-ai/ui/favicon"
88
import { MarkedProvider } from "@opencode-ai/ui/context/marked"
9+
import { DiffComponentProvider } from "@opencode-ai/ui/context/diff"
10+
import { Diff } from "@opencode-ai/ui/diff"
911
import { GlobalSyncProvider, useGlobalSync } from "./context/global-sync"
1012
import Layout from "@/pages/layout"
1113
import DirectoryLayout from "@/pages/directory-layout"
@@ -35,38 +37,40 @@ if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
3537
render(
3638
() => (
3739
<MarkedProvider>
38-
<GlobalSDKProvider url={url}>
39-
<GlobalSyncProvider>
40-
<LayoutProvider>
41-
<MetaProvider>
42-
<Font />
43-
<Router root={Layout}>
44-
<Route
45-
path="/"
46-
component={() => {
47-
const globalSync = useGlobalSync()
48-
const slug = createMemo(() => base64Encode(globalSync.data.defaultProject!.worktree))
49-
return <Navigate href={`${slug()}/session`} />
50-
}}
51-
/>
52-
<Route path="/:dir" component={DirectoryLayout}>
53-
<Route path="/" component={() => <Navigate href="session" />} />
40+
<DiffComponentProvider component={Diff}>
41+
<GlobalSDKProvider url={url}>
42+
<GlobalSyncProvider>
43+
<LayoutProvider>
44+
<MetaProvider>
45+
<Font />
46+
<Router root={Layout}>
5447
<Route
55-
path="/session/:id?"
56-
component={(p) => (
57-
<Show when={p.params.id || true} keyed>
58-
<SessionProvider>
59-
<Session />
60-
</SessionProvider>
61-
</Show>
62-
)}
48+
path="/"
49+
component={() => {
50+
const globalSync = useGlobalSync()
51+
const slug = createMemo(() => base64Encode(globalSync.data.defaultProject!.worktree))
52+
return <Navigate href={`${slug()}/session`} />
53+
}}
6354
/>
64-
</Route>
65-
</Router>
66-
</MetaProvider>
67-
</LayoutProvider>
68-
</GlobalSyncProvider>
69-
</GlobalSDKProvider>
55+
<Route path="/:dir" component={DirectoryLayout}>
56+
<Route path="/" component={() => <Navigate href="session" />} />
57+
<Route
58+
path="/session/:id?"
59+
component={(p) => (
60+
<Show when={p.params.id || true} keyed>
61+
<SessionProvider>
62+
<Session />
63+
</SessionProvider>
64+
</Show>
65+
)}
66+
/>
67+
</Route>
68+
</Router>
69+
</MetaProvider>
70+
</LayoutProvider>
71+
</GlobalSyncProvider>
72+
</GlobalSDKProvider>
73+
</DiffComponentProvider>
7074
</MarkedProvider>
7175
),
7276
root!,

packages/desktop/src/pages/session.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import { useSync } from "@/context/sync"
3030
import { useSession } from "@/context/session"
3131
import { useLayout } from "@/context/layout"
3232
import { getDirectory, getFilename } from "@opencode-ai/util/path"
33-
import { Diff } from "@opencode-ai/ui/diff"
3433
import { Terminal } from "@/components/terminal"
3534

3635
export default function Page() {
@@ -282,7 +281,7 @@ export default function Page() {
282281
const wide = createMemo(() => layout.review.state() === "tab" || !session.diffs().length)
283282

284283
return (
285-
<div class="relative bg-background-base size-full overflow-x-hidden flex flex-col items-start">
284+
<div class="relative bg-background-base size-full overflow-x-hidden flex flex-col">
286285
<div class="min-h-0 grow w-full">
287286
<DragDropProvider
288287
onDragStart={handleDragStart}
@@ -389,7 +388,6 @@ export default function Page() {
389388
? "pr-6 pl-18"
390389
: "px-6"),
391390
}}
392-
diffComponent={Diff}
393391
/>
394392
</div>
395393
</Match>
@@ -438,7 +436,6 @@ export default function Page() {
438436
container: "px-6",
439437
}}
440438
diffs={session.diffs()}
441-
diffComponent={Diff}
442439
actions={
443440
<Tooltip value="Open in tab">
444441
<IconButton
@@ -470,7 +467,6 @@ export default function Page() {
470467
container: "px-6",
471468
}}
472469
diffs={session.diffs()}
473-
diffComponent={Diff}
474470
split
475471
/>
476472
</div>

0 commit comments

Comments
 (0)