import React, { Fragment } from 'react';
import { useTranslation } from 'next-i18next';
import PropTypes from 'prop-types';
import {
UncontrolledDropdown, DropdownToggle, DropdownMenu,
} from 'reactstrap';
import AdminUsersContainer from '~/client/services/AdminUsersContainer';
import { withUnstatedContainers } from '../../UnstatedUtils';
import GiveAdminButton from './GiveAdminButton';
import RemoveAdminMenuItem from './RemoveAdminMenuItem';
import SendInvitationEmailButton from './SendInvitationEmailButton';
import StatusActivateButton from './StatusActivateButton';
import StatusSuspendedMenuItem from './StatusSuspendMenuItem';
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 (
);
}
}
const UserMenuWrapperFC = (props) => {
const { t } = useTranslation();
return ;
};
const UserMenuWrapper = withUnstatedContainers(UserMenuWrapperFC, [AdminUsersContainer]);
UserMenu.propTypes = {
t: PropTypes.func.isRequired, // i18next
adminUsersContainer: PropTypes.instanceOf(AdminUsersContainer).isRequired,
user: PropTypes.object.isRequired,
};
export default UserMenuWrapper;