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