From 7021b717764d54932f2e748fdf1f1e9e83f1e3c3 Mon Sep 17 00:00:00 2001 From: sam hoang Date: Mon, 30 Dec 2024 02:20:20 +0700 Subject: [PATCH] fix(openai-compatible) fix load model when change baseUrl --- src/core/webview/ClineProvider.ts | 7 ++++--- src/shared/WebviewMessage.ts | 1 + .../src/components/settings/OpenAiModelPicker.tsx | 11 ++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 1702f1f..8cc878b 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -522,9 +522,10 @@ export class ClineProvider implements vscode.WebviewViewProvider { await this.refreshOpenRouterModels() break case "refreshOpenAiModels": - const { apiConfiguration } = await this.getState() - const openAiModels = await this.getOpenAiModels(apiConfiguration.openAiBaseUrl, apiConfiguration.openAiApiKey) - this.postMessageToWebview({ type: "openAiModels", openAiModels }) + if (message?.values?.baseUrl && message?.values?.apiKey) { + const openAiModels = await this.getOpenAiModels(message?.values?.baseUrl, message?.values?.apiKey) + this.postMessageToWebview({ type: "openAiModels", openAiModels }) + } break case "openImage": openImage(message.text!) diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index c0b7b1d..7df4cb6 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -59,6 +59,7 @@ export interface WebviewMessage { toolName?: string alwaysAllow?: boolean dataUrls?: string[] + values?: Record } export type ClineAskResponse = "yesButtonClicked" | "noButtonClicked" | "messageResponse" diff --git a/webview-ui/src/components/settings/OpenAiModelPicker.tsx b/webview-ui/src/components/settings/OpenAiModelPicker.tsx index 7e2a38f..31cbddc 100644 --- a/webview-ui/src/components/settings/OpenAiModelPicker.tsx +++ b/webview-ui/src/components/settings/OpenAiModelPicker.tsx @@ -26,7 +26,16 @@ const OpenAiModelPicker: React.FC = () => { } useEffect(() => { - vscode.postMessage({ type: "refreshOpenAiModels" }) + if (!apiConfiguration?.openAiBaseUrl || !apiConfiguration?.openAiApiKey) { + return + } + + vscode.postMessage({ + type: "refreshOpenAiModels", values: { + baseUrl: apiConfiguration?.openAiBaseUrl, + apiKey: apiConfiguration?.openAiApiKey + } + }) }, [apiConfiguration?.openAiBaseUrl, apiConfiguration?.openAiApiKey]) useEffect(() => {