import React, { type JSX, useCallback } from 'react'; import type { IUserHasId } from '@growi/core'; import { useTranslation } from 'next-i18next'; import AdminUsersContainer from '~/client/services/AdminUsersContainer'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { useCurrentUser } from '~/states/global'; import { withUnstatedContainers } from '../../UnstatedUtils'; const RevokeAdminAlert = React.memo((): JSX.Element => { const { t } = useTranslation(); return (
person_remove {t('admin:user_management.user_table.revoke_admin_access')}

{t('admin:user_management.user_table.cannot_revoke')}

); }); RevokeAdminAlert.displayName = 'RevokeAdminAlert'; type Props = { adminUsersContainer: AdminUsersContainer; user: IUserHasId; }; const RevokeAdminMenuItem = (props: Props): JSX.Element => { const { t } = useTranslation('admin'); const { adminUsersContainer, user } = props; const currentUser = useCurrentUser(); const clickRevokeAdminBtnHandler = useCallback(async () => { try { const username = await adminUsersContainer.revokeUserAdmin(user._id); toastSuccess(t('toaster.revoke_user_admin', { username })); } catch (err) { toastError(err); } }, [adminUsersContainer, t, user._id]); return user.username !== currentUser?.username ? ( ) : ( ); }; /** * Wrapper component for using unstated */ const RevokeAdminMenuItemWrapper: React.ForwardRefExoticComponent< Pick & React.RefAttributes > = withUnstatedContainers(RevokeAdminMenuItem, [AdminUsersContainer]); export default RevokeAdminMenuItemWrapper;