summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/server.tsx
diff options
context:
space:
mode:
authoradamelmore <[email protected]>2026-01-26 10:04:59 -0600
committeradamelmore <[email protected]>2026-01-26 11:26:17 -0600
commitd05ed5ca83e03904c7c3dda23a6dcccfd607bdce (patch)
tree1afcb055bcedf8b477472f0b25432b318a95f53b /packages/app/src/context/server.tsx
parent37f1a1a4ef36eacb60ad5493db8aeb1130c5fa91 (diff)
downloadopencode-d05ed5ca83e03904c7c3dda23a6dcccfd607bdce.tar.gz
opencode-d05ed5ca83e03904c7c3dda23a6dcccfd607bdce.zip
chore(app): createStore over signals
Diffstat (limited to 'packages/app/src/context/server.tsx')
-rw-r--r--packages/app/src/context/server.tsx39
1 files changed, 21 insertions, 18 deletions
diff --git a/packages/app/src/context/server.tsx b/packages/app/src/context/server.tsx
index 107657092..4a3f3c6d1 100644
--- a/packages/app/src/context/server.tsx
+++ b/packages/app/src/context/server.tsx
@@ -1,6 +1,6 @@
import { createOpencodeClient } from "@opencode-ai/sdk/v2/client"
import { createSimpleContext } from "@opencode-ai/ui/context"
-import { batch, createEffect, createMemo, createSignal, onCleanup } from "solid-js"
+import { batch, createEffect, createMemo, onCleanup } from "solid-js"
import { createStore } from "solid-js/store"
import { usePlatform } from "@/context/platform"
import { Persist, persisted } from "@/utils/persist"
@@ -40,12 +40,17 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
}),
)
- const [active, setActiveRaw] = createSignal("")
+ const [state, setState] = createStore({
+ active: "",
+ healthy: undefined as boolean | undefined,
+ })
+
+ const healthy = () => state.healthy
function setActive(input: string) {
const url = normalizeServerUrl(input)
if (!url) return
- setActiveRaw(url)
+ setState("active", url)
}
function add(input: string) {
@@ -54,7 +59,7 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
const fallback = normalizeServerUrl(props.defaultUrl)
if (fallback && url === fallback) {
- setActiveRaw(url)
+ setState("active", url)
return
}
@@ -62,7 +67,7 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
if (!store.list.includes(url)) {
setStore("list", store.list.length, url)
}
- setActiveRaw(url)
+ setState("active", url)
})
}
@@ -71,25 +76,23 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
if (!url) return
const list = store.list.filter((x) => x !== url)
- const next = active() === url ? (list[0] ?? normalizeServerUrl(props.defaultUrl) ?? "") : active()
+ const next = state.active === url ? (list[0] ?? normalizeServerUrl(props.defaultUrl) ?? "") : state.active
batch(() => {
setStore("list", list)
- setActiveRaw(next)
+ setState("active", next)
})
}
createEffect(() => {
if (!ready()) return
- if (active()) return
+ if (state.active) return
const url = normalizeServerUrl(props.defaultUrl)
if (!url) return
- setActiveRaw(url)
+ setState("active", url)
})
- const isReady = createMemo(() => ready() && !!active())
-
- const [healthy, setHealthy] = createSignal<boolean | undefined>(undefined)
+ const isReady = createMemo(() => ready() && !!state.active)
const check = (url: string) => {
const sdk = createOpencodeClient({
@@ -104,10 +107,10 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
}
createEffect(() => {
- const url = active()
+ const url = state.active
if (!url) return
- setHealthy(undefined)
+ setState("healthy", undefined)
let alive = true
let busy = false
@@ -118,7 +121,7 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
void check(url)
.then((next) => {
if (!alive) return
- setHealthy(next)
+ setState("healthy", next)
})
.finally(() => {
busy = false
@@ -134,7 +137,7 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
})
})
- const origin = createMemo(() => projectsKey(active()))
+ const origin = createMemo(() => projectsKey(state.active))
const projectsList = createMemo(() => store.projects[origin()] ?? [])
const isLocal = createMemo(() => origin() === "local")
@@ -143,10 +146,10 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
healthy,
isLocal,
get url() {
- return active()
+ return state.active
},
get name() {
- return serverDisplayName(active())
+ return serverDisplayName(state.active)
},
get list() {
return store.list