adding Ban user and delete all his messages to the menu for moderators

pull/1819/head
Brice-W 4 years ago
parent c415c715a5
commit 2c6821097d

@ -255,6 +255,8 @@
"userUnbanFailed": "Unban failed!", "userUnbanFailed": "Unban failed!",
"banUser": "Ban User", "banUser": "Ban User",
"banUserConfirm": "Are you sure you want to ban the user?", "banUserConfirm": "Are you sure you want to ban the user?",
"banUserAndDeleteAll": "Ban and Delete All",
"banUserAndDeleteAllConfirm": "Are you sure you want to ban the user and delete all his messages?",
"userBanned": "Banned successfully", "userBanned": "Banned successfully",
"userBanFailed": "Ban failed!", "userBanFailed": "Ban failed!",
"leaveGroup": "Leave Group", "leaveGroup": "Leave Group",

@ -260,6 +260,8 @@
"userUnbanFailed": "Le débannissement a échoué !", "userUnbanFailed": "Le débannissement a échoué !",
"banUser": "Bannir l'utilisateur", "banUser": "Bannir l'utilisateur",
"banUserConfirm": "Êtes-vous sûr de vouloir bannir cet utilisateur ?", "banUserConfirm": "Êtes-vous sûr de vouloir bannir cet utilisateur ?",
"banUserAndDeleteAll": "Bannir et tout supprimer",
"banUserAndDeleteAllConfirm": "Êtes-vous sûr de vouloir bannir cet utilisateur et supprimer tous ses messages ?",
"userBanned": "Utilisateur banni", "userBanned": "Utilisateur banni",
"userBanFailed": "Le bannissement a échoué", "userBanFailed": "Le bannissement a échoué",
"leaveGroup": "Quitter le groupe", "leaveGroup": "Quitter le groupe",

@ -131,6 +131,10 @@ export const MessageContextMenu = (props: PropsForMessageContextMenu) => {
MessageInteraction.banUser(authorPhoneNumber, convoId); MessageInteraction.banUser(authorPhoneNumber, convoId);
}, [authorPhoneNumber, convoId]); }, [authorPhoneNumber, convoId]);
const onBanAndDeleteAll = useCallback(() => {
MessageInteraction.banUser(authorPhoneNumber, convoId, true);
}, [authorPhoneNumber, convoId]);
const onUnban = useCallback(() => { const onUnban = useCallback(() => {
MessageInteraction.unbanUser(authorPhoneNumber, convoId); MessageInteraction.unbanUser(authorPhoneNumber, convoId);
}, [authorPhoneNumber, convoId]); }, [authorPhoneNumber, convoId]);
@ -165,6 +169,7 @@ export const MessageContextMenu = (props: PropsForMessageContextMenu) => {
</> </>
) : null} ) : null}
{weAreAdmin && isPublic ? <Item onClick={onBan}>{window.i18n('banUser')}</Item> : null} {weAreAdmin && isPublic ? <Item onClick={onBan}>{window.i18n('banUser')}</Item> : null}
{weAreAdmin && isPublic ? <Item onClick={onBanAndDeleteAll}>{window.i18n('banUserAndDeleteAll')}</Item> : null}
{weAreAdmin && isOpenGroupV2 ? ( {weAreAdmin && isOpenGroupV2 ? (
<Item onClick={onUnban}>{window.i18n('unbanUser')}</Item> <Item onClick={onUnban}>{window.i18n('unbanUser')}</Item>
) : null} ) : null}

@ -10,7 +10,7 @@ import { ToastUtils } from '../session/utils';
import { updateConfirmModal } from '../state/ducks/modalDialog'; import { updateConfirmModal } from '../state/ducks/modalDialog';
export function banUser(userToBan: string, conversationId: string) { export function banUser(userToBan: string, conversationId: string, deleteAllMessages: boolean = false) {
let pubKeyToBan: PubKey; let pubKeyToBan: PubKey;
try { try {
pubKeyToBan = PubKey.cast(userToBan); pubKeyToBan = PubKey.cast(userToBan);
@ -24,9 +24,12 @@ export function banUser(userToBan: string, conversationId: string) {
window.inboxStore?.dispatch(updateConfirmModal(null)); window.inboxStore?.dispatch(updateConfirmModal(null));
}; };
const title = (deleteAllMessages) ? window.i18n('banUserAndDeleteAll') : window.i18n('banUser');
const message = (deleteAllMessages) ? window.i18n('banUserAndDeleteAllConfirm') : window.i18n('banUserConfirm');
const confirmationModalProps = { const confirmationModalProps = {
title: window.i18n('banUser'), title: title,
message: window.i18n('banUserConfirm'), message: message,
onClickClose, onClickClose,
onClickOk: async () => { onClickOk: async () => {
const conversation = getConversationController().get(conversationId); const conversation = getConversationController().get(conversationId);
@ -40,7 +43,7 @@ export function banUser(userToBan: string, conversationId: string) {
if (!roomInfos) { if (!roomInfos) {
window.log.warn('banUser room not found'); window.log.warn('banUser room not found');
} else { } else {
success = await ApiV2.banUser(pubKeyToBan, _.pick(roomInfos, 'serverUrl', 'roomId')); success = await ApiV2.banUser(pubKeyToBan, _.pick(roomInfos, 'serverUrl', 'roomId'), deleteAllMessages);
} }
} else { } else {
throw new Error('V1 opengroup are not supported'); throw new Error('V1 opengroup are not supported');

@ -264,16 +264,18 @@ export const postMessage = async (
export const banUser = async ( export const banUser = async (
userToBan: PubKey, userToBan: PubKey,
roomInfos: OpenGroupRequestCommonType roomInfos: OpenGroupRequestCommonType,
deleteAllMessages: boolean
): Promise<boolean> => { ): Promise<boolean> => {
const queryParams = { public_key: userToBan.key }; const queryParams = { public_key: userToBan.key };
const endPoint = (deleteAllMessages) ? 'ban_and_delete_all' : 'block_list';
const request: OpenGroupV2Request = { const request: OpenGroupV2Request = {
method: 'POST', method: 'POST',
room: roomInfos.roomId, room: roomInfos.roomId,
server: roomInfos.serverUrl, server: roomInfos.serverUrl,
isAuthRequired: true, isAuthRequired: true,
queryParams, queryParams,
endpoint: 'block_list', endpoint: endPoint,
}; };
const banResult = await exports.sendApiV2Request(request); const banResult = await exports.sendApiV2Request(request);
const isOk = parseStatusCodeFromOnionRequest(banResult) === 200; const isOk = parseStatusCodeFromOnionRequest(banResult) === 200;

Loading…
Cancel
Save