From 20530de77799a6024a824afbcd85b2bab5a505fa Mon Sep 17 00:00:00 2001
From: Alexandru Munteanu <alexandru.munteanu@thinslices.com>
Date: Thu, 15 Feb 2018 14:33:40 +0200
Subject: [PATCH] refactor(admin): refactor admin components

---
 .../src/components/Admin/AdminDashboard.js    |  7 ++--
 .../src/components/Admin/AdminPage.js         | 35 -----------------
 .../Admin/{Admin.js => AdminUsers.js}         | 39 +++++++++++++++++--
 .../src/components/Admin/index.js             |  2 +-
 .../src/components/Dashboard/Dashboard.js     |  8 ----
 5 files changed, 41 insertions(+), 50 deletions(-)
 delete mode 100644 packages/components-faraday/src/components/Admin/AdminPage.js
 rename packages/components-faraday/src/components/Admin/{Admin.js => AdminUsers.js} (76%)

diff --git a/packages/components-faraday/src/components/Admin/AdminDashboard.js b/packages/components-faraday/src/components/Admin/AdminDashboard.js
index c158ada27..bac4c83fc 100644
--- a/packages/components-faraday/src/components/Admin/AdminDashboard.js
+++ b/packages/components-faraday/src/components/Admin/AdminDashboard.js
@@ -1,7 +1,6 @@
 import React from 'react'
 import { Icon } from '@pubsweet/ui'
 import styled from 'styled-components'
-import { withRouter } from 'react-router-dom'
 
 const AdminDashboard = ({ history }) => (
   <Root>
@@ -29,6 +28,9 @@ const AdminDashboard = ({ history }) => (
   </Root>
 )
 
+export default AdminDashboard
+
+// #region Styled components
 const Root = styled.div`
   display: flex;
   flex-direction: column;
@@ -72,5 +74,4 @@ const Card = styled.div`
     text-align: center;
   }
 `
-
-export default withRouter(AdminDashboard)
+// #endregion
diff --git a/packages/components-faraday/src/components/Admin/AdminPage.js b/packages/components-faraday/src/components/Admin/AdminPage.js
deleted file mode 100644
index cfc2d61e7..000000000
--- a/packages/components-faraday/src/components/Admin/AdminPage.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import { get } from 'lodash'
-import { connect } from 'react-redux'
-import { actions } from 'pubsweet-client'
-import { ConnectPage } from 'xpub-connect'
-import { withRouter } from 'react-router-dom'
-import { compose, withState, withHandlers } from 'recompose'
-
-import Admin from './Admin'
-
-export default compose(
-  ConnectPage(() => [actions.getUsers()]),
-  withRouter,
-  connect(state => ({ currentUsers: get(state, 'users.users') })),
-  withState('users', 'setUsers', props =>
-    props.currentUsers.map(u => ({ ...u, selected: false })),
-  ),
-  withState('itemsPerPage', 'setItemsPerPage', 50),
-  withState('page', 'setPage', 0),
-  withHandlers({
-    incrementPage: ({ setPage }) => () => {
-      setPage(p => p + 1)
-    },
-    decrementPage: ({ setPage }) => () => {
-      setPage(p => (p > 0 ? p - 1 : p))
-    },
-    toggleUser: ({ setUsers }) => user => () => {
-      setUsers(prev =>
-        prev.map(u => (u.id === user.id ? { ...u, selected: !u.selected } : u)),
-      )
-    },
-    toggleAllUsers: ({ setUsers }) => () => {
-      setUsers(users => users.map(u => ({ ...u, selected: !u.selected })))
-    },
-  }),
-)(Admin)
diff --git a/packages/components-faraday/src/components/Admin/Admin.js b/packages/components-faraday/src/components/Admin/AdminUsers.js
similarity index 76%
rename from packages/components-faraday/src/components/Admin/Admin.js
rename to packages/components-faraday/src/components/Admin/AdminUsers.js
index 544f5e7df..889a82f50 100644
--- a/packages/components-faraday/src/components/Admin/Admin.js
+++ b/packages/components-faraday/src/components/Admin/AdminUsers.js
@@ -1,6 +1,12 @@
 import React from 'react'
+import { get } from 'lodash'
+import { connect } from 'react-redux'
 import styled from 'styled-components'
 import { Icon, Menu } from '@pubsweet/ui'
+import { actions } from 'pubsweet-client'
+import { ConnectPage } from 'xpub-connect'
+import { withRouter } from 'react-router-dom'
+import { compose, withState, withHandlers } from 'recompose'
 
 import { Pagination } from './'
 
@@ -20,7 +26,7 @@ const TableRow = ({ toggleUser, selected, email, username, type }) => (
   </Row>
 )
 
-const Admin = ({
+const Users = ({
   users,
   toggleUser,
   toggleAllUsers,
@@ -98,8 +104,34 @@ const Admin = ({
   </div>
 )
 
-export default Admin
-
+export default compose(
+  ConnectPage(() => [actions.getUsers()]),
+  withRouter,
+  connect(state => ({ currentUsers: get(state, 'users.users') })),
+  withState('users', 'setUsers', props =>
+    props.currentUsers.map(u => ({ ...u, selected: false })),
+  ),
+  withState('itemsPerPage', 'setItemsPerPage', 50),
+  withState('page', 'setPage', 0),
+  withHandlers({
+    incrementPage: ({ setPage }) => () => {
+      setPage(p => p + 1)
+    },
+    decrementPage: ({ setPage }) => () => {
+      setPage(p => (p > 0 ? p - 1 : p))
+    },
+    toggleUser: ({ setUsers }) => user => () => {
+      setUsers(prev =>
+        prev.map(u => (u.id === user.id ? { ...u, selected: !u.selected } : u)),
+      )
+    },
+    toggleAllUsers: ({ setUsers }) => () => {
+      setUsers(users => users.map(u => ({ ...u, selected: !u.selected })))
+    },
+  }),
+)(Users)
+
+// #region styled-components
 const AddButton = styled.button`
   align-items: center;
   border: none;
@@ -195,3 +227,4 @@ const Input = styled.input`
   height: 20px;
   width: 20px;
 `
+// #endregion
diff --git a/packages/components-faraday/src/components/Admin/index.js b/packages/components-faraday/src/components/Admin/index.js
index d57c7f72d..bdffbea23 100644
--- a/packages/components-faraday/src/components/Admin/index.js
+++ b/packages/components-faraday/src/components/Admin/index.js
@@ -1,3 +1,3 @@
-export { default as AdminUsers } from './AdminPage'
+export { default as AdminUsers } from './AdminUsers'
 export { default as Pagination } from './Pagination'
 export { default as AdminDashboard } from './AdminDashboard'
diff --git a/packages/components-faraday/src/components/Dashboard/Dashboard.js b/packages/components-faraday/src/components/Dashboard/Dashboard.js
index 110f39981..653c50351 100644
--- a/packages/components-faraday/src/components/Dashboard/Dashboard.js
+++ b/packages/components-faraday/src/components/Dashboard/Dashboard.js
@@ -23,20 +23,12 @@ const Dashboard = ({
   filterItems,
   abstractModal,
   setModal,
-  history,
   ...rest
 }) => (
   <div className={classes.root}>
     <div className={classes.header}>
       <div className={classes.heading}>Manuscripts</div>
       <div className={classes.headerButtons}>
-        <Button
-          className={classes['admin-button']}
-          onClick={() => history.push('admin')}
-          primary
-        >
-          Admin dashboard
-        </Button>
         <Button onClick={createDraftSubmission} primary>
           New
         </Button>
-- 
GitLab