From 54e5037aafcf288cf215dc3bb5fdfc9f2db0b7f9 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Thu, 24 May 2018 23:07:44 -0700 Subject: [PATCH] Cleanup user list --- app/scenes/Settings/Users.js | 84 +++---------------- .../Settings/components/UserListItem.js | 45 ++++++++++ app/stores/UsersStore.js | 2 - 3 files changed, 58 insertions(+), 73 deletions(-) create mode 100644 app/scenes/Settings/components/UserListItem.js diff --git a/app/scenes/Settings/Users.js b/app/scenes/Settings/Users.js index fa63ca17c..c78d78797 100644 --- a/app/scenes/Settings/Users.js +++ b/app/scenes/Settings/Users.js @@ -2,17 +2,13 @@ import * as React from 'react'; import invariant from 'invariant'; import { observer, inject } from 'mobx-react'; -import styled from 'styled-components'; -import Flex from 'shared/components/Flex'; -import Avatar from 'components/Avatar'; -import { color } from 'shared/styles/constants'; -import UserMenu from 'menus/UserMenu'; import AuthStore from 'stores/AuthStore'; import UsersStore from 'stores/UsersStore'; import CenteredContent from 'components/CenteredContent'; -import LoadingPlaceholder from 'components/LoadingPlaceholder'; import PageTitle from 'components/PageTitle'; +import UserListItem from './components/UserListItem'; +import List from 'components/List'; type Props = { auth: AuthStore, @@ -26,7 +22,8 @@ class Users extends React.Component { } render() { - const currentUser = this.props.auth.user; + const { users, auth } = this.props; + const currentUser = auth.user; invariant(currentUser, 'User should exist'); return ( @@ -34,73 +31,18 @@ class Users extends React.Component {

Users

- {!this.props.users.isLoaded ? ( - - {this.props.users.data && ( - - {this.props.users.data.map(user => ( - - - - - {user.name} {user.email && `(${user.email})`} - {user.isAdmin && ( - Admin - )} - {user.isSuspended && Suspended} - - - - {currentUser.id !== user.id && } - - - ))} - - )} - - ) : ( - - )} + + {users.data.map(user => ( + + ))} + ); } } -const UserList = styled(Flex)` - border: 1px solid ${color.smoke}; - border-radius: 4px; - - margin-top: 20px; - margin-bottom: 40px; -`; - -const User = styled(Flex)` - padding: 10px; - border-bottom: 1px solid ${color.smoke}; - font-size: 15px; - - &:last-child { - border-bottom: none; - } -`; - -const UserDetails = styled(Flex)` - opacity: ${({ suspended }) => (suspended ? 0.5 : 1)}; -`; - -const UserName = styled.span` - padding-left: 8px; -`; - -const Badge = styled.span` - margin-left: 10px; - padding: 2px 6px 3px; - background-color: ${({ admin }) => (admin ? color.primary : color.smokeDark)}; - color: ${({ admin }) => (admin ? color.white : color.text)}; - border-radius: 2px; - font-size: 11px; - text-transform: uppercase; - font-weight: normal; -`; - export default inject('auth', 'users')(Users); diff --git a/app/scenes/Settings/components/UserListItem.js b/app/scenes/Settings/components/UserListItem.js new file mode 100644 index 000000000..c7de8a56b --- /dev/null +++ b/app/scenes/Settings/components/UserListItem.js @@ -0,0 +1,45 @@ +// @flow +import * as React from 'react'; +import styled from 'styled-components'; +import { color } from 'shared/styles/constants'; + +import UserMenu from 'menus/UserMenu'; +import Avatar from 'components/Avatar'; +import ListItem from 'components/List/Item'; +import type { User } from '../../../types'; + +type Props = { + user: User, + isCurrentUser: boolean, +}; + +const UserListItem = ({ user, isCurrentUser }: Props) => { + return ( + } + subtitle={ + + {user.username ? user.username : user.email} + {user.isAdmin && Admin} + {user.isSuspended && Suspended} + + } + actions={isCurrentUser ? undefined : } + /> + ); +}; + +const Badge = styled.span` + margin-left: 10px; + padding: 2px 6px 3px; + background-color: ${({ admin }) => (admin ? color.primary : color.smokeDark)}; + color: ${({ admin }) => (admin ? color.white : color.text)}; + border-radius: 2px; + font-size: 11px; + text-transform: uppercase; + font-weight: normal; +`; + +export default UserListItem; diff --git a/app/stores/UsersStore.js b/app/stores/UsersStore.js index d9df0b832..5b4945dd7 100644 --- a/app/stores/UsersStore.js +++ b/app/stores/UsersStore.js @@ -6,7 +6,6 @@ import type { User, PaginationParams } from 'types'; class UsersStore { @observable data: User[] = []; - @observable isLoaded: boolean = false; @observable isSaving: boolean = false; @action @@ -22,7 +21,6 @@ class UsersStore { } catch (e) { console.error('Something went wrong'); } - this.isLoaded = false; }; @action