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;