From ed7b6541e90e4997ab52fc3f200b432b05c22459 Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Mon, 22 Oct 2018 06:59:58 -0400 Subject: [PATCH 1/4] set canRemix and canSaveAsCopy --- src/views/preview/preview.jsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/views/preview/preview.jsx b/src/views/preview/preview.jsx index e8d5dc6e2..985963941 100644 --- a/src/views/preview/preview.jsx +++ b/src/views/preview/preview.jsx @@ -545,7 +545,8 @@ Preview.defaultProps = { }; const mapStateToProps = state => { - const projectInfoPresent = Object.keys(state.preview.projectInfo).length > 0; + const projectInfoPresent = state.preview.projectInfo && + Object.keys(state.preview.projectInfo).length > 0 && state.preview.projectInfo.id > 0; const userPresent = state.session.session.user !== null && typeof state.session.session.user !== 'undefined' && Object.keys(state.session.session.user).length > 0; @@ -558,15 +559,15 @@ const mapStateToProps = state => { state.session.session.user.id === state.preview.projectInfo.author.id; return { - canAddToStudio: isLoggedIn && userOwnsProject, + canAddToStudio: userOwnsProject, canCreateNew: true, - canRemix: false, + canRemix: isLoggedIn && projectInfoPresent && !userOwnsProject, canReport: isLoggedIn && !userOwnsProject, - canSave: isLoggedIn && (userOwnsProject || !state.preview.projectInfo.id), - canSaveAsCopy: false, + canSave: isLoggedIn && (userOwnsProject || !projectInfoPresent), // can save a new project + canSaveAsCopy: userOwnsProject && projectInfoPresent, canShare: userOwnsProject && state.permissions.social, comments: state.preview.comments, - enableCommunity: state.preview.projectInfo && state.preview.projectInfo.id > 0, + enableCommunity: projectInfoPresent, faved: state.preview.faved, fullScreen: state.scratchGui.mode.isFullScreen, // project is editable iff logged in user is the author of the project, or From e03f83466e92367cb00b2e3b201baa334ecf62fe Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Mon, 22 Oct 2018 23:12:11 -0400 Subject: [PATCH 2/4] better logic around canSave when project is new --- src/views/preview/preview.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/preview/preview.jsx b/src/views/preview/preview.jsx index 985963941..ec63ae6eb 100644 --- a/src/views/preview/preview.jsx +++ b/src/views/preview/preview.jsx @@ -547,6 +547,7 @@ Preview.defaultProps = { const mapStateToProps = state => { const projectInfoPresent = state.preview.projectInfo && Object.keys(state.preview.projectInfo).length > 0 && state.preview.projectInfo.id > 0; + const projectIsDefault = (state.projectId === '0'); const userPresent = state.session.session.user !== null && typeof state.session.session.user !== 'undefined' && Object.keys(state.session.session.user).length > 0; @@ -563,7 +564,7 @@ const mapStateToProps = state => { canCreateNew: true, canRemix: isLoggedIn && projectInfoPresent && !userOwnsProject, canReport: isLoggedIn && !userOwnsProject, - canSave: isLoggedIn && (userOwnsProject || !projectInfoPresent), // can save a new project + canSave: isLoggedIn && (userOwnsProject || projectIsDefault), // can save a new project canSaveAsCopy: userOwnsProject && projectInfoPresent, canShare: userOwnsProject && state.permissions.social, comments: state.preview.comments, From d713249beeb3e92820cd5a26b7acd2d2d67209e2 Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Tue, 23 Oct 2018 00:38:23 -0400 Subject: [PATCH 3/4] changed the meaning of canCreateNew to true creation --- src/views/preview/preview.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/views/preview/preview.jsx b/src/views/preview/preview.jsx index ec63ae6eb..4c5e5734f 100644 --- a/src/views/preview/preview.jsx +++ b/src/views/preview/preview.jsx @@ -547,7 +547,6 @@ Preview.defaultProps = { const mapStateToProps = state => { const projectInfoPresent = state.preview.projectInfo && Object.keys(state.preview.projectInfo).length > 0 && state.preview.projectInfo.id > 0; - const projectIsDefault = (state.projectId === '0'); const userPresent = state.session.session.user !== null && typeof state.session.session.user !== 'undefined' && Object.keys(state.session.session.user).length > 0; @@ -561,10 +560,10 @@ const mapStateToProps = state => { return { canAddToStudio: userOwnsProject, - canCreateNew: true, + canCreateNew: isLoggedIn, canRemix: isLoggedIn && projectInfoPresent && !userOwnsProject, canReport: isLoggedIn && !userOwnsProject, - canSave: isLoggedIn && (userOwnsProject || projectIsDefault), // can save a new project + canSave: isLoggedIn && userOwnsProject, canSaveAsCopy: userOwnsProject && projectInfoPresent, canShare: userOwnsProject && state.permissions.social, comments: state.preview.comments, From 3d964911a1d36dd5201cdbc230acc17fefa0b825 Mon Sep 17 00:00:00 2001 From: Ben Wheeler Date: Tue, 23 Oct 2018 12:30:41 -0400 Subject: [PATCH 4/4] renamed canSaveAsCopy to canCreateCopy --- src/views/preview/preview.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/views/preview/preview.jsx b/src/views/preview/preview.jsx index 4c5e5734f..ec3f1e8dc 100644 --- a/src/views/preview/preview.jsx +++ b/src/views/preview/preview.jsx @@ -435,10 +435,10 @@ class Preview extends React.Component { assetHost={this.props.assetHost} backpackOptions={this.props.backpackOptions} basePath="/" + canCreateCopy={this.props.canCreateCopy} canCreateNew={this.props.canCreateNew} canRemix={this.props.canRemix} canSave={this.props.canSave} - canSaveAsCopy={this.props.canSaveAsCopy} canShare={this.props.canShare} className="gui" enableCommunity={this.props.enableCommunity} @@ -469,11 +469,11 @@ Preview.propTypes = { visible: PropTypes.bool }), canAddToStudio: PropTypes.bool, + canCreateCopy: PropTypes.bool, canCreateNew: PropTypes.bool, canRemix: PropTypes.bool, canReport: PropTypes.bool, canSave: PropTypes.bool, - canSaveAsCopy: PropTypes.bool, canShare: PropTypes.bool, comments: PropTypes.arrayOf(PropTypes.object), enableCommunity: PropTypes.bool, @@ -560,11 +560,11 @@ const mapStateToProps = state => { return { canAddToStudio: userOwnsProject, + canCreateCopy: userOwnsProject && projectInfoPresent, canCreateNew: isLoggedIn, canRemix: isLoggedIn && projectInfoPresent && !userOwnsProject, canReport: isLoggedIn && !userOwnsProject, canSave: isLoggedIn && userOwnsProject, - canSaveAsCopy: userOwnsProject && projectInfoPresent, canShare: userOwnsProject && state.permissions.social, comments: state.preview.comments, enableCommunity: projectInfoPresent,