summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-11 09:32:53 -0600
committerAdam <[email protected]>2025-12-11 13:42:45 -0600
commit0ca758e13516d96180cc11631e02e5f7929ba4b0 (patch)
treecaeb8c09a2027991cc007339eb0e68f56b6db628 /packages/desktop/src/context
parentea8508ee44848e9ff225ab9764ab1779b641b7c0 (diff)
downloadopencode-0ca758e13516d96180cc11631e02e5f7929ba4b0.tar.gz
opencode-0ca758e13516d96180cc11631e02e5f7929ba4b0.zip
wip(desktop): progress
Diffstat (limited to 'packages/desktop/src/context')
-rw-r--r--packages/desktop/src/context/layout.tsx47
-rw-r--r--packages/desktop/src/context/local.tsx28
2 files changed, 42 insertions, 33 deletions
diff --git a/packages/desktop/src/context/layout.tsx b/packages/desktop/src/context/layout.tsx
index 24ba55a53..ea5962b40 100644
--- a/packages/desktop/src/context/layout.tsx
+++ b/packages/desktop/src/context/layout.tsx
@@ -45,15 +45,18 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
name: "default-layout.v7",
},
)
- const [ephemeral, setEphemeral] = createStore({
+ const [ephemeral, setEphemeral] = createStore<{
connect: {
- provider: undefined as undefined | string,
- state: undefined as undefined | "pending" | "complete" | "error",
- error: undefined as undefined | string,
- },
+ provider?: string
+ state?: "pending" | "complete" | "error"
+ error?: string
+ }
dialog: {
- open: undefined as undefined | Dialog,
- },
+ open?: Dialog
+ }
+ }>({
+ connect: {},
+ dialog: {},
})
const usedColors = new Set<string>()
@@ -177,22 +180,30 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
dialog: {
opened: createMemo(() => ephemeral.dialog?.open),
open(dialog: Dialog) {
- setEphemeral("dialog", "open", dialog)
- if (dialog !== "connect") {
- setEphemeral("connect", {})
- }
+ batch(() => {
+ // if (dialog !== "connect") {
+ // setEphemeral("connect", {})
+ // }
+ setEphemeral("dialog", "open", dialog)
+ })
},
close(dialog: Dialog) {
- if (ephemeral.dialog?.open === dialog) {
- setEphemeral("dialog", "open", undefined)
- setEphemeral("connect", {})
+ if (ephemeral.dialog.open === dialog) {
+ setEphemeral(
+ produce((state) => {
+ state.dialog.open = undefined
+ state.connect = {}
+ }),
+ )
}
},
connect(provider: string) {
- batch(() => {
- setEphemeral("dialog", "open", "connect")
- setEphemeral("connect", { provider, state: "pending" })
- })
+ setEphemeral(
+ produce((state) => {
+ state.dialog.open = "connect"
+ state.connect = { provider, state: "pending" }
+ }),
+ )
},
},
connect: {
diff --git a/packages/desktop/src/context/local.tsx b/packages/desktop/src/context/local.tsx
index d8dfa732a..39fd1f987 100644
--- a/packages/desktop/src/context/local.tsx
+++ b/packages/desktop/src/context/local.tsx
@@ -41,10 +41,10 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
const providers = useProviders()
function isModelValid(model: ModelKey) {
- const provider = providers().all.find((x) => x.id === model.providerID)
+ const provider = providers.all().find((x) => x.id === model.providerID)
return (
!!provider?.models[model.modelID] &&
- providers()
+ providers
.connected()
.map((p) => p.id)
.includes(model.providerID)
@@ -123,16 +123,14 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
})
const list = createMemo(() =>
- providers()
- .connected()
- .flatMap((p) =>
- Object.values(p.models).map((m) => ({
- ...m,
- name: m.name.replace("(latest)", "").trim(),
- provider: p,
- latest: m.name.includes("(latest)"),
- })),
- ),
+ providers.connected().flatMap((p) =>
+ Object.values(p.models).map((m) => ({
+ ...m,
+ name: m.name.replace("(latest)", "").trim(),
+ provider: p,
+ latest: m.name.includes("(latest)"),
+ })),
+ ),
)
const find = (key: ModelKey) => list().find((m) => m.id === key?.modelID && m.provider.id === key.providerID)
@@ -153,11 +151,11 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
}
}
- for (const p of providers().connected()) {
- if (p.id in providers().default) {
+ for (const p of providers.connected()) {
+ if (p.id in providers.default()) {
return {
providerID: p.id,
- modelID: providers().default[p.id],
+ modelID: providers.default()[p.id],
}
}
}