From 14532740839e317f83cc31a65e47354d1ec32fe8 Mon Sep 17 00:00:00 2001
From: Anca Ursachi <anca.ursachi@thinslices.com>
Date: Wed, 21 Nov 2018 15:25:17 +0200
Subject: [PATCH] feat(delete(collectionsInvitations)): Now the revision files
 from author are deleted from s3.

---
 .../component-faraday-selectors/src/index.js  | 23 ++++++++-----------
 .../src/PersonInvitation.js                   |  4 ++--
 .../routes/collectionsInvitations/delete.js   | 20 ++++++++++------
 3 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js
index 049383e6b..71d31a003 100644
--- a/packages/component-faraday-selectors/src/index.js
+++ b/packages/component-faraday-selectors/src/index.js
@@ -1,16 +1,5 @@
 import { selectCurrentUser } from 'xpub-selectors'
-import {
-  get,
-  has,
-  last,
-  chain,
-  some,
-  isEmpty,
-  // eslint-disable-next-line no-unused-vars
-  flatten,
-  slice,
-  find,
-} from 'lodash'
+import { get, has, last, chain, some, isEmpty, slice, find } from 'lodash'
 
 export const isHEToManuscript = (state, collectionId = '') => {
   const { id = '', isAccepted = false } = chain(state)
@@ -59,7 +48,11 @@ export const canInviteReviewers = (state, collection = {}) => {
   return isAccepted && (userId === heId || isAdminEiC)
 }
 
-const canViewContextualBoxOnOldVersionStatuses = ['submitted', 'heAssigned']
+const canViewContextualBoxOnOldVersionStatuses = [
+  'submitted',
+  'heInvited',
+  'heAssigned',
+]
 const canViewContextualBoxOnOldVersion = (collection, fragmentId) => {
   const fragments = get(collection, 'fragments', [])
   const oldVersions = slice(fragments, 0, fragments.length - 1)
@@ -216,8 +209,12 @@ export const canViewResponseFromAuthor = (state, collection, fragmentId) => {
     state,
     fragmentId,
   )
+  const canHEViewResponseFromAuthor =
+    currentUserIs(state, 'isHE') &&
+    get(collection, 'status', 'draft') === 'heInvited'
   return (
     !isEmpty(authorResponseToRevisonRequest) &&
+    !canHEViewResponseFromAuthor &&
     !cannotViewResponseFromAuthorStatuses.includes(
       get(collection, 'status', 'draft'),
     )
diff --git a/packages/component-faraday-ui/src/PersonInvitation.js b/packages/component-faraday-ui/src/PersonInvitation.js
index 8c5e7526d..36bc6a16b 100644
--- a/packages/component-faraday-ui/src/PersonInvitation.js
+++ b/packages/component-faraday-ui/src/PersonInvitation.js
@@ -59,7 +59,7 @@ const PersonInvitation = ({
         </Fragment>
       )}
     {hasAnswer &&
-      isLatestVersion(
+      isLatestVersion && (
         <Fragment>
           <OpenModal
             confirmText="Revoke"
@@ -79,7 +79,7 @@ const PersonInvitation = ({
               />
             )}
           </OpenModal>
-        </Fragment>,
+        </Fragment>
       )}
   </Root>
 )
diff --git a/packages/component-invite/src/routes/collectionsInvitations/delete.js b/packages/component-invite/src/routes/collectionsInvitations/delete.js
index da307e518..4f50a44d4 100644
--- a/packages/component-invite/src/routes/collectionsInvitations/delete.js
+++ b/packages/component-invite/src/routes/collectionsInvitations/delete.js
@@ -8,7 +8,7 @@ const {
   deleteFilesS3,
 } = require('pubsweet-component-mts-package/src/PackageManager')
 
-const { last, get } = require('lodash')
+const { last, get, chain, difference } = require('lodash')
 
 const s3Config = get(config, 'pubsweet-component-aws-s3', {})
 
@@ -83,18 +83,24 @@ module.exports = models => async (req, res) => {
             })
         })
       })
-    const responseToReviewersFileId = get(
-      fragment,
-      'responseToReviewers.file.id',
-    )
-    if (responseToReviewersFileId) fileKeys.push(responseToReviewersFileId)
+
+    const fragmentFilesIds = chain(get(fragment, 'files', []))
+      .flatMap(item => item)
+      .map(item => item.id)
+      .value()
+    const revisionFilesIds = chain(get(fragment, 'revision.files', []))
+      .flatMap(item => item)
+      .map(item => item.id)
+      .value()
+    const revisionFileIds = difference(revisionFilesIds, fragmentFilesIds)
+    fileKeys.concat(revisionFileIds)
+
     if (fileKeys.length > 1) {
       await deleteFilesS3({ fileKeys, s3Config })
     }
 
     fragment.invitations = []
     fragment.recommendations = []
-    fragment.responseToReviewers && delete fragment.responseToReviewers
     fragment.revision && delete fragment.revision
     fragment.save()
 
-- 
GitLab