From febf434fc19c84ce2e2f36b666dce650f9e5dc56 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Mon, 10 Feb 2025 23:16:52 -0500 Subject: [PATCH] Fix issue where Ollama/LMStudio URLs would flicker back to previous while entering --- .changeset/funny-bananas-sneeze.md | 5 +++++ .../src/components/settings/ApiOptions.tsx | 21 +++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 .changeset/funny-bananas-sneeze.md diff --git a/.changeset/funny-bananas-sneeze.md b/.changeset/funny-bananas-sneeze.md new file mode 100644 index 0000000000..773e9b577b --- /dev/null +++ b/.changeset/funny-bananas-sneeze.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Fix issue where Ollama/LMStudio URLs would flicker back to previous while entering diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index 705ad6df61..ce34e5f194 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -88,12 +88,21 @@ const ApiOptions = ({ apiErrorMessage, modelIdErrorMessage, fromWelcomeView }: A ) const handleMessage = useCallback((event: MessageEvent) => { const message: ExtensionMessage = event.data - if (message.type === "ollamaModels" && message.ollamaModels) { - setOllamaModels(message.ollamaModels) - } else if (message.type === "lmStudioModels" && message.lmStudioModels) { - setLmStudioModels(message.lmStudioModels) - } else if (message.type === "vsCodeLmModels" && message.vsCodeLmModels) { - setVsCodeLmModels(message.vsCodeLmModels) + if (message.type === "ollamaModels" && Array.isArray(message.ollamaModels)) { + const newModels = message.ollamaModels + setOllamaModels((prevModels) => { + return JSON.stringify(prevModels) === JSON.stringify(newModels) ? prevModels : newModels + }) + } else if (message.type === "lmStudioModels" && Array.isArray(message.lmStudioModels)) { + const newModels = message.lmStudioModels + setLmStudioModels((prevModels) => { + return JSON.stringify(prevModels) === JSON.stringify(newModels) ? prevModels : newModels + }) + } else if (message.type === "vsCodeLmModels" && Array.isArray(message.vsCodeLmModels)) { + const newModels = message.vsCodeLmModels + setVsCodeLmModels((prevModels) => { + return JSON.stringify(prevModels) === JSON.stringify(newModels) ? prevModels : newModels + }) } }, []) useEvent("message", handleMessage)