Files
shopify-ai-backup/opencode/packages/app/src/hooks/use-providers.ts
2026-02-07 20:54:46 +00:00

32 lines
1.2 KiB
TypeScript

import { useGlobalSync } from "@/context/global-sync"
import { decode64 } from "@/utils/base64"
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 globalSync = useGlobalSync()
const params = useParams()
const currentDirectory = createMemo(() => decode64(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)))
const paid = createMemo(() =>
connected().filter((p) => p.id !== "opencode" || Object.values(p.models).find((m) => m.cost?.input)),
)
const popular = createMemo(() => providers().all.filter((p) => popularProviders.includes(p.id)))
return {
all: createMemo(() => providers().all),
default: createMemo(() => providers().default),
popular,
connected,
paid,
}
}