mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-01-31 11:09:10 +03:00
reset data and remove Apply button when error
This commit is contained in:
@@ -60,21 +60,28 @@ export const useRest = <D>({ read, update }: RestRequestOptions<D>) => {
|
|||||||
// Reset states before saving
|
// Reset states before saving
|
||||||
setRestartNeeded(false);
|
setRestartNeeded(false);
|
||||||
setErrorMessage(undefined);
|
setErrorMessage(undefined);
|
||||||
setDirtyFlags([]);
|
|
||||||
setOrigData(data as D);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await writeData(data as D);
|
await writeData(data as D);
|
||||||
|
// Only update origData on successful save (dirtyFlags cleared by onSuccess handler)
|
||||||
|
setOrigData(data as D);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const message = error instanceof Error ? error.message : String(error);
|
const message = error instanceof Error ? error.message : String(error);
|
||||||
|
|
||||||
if (message === REBOOT_ERROR_MESSAGE) {
|
if (message === REBOOT_ERROR_MESSAGE) {
|
||||||
setRestartNeeded(true);
|
setRestartNeeded(true);
|
||||||
} else {
|
return; // Early return - save succeeded but needs reboot
|
||||||
toast.error(message);
|
|
||||||
setErrorMessage(message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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(
|
return useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user