From 6f9ada5eb0c4f74d954fa845d1782aa4a719e8b8 Mon Sep 17 00:00:00 2001 From: "ellipsis-dev[bot]" <65095814+ellipsis-dev[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 18:25:52 +0000 Subject: [PATCH] address comments left by @mrubens on #1090 (Fix settings done button with unsaved changes); --- webview-ui/src/components/settings/SettingsView.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index f4c49b398d..034338e301 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -217,13 +217,16 @@ 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) } }, []) + useEffect(() => { + if (!isChangeDetected && confirmDialogHandler.current) { + confirmDialogHandler.current(); + confirmDialogHandler.current = undefined; // Clear the handler after execution + } + }, [isChangeDetected]); + const handleResetState = () => { vscode.postMessage({ type: "resetState" }) }