51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
import React, { useState } from "react"
|
|
import PropTypes from "prop-types"
|
|
import { connect } from "react-redux"
|
|
import {
|
|
getUsers, getStats,
|
|
getAdminModules, updateUser
|
|
} from "../../actions/admins"
|
|
|
|
import Modules from "../modules/modules"
|
|
import { UserList } from "./users"
|
|
import { Stats } from "./stats"
|
|
|
|
const AdminPanel = props => {
|
|
const [fetched, setIsFetched] = useState(false);
|
|
if (!fetched) {
|
|
props.getUsers();
|
|
props.getStats();
|
|
props.getAdminModules();
|
|
setIsFetched(true);
|
|
}
|
|
|
|
return (
|
|
<React.Fragment>
|
|
<Stats stats={props.stats}/>
|
|
<UserList users={props.users} updateUser={props.updateUser}/>
|
|
<Modules modules={props.modules} isLoading={false} />
|
|
</React.Fragment>
|
|
)
|
|
}
|
|
AdminPanel.propTypes = {
|
|
stats: PropTypes.object,
|
|
users: PropTypes.object,
|
|
modules: PropTypes.object,
|
|
updateUser: PropTypes.func.isRequired,
|
|
getUsers: PropTypes.func.isRequired,
|
|
getStats: PropTypes.func.isRequired,
|
|
getAdminModules: PropTypes.func.isRequired,
|
|
};
|
|
|
|
const mapStateToProps = state => ({
|
|
users: state.adminStore.get("users"),
|
|
stats: state.adminStore.get("stats"),
|
|
modules: state.adminStore.get("modules"),
|
|
});
|
|
const mapDispatchToProps = {
|
|
getUsers, getStats,
|
|
getAdminModules, updateUser
|
|
}
|
|
|
|
export default connect(mapStateToProps, mapDispatchToProps)(AdminPanel);
|