Skip to content

Commit bfb41d5

Browse files
committed
feat: Implement model ID selection logic for provider changes in CodeIndexSettings
1 parent 27d7a06 commit bfb41d5

File tree

1 file changed

+47
-4
lines changed

1 file changed

+47
-4
lines changed

webview-ui/src/components/settings/CodeIndexSettings.tsx

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,30 @@ export const CodeIndexSettings: React.FC<CodeIndexSettingsProps> = ({
9797
}
9898
}, [codebaseIndexConfig, codebaseIndexModels])
9999

100+
/**
101+
* Determines the appropriate model ID when changing providers
102+
*/
103+
function getModelIdForProvider(
104+
newProvider: EmbedderProvider,
105+
currentProvider: EmbedderProvider | undefined,
106+
currentModelId: string | undefined,
107+
availableModels: CodebaseIndexModels | undefined,
108+
): string {
109+
if (newProvider === currentProvider && currentModelId) {
110+
return currentModelId
111+
}
112+
113+
const models = availableModels?.[newProvider]
114+
const modelIds = models ? Object.keys(models) : []
115+
116+
if (currentModelId && modelIds.includes(currentModelId)) {
117+
return currentModelId
118+
}
119+
120+
const selectedModel = modelIds.length > 0 ? modelIds[0] : ""
121+
return selectedModel
122+
}
123+
100124
function validateIndexingConfig(config: CodebaseIndexConfig | undefined, apiConfig: ProviderSettings): boolean {
101125
if (!config) return false
102126

@@ -210,15 +234,34 @@ export const CodeIndexSettings: React.FC<CodeIndexSettingsProps> = ({
210234
value={codebaseIndexConfig?.codebaseIndexEmbedderProvider || "openai"}
211235
onValueChange={(value) => {
212236
const newProvider = value as EmbedderProvider
213-
const models = codebaseIndexModels?.[newProvider]
214-
const modelIds = models ? Object.keys(models) : []
215-
const defaultModelId = modelIds.length > 0 ? modelIds[0] : "" // Use empty string if no models
237+
const currentProvider = codebaseIndexConfig?.codebaseIndexEmbedderProvider
238+
const currentModelId = codebaseIndexConfig?.codebaseIndexEmbedderModelId
239+
240+
console.log("[CodeIndexSettings] Provider selection changed:", {
241+
newProvider,
242+
currentProvider,
243+
currentModelId,
244+
providerChanged: newProvider !== currentProvider,
245+
})
246+
247+
const modelIdToUse = getModelIdForProvider(
248+
newProvider,
249+
currentProvider,
250+
currentModelId,
251+
codebaseIndexModels,
252+
)
253+
254+
console.log("[CodeIndexSettings] Setting new config:", {
255+
provider: newProvider,
256+
modelId: modelIdToUse,
257+
modelChanged: currentModelId !== modelIdToUse,
258+
})
216259

217260
if (codebaseIndexConfig) {
218261
setCachedStateField("codebaseIndexConfig", {
219262
...codebaseIndexConfig,
220263
codebaseIndexEmbedderProvider: newProvider,
221-
codebaseIndexEmbedderModelId: defaultModelId,
264+
codebaseIndexEmbedderModelId: modelIdToUse,
222265
})
223266
}
224267
}}>

0 commit comments

Comments
 (0)