diff options
| author | David Hill <[email protected]> | 2025-12-11 00:46:07 +0000 |
|---|---|---|
| committer | David Hill <[email protected]> | 2025-12-11 00:46:07 +0000 |
| commit | a468044c9fb4ece1f1ae4685d46eb875751b66d8 (patch) | |
| tree | a1879744be543886fa1f50190aff37db8b218c52 /packages/desktop/src/hooks | |
| parent | f0274fd29f7301b8ca79b1573b26efd8d08f31d6 (diff) | |
| parent | fadeed1fa4caacf34054b231784513a841745766 (diff) | |
| download | opencode-a468044c9fb4ece1f1ae4685d46eb875751b66d8.tar.gz opencode-a468044c9fb4ece1f1ae4685d46eb875751b66d8.zip | |
Merge branch 'dev' of https://github.com/sst/opencode into dev
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, + })) +} |
