import { Query, Mutation } from 'react-apollo'; import Error from './ErrorMessage'; import gql from 'graphql-tag'; import Table from './styles/Table'; import SickButton from './styles/SickButton'; import PropTypes from 'prop-types'; const possiblePermissions = [ 'ADMIN', 'USER', 'ITEMCREATE', 'ITEMUPDATE', 'ITEMDELETE', 'PERMISSIONUPDATE', ]; const UPDATE_PERMISSIONS_MUTATION = gql` mutation updatePermissions($permissions: [Permission], $userId: ID!) { updatePermissions(permissions: $permissions, userId: $userId) { id permissions name email } } `; const ALL_USERS_QUERY = gql` query { users { id name email permissions } } `; const Permissions = props => ( {({ data, loading, error }) => (

Manage Permissions

{possiblePermissions.map(permission => )} {data.users.map(user => )}
Name Email{permission}👇🏻
)}
); class UserPermissions extends React.Component { static propTypes = { user: PropTypes.shape({ name: PropTypes.string, email: PropTypes.string, id: PropTypes.string, permissions: PropTypes.array, }).isRequired, }; state = { permissions: this.props.user.permissions, }; handlePermissionChange = (e) => { const checkbox = e.target; // take a copy of the current permissions let updatedPermissions = [...this.state.permissions]; // figure out if we need to remove or add this permission if (checkbox.checked) { // add it in! updatedPermissions.push(checkbox.value); } else { updatedPermissions = updatedPermissions.filter(permission => permission !== checkbox.value); } this.setState({ permissions: updatedPermissions }); }; render() { const user = this.props.user; return ( {(updatePermissions, { loading, error }) => ( <> {error && } < tr > {user.name} {user.email} {possiblePermissions.map(permission => ( ))} Updat{loading ? 'ing' : 'e'} ) } ); } } export default Permissions;