igor-starostenko/report_factory-web

View on GitHub
src/containers/create_user.jsx

Summary

Maintainability
A
50 mins
Test Coverage
import React, { Fragment } from 'react';
import { PropTypes } from 'prop-types';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
import getValue from 'lodash/get';
import EditUserForm from './edit_user_form';
import { createUser } from '../actions/users_actions';

function CreateUser(props) {
  function create(attributes) {
    return props.createUser(attributes, props.xApiKey);
  }

  return (
    <Fragment>
      <Link to="/users">Back to users</Link>
      <EditUserForm
        title="Create a User"
        action={create}
        hasPassword
        isAdmin={props.isAdmin}
        submitText="Create"
        backPath="/users"
        initialValues={{ type: 'Tester' }}
        {...props}
      />
    </Fragment>
  );
}

CreateUser.propTypes = {
  createUser: PropTypes.func.isRequired,
  xApiKey: PropTypes.string.isRequired,
  isAdmin: PropTypes.bool.isRequired,
};

const mapStateToProps = state => ({
  isAdmin:
    getValue(state.users.currentUser, 'data.attributes.type') === 'Admin',
  xApiKey: state.users.currentUser.xApiKey,
});

export default connect(
  mapStateToProps,
  { createUser },
)(CreateUser);