Skip to content
Snippets Groups Projects
ManageAccount.jsx 2.11 KiB
Newer Older
import React from 'react'
import { Query } from 'react-apollo'
import styled from 'styled-components'
MoSelim's avatar
MoSelim committed
import { H1, H3, H5, Icon, Link } from '@pubsweet/ui'
MoSelim's avatar
MoSelim committed
import { Loading, LoadingIcon, Page } from '../ui/'
import AccountDetails from './AccountDetailsContainer'
MoSelim's avatar
MoSelim committed
import MergeAccount from './MergeAccount'
MoSelim's avatar
MoSelim committed
import { GET_USER, GET_ROLES_BY_TYPE } from './queries'
const Container = styled.div`
  .reset-pass {
    margin-top: 20px;
  }
MoSelim's avatar
MoSelim committed
  > div {
MoSelim's avatar
MoSelim committed
    padding: 0px;
  }
MoSelim's avatar
MoSelim committed
  .search-again {
    float: right;
    font-size: 14px;
  }
`

const ManageAccount = props => (
  <Query
    fetchPolicy="cache-and-network"
    query={GET_USER}
    variables={{ id: props.location.pathname.split('/')[2] }}
  >
    {({ data, loading }) => {
      if (loading) {
        return (
          <Loading>
            <LoadingIcon />
          </Loading>
        )
      }
MoSelim's avatar
MoSelim committed
      const userData = data
      return (
MoSelim's avatar
MoSelim committed
        <Query
          fetchPolicy="cache-and-network"
          query={GET_ROLES_BY_TYPE}
          variables={{ organization: true }}
        >
          {({ data, loading }) => {
            if (loading) {
              return (
                <Loading>
                  <LoadingIcon />
                </Loading>
              )
            }
            return (
MoSelim's avatar
MoSelim committed
              <Page>
                <Container>
MoSelim's avatar
MoSelim committed
                  <H1>Manage User: {props.location.pathname.split('/')[2]}</H1>
MoSelim's avatar
MoSelim committed
                  <Link className="search-again" to="/manage-users">
                    <Icon color="currentColor" size={2}>
                      search
                    </Icon>
                    Search again
                  </Link>
MoSelim's avatar
MoSelim committed
                  <H3>Profile</H3>
MoSelim's avatar
MoSelim committed
                  <AccountDetails
                    {...props}
                    roles={data.rolesByType}
                    user={userData.epmc_user}
                  />
                  <H3>Admin</H3>
                  <H5>Merge data from another account</H5>
                  <MergeAccount {...props} user={userData.epmc_user} />
                </Container>
MoSelim's avatar
MoSelim committed
              </Page>
MoSelim's avatar
MoSelim committed
            )
          }}
        </Query>
      )
    }}
  </Query>
)

export default ManageAccount