diff --git a/src/components/menu-bar/menu-bar.jsx b/src/components/menu-bar/menu-bar.jsx index f7af33ec0bf7eeda60b8d757e2870a71e99d3229..bc138db9164a02ca1bd8f605c529383201c0b6b9 100644 --- a/src/components/menu-bar/menu-bar.jsx +++ b/src/components/menu-bar/menu-bar.jsx @@ -150,12 +150,13 @@ class MenuBar extends React.Component { } } handleClickNew () { - // if canCreateNew===true, it's safe to replace current project, since we will auto-save first. - // else confirm first. - const readyToReplaceProject = this.props.canCreateNew || + // 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('Replace contents of the current project?'); // eslint-disable-line no-alert + this.props.onRequestCloseFile(); if (readyToReplaceProject) { - this.props.onClickNew(this.props.canCreateNew); + this.props.onClickNew(this.props.canSave && this.props.canCreateNew); } } handleClickRemix () { @@ -752,7 +753,7 @@ const mapDispatchToProps = dispatch => ({ onRequestCloseLanguage: () => dispatch(closeLanguageMenu()), onClickLogin: () => dispatch(openLoginMenu()), onRequestCloseLogin: () => dispatch(closeLoginMenu()), - onClickNew: canCreateNew => dispatch(requestNewProject(canCreateNew)), + onClickNew: needSave => dispatch(requestNewProject(needSave)), onClickRemix: () => dispatch(remixProject()), onClickSave: () => dispatch(updateProject()), onClickSaveAsCopy: () => dispatch(saveProjectAsCopy()), diff --git a/src/reducers/project-state.js b/src/reducers/project-state.js index 963ea9ec110f9538bd2e52eb89ac4e7bea5b7951..e264f18a48079260c7763471aebd51035ac03d51 100644 --- a/src/reducers/project-state.js +++ b/src/reducers/project-state.js @@ -379,8 +379,8 @@ const setProjectId = id => ({ projectId: id }); -const requestNewProject = canCreateNew => { - if (canCreateNew) return {type: START_UPDATING_BEFORE_CREATING_NEW}; +const requestNewProject = needSave => { + if (needSave) return {type: START_UPDATING_BEFORE_CREATING_NEW}; return {type: START_FETCHING_NEW}; };