SidebarUserBlock.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React, { Component } from "react";
  2. import PropTypes from "prop-types";
  3. import { Collapse } from "reactstrap";
  4. import { connect } from "react-redux";
  5. class SidebarUserBlock extends Component {
  6. state = {
  7. showUserBlock: true,
  8. user: {},
  9. role: "",
  10. };
  11. async componentDidMount() {
  12. // const user = await getUser();
  13. const user = this.props.user;
  14. this.setState({ user, role: user.peran[0].peran });
  15. }
  16. componentDidUpdate(oldProps) {
  17. if (oldProps.showUserBlock !== this.props.showUserBlock) {
  18. this.setState({ showUserBlock: this.props.showUserBlock });
  19. }
  20. }
  21. render() {
  22. const { user, role } = this.state;
  23. return (
  24. <Collapse id="user-block" isOpen={this.state.showUserBlock}>
  25. <div>
  26. <div className="item user-block">
  27. {/* User picture */}
  28. <div className="user-block-picture">
  29. <div className="user-block-status">
  30. <img className="rounded-circle" src={role.id === 2022 ? "/static/img/univ-avatar.png" : "/static/img/logo-single.png"} alt="Avatar" width="60" height="60" />
  31. <div className="circle bg-success circle-lg"></div>
  32. </div>
  33. </div>
  34. {/* Name and Job */}
  35. <div className="user-block-info">
  36. <span className="user-block-name">{user.nama}</span>
  37. <span className="user-block-role">{role.nama}</span>
  38. </div>
  39. </div>
  40. </div>
  41. </Collapse>
  42. );
  43. }
  44. }
  45. SidebarUserBlock.propTypes = {
  46. showUserBlock: PropTypes.bool,
  47. };
  48. const mapStateToProps = (state) => ({ showUserBlock: state.settings.showUserBlock, user: state.user });
  49. export default connect(mapStateToProps)(SidebarUserBlock);