Revoke name through the UI
This commit is contained in:
parent
4927a321df
commit
4d19ff209c
|
@ -270,6 +270,14 @@ const fetchUsers = (filters: string[] = [], page = 1, query?: string | null, pag
|
|||
}
|
||||
};
|
||||
|
||||
const revokeName = (accountId: string, reportId?: string) =>
|
||||
(dispatch: AppDispatch, getState: () => RootState) =>
|
||||
api(getState)
|
||||
.post(`/api/v1/admin/accounts/${accountId}/action`, {
|
||||
type: 'revoke_name',
|
||||
report_id: reportId,
|
||||
});
|
||||
|
||||
const deactivateMastodonUsers = (accountIds: string[], reportId?: string) =>
|
||||
(dispatch: AppDispatch, getState: () => RootState) =>
|
||||
Promise.all(accountIds.map(accountId => {
|
||||
|
@ -631,6 +639,7 @@ export {
|
|||
deleteUser,
|
||||
approveUser,
|
||||
rejectUser,
|
||||
revokeName,
|
||||
deleteStatus,
|
||||
toggleStatusSensitivity,
|
||||
tagUsers,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, { ChangeEventHandler, useState } from 'react';
|
||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||
|
||||
import { setBadges as saveBadges } from 'soapbox/actions/admin';
|
||||
import { revokeName, setBadges as saveBadges } from 'soapbox/actions/admin';
|
||||
import { deactivateUserModal, deleteUserModal } from 'soapbox/actions/moderation';
|
||||
import { useAccount } from 'soapbox/api/hooks';
|
||||
import { useSuggest, useVerify } from 'soapbox/api/hooks/admin';
|
||||
|
@ -25,6 +25,7 @@ const messages = defineMessages({
|
|||
userSuggested: { id: 'admin.users.user_suggested_message', defaultMessage: '@{acct} was suggested' },
|
||||
userUnsuggested: { id: 'admin.users.user_unsuggested_message', defaultMessage: '@{acct} was unsuggested' },
|
||||
badgesSaved: { id: 'admin.users.badges_saved_message', defaultMessage: 'Custom badges updated.' },
|
||||
revokedName: { id: 'admin.users.revoked_name_message', defaultMessage: 'Name revoked.' },
|
||||
});
|
||||
|
||||
interface IAccountModerationModal {
|
||||
|
@ -88,6 +89,12 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
|
|||
dispatch(deactivateUserModal(intl, account.id));
|
||||
};
|
||||
|
||||
const handleRevokeName = () => {
|
||||
dispatch(revokeName(account.id))
|
||||
.then(() => toast.success(intl.formatMessage(messages.revokedName)))
|
||||
.catch(() => {});
|
||||
};
|
||||
|
||||
const handleDelete = () => {
|
||||
dispatch(deleteUserModal(intl, account.id));
|
||||
};
|
||||
|
@ -151,6 +158,13 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
|
|||
</List>
|
||||
|
||||
<List>
|
||||
{features.revokeName && (
|
||||
<ListItem
|
||||
label={<FormattedMessage id='account_moderation_modal.fields.revoke_name' defaultMessage='Revoke name' />}
|
||||
onClick={handleRevokeName}
|
||||
/>
|
||||
)}
|
||||
|
||||
<ListItem
|
||||
label={<FormattedMessage id='account_moderation_modal.fields.deactivate' defaultMessage='Deactivate account' />}
|
||||
onClick={handleDeactivate}
|
||||
|
|
|
@ -74,6 +74,7 @@
|
|||
"account_moderation_modal.fields.badges": "Custom badges",
|
||||
"account_moderation_modal.fields.deactivate": "Deactivate account",
|
||||
"account_moderation_modal.fields.delete": "Delete account",
|
||||
"account_moderation_modal.fields.revoke_name": "Revoke name",
|
||||
"account_moderation_modal.fields.suggested": "Suggested in people to follow",
|
||||
"account_moderation_modal.fields.verified": "Verified account",
|
||||
"account_moderation_modal.info.id": "ID: {id}",
|
||||
|
@ -183,6 +184,7 @@
|
|||
"admin.users.actions.promote_to_moderator_message": "@{acct} was promoted to a moderator",
|
||||
"admin.users.badges_saved_message": "Custom badges updated.",
|
||||
"admin.users.remove_donor_message": "@{acct} was removed as a donor",
|
||||
"admin.users.revoked_name_message": "Name revoked.",
|
||||
"admin.users.set_donor_message": "@{acct} was set as a donor",
|
||||
"admin.users.user_deactivated_message": "@{acct} was deactivated",
|
||||
"admin.users.user_deleted_message": "@{acct} was deleted",
|
||||
|
@ -642,6 +644,10 @@
|
|||
"edit_federation.save": "Save",
|
||||
"edit_federation.success": "{host} federation was updated",
|
||||
"edit_federation.unlisted": "Force posts unlisted",
|
||||
"edit_identity.names_title": "Names",
|
||||
"edit_identity.pending_names_title": "Requested Names",
|
||||
"edit_identity.reason_placeholder": "Why do you want this name?",
|
||||
"edit_identity.request": "Request",
|
||||
"edit_password.header": "Change Password",
|
||||
"edit_profile.error": "Profile update failed",
|
||||
"edit_profile.fields.accepts_email_list_label": "Subscribe to newsletter",
|
||||
|
|
|
@ -944,6 +944,9 @@ const getInstanceFeatures = (instance: Instance) => {
|
|||
*/
|
||||
resetPassword: v.software === PLEROMA,
|
||||
|
||||
/** Admin can revoke the user's identity (without deleting their account). */
|
||||
revokeName: v.software === DITTO,
|
||||
|
||||
/**
|
||||
* Ability to post statuses in Markdown, BBCode, and HTML.
|
||||
* @see POST /api/v1/statuses
|
||||
|
|
Loading…
Reference in New Issue