summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/layout.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-30 07:24:35 -0600
committerAdam <[email protected]>2025-12-30 07:24:40 -0600
commite0e07c5d48ef0671f63ca8bd9119169ced493fac (patch)
tree9377eab8b3cc5d3c2976ccae2d32e22db46ce816 /packages/app/src/context/layout.tsx
parent281f9e623673e6bbfd9a5f9a8f9aae496abc99f2 (diff)
downloadopencode-e0e07c5d48ef0671f63ca8bd9119169ced493fac.tar.gz
opencode-e0e07c5d48ef0671f63ca8bd9119169ced493fac.zip
feat(app): change server
Diffstat (limited to 'packages/app/src/context/layout.tsx')
-rw-r--r--packages/app/src/context/layout.tsx30
1 files changed, 11 insertions, 19 deletions
diff --git a/packages/app/src/context/layout.tsx b/packages/app/src/context/layout.tsx
index 4ccab98e3..e57f69f8f 100644
--- a/packages/app/src/context/layout.tsx
+++ b/packages/app/src/context/layout.tsx
@@ -3,6 +3,7 @@ import { batch, createMemo, onMount } from "solid-js"
import { createSimpleContext } from "@opencode-ai/ui/context"
import { useGlobalSync } from "./global-sync"
import { useGlobalSDK } from "./global-sdk"
+import { useServer } from "./server"
import { Project } from "@opencode-ai/sdk/v2"
import { persisted } from "@/utils/persist"
@@ -34,10 +35,10 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
init: () => {
const globalSdk = useGlobalSDK()
const globalSync = useGlobalSync()
+ const server = useServer()
const [store, setStore, _, ready] = persisted(
- "layout.v3",
+ "layout.v4",
createStore({
- projects: [] as { worktree: string; expanded: boolean }[],
sidebar: {
opened: false,
width: 280,
@@ -86,12 +87,12 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
return project
}
- const enriched = createMemo(() => store.projects.flatMap(enrich))
+ const enriched = createMemo(() => server.projects.list().flatMap(enrich))
const list = createMemo(() => enriched().flatMap(colorize))
onMount(() => {
Promise.all(
- store.projects.map((project) => {
+ server.projects.list().map((project) => {
return globalSync.project.loadSessions(project.worktree)
}),
)
@@ -102,32 +103,23 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
projects: {
list,
open(directory: string) {
- if (store.projects.find((x) => x.worktree === directory)) {
+ if (server.projects.list().find((x) => x.worktree === directory)) {
return
}
globalSync.project.loadSessions(directory)
- setStore("projects", (x) => [{ worktree: directory, expanded: true }, ...x])
+ server.projects.open(directory)
},
close(directory: string) {
- setStore("projects", (x) => x.filter((x) => x.worktree !== directory))
+ server.projects.close(directory)
},
expand(directory: string) {
- const index = store.projects.findIndex((x) => x.worktree === directory)
- if (index !== -1) setStore("projects", index, "expanded", true)
+ server.projects.expand(directory)
},
collapse(directory: string) {
- const index = store.projects.findIndex((x) => x.worktree === directory)
- if (index !== -1) setStore("projects", index, "expanded", false)
+ server.projects.collapse(directory)
},
move(directory: string, toIndex: number) {
- setStore("projects", (projects) => {
- const fromIndex = projects.findIndex((x) => x.worktree === directory)
- if (fromIndex === -1 || fromIndex === toIndex) return projects
- const result = [...projects]
- const [item] = result.splice(fromIndex, 1)
- result.splice(toIndex, 0, item)
- return result
- })
+ server.projects.move(directory, toIndex)
},
},
sidebar: {