From 552b08c11cc6797614a5f15512d86330216c93e0 Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Tue, 15 May 2018 17:22:14 +0300 Subject: [PATCH] feat(make-recommendation): show on dashboard and sidebar --- .../src/components/ManuscriptPage.js | 4 ++- .../src/components/SideBarActions.js | 12 +++++++-- .../src/components/Dashboard/DashboardCard.js | 27 +++++++++++-------- .../MakeRecommendation/Recommendation.js | 3 ++- .../components-faraday/src/redux/users.js | 4 +++ 5 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 packages/components-faraday/src/redux/users.js diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index 3e6aff553..423059a5c 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -12,8 +12,8 @@ import { } from 'xpub-selectors' import { get as apiGet } from 'pubsweet-client/src/helpers/api' import { compose, lifecycle, withHandlers, withState } from 'recompose' -import { reviewerDecision } from 'pubsweet-components-faraday/src/redux/reviewers' import { getSignedUrl } from 'pubsweet-components-faraday/src/redux/files' +import { reviewerDecision } from 'pubsweet-components-faraday/src/redux/reviewers' import { getHandlingEditors, selectHandlingEditors, @@ -76,6 +76,8 @@ export default compose( const isEic = get(currentUser, 'editorInChief') const isHe = get(currentUser, 'handlingEditor') switch (type) { + case 'isHE': + return isHe case 'staff': return isAdmin || isEic || isHe case 'adminEiC': diff --git a/packages/component-manuscript/src/components/SideBarActions.js b/packages/component-manuscript/src/components/SideBarActions.js index e31d92a43..ba0da4b51 100644 --- a/packages/component-manuscript/src/components/SideBarActions.js +++ b/packages/component-manuscript/src/components/SideBarActions.js @@ -1,13 +1,21 @@ import React from 'react' import { th, Icon } from '@pubsweet/ui' import styled from 'styled-components' - import ZipFiles from 'pubsweet-components-faraday/src/components/Files/ZipFiles' +import { Recommendation } from 'pubsweet-components-faraday/src/components/MakeRecommendation' + import { MakeDecision } from './' const SideBarActions = ({ project, version, currentUserIs }) => ( <Root> - {currentUserIs('adminEiC') ? <MakeDecision /> : <div />} + {currentUserIs('adminEiC') && <MakeDecision />} + {currentUserIs('isHE') && ( + <Recommendation + collectionId={project.id} + fragmentId={version.id} + modalKey={`recommend-${version.id}`} + /> + )} <ZipFiles archiveName={`ID-${project.customId}`} collectionId={project.id} diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index 171a02706..200ce0f6c 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -14,6 +14,7 @@ import AuthorsWithTooltip from 'pubsweet-component-manuscript/src/molecules/Auth import ZipFiles from '../Files/ZipFiles' import { InviteReviewers } from '../Reviewers/' +import { currentUserIs } from '../../redux/users' import { selectInvitation } from '../../redux/reviewers' import { ReviewerDecision, HandlingEditorSection } from './' import { parseVersion, parseJournalIssue, mapStatusToLabel } from './../utils' @@ -22,17 +23,18 @@ import { ReviewerBreakdown } from '../Invitations' import { Recommendation } from '../MakeRecommendation' const DashboardCard = ({ - deleteProject, + isHE, + theme, + journal, history, project, version, - showAbstractModal, - journal, - showConfirmationModal, - theme, + invitation, currentUser, + deleteProject, + showAbstractModal, canInviteReviewers, - invitation, + showConfirmationModal, ...rest }) => { const { submitted, title, type } = parseVersion(version) @@ -58,11 +60,13 @@ const DashboardCard = ({ /> </LeftDetails> <RightDetails flex={2}> - <Recommendation - collectionId={project.id} - fragmentId={version.id} - modalKey={`recommend-${version.id}`} - /> + {isHE && ( + <Recommendation + collectionId={project.id} + fragmentId={version.id} + modalKey={`recommend-${version.id}`} + /> + )} <ZipFiles archiveName={`ID-${project.customId}`} collectionId={project.id} @@ -165,6 +169,7 @@ export default compose( modalComponent: ConfirmationModal, }), connect((state, { project }) => ({ + isHE: currentUserIs(state, 'handlingEditor'), invitation: selectInvitation(state, project.id), })), withHandlers({ diff --git a/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js b/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js index 442d7fd8e..004eb9ebe 100644 --- a/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js +++ b/packages/components-faraday/src/components/MakeRecommendation/Recommendation.js @@ -10,7 +10,7 @@ import { import { RecommendWizard } from './' const Recommendation = ({ showFirstStep }) => ( - <Root onClick={showFirstStep}>Recommend</Root> + <Root onClick={showFirstStep}>Make recommendation</Root> ) const SHOW_WIZARD = 'SHOW_WIZARD' @@ -50,6 +50,7 @@ const Root = styled.div` font-size: ${th('fontSizeBaseSmall')}; height: calc(${th('subGridUnit')} * 5); justify-content: center; + min-width: 200px; padding: 0 calc(${th('subGridUnit')} * 2); text-transform: uppercase; ` diff --git a/packages/components-faraday/src/redux/users.js b/packages/components-faraday/src/redux/users.js new file mode 100644 index 000000000..dd9cd57ab --- /dev/null +++ b/packages/components-faraday/src/redux/users.js @@ -0,0 +1,4 @@ +import { get } from 'lodash' + +export const currentUserIs = (state, role) => + get(state, `currentUser.user.${role}`) -- GitLab