From 590688f1235796b2d740549d11697eda46bcbf9d Mon Sep 17 00:00:00 2001 From: MiniX16 Date: Wed, 12 Nov 2025 17:59:28 +0100 Subject: [PATCH] Add unsaved-change warning to Home page editor --- client/homebrew/pages/homePage/homePage.jsx | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 82c5b7084..5f2a3d14b 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -53,8 +53,9 @@ const HomePage =(props)=>{ const [isSaving , setIsSaving] = useState(false); const [autoSaveEnabled , setAutoSaveEnable] = useState(false); - const editorRef = useRef(null); - const lastSavedBrew = useRef(_.cloneDeep(props.brew)); + const editorRef = useRef(null); + const lastSavedBrew = useRef(_.cloneDeep(props.brew)); + const unsavedChangesRef = useRef(unsavedChanges); useEffect(()=>{ 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); return ()=>{ document.removeEventListener('keydown', handleControlKeys); + window.removeEventListener('beforeunload', handleBeforeUnload); }; }, []); + useEffect(()=>{ + unsavedChangesRef.current = unsavedChanges; + }, [unsavedChanges]); + const save = ()=>{ request.post('/api') .send(currentBrew)