diff --git a/.changeset/twenty-rice-own.md b/.changeset/twenty-rice-own.md deleted file mode 100644 index 0c3ccb141a..0000000000 --- a/.changeset/twenty-rice-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"roo-cline": patch ---- - -Fix settings done button with unsaved changes diff --git a/webview-ui/src/App.tsx b/webview-ui/src/App.tsx index 3980f38cc8..3ae441cd52 100644 --- a/webview-ui/src/App.tsx +++ b/webview-ui/src/App.tsx @@ -28,16 +28,13 @@ const App = () => { const [tab, setTab] = useState("chat") const settingsRef = useRef(null) - const switchTab = useCallback( - (newTab: Tab) => { - if (tab === "settings" && settingsRef.current?.checkUnsaveChanges) { - settingsRef.current.checkUnsaveChanges(() => setTab(newTab)) - } else { - setTab(newTab) - } - }, - [tab], - ) + const switchTab = useCallback((newTab: Tab) => { + if (settingsRef.current?.checkUnsaveChanges) { + settingsRef.current.checkUnsaveChanges(() => setTab(newTab)) + } else { + setTab(newTab) + } + }, []) const onMessage = useCallback( (e: MessageEvent) => { @@ -73,7 +70,7 @@ const App = () => { ) : ( <> - {tab === "settings" && switchTab("chat")} />} + {tab === "settings" && setTab("chat")} />} {tab === "history" && switchTab("chat")} />} {tab === "mcp" && switchTab("chat")} />} {tab === "prompts" && switchTab("chat")} />} diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index f4c49b398d..495bf49bd7 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -173,6 +173,7 @@ const SettingsView = forwardRef(({ onDone }, text: currentApiConfigName, apiConfiguration, }) + // onDone() setChangeDetected(false) } } @@ -216,11 +217,7 @@ const SettingsView = forwardRef(({ onDone }, const onConfirmDialogResult = useCallback((confirm: boolean) => { if (confirm) { - setChangeDetected(false) - // Wait for the change detection to be updated - setTimeout(() => { - confirmDialogHandler.current?.() - }, 100) + confirmDialogHandler.current?.() } }, [])