Fix validator and ApiOptions model state not updating to allow selection of newly refreshed models

This commit is contained in:
slytechnical 2025-05-27 14:48:35 -05:00
parent ea4bfcb24a
commit 6b15ecec55
2 changed files with 19 additions and 8 deletions

View file

@ -16,8 +16,10 @@ import {
import { vscode } from "@src/utils/vscode"
import { validateApiConfiguration, validateModelId } from "@src/utils/validate"
import { useAppTranslation } from "@src/i18n/TranslationContext"
import { useRouterModels } from "@src/components/ui/hooks/useRouterModels"
import { useSelectedModel } from "@src/components/ui/hooks/useSelectedModel"
import { useExtensionState } from "@src/context/ExtensionStateContext"
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@src/components/ui"
import {
@ -122,7 +124,12 @@ const ApiOptions = ({
info: selectedModelInfo,
} = useSelectedModel(apiConfiguration)
const { data: routerModels, refetch: refetchRouterModels } = useRouterModels()
const { routerModels: contextRouterModels } = useExtensionState()
const { data: queryRouterModels, refetch: refetchRouterModels } = useRouterModels()
// Router providers use context system, others use React Query system
const isRouterProvider = ["openrouter", "requesty", "glama", "unbound", "litellm"].includes(selectedProvider)
const routerModels = isRouterProvider ? contextRouterModels : queryRouterModels
// Update `apiModelId` whenever `selectedModelId` changes.
useEffect(() => {

View file

@ -34,22 +34,26 @@ import {
import { useRouterModels } from "./useRouterModels"
import { useOpenRouterModelProviders } from "./useOpenRouterModelProviders"
import { useExtensionState } from "@src/context/ExtensionStateContext"
export const useSelectedModel = (apiConfiguration?: ProviderSettings) => {
const provider = apiConfiguration?.apiProvider || "anthropic"
const openRouterModelId = provider === "openrouter" ? apiConfiguration?.openRouterModelId : undefined
const routerModels = useRouterModels()
const { routerModels: contextRouterModels } = useExtensionState()
const queryRouterModels = useRouterModels()
const openRouterModelProviders = useOpenRouterModelProviders(openRouterModelId)
// Router providers use context system, others use React Query system
const isRouterProvider = ["openrouter", "requesty", "glama", "unbound", "litellm"].includes(provider)
const routerModels = isRouterProvider ? contextRouterModels : queryRouterModels.data
const { id, info } =
apiConfiguration &&
typeof routerModels.data !== "undefined" &&
typeof openRouterModelProviders.data !== "undefined"
apiConfiguration && typeof routerModels !== "undefined" && typeof openRouterModelProviders.data !== "undefined"
? getSelectedModel({
provider,
apiConfiguration,
routerModels: routerModels.data,
routerModels,
openRouterModelProviders: openRouterModelProviders.data,
})
: { id: anthropicDefaultModelId, info: undefined }
@ -58,8 +62,8 @@ export const useSelectedModel = (apiConfiguration?: ProviderSettings) => {
provider,
id,
info,
isLoading: routerModels.isLoading || openRouterModelProviders.isLoading,
isError: routerModels.isError || openRouterModelProviders.isError,
isLoading: queryRouterModels.isLoading || openRouterModelProviders.isLoading,
isError: queryRouterModels.isError || openRouterModelProviders.isError,
}
}