From a851c33af37bd9935ab5873332c1586f568b2e3b Mon Sep 17 00:00:00 2001
From: Jure Triglav <juretriglav@gmail.com>
Date: Tue, 28 Jul 2020 01:10:33 +0200
Subject: [PATCH] feat: use Heading consistently

---
 app/components/AdminPage.js                   |  4 +-
 .../src/components/sections/OwnerItem.js      |  1 -
 .../component-manuscripts/src/Manuscripts.jsx |  4 +-
 .../component-manuscripts/src/style.js        |  2 +-
 .../src/components/ReviewersPage.js           | 45 ++++++++++++++-----
 .../src/components/reviewers/ReviewerForm.js  |  1 +
 .../src/components/reviewers/Reviewers.js     |  4 +-
 .../src/components/NewSubmissionPage.jsx      |  4 +-
 app/components/component-submit/src/style.js  |  3 +-
 .../src/UsersManager.jsx                      |  4 +-
 .../component-users-manager/src/style.js      |  2 +-
 app/components/shared/General.js              |  2 +-
 app/components/shared/Table.jsx               |  7 +--
 app/theme/elements/TextField.js               |  7 ++-
 14 files changed, 56 insertions(+), 34 deletions(-)

diff --git a/app/components/AdminPage.js b/app/components/AdminPage.js
index 870c4be6d8..c295c2a857 100644
--- a/app/components/AdminPage.js
+++ b/app/components/AdminPage.js
@@ -81,7 +81,7 @@ const AdminPage = ({ children, history, match }) => {
 
   // Get the current user every 5 seconds (this includes authorization info)
   const { loading, error, data } = useQuery(GET_CURRENT_USER, {
-    pollInterval: 5000,
+    pollInterval: 30000,
     notifyOnNetworkStatusChange: true,
     fetchPolicy: 'network-only',
     // TODO: useCallback used because of bug: https://github.com/apollographql/apollo-client/issues/6301
@@ -133,7 +133,7 @@ const AdminPage = ({ children, history, match }) => {
   }
 
   if (currentUser && currentUser.admin) {
-    links.push({ link: '/journal/admin/teams', name: 'Teams', icon: 'grid' })
+    // links.push({ link: '/journal/admin/teams', name: 'Teams', icon: 'grid' })
     links.push({ link: formBuilderLink, name: 'Forms', icon: 'check-square' })
     links.push({ link: '/journal/admin/users', name: 'Users', icon: 'users' })
     links.push({
diff --git a/app/components/component-dashboard/src/components/sections/OwnerItem.js b/app/components/component-dashboard/src/components/sections/OwnerItem.js
index 9fb9fb2c4b..7540f7d57b 100644
--- a/app/components/component-dashboard/src/components/sections/OwnerItem.js
+++ b/app/components/component-dashboard/src/components/sections/OwnerItem.js
@@ -33,7 +33,6 @@ const OwnerItem = ({ version, journals, deleteManuscript }) => {
       <div>
         {' '}
         <StatusBadge minimal status={version.status} />
-        {JSON.stringify(version._currentRoles)}
         <VersionTitle version={version} />
       </div>
       {actions}
diff --git a/app/components/component-manuscripts/src/Manuscripts.jsx b/app/components/component-manuscripts/src/Manuscripts.jsx
index 574397c14f..5d62f1d99c 100644
--- a/app/components/component-manuscripts/src/Manuscripts.jsx
+++ b/app/components/component-manuscripts/src/Manuscripts.jsx
@@ -8,7 +8,7 @@ import {
   Table,
   Header,
   Content,
-  PageHeading,
+  Heading,
   Carets,
   CaretUp,
   CaretDown,
@@ -106,7 +106,7 @@ const Manuscripts = () => {
 
   return (
     <Container>
-      <PageHeading level={1}>Manuscripts</PageHeading>
+      <Heading>Manuscripts</Heading>
       <Content>
         <Table>
           <Header>
diff --git a/app/components/component-manuscripts/src/style.js b/app/components/component-manuscripts/src/style.js
index 6b13229768..14e794f51b 100644
--- a/app/components/component-manuscripts/src/style.js
+++ b/app/components/component-manuscripts/src/style.js
@@ -13,7 +13,7 @@ export {
   Table,
   Header,
   Content,
-  PageHeading,
+  Heading,
   Carets,
   CaretUp,
   CaretDown,
diff --git a/app/components/component-review/src/components/ReviewersPage.js b/app/components/component-review/src/components/ReviewersPage.js
index 266792ad75..33ae162f81 100644
--- a/app/components/component-review/src/components/ReviewersPage.js
+++ b/app/components/component-review/src/components/ReviewersPage.js
@@ -99,10 +99,6 @@ const query = gql`
       }
     }
 
-    teams {
-      ${teamFields}
-    }
-
     manuscript(id: $id) {
       ${fragmentFields}
     }
@@ -114,7 +110,37 @@ const ReviewersPage = ({ match, history }) => {
     variables: { id: match.params.version },
   })
 
-  const [addReviewer] = useMutation(addReviewerMutation)
+  const [addReviewer] = useMutation(addReviewerMutation, {
+    update: (cache, { data: { addReviewer } }) => {
+      cache.modify({
+        id: cache.identify({
+          __typename: addReviewer.object.objectType,
+          id: addReviewer.object.objectId,
+        }),
+        fields: {
+          teams(existingTeamRefs = []) {
+            const newTeamRef = cache.writeFragment({
+              data: addReviewer,
+              fragment: gql`
+                fragment NewTeam on Team {
+                  id
+                  role
+                  members {
+                    id
+                    user {
+                      id
+                    }
+                  }
+                }
+              `,
+            })
+
+            return [...existingTeamRefs, newTeamRef]
+          },
+        },
+      })
+    },
+  })
   const [removeReviewer] = useMutation(removeReviewerMutation)
 
   if (loading) {
@@ -122,14 +148,9 @@ const ReviewersPage = ({ match, history }) => {
   }
   if (error) return error
 
-  const { manuscript, teams, users } = data
+  const { manuscript, users } = data
   const reviewersTeam =
-    teams.find(
-      team =>
-        team.role === 'reviewer' &&
-        team.object.objectId === manuscript.id &&
-        team.object.objectType === 'Manuscript',
-    ) || {}
+    manuscript.teams.find(team => team.role === 'reviewer') || {}
 
   const reviewers = reviewersTeam.members || []
   return (
diff --git a/app/components/component-review/src/components/reviewers/ReviewerForm.js b/app/components/component-review/src/components/reviewers/ReviewerForm.js
index 595a27a257..82ab824a5e 100644
--- a/app/components/component-review/src/components/reviewers/ReviewerForm.js
+++ b/app/components/component-review/src/components/reviewers/ReviewerForm.js
@@ -28,6 +28,7 @@ const ReviewerInput = ({
 }) => (
   <Select
     {...field}
+    aria-label="Invite reviewers"
     getOptionLabel={option => option.defaultIdentity?.name}
     getOptionValue={option => option.id}
     onChange={user => {
diff --git a/app/components/component-review/src/components/reviewers/Reviewers.js b/app/components/component-review/src/components/reviewers/Reviewers.js
index b084c6110b..7935205aaf 100644
--- a/app/components/component-review/src/components/reviewers/Reviewers.js
+++ b/app/components/component-review/src/components/reviewers/Reviewers.js
@@ -72,7 +72,7 @@ const Reviewers = ({
         <Title>Reviewer status</Title>
       </SectionHeader>
       <SectionRow>
-        {reviewers && (
+        {reviewers && reviewers.length ? (
           <ReviewersList>
             {reviewers.map(reviewer => (
               <Reviewer>
@@ -96,6 +96,8 @@ const Reviewers = ({
               </Reviewer>
             ))}
           </ReviewersList>
+        ) : (
+          <p>No reviewers have been invited yet</p>
         )}
       </SectionRow>
     </SectionContent>
diff --git a/app/components/component-submit/src/components/NewSubmissionPage.jsx b/app/components/component-submit/src/components/NewSubmissionPage.jsx
index 922ad7fd02..24371795df 100644
--- a/app/components/component-submit/src/components/NewSubmissionPage.jsx
+++ b/app/components/component-submit/src/components/NewSubmissionPage.jsx
@@ -1,7 +1,7 @@
 import React from 'react'
 import { ApolloConsumer } from '@apollo/client'
 import config from 'config'
-import { Container, Content, UploadContainer, PageHeading } from '../style'
+import { Container, Content, UploadContainer, Heading } from '../style'
 import UploadManuscript from './UploadManuscript'
 import useCurrentUser from '../../../../hooks/useCurrentUser'
 
@@ -17,7 +17,7 @@ const Dashboard = props => {
 
   return (
     <Container>
-      <PageHeading level={1}>New submission</PageHeading>
+      <Heading>New submission</Heading>
       <Content>
         <UploadContainer>
           <ApolloConsumer>
diff --git a/app/components/component-submit/src/style.js b/app/components/component-submit/src/style.js
index 6095856506..a690702187 100644
--- a/app/components/component-submit/src/style.js
+++ b/app/components/component-submit/src/style.js
@@ -1,7 +1,7 @@
 import styled from 'styled-components'
 import { th, grid } from '@pubsweet/ui-toolkit'
 
-export { Container, Content, PageHeading } from '../../shared'
+export { Container, Content, Heading } from '../../shared'
 
 export const Heading1 = styled.h1`
   margin: 0 0 calc(${th('gridUnit')} * 3);
@@ -34,6 +34,7 @@ export const SubNote = styled.span`
 `
 
 export const UploadContainer = styled.div`
+  margin-top: ${grid(2)};
   padding: ${grid(3)};
   text-align: center;
 `
diff --git a/app/components/component-users-manager/src/UsersManager.jsx b/app/components/component-users-manager/src/UsersManager.jsx
index 72869f557d..08e10ec9f8 100644
--- a/app/components/component-users-manager/src/UsersManager.jsx
+++ b/app/components/component-users-manager/src/UsersManager.jsx
@@ -8,7 +8,7 @@ import {
   Container,
   Table,
   Header,
-  PageHeading,
+  Heading,
   Content,
   Spinner,
   Pagination,
@@ -98,7 +98,7 @@ const UsersManager = () => {
 
   return (
     <Container>
-      <PageHeading level={1}>Users</PageHeading>
+      <Heading>Users</Heading>
       <Content>
         <Table>
           <Header>
diff --git a/app/components/component-users-manager/src/style.js b/app/components/component-users-manager/src/style.js
index 4916f05bde..0844f5d261 100644
--- a/app/components/component-users-manager/src/style.js
+++ b/app/components/component-users-manager/src/style.js
@@ -14,7 +14,7 @@ export {
   Table,
   Header,
   Content,
-  PageHeading,
+  Heading,
   Carets,
   CaretUp,
   CaretDown,
diff --git a/app/components/shared/General.js b/app/components/shared/General.js
index dc6ca58eda..14dd43e15e 100644
--- a/app/components/shared/General.js
+++ b/app/components/shared/General.js
@@ -3,7 +3,7 @@ import { grid, th } from '@pubsweet/ui-toolkit'
 
 export const Section = styled.div`
   padding: ${grid(2)} ${grid(3)};
-  margin-top: ${grid(3)};
+  margin-top: ${grid(2)};
   &:not(:last-of-type) {
     margin-bottom: ${grid(6)};
   }
diff --git a/app/components/shared/Table.jsx b/app/components/shared/Table.jsx
index 76e5b9e7a1..ef21808063 100644
--- a/app/components/shared/Table.jsx
+++ b/app/components/shared/Table.jsx
@@ -1,8 +1,8 @@
 import styled from 'styled-components'
-import { Heading } from '@pubsweet/ui'
 import { th, grid } from '@pubsweet/ui-toolkit'
 
 export const Table = styled.table`
+  margin-top: ${grid(2)};
   width: 100%;
   border-radius: ${th('borderRadius')};
   border-collapse: collapse;
@@ -13,11 +13,6 @@ export const Table = styled.table`
   }
 `
 
-export const PageHeading = styled(Heading)`
-  color: ${th('colorText')};
-  margin-bottom: 1rem;
-`
-
 export const Header = styled.thead`
   text-align: left;
   font-variant: all-small-caps;
diff --git a/app/theme/elements/TextField.js b/app/theme/elements/TextField.js
index 208da5b828..acf5abc04e 100644
--- a/app/theme/elements/TextField.js
+++ b/app/theme/elements/TextField.js
@@ -1,5 +1,5 @@
 import { css } from 'styled-components'
-import { th } from '@pubsweet/ui-toolkit'
+import { th, grid } from '@pubsweet/ui-toolkit'
 
 export default {
   // TODO
@@ -31,7 +31,6 @@ export default {
       }
     }};
     outline: 0;
-    padding: 0 0 0 2px;
     transition: ${th('transitionDuration')} ${th('transitionTimingFunction')};
 
     &:focus {
@@ -44,4 +43,8 @@ export default {
       line-height: ${th('lineHeightBaseSmall')};
     }
   `,
+
+  Label: css`
+    margin-bottom: ${grid(1)};
+  `,
 }
-- 
GitLab