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