summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/hooks
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-10 17:17:34 -0600
committerAdam <[email protected]>2025-12-10 17:17:37 -0600
commit85cfa226c34e41660ddfdcb04543af2e494ae168 (patch)
treef98a6631bf169470c37eeacc79129b826da59dd2 /packages/desktop/src/hooks
parentcbb591eb7dfe8e27298945f10e5d6cfff4405630 (diff)
downloadopencode-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.ts31
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,
+ }))
+}