import React, { useCallback } from 'react'; import type { IUserHasId } from '@growi/core'; import { useTranslation } from 'next-i18next'; import { withUnstatedContainers } from '~/client/components/UnstatedUtils'; import AdminUsersContainer from '~/client/services/AdminUsersContainer'; import { toastSuccess, toastError } from '~/client/util/toastr'; import { useCurrentUser } from '~/stores-universal/context'; const SuspendAlert = React.memo((): React.ReactElement => { const { t } = useTranslation(); return (
cancel{t('admin:user_management.user_table.deactivate_account')}

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

); }); SuspendAlert.displayName = 'SuspendAlert'; type Props = { adminUsersContainer: AdminUsersContainer, user: IUserHasId, } const StatusSuspendMenuItem = (props: Props): React.ReactElement => { const { t } = useTranslation('admin'); const { adminUsersContainer, user } = props; const { data: currentUser } = useCurrentUser(); const clickDeactiveBtnHandler = useCallback(async() => { try { const username = await adminUsersContainer.deactivateUser(user._id); toastSuccess(t('toaster.deactivate_user_success', { username })); } catch (err) { toastError(err); } }, [adminUsersContainer, t, user._id]); return user.username !== currentUser?.username ? ( ) : ; }; /** * Wrapper component for using unstated */ // eslint-disable-next-line max-len const StatusSuspendMenuItemWrapper: React.ForwardRefExoticComponent & React.RefAttributes> = withUnstatedContainers(StatusSuspendMenuItem, [AdminUsersContainer]); export default StatusSuspendMenuItemWrapper;