index.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import { compose } from 'redux'
  4. import { withRouter } from 'react-router-dom'
  5. import injectReducer from 'utils/injectReducer'
  6. import injectSaga from 'utils/injectSaga'
  7. import reducer from 'containers/Organizations/reducer'
  8. import saga from 'containers/Organizations/sagas'
  9. import Avatar from 'components/Avatar'
  10. import Box from 'components/Box'
  11. import Menus from './components/Menus'
  12. import { Tooltip } from 'antd'
  13. import { createStructuredSelector } from 'reselect'
  14. import { makeSelectLoginUser } from 'containers/App/selectors'
  15. import { RouteComponentWithParams } from 'utils/types'
  16. interface IAccountProps extends RouteComponentWithParams {
  17. loginUser: any,
  18. }
  19. const styles = require('./Account.less')
  20. export class Account extends React.PureComponent<IAccountProps, {}> {
  21. public render () {
  22. const { loginUser, location } = this.props
  23. return (
  24. <div className={styles.wrapper}>
  25. <div className={styles.container}>
  26. <div className={styles.sidebar}>
  27. <div className={styles.user}>
  28. <Box>
  29. <div className={styles.userWrap}>
  30. <div className={styles.userAvatar}>
  31. <Avatar size="profile" path={`${loginUser.avatar}`} enlarge={true}/>
  32. </div>
  33. <div className={styles.userItems}>
  34. <div className={styles.userName}>{loginUser.username}</div>
  35. <Tooltip placement="bottomLeft" title={loginUser.email}>
  36. <div className={styles.userDesc}>{loginUser.email}</div>
  37. </Tooltip>
  38. </div>
  39. </div>
  40. <div className={styles.menu}>
  41. <Menus
  42. active={location.pathname.substr(location.pathname.lastIndexOf('/') + 1)}
  43. />
  44. </div>
  45. </Box>
  46. </div>
  47. </div>
  48. <div className={styles.content}>
  49. {this.props.children}
  50. </div>
  51. </div>
  52. </div>
  53. )
  54. }
  55. }
  56. const mapStateToProps = createStructuredSelector({
  57. loginUser: makeSelectLoginUser()
  58. })
  59. // export default connect<{}, {}, IAccountProps>(mapStateToProps, null)(Account)
  60. const withConnect = connect(mapStateToProps, null)
  61. const withReducer = injectReducer({ key: 'organization', reducer })
  62. const withSaga = injectSaga({ key: 'organization', saga })
  63. export default compose(
  64. withReducer,
  65. withSaga,
  66. withConnect,
  67. withRouter
  68. )(Account)