Skip to content

Commit 99a8f88

Browse files
Fix getProviders return type handling in frontend
1 parent e3cf648 commit 99a8f88

2 files changed

Lines changed: 29 additions & 28 deletions

File tree

frontend/src/components/model/ModelQuickSelect.tsx

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from '@/components/ui/dropdown-menu'
1111
import { useModelSelection } from '@/hooks/useModelSelection'
1212
import { useVariants } from '@/hooks/useVariants'
13-
import { formatModelName } from '@/api/providers'
13+
import { formatModelName, getProviders } from '@/api/providers'
1414
import { useQuery } from '@tanstack/react-query'
1515
import { useOpenCodeClient } from '@/hooks/useOpenCode'
1616

@@ -33,25 +33,25 @@ export function ModelQuickSelect({
3333
const { availableVariants, currentVariant, setVariant, clearVariant, hasVariants } = useVariants(opcodeUrl, directory)
3434
const client = useOpenCodeClient(opcodeUrl, directory)
3535

36-
const { data: providersData } = useQuery({
37-
queryKey: ['opencode', 'providers', opcodeUrl, directory],
38-
queryFn: () => client!.getProviders(),
39-
enabled: !!client,
40-
staleTime: 30000,
41-
})
36+
const { data: providersData } = useQuery({
37+
queryKey: ['opencode', 'providers', opcodeUrl, directory],
38+
queryFn: () => getProviders(),
39+
enabled: !!client,
40+
staleTime: 30000,
41+
})
4242

43-
const recentModelsWithNames = useMemo(() => {
44-
if (!providersData?.all || recentModels.length === 0) return []
45-
46-
return recentModels
47-
.filter(recent => {
48-
const key = `${recent.providerID}/${recent.modelID}`
49-
return key !== modelString
50-
})
51-
.slice(0, 5)
52-
.map(recent => {
53-
let displayName = recent.modelID
54-
for (const provider of providersData.all) {
43+
const recentModelsWithNames = useMemo(() => {
44+
if (!providersData?.providers || providersData.providers.length === 0 || recentModels.length === 0) return []
45+
46+
return recentModels
47+
.filter(recent => {
48+
const key = `${recent.providerID}/${recent.modelID}`
49+
return key !== modelString
50+
})
51+
.slice(0, 5)
52+
.map(recent => {
53+
let displayName = recent.modelID
54+
for (const provider of providersData.providers) {
5555
if (provider.id === recent.providerID && provider.models) {
5656
const modelData = provider.models[recent.modelID]
5757
if (modelData) {

frontend/src/hooks/useVariants.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useMemo } from 'react'
22
import { useModelSelection } from './useModelSelection'
33
import { useModelStore } from '@/stores/modelStore'
44
import { useOpenCodeClient } from './useOpenCode'
5+
import { getProviders } from '@/api/providers'
56
import { useQuery } from '@tanstack/react-query'
67

78
export interface UseVariantsResult {
@@ -21,16 +22,16 @@ export function useVariants(
2122
const { setVariant: setStoreVariant, clearVariant: clearStoreVariant } = useModelStore()
2223
const client = useOpenCodeClient(opcodeUrl, directory)
2324

24-
const { data: providersData, isLoading } = useQuery({
25-
queryKey: ['opencode', 'providers', opcodeUrl, directory],
26-
queryFn: () => client!.getProviders(),
27-
enabled: !!client && !!model,
28-
staleTime: 30000,
29-
})
25+
const { data: providersData, isLoading } = useQuery({
26+
queryKey: ['opencode', 'providers', opcodeUrl, directory],
27+
queryFn: () => getProviders(),
28+
enabled: !!client && !!model,
29+
staleTime: 30000,
30+
})
3031

31-
const currentModel = useMemo(() => {
32-
if (!model || isLoading || !providersData?.all) return null
33-
for (const provider of providersData.all) {
32+
const currentModel = useMemo(() => {
33+
if (!model || isLoading || !providersData?.providers || providersData.providers.length === 0) return null
34+
for (const provider of providersData.providers) {
3435
if (provider.id === model.providerID && provider.models) {
3536
const modelData = provider.models[model.modelID]
3637
if (modelData) {

0 commit comments

Comments
 (0)