From a1978e4daf449c012e74e5a13306d03a9a653f77 Mon Sep 17 00:00:00 2001 From: Ben Wheeler <wheeler.benjamin@gmail.com> Date: Thu, 29 Nov 2018 16:00:12 -0800 Subject: [PATCH] warn user if they leave project that's not saved --- src/lib/project-saver-hoc.jsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/lib/project-saver-hoc.jsx b/src/lib/project-saver-hoc.jsx index cd6be4ca7..0ddcd967f 100644 --- a/src/lib/project-saver-hoc.jsx +++ b/src/lib/project-saver-hoc.jsx @@ -44,9 +44,15 @@ const ProjectSaverHOC = function (WrappedComponent) { constructor (props) { super(props); bindAll(this, [ + 'leavePageConfirm', 'tryToAutoSave' ]); } + componentWillMount () { + if (typeof window === 'object') { + window.addEventListener('beforeunload', this.leavePageConfirm); + } + } componentDidUpdate (prevProps) { if (this.props.projectChanged && !prevProps.projectChanged) { this.scheduleAutoSave(); @@ -86,6 +92,15 @@ const ProjectSaverHOC = function (WrappedComponent) { } componentWillUnmount () { this.clearAutoSaveTimeout(); + window.removeEventListener('beforeunload', this.leavePageConfirm); + } + leavePageConfirm (e) { + if (this.props.projectChanged) { + // both methods of returning a value may be necessary for browser compatibility + (e || window.event).returnValue = true; + return true; + } + return false; // do not prompt } clearAutoSaveTimeout () { if (this.props.autoSaveTimeoutId !== null) { -- GitLab