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)