diff options
| author | Adam <[email protected]> | 2025-12-10 17:17:34 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-10 17:17:37 -0600 |
| commit | 85cfa226c34e41660ddfdcb04543af2e494ae168 (patch) | |
| tree | f98a6631bf169470c37eeacc79129b826da59dd2 /packages/desktop/src/hooks | |
| parent | cbb591eb7dfe8e27298945f10e5d6cfff4405630 (diff) | |
| download | opencode-85cfa226c34e41660ddfdcb04543af2e494ae168.tar.gz opencode-85cfa226c34e41660ddfdcb04543af2e494ae168.zip | |
wip(desktop): progress
Diffstat (limited to 'packages/desktop/src/hooks')
| -rw-r--r-- | packages/desktop/src/hooks/use-providers.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/desktop/src/hooks/use-providers.ts b/packages/desktop/src/hooks/use-providers.ts new file mode 100644 index 000000000..c3fcc7898 --- /dev/null +++ b/packages/desktop/src/hooks/use-providers.ts @@ -0,0 +1,31 @@ +import { useGlobalSync } from "@/context/global-sync" +import { base64Decode } from "@opencode-ai/util/encode" +import { useParams } from "@solidjs/router" +import { createMemo } from "solid-js" + +export const popularProviders = ["opencode", "anthropic", "github-copilot", "openai", "google", "openrouter", "vercel"] + +export function useProviders() { + const params = useParams() + const globalSync = useGlobalSync() + const currentDirectory = createMemo(() => base64Decode(params.dir ?? "")) + const providers = createMemo(() => { + if (currentDirectory()) { + const [projectStore] = globalSync.child(currentDirectory()) + return projectStore.provider + } + return globalSync.data.provider + }) + const connected = createMemo(() => + providers().all.filter( + (p) => providers().connected.includes(p.id) && Object.values(p.models).find((m) => m.cost?.input), + ), + ) + const popular = createMemo(() => providers().all.filter((p) => popularProviders.includes(p.id))) + return createMemo(() => ({ + all: providers().all, + default: providers().default, + popular, + connected, + })) +} |
