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