From 5c8896887992ef7869999c51a0d31503368294b3 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 22 Dec 2025 17:43:11 +0100 Subject: [PATCH] reset data and remove Apply button when error --- interface/src/utils/useRest.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/interface/src/utils/useRest.ts b/interface/src/utils/useRest.ts index aa4096623..0d57abff9 100644 --- a/interface/src/utils/useRest.ts +++ b/interface/src/utils/useRest.ts @@ -60,21 +60,28 @@ export const useRest = ({ read, update }: RestRequestOptions) => { // Reset states before saving setRestartNeeded(false); setErrorMessage(undefined); - setDirtyFlags([]); - setOrigData(data as D); try { await writeData(data as D); + // Only update origData on successful save (dirtyFlags cleared by onSuccess handler) + setOrigData(data as D); } catch (error) { const message = error instanceof Error ? error.message : String(error); + if (message === REBOOT_ERROR_MESSAGE) { setRestartNeeded(true); - } else { - toast.error(message); - setErrorMessage(message); + return; // Early return - save succeeded but needs reboot } + + // Restore original data on validation error + if (origData) { + updateData({ data: origData }); + } + toast.error(message); + setErrorMessage(message); + setDirtyFlags([]); // Clear flags so user can retry } - }, [data, writeData]); + }, [data, writeData, origData, updateData]); return useMemo( () => ({