From bc419199e5e88a97f3c167592b2ec7d6881806e5 Mon Sep 17 00:00:00 2001 From: Ben Wheeler <wheeler.benjamin@gmail.com> Date: Sun, 25 Nov 2018 17:21:45 -0500 Subject: [PATCH] =?UTF-8?q?only=20prompt=20user=20to=20save=20if=20project?= =?UTF-8?q?=20has=20changed=20and=20won=E2=80=99t=20autosave?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/menu-bar/menu-bar.jsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/menu-bar/menu-bar.jsx b/src/components/menu-bar/menu-bar.jsx index 21ebc084c..35dbd1f07 100644 --- a/src/components/menu-bar/menu-bar.jsx +++ b/src/components/menu-bar/menu-bar.jsx @@ -157,10 +157,15 @@ class MenuBar extends React.Component { ]); } handleClickNew () { - // if canSave===true and canCreateNew===true, it's safe to replace current project, - // since we will auto-save first. Else, confirm first. - const readyToReplaceProject = (this.props.canSave && this.props.canCreateNew) || - confirm(this.props.intl.formatMessage(messages.confirmNav)); // eslint-disable-line no-alert + let readyToReplaceProject = true; + // if the project is dirty, and user owns the project, we will autosave. + // but if they don't own this project, user should consider downloading first. + if (this.props.projectChanged && !this.props.canCreateNew) { + readyToReplaceProject = confirm( // eslint-disable-line no-alert + this.props.intl.formatMessage(messages.confirmNav) + ); + } + this.props.onRequestCloseFile(); if (readyToReplaceProject) { this.props.onClickNew(this.props.canSave && this.props.canCreateNew); } @@ -734,6 +739,7 @@ MenuBar.propTypes = { onShare: PropTypes.func, onToggleLoginOpen: PropTypes.func, onUpdateProjectTitle: PropTypes.func, + projectChanged: PropTypes.bool, projectTitle: PropTypes.string, renderLogin: PropTypes.func, sessionExists: PropTypes.bool, @@ -757,6 +763,7 @@ const mapStateToProps = state => { isShowingProject: getIsShowingProject(loadingState), languageMenuOpen: languageMenuOpen(state), loginMenuOpen: loginMenuOpen(state), + projectChanged: state.scratchGui.projectChanged, projectTitle: state.scratchGui.projectTitle, sessionExists: state.session && typeof state.session.session !== 'undefined', username: user ? user.username : null -- GitLab