summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-09 11:52:39 -0600
committerAdam <[email protected]>2025-12-09 11:52:43 -0600
commit1bc1e56da379fdd9040dc40caac1a57ffe8d1197 (patch)
treea29b8ae17b7db70cb7cf22f2378b8f6b0295090d /packages/desktop/src/context
parent0d0c20e673d90bf5f5bb005fb6b91fd4850726a3 (diff)
downloadopencode-1bc1e56da379fdd9040dc40caac1a57ffe8d1197.tar.gz
opencode-1bc1e56da379fdd9040dc40caac1a57ffe8d1197.zip
wip(desktop): progress
Diffstat (limited to 'packages/desktop/src/context')
-rw-r--r--packages/desktop/src/context/layout.tsx10
-rw-r--r--packages/desktop/src/context/local.tsx4
-rw-r--r--packages/desktop/src/context/session.tsx13
3 files changed, 14 insertions, 13 deletions
diff --git a/packages/desktop/src/context/layout.tsx b/packages/desktop/src/context/layout.tsx
index 5ef41c1f4..58d947af4 100644
--- a/packages/desktop/src/context/layout.tsx
+++ b/packages/desktop/src/context/layout.tsx
@@ -66,6 +66,16 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
collapse(directory: string) {
setStore("projects", (x) => x.map((x) => (x.directory === directory ? { ...x, expanded: false } : x)))
},
+ move(directory: string, toIndex: number) {
+ setStore("projects", (projects) => {
+ const fromIndex = projects.findIndex((x) => x.directory === directory)
+ if (fromIndex === -1 || fromIndex === toIndex) return projects
+ const result = [...projects]
+ const [item] = result.splice(fromIndex, 1)
+ result.splice(toIndex, 0, item)
+ return result
+ })
+ },
},
sidebar: {
opened: createMemo(() => store.sidebar.opened),
diff --git a/packages/desktop/src/context/local.tsx b/packages/desktop/src/context/local.tsx
index 0d8303b45..8223a36b9 100644
--- a/packages/desktop/src/context/local.tsx
+++ b/packages/desktop/src/context/local.tsx
@@ -257,7 +257,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
const load = async (path: string) => {
const relativePath = relative(path)
- sdk.client.file.read({ path: relativePath }).then((x) => {
+ await sdk.client.file.read({ path: relativePath }).then((x) => {
setStore(
"node",
relativePath,
@@ -335,7 +335,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
return {
node: async (path: string) => {
- if (!store.node[path] || store.node[path].loaded === false) {
+ if (!store.node[path] || !store.node[path].loaded) {
await init(path)
}
return store.node[path]
diff --git a/packages/desktop/src/context/session.tsx b/packages/desktop/src/context/session.tsx
index 5335422f7..2a0391d6b 100644
--- a/packages/desktop/src/context/session.tsx
+++ b/packages/desktop/src/context/session.tsx
@@ -1,9 +1,9 @@
import { createStore, produce } from "solid-js/store"
import { createSimpleContext } from "@opencode-ai/ui/context"
-import { batch, createEffect, createMemo, onMount } from "solid-js"
+import { batch, createEffect, createMemo } from "solid-js"
import { useSync } from "./sync"
import { makePersisted } from "@solid-primitives/storage"
-import { TextSelection, useLocal } from "./local"
+import { TextSelection } from "./local"
import { pipe, sumBy } from "remeda"
import { AssistantMessage, UserMessage } from "@opencode-ai/sdk/v2"
import { useParams } from "@solidjs/router"
@@ -25,7 +25,6 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
const sdk = useSDK()
const params = useParams()
const sync = useSync()
- const local = useLocal()
const name = createMemo(
() => `${base64Encode(sync.data.project.worktree)}/session${params.id ? "/" + params.id : ""}.v2`,
)
@@ -56,14 +55,6 @@ export const { use: useSession, provider: SessionProvider } = createSimpleContex
},
)
- onMount(() => {
- store.tabs.all.forEach((tab) => {
- if (tab.startsWith("file://")) {
- local.file.open(tab.replace("file://", ""))
- }
- })
- })
-
createEffect(() => {
if (!params.id) return
sync.session.sync(params.id)