From fd6c987ef1380976bfead5cad9cda7fb317dab1b Mon Sep 17 00:00:00 2001 From: Roo Code Date: Wed, 5 Nov 2025 09:23:42 +0000 Subject: [PATCH] fix: add optional chaining to router model accesses to prevent TypeError when switching providers Fixes #9047 - When switching providers after selecting a model, the router models for the new provider may not be loaded yet, causing a TypeError when trying to access properties on undefined. Added optional chaining to safely handle these cases. --- .../src/components/ui/hooks/useSelectedModel.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/webview-ui/src/components/ui/hooks/useSelectedModel.ts b/webview-ui/src/components/ui/hooks/useSelectedModel.ts index 296b262c37..8d0e5a5a9f 100644 --- a/webview-ui/src/components/ui/hooks/useSelectedModel.ts +++ b/webview-ui/src/components/ui/hooks/useSelectedModel.ts @@ -146,7 +146,7 @@ function getSelectedModel({ switch (provider) { case "openrouter": { const id = apiConfiguration.openRouterModelId ?? openRouterDefaultModelId - let info = routerModels.openrouter[id] + let info = routerModels.openrouter?.[id] const specificProvider = apiConfiguration.openRouterSpecificProvider if (specificProvider && openRouterModelProviders[specificProvider]) { @@ -162,22 +162,22 @@ function getSelectedModel({ } case "requesty": { const id = apiConfiguration.requestyModelId ?? requestyDefaultModelId - const info = routerModels.requesty[id] + const info = routerModels.requesty?.[id] return { id, info } } case "glama": { const id = apiConfiguration.glamaModelId ?? glamaDefaultModelId - const info = routerModels.glama[id] + const info = routerModels.glama?.[id] return { id, info } } case "unbound": { const id = apiConfiguration.unboundModelId ?? unboundDefaultModelId - const info = routerModels.unbound[id] + const info = routerModels.unbound?.[id] return { id, info } } case "litellm": { const id = apiConfiguration.litellmModelId ?? litellmDefaultModelId - const info = routerModels.litellm[id] + const info = routerModels.litellm?.[id] return { id, info } } case "xai": { @@ -202,7 +202,7 @@ function getSelectedModel({ } case "chutes": { const id = apiConfiguration.apiModelId ?? chutesDefaultModelId - const info = routerModels.chutes[id] + const info = routerModels.chutes?.[id] return { id, info } } case "bedrock": { @@ -354,7 +354,7 @@ function getSelectedModel({ case "roo": { // Roo is a dynamic provider - models are loaded from API const id = apiConfiguration.apiModelId ?? rooDefaultModelId - const info = routerModels.roo[id] + const info = routerModels.roo?.[id] return { id, info } } case "qwen-code": {