From 678816e326410dad1fa219cca9a7e6998ed61bff Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munt@gmail.com> Date: Wed, 30 May 2018 16:35:48 +0300 Subject: [PATCH] feat(eic-decision): show make decision only to admin and eic --- .../component-faraday-selectors/src/index.js | 16 +++++++++++++ .../src/components/Dashboard/DashboardCard.js | 24 ++++++++++++------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 52c72aad6..58c0ed57c 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -16,3 +16,19 @@ export const canMakeRecommendation = (state, project) => { const isHE = isHEToManuscript(state, project.id) return isHE && get(project, 'status') === 'reviewCompleted' } + +export const currentUserIs = ({ currentUser }, role) => { + const isAdmin = get(currentUser, 'admin') + const isEic = get(currentUser, 'editorInChief') + const isHe = get(currentUser, 'handlingEditor') + switch (role) { + case 'isHE': + return isHe + case 'staff': + return isAdmin || isEic || isHe + case 'adminEiC': + return isAdmin || isEic + default: + return false + } +} diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index efaf65a36..ca291175b 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -14,11 +14,13 @@ import { AuthorsWithTooltip } from 'pubsweet-component-manuscript/src/molecules' 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' -import { canMakeRecommendation } from '../../../../component-faraday-selectors/src' +import { + currentUserIs, + canMakeRecommendation, +} from '../../../../component-faraday-selectors/src' import { Decision } from '../MakeDecision' import { ReviewerBreakdown } from '../Invitations' @@ -26,6 +28,7 @@ import { Recommendation } from '../MakeRecommendation' const DashboardCard = ({ isHE, + isEIC, theme, journal, history, @@ -63,12 +66,14 @@ const DashboardCard = ({ /> </LeftDetails> <RightDetails flex={2}> - <Decision - collectionId={project.id} - fragmentId={version.id} - heRecommendation={heRecommendation} - modalKey={`decide-${version.id}`} - /> + {isEIC && ( + <Decision + collectionId={project.id} + fragmentId={version.id} + heRecommendation={heRecommendation} + modalKey={`decide-${version.id}`} + /> + )} {canMakeRecommendation && ( <Recommendation collectionId={project.id} @@ -125,7 +130,7 @@ const DashboardCard = ({ } > Details - <Icon color={theme.colorPrimary}>chevron-right</Icon> + <Icon primary>chevron-right</Icon> </Details> ) : ( <Details @@ -189,6 +194,7 @@ export default compose( modalComponent: ConfirmationModal, }), connect((state, { project }) => ({ + isEIC: currentUserIs(state, 'adminEiC'), isHE: currentUserIs(state, 'handlingEditor'), invitation: selectInvitation(state, project.id), canMakeRecommendation: canMakeRecommendation(state, project), -- GitLab