diff --git a/src/features/user-admin/DefaultPage.js b/src/features/user-admin/DefaultPage.js deleted file mode 100644 index cdfb83c..0000000 --- a/src/features/user-admin/DefaultPage.js +++ /dev/null @@ -1,39 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; -import * as actions from './redux/actions'; - -export class DefaultPage extends Component { - static propTypes = { - userAdmin: PropTypes.object.isRequired, - actions: PropTypes.object.isRequired, - }; - - render() { - return ( -
- Page Content: user-admin/DefaultPage -
- ); - } -} - -/* istanbul ignore next */ -function mapStateToProps(state) { - return { - userAdmin: state.userAdmin, - }; -} - -/* istanbul ignore next */ -function mapDispatchToProps(dispatch) { - return { - actions: bindActionCreators({ ...actions }, dispatch) - }; -} - -export default connect( - mapStateToProps, - mapDispatchToProps -)(DefaultPage); diff --git a/src/features/user-admin/DefaultPage.scss b/src/features/user-admin/DefaultPage.scss deleted file mode 100644 index 8bcdafb..0000000 --- a/src/features/user-admin/DefaultPage.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import '../../styles/mixins'; - -.user-admin-default-page { - -} diff --git a/src/features/user-admin/List.js b/src/features/user-admin/List.js new file mode 100644 index 0000000..0ca0f14 --- /dev/null +++ b/src/features/user-admin/List.js @@ -0,0 +1,69 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { bindActionCreators } from 'redux'; +import { connect } from 'react-redux'; +import { Redirect } from 'react-router-dom' +import { Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core'; +import * as actions from './redux/actions'; + +export class List extends Component { + static propTypes = { + mtx: PropTypes.object.isRequired, + userAdmin: PropTypes.object.isRequired, + actions: PropTypes.object.isRequired, + }; + + componentDidMount() { + const { fetchUsers } = this.props.actions; + fetchUsers(); + } + + render() { + const { mtx } = this.props; + const { userList, fetchUsersPending } = this.props.userAdmin; + return ( +
+ {(!mtx || !mtx.clientRunning) && } + {fetchUsersPending && logging in} + + + + Username + Guest + Admin + + + + {userList.map(item => ( + + {item.name} + {item.is_guest ? 'X' : ''} + {item.admin ? 'X' : ''} + + ))} + +
+
+ ); + } +} + +/* istanbul ignore next */ +function mapStateToProps(state) { + return { + mtx: state.common.mtx, + userAdmin: state.userAdmin, + }; +} + +/* istanbul ignore next */ +function mapDispatchToProps(dispatch) { + return { + actions: bindActionCreators({ ...actions }, dispatch), + }; +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(List); diff --git a/src/features/user-admin/List.scss b/src/features/user-admin/List.scss new file mode 100644 index 0000000..de1e105 --- /dev/null +++ b/src/features/user-admin/List.scss @@ -0,0 +1,9 @@ +@import '../../styles/mixins'; + +.user-admin-list { + th { + background-color: #EEE; + font-size: 1rem; + font-weight: bold; + } +} diff --git a/src/features/user-admin/index.js b/src/features/user-admin/index.js index 33522c8..2d01c86 100644 --- a/src/features/user-admin/index.js +++ b/src/features/user-admin/index.js @@ -1 +1 @@ -export { default as DefaultPage } from './DefaultPage'; +export { default as List } from './List'; diff --git a/src/features/user-admin/route.js b/src/features/user-admin/route.js index 6ed4834..14990d6 100644 --- a/src/features/user-admin/route.js +++ b/src/features/user-admin/route.js @@ -2,7 +2,7 @@ // Learn more from: http://rekit.js.org/docs/routing.html import { - DefaultPage, + List, } from './'; import { Layout } from '../common'; @@ -11,6 +11,6 @@ export default { name: 'User admin', component: Layout, childRoutes: [ - { path: 'default-page', name: 'Default page', component: DefaultPage, isIndex: true }, + { path: 'list', name: 'List', component: List, isIndex: true }, ], }; diff --git a/src/features/user-admin/style.scss b/src/features/user-admin/style.scss index 743e0a3..9c6d373 100644 --- a/src/features/user-admin/style.scss +++ b/src/features/user-admin/style.scss @@ -1,2 +1,2 @@ @import '../../styles/mixins'; -@import './DefaultPage'; +@import './List'; diff --git a/tests/features/user-admin/DefaultPage.test.js b/tests/features/user-admin/List.test.js similarity index 55% rename from tests/features/user-admin/DefaultPage.test.js rename to tests/features/user-admin/List.test.js index 1bd50f7..9ceb206 100644 --- a/tests/features/user-admin/DefaultPage.test.js +++ b/tests/features/user-admin/List.test.js @@ -1,19 +1,19 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { DefaultPage } from '../../../src/features/user-admin/DefaultPage'; +import { List } from '../../../src/features/user-admin/List'; -describe('user-admin/DefaultPage', () => { +describe('user-admin/List', () => { it('renders node with correct class name', () => { const props = { userAdmin: {}, actions: {}, }; const renderedComponent = shallow( - + ); expect( - renderedComponent.find('.user-admin-default-page').length + renderedComponent.find('.user-admin-list').length ).toBe(1); }); });