From c1dc7d29f186ca7dee6ac1a655c7453089a0da55 Mon Sep 17 00:00:00 2001
From: Bogdan Cochior <bogdan.cochior@thinslices.com>
Date: Tue, 25 Sep 2018 14:11:02 +0300
Subject: [PATCH] fix(assignHE): show specific error and remove double
 invitation

---
 packages/component-faraday-ui/src/helpers/index.js     |  2 ++
 packages/component-faraday-ui/src/helpers/utils.js     |  5 +++++
 .../src/routes/collectionsInvitations/post.js          |  2 +-
 .../src/components/ManuscriptPage.js                   | 10 ++++------
 4 files changed, 12 insertions(+), 7 deletions(-)
 create mode 100644 packages/component-faraday-ui/src/helpers/utils.js

diff --git a/packages/component-faraday-ui/src/helpers/index.js b/packages/component-faraday-ui/src/helpers/index.js
index 8c28ee43e..f43ebc451 100644
--- a/packages/component-faraday-ui/src/helpers/index.js
+++ b/packages/component-faraday-ui/src/helpers/index.js
@@ -1,5 +1,7 @@
 import * as validators from './formValidators'
 
+export * from './utils'
+
 export { default as withFilePreview } from './withFilePreview'
 export * from './withFileDownload'
 export { default as withNativeFileDrop } from './withNativeFileDrop'
diff --git a/packages/component-faraday-ui/src/helpers/utils.js b/packages/component-faraday-ui/src/helpers/utils.js
new file mode 100644
index 000000000..f99bf88b7
--- /dev/null
+++ b/packages/component-faraday-ui/src/helpers/utils.js
@@ -0,0 +1,5 @@
+import { get } from 'lodash'
+
+export const handleError = fn => e => {
+  fn(get(JSON.parse(e.response), 'error', 'Oops! Something went wrong!'))
+}
diff --git a/packages/component-invite/src/routes/collectionsInvitations/post.js b/packages/component-invite/src/routes/collectionsInvitations/post.js
index 620e45bd8..6f28624ea 100644
--- a/packages/component-invite/src/routes/collectionsInvitations/post.js
+++ b/packages/component-invite/src/routes/collectionsInvitations/post.js
@@ -69,7 +69,6 @@ module.exports = models => async (req, res) => {
 
   try {
     const user = await UserModel.findByEmail(email)
-    await teamHelper.setupTeam({ user, role, objectType: 'collection' })
     invitationHelper.userId = user.id
     let invitation = invitationHelper.getInvitation({
       invitations: collection.invitations,
@@ -89,6 +88,7 @@ module.exports = models => async (req, res) => {
     }
 
     invitation.invitedOn = Date.now()
+    await teamHelper.setupTeam({ user, role, objectType: 'collection' })
     await collection.save()
     await collectionHelper.addHandlingEditor({ user, invitation })
 
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index b928e99eb..d75af1720 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -46,7 +46,7 @@ import {
   canOverrideTechnicalChecks,
   getInvitationsWithReviewersForFragment,
 } from 'pubsweet-component-faraday-selectors'
-import { RemoteOpener } from 'pubsweet-component-faraday-ui'
+import { RemoteOpener, handleError } from 'pubsweet-component-faraday-ui'
 
 import ManuscriptLayout from './ManuscriptLayout'
 import { parseEicDecision, parseSearchParams, redirectToError } from './utils'
@@ -188,7 +188,7 @@ export default compose(
           fetchUpdatedCollection()
           modalProps.hideModal()
         })
-        .catch(() => modalProps.setModalError('Oops! Something went wrong.')),
+        .catch(handleError(modalProps.setModalError)),
     revokeHE: ({
       getCollection,
       revokeHandlingEditor,
@@ -202,7 +202,7 @@ export default compose(
           getCollection({ id: collectionId })
           modalProps.hideModal()
         })
-        .catch(() => modalProps.setModalError('Oops! Something went wrong.')),
+        .catch(handleError(modalProps.setModalError)),
     createRecommendation: ({
       fragment,
       collection,
@@ -219,9 +219,7 @@ export default compose(
           fetchUpdatedCollection()
           modalProps.hideModal()
         })
-        .catch(() => {
-          modalProps.setModalError('Oops! Something went wrong.')
-        })
+        .catch(handleError(modalProps.setModalError))
     },
     onHEResponse: ({
       history,
-- 
GitLab