From 299bbec0f220a4e3dc7faefd277d012a96e6da51 Mon Sep 17 00:00:00 2001
From: Iosif Boanca <iosif.boanca@thinslices.com>
Date: Wed, 17 Oct 2018 13:38:44 +0300
Subject: [PATCH] HIN-1006 conextual box added

---
 .../component-faraday-selectors/src/index.js  |  18 +-
 .../src/contextualBoxes/ReviewerDetails.js    | 168 +++++++++---------
 .../src/components/ManuscriptLayout.js        |   9 +
 .../src/components/ManuscriptPage.js          |   5 +
 4 files changed, 113 insertions(+), 87 deletions(-)

diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js
index 80fb4af49..36eca8431 100644
--- a/packages/component-faraday-selectors/src/index.js
+++ b/packages/component-faraday-selectors/src/index.js
@@ -61,6 +61,22 @@ export const canViewReviewersDetails = (state, collection = {}) => {
   return canViewReports(state, collection.id)
 }
 
+const authorCannotViewReportsDetails = ['submitted', 'rejected']
+
+export const authorCanViewReportsDetails = (state, collection = {}) => {
+  if (
+    authorCannotViewReportsDetails.includes(get(collection, 'status', 'draft'))
+  ) {
+    return false
+  }
+  return authorCanViewReports(state, collection.id)
+}
+
+export const authorCanViewReports = (state, collectionId) => {
+  const isAuthor = currentUserIs(state, 'author')
+  return isAuthor
+}
+
 const canHeViewEditorialCommentsStatuses = [
   'revisionRequested',
   'rejected',
@@ -73,8 +89,6 @@ export const canHeViewEditorialComments = (state, collection = {}) => {
   return isHE && canHeViewEditorialCommentsStatuses.includes(status)
 }
 
-//authorcanviewreviewerreports(state,fragmentid)
-
 const canEICViewEditorialCommentsStatuses = ['rejected', 'accepted', 'inQA']
 export const canEICViewEditorialComments = (state, collection = {}) => {
   const isEIC = currentUserIs(state, 'adminEiC')
diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
index 8e242820b..2f3cd527d 100644
--- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
+++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
@@ -39,99 +39,97 @@ const ReviewerDetails = ({
   expanded,
   highlight,
   canViewReviewersDetails,
+  authorCanViewReportsDetails,
   ...rest
-}) =>
-  canViewReviewersDetails ? (
-    <ContextualBox
-      expanded={expanded}
-      highlight={highlight}
-      label="Reviewer Details & Reports"
-      rightChildren={
-        <ReviewerBreakdown fitContent fragment={fragment} mr={1} />
-      }
-      toggle={toggle}
-      {...rest}
-    >
-      <Tabs selectedTab={reports.length ? 1 : 0}>
-        {({ selectedTab, changeTab }) => (
-          <Fragment>
-            <TabsHeader>
+}) => (
+  <ContextualBox
+    expanded={expanded}
+    highlight={highlight}
+    label="Reviewer Details & Reports"
+    rightChildren={<ReviewerBreakdown fitContent fragment={fragment} mr={1} />}
+    toggle={toggle}
+    {...rest}
+  >
+    <Tabs selectedTab={reports.length ? 1 : 0}>
+      {({ selectedTab, changeTab }) => (
+        <Fragment>
+          <TabsHeader>
+            <TabButton
+              ml={1}
+              mr={1}
+              onClick={() => changeTab(0)}
+              selected={selectedTab === 0}
+            >
+              <H4>Reviewer Details</H4>
+            </TabButton>
+            {canInviteReviewers && (
               <TabButton
                 ml={1}
                 mr={1}
-                onClick={() => changeTab(0)}
-                selected={selectedTab === 0}
+                onClick={() => changeTab(2)}
+                selected={selectedTab === 2}
               >
-                <H4>Reviewer Details</H4>
+                <H4>Reviewer Suggestions</H4>
               </TabButton>
-              {canInviteReviewers && (
-                <TabButton
-                  ml={1}
-                  mr={1}
-                  onClick={() => changeTab(2)}
-                  selected={selectedTab === 2}
-                >
-                  <H4>Reviewer Suggestions</H4>
-                </TabButton>
-              )}
-              <TabButton
-                ml={1}
-                mr={1}
-                onClick={() => changeTab(1)}
-                selected={selectedTab === 1}
-              >
-                <H4>Reviewer Reports</H4>
-                <Tag mr={1}>{reports.length}</Tag>
-              </TabButton>
-            </TabsHeader>
-            <TabContent>
-              {selectedTab === 0 && (
-                <Fragment>
-                  {canInviteReviewers && (
-                    <InviteReviewers
-                      modalKey="invite-reviewers"
-                      onInvite={onInviteReviewer}
-                    />
-                  )}
-                  <ReviewersTable
-                    invitations={invitations}
-                    onResendReviewerInvite={onResendReviewerInvite}
-                    onRevokeReviewerInvite={onRevokeReviewerInvite}
+            )}
+            <TabButton
+              ml={1}
+              mr={1}
+              onClick={() => changeTab(1)}
+              selected={selectedTab === 1}
+            >
+              <H4>Reviewer Reports</H4>
+              <Tag mr={1}>{reports.length}</Tag>
+            </TabButton>
+          </TabsHeader>
+          <TabContent>
+            {selectedTab === 0 && (
+              <Fragment>
+                {canInviteReviewers && (
+                  <InviteReviewers
+                    modalKey="invite-reviewers"
+                    onInvite={onInviteReviewer}
                   />
-                </Fragment>
-              )}
-              {selectedTab === 2 && (
-                <PublonsTable
-                  onInvite={onInvitePublonReviewer}
-                  publonsError={fetchingError}
-                  publonsFetching={isFetching}
-                  reviewers={publonReviewers}
+                )}
+                <ReviewersTable
+                  invitations={invitations}
+                  onResendReviewerInvite={onResendReviewerInvite}
+                  onRevokeReviewerInvite={onRevokeReviewerInvite}
                 />
-              )}
-              {selectedTab === 1 && (
-                <Fragment>
-                  {reports.length === 0 && (
-                    <Text align="center">No reports submitted yet.</Text>
-                  )}
-                  {reports.map((report, index) => (
-                    <ReviewerReport
-                      journal={journal}
-                      key={report.id}
-                      onDownload={downloadFile}
-                      onPreview={previewFile}
-                      report={report}
-                      reviewerIndex={index + 1}
-                      showOwner
-                    />
-                  ))}
-                </Fragment>
-              )}
-            </TabContent>
-          </Fragment>
-        )}
-      </Tabs>
-    </ContextualBox>
-  ) : null
+              </Fragment>
+            )}
+            {selectedTab === 2 && (
+              <PublonsTable
+                onInvite={onInvitePublonReviewer}
+                publonsError={fetchingError}
+                publonsFetching={isFetching}
+                reviewers={publonReviewers}
+              />
+            )}
+            {selectedTab === 1 && (
+              <Fragment>
+                {reports.length === 0 && (
+                  <Text align="center">No reports submitted yet.</Text>
+                )}
+                {reports.map((report, index) => (
+                  <ReviewerReport
+                    journal={journal}
+                    key={report.id}
+                    onDownload={downloadFile}
+                    onPreview={previewFile}
+                    report={report}
+                    reviewerIndex={index + 1}
+                    showOwner
+                  />
+                ))}
+              </Fragment>
+            )}
+          </TabContent>
+        </Fragment>
+      )}
+    </Tabs>
+  </ContextualBox>
+)
 
 export default compose(
   withFilePreview,
diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js
index b054b71e4..fd2ec4983 100644
--- a/packages/component-manuscript/src/components/ManuscriptLayout.js
+++ b/packages/component-manuscript/src/components/ManuscriptLayout.js
@@ -5,6 +5,7 @@ import {
   Text,
   paddingHelper,
   ReviewerDetails,
+  AuthorReviews,
   HERecommendation,
   ManuscriptHeader,
   ManuscriptAssignHE,
@@ -186,6 +187,14 @@ const ManuscriptLayout = ({
           />
         )}
 
+        {get(currentUser, 'permissions.authorCanViewReportsDetails', false) && (
+          <AuthorReviews
+            currentUser={currentUser}
+            journal={journal}
+            reports={reviewerReports}
+          />
+        )}
+
         {get(currentUser, 'permissions.canMakeHERecommendation', false) &&
           (!invitationsWithReviewers.length ||
             reviewerRecommendations.length > 0) && (
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index bada3abde..6889be601 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -52,6 +52,7 @@ import {
   canViewEditorialComments,
   pendingReviewerInvitation,
   canOverrideTechnicalChecks,
+  authorCanViewReportsDetails,
   getOwnPendingRecommendation,
   getOwnSubmittedRecommendation,
   getFragmentReviewerRecommendations,
@@ -178,6 +179,10 @@ export default compose(
           canMakeDecision: canMakeDecision(state, collection, fragment),
           canEditManuscript: canEditManuscript(state, collection, fragment),
           canViewReviewersDetails: canViewReviewersDetails(state, collection),
+          authorCanViewReportsDetails: authorCanViewReportsDetails(
+            state,
+            collection,
+          ),
           canOverrideTechChecks: canOverrideTechnicalChecks(state, collection),
         },
       },
-- 
GitLab