import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { UncontrolledDropdown, DropdownToggle, DropdownMenu, } from 'reactstrap'; import AdminUsersContainer from '~/client/services/AdminUsersContainer'; import AppContainer from '~/client/services/AppContainer'; import { withUnstatedContainers } from '../../UnstatedUtils'; import GiveAdminButton from './GiveAdminButton'; import RemoveAdminMenuItem from './RemoveAdminMenuItem'; import SendInvitationEmailButton from './SendInvitationEmailButton'; import StatusActivateButton from './StatusActivateButton'; import StatusSuspendedButton from './StatusSuspendedButton'; import UserRemoveButton from './UserRemoveButton'; class UserMenu extends React.Component { constructor(props) { super(props); this.state = { isInvitationEmailSended: this.props.user.isInvitationEmailSended, }; this.onPasswordResetClicked = this.onPasswordResetClicked.bind(this); this.onSuccessfullySentInvitationEmail = this.onSuccessfullySentInvitationEmail.bind(this); } onPasswordResetClicked() { this.props.adminUsersContainer.showPasswordResetModal(this.props.user); } onSuccessfullySentInvitationEmail() { this.setState({ isInvitationEmailSended: true }); } renderEditMenu() { const { t } = this.props; return (
  • {t('admin:user_management.user_table.edit_menu')}
  • ); } renderStatusMenu() { const { t, user } = this.props; const { isInvitationEmailSended } = this.state; return (
  • {t('status')}
  • {(user.status === 1 || user.status === 3) && } {user.status === 2 && } {user.status === 5 && ( )} {(user.status === 1 || user.status === 3 || user.status === 5) && }
  • ); } renderAdminMenu() { const { t, user } = this.props; return (
  • {t('admin:user_management.user_table.administrator_menu')}
  • {user.admin === true && } {user.admin === false && }
  • ); } render() { const { user } = this.props; const { isInvitationEmailSended } = this.state; return ( {(user.status === 5 && !isInvitationEmailSended) && } {this.renderEditMenu()} {user.status !== 4 && this.renderStatusMenu()} {user.status === 2 && this.renderAdminMenu()} ); } } const UserMenuWrapper = withUnstatedContainers(UserMenu, [AppContainer, AdminUsersContainer]); UserMenu.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, adminUsersContainer: PropTypes.instanceOf(AdminUsersContainer).isRequired, user: PropTypes.object.isRequired, }; export default withTranslation()(UserMenuWrapper);