0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-09 05:02:42 +00:00

Add unsaved-change warning to Home page editor

This commit is contained in:
MiniX16
2025-11-12 17:59:28 +01:00
parent e02890c03e
commit 590688f123

View File

@@ -53,8 +53,9 @@ const HomePage =(props)=>{
const [isSaving , setIsSaving] = useState(false); const [isSaving , setIsSaving] = useState(false);
const [autoSaveEnabled , setAutoSaveEnable] = useState(false); const [autoSaveEnabled , setAutoSaveEnable] = useState(false);
const editorRef = useRef(null); const editorRef = useRef(null);
const lastSavedBrew = useRef(_.cloneDeep(props.brew)); const lastSavedBrew = useRef(_.cloneDeep(props.brew));
const unsavedChangesRef = useRef(unsavedChanges);
useEffect(()=>{ useEffect(()=>{
fetchThemeBundle(setError, setThemeBundle, currentBrew.renderer, currentBrew.theme); fetchThemeBundle(setError, setThemeBundle, currentBrew.renderer, currentBrew.theme);
@@ -69,13 +70,28 @@ const HomePage =(props)=>{
} }
}; };
const handleBeforeUnload = (e)=>{
if(unsavedChangesRef.current) {
e.preventDefault();
e.returnValue = '';
return '';
}
};
window.addEventListener('beforeunload', handleBeforeUnload);
document.addEventListener('keydown', handleControlKeys); document.addEventListener('keydown', handleControlKeys);
return ()=>{ return ()=>{
document.removeEventListener('keydown', handleControlKeys); document.removeEventListener('keydown', handleControlKeys);
window.removeEventListener('beforeunload', handleBeforeUnload);
}; };
}, []); }, []);
useEffect(()=>{
unsavedChangesRef.current = unsavedChanges;
}, [unsavedChanges]);
const save = ()=>{ const save = ()=>{
request.post('/api') request.post('/api')
.send(currentBrew) .send(currentBrew)