From 1e8f5403ea9466eb403a51009c8eecc1cc9e83d8 Mon Sep 17 00:00:00 2001
From: Alexandru Munteanu <alexandru.munt@gmail.com>
Date: Thu, 5 Apr 2018 16:10:50 +0300
Subject: [PATCH] refactor(user-management): refactor to work with new endpoint

---
 .../src/components/Admin/AddEditUser.js       | 11 +++++++++--
 .../src/components/Admin/utils.js             | 19 ++++++++++++++++---
 packages/xpub-faraday/config/components.json  |  3 ++-
 3 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/packages/components-faraday/src/components/Admin/AddEditUser.js b/packages/components-faraday/src/components/Admin/AddEditUser.js
index 45454fbd8..74e235305 100644
--- a/packages/components-faraday/src/components/Admin/AddEditUser.js
+++ b/packages/components-faraday/src/components/Admin/AddEditUser.js
@@ -18,8 +18,15 @@ import { getRoleOptions, setAdmin, parseUpdateUser } from './utils'
 const onSubmit = (values, dispatch, { isEdit, history }) => {
   if (!isEdit) {
     const newValues = setAdmin(values)
-    return create('/users/invite', newValues)
-      .then(() => history.push('/admin/users'))
+    return create('/users', newValues)
+      .then(r => {
+        history.push('/admin/users')
+        create(`/emails`, {
+          email: r.email,
+          type: 'invite',
+          role: values.role,
+        })
+      })
       .catch(error => {
         const err = get(error, 'response')
         if (err) {
diff --git a/packages/components-faraday/src/components/Admin/utils.js b/packages/components-faraday/src/components/Admin/utils.js
index eb9b5cec9..ee33093e2 100644
--- a/packages/components-faraday/src/components/Admin/utils.js
+++ b/packages/components-faraday/src/components/Admin/utils.js
@@ -1,4 +1,11 @@
-import { pick, map } from 'lodash'
+import { pick, map, omit } from 'lodash'
+
+const generatePasswordHash = () =>
+  Array.from({ length: 4 }, () =>
+    Math.random()
+      .toString(36)
+      .slice(4),
+  ).join('')
 
 export const getRoleOptions = journal =>
   map(journal.roles, (value, key) => ({ label: value, value: key }))
@@ -11,7 +18,14 @@ export const setAdmin = values => {
     newValues.admin = false
   }
 
-  return newValues
+  return {
+    ...omit(newValues, ['role']),
+    isConfirmed: false,
+    passwordResetToken: generatePasswordHash(),
+    password: 'defaultpass',
+    editorInChief: newValues.role === 'editorInChief',
+    handlingEditor: newValues.role === 'handlingEditor',
+  }
 }
 
 export const parseUpdateUser = values => {
@@ -22,7 +36,6 @@ export const parseUpdateUser = values => {
     'affiliation',
     'title',
     'roles',
-    'rev',
     'editorInChief',
     'handlingEditor',
   ]
diff --git a/packages/xpub-faraday/config/components.json b/packages/xpub-faraday/config/components.json
index 6c86d7cf0..7b325481c 100644
--- a/packages/xpub-faraday/config/components.json
+++ b/packages/xpub-faraday/config/components.json
@@ -7,5 +7,6 @@
   "pubsweet-components-faraday",
   "@pubsweet/component-aws-s3",
   "pubsweet-component-invite",
-  "pubsweet-component-user-manager"
+  "pubsweet-component-user-manager",
+  "pubsweet-component-email"
 ]
-- 
GitLab