From 2c6821097df02491c2f87ec52f8803ca2f951887 Mon Sep 17 00:00:00 2001 From: Brice-W Date: Mon, 2 Aug 2021 11:57:10 +1000 Subject: [PATCH 1/3] adding Ban user and delete all his messages to the menu for moderators --- _locales/en/messages.json | 2 ++ _locales/fr/messages.json | 2 ++ ts/components/conversation/MessageContextMenu.tsx | 5 +++++ ts/interactions/messageInteractions.ts | 11 +++++++---- ts/opengroup/opengroupV2/OpenGroupAPIV2.ts | 6 ++++-- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 15d48eebe..150741a7b 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -255,6 +255,8 @@ "userUnbanFailed": "Unban failed!", "banUser": "Ban 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", "userBanFailed": "Ban failed!", "leaveGroup": "Leave Group", diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 07b9dc6c1..9df4a8237 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -260,6 +260,8 @@ "userUnbanFailed": "Le débannissement a échoué !", "banUser": "Bannir l'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", "userBanFailed": "Le bannissement a échoué", "leaveGroup": "Quitter le groupe", diff --git a/ts/components/conversation/MessageContextMenu.tsx b/ts/components/conversation/MessageContextMenu.tsx index 33de532e1..a38ba3008 100644 --- a/ts/components/conversation/MessageContextMenu.tsx +++ b/ts/components/conversation/MessageContextMenu.tsx @@ -131,6 +131,10 @@ export const MessageContextMenu = (props: PropsForMessageContextMenu) => { MessageInteraction.banUser(authorPhoneNumber, convoId); }, [authorPhoneNumber, convoId]); + const onBanAndDeleteAll = useCallback(() => { + MessageInteraction.banUser(authorPhoneNumber, convoId, true); + }, [authorPhoneNumber, convoId]); + const onUnban = useCallback(() => { MessageInteraction.unbanUser(authorPhoneNumber, convoId); }, [authorPhoneNumber, convoId]); @@ -165,6 +169,7 @@ export const MessageContextMenu = (props: PropsForMessageContextMenu) => { ) : null} {weAreAdmin && isPublic ? {window.i18n('banUser')} : null} + {weAreAdmin && isPublic ? {window.i18n('banUserAndDeleteAll')} : null} {weAreAdmin && isOpenGroupV2 ? ( {window.i18n('unbanUser')} ) : null} diff --git a/ts/interactions/messageInteractions.ts b/ts/interactions/messageInteractions.ts index 6c01091b5..c86956852 100644 --- a/ts/interactions/messageInteractions.ts +++ b/ts/interactions/messageInteractions.ts @@ -10,7 +10,7 @@ import { ToastUtils } from '../session/utils'; 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; try { pubKeyToBan = PubKey.cast(userToBan); @@ -24,9 +24,12 @@ export function banUser(userToBan: string, conversationId: string) { 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 = { - title: window.i18n('banUser'), - message: window.i18n('banUserConfirm'), + title: title, + message: message, onClickClose, onClickOk: async () => { const conversation = getConversationController().get(conversationId); @@ -40,7 +43,7 @@ export function banUser(userToBan: string, conversationId: string) { if (!roomInfos) { window.log.warn('banUser room not found'); } else { - success = await ApiV2.banUser(pubKeyToBan, _.pick(roomInfos, 'serverUrl', 'roomId')); + success = await ApiV2.banUser(pubKeyToBan, _.pick(roomInfos, 'serverUrl', 'roomId'), deleteAllMessages); } } else { throw new Error('V1 opengroup are not supported'); diff --git a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts index 4760808da..0584a13fb 100644 --- a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts +++ b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts @@ -264,16 +264,18 @@ export const postMessage = async ( export const banUser = async ( userToBan: PubKey, - roomInfos: OpenGroupRequestCommonType + roomInfos: OpenGroupRequestCommonType, + deleteAllMessages: boolean ): Promise => { const queryParams = { public_key: userToBan.key }; + const endPoint = (deleteAllMessages) ? 'ban_and_delete_all' : 'block_list'; const request: OpenGroupV2Request = { method: 'POST', room: roomInfos.roomId, server: roomInfos.serverUrl, isAuthRequired: true, queryParams, - endpoint: 'block_list', + endpoint: endPoint, }; const banResult = await exports.sendApiV2Request(request); const isOk = parseStatusCodeFromOnionRequest(banResult) === 200; From d8fa73d3934f470629b562608fa7d870212fa221 Mon Sep 17 00:00:00 2001 From: Brice-W Date: Mon, 2 Aug 2021 13:22:55 +1000 Subject: [PATCH 2/3] lint --- .../conversation/MessageContextMenu.tsx | 4 +++- ts/interactions/messageInteractions.ts | 18 ++++++++++++++---- ts/opengroup/opengroupV2/OpenGroupAPIV2.ts | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ts/components/conversation/MessageContextMenu.tsx b/ts/components/conversation/MessageContextMenu.tsx index a38ba3008..a1ad0402b 100644 --- a/ts/components/conversation/MessageContextMenu.tsx +++ b/ts/components/conversation/MessageContextMenu.tsx @@ -169,7 +169,9 @@ export const MessageContextMenu = (props: PropsForMessageContextMenu) => { ) : null} {weAreAdmin && isPublic ? {window.i18n('banUser')} : null} - {weAreAdmin && isPublic ? {window.i18n('banUserAndDeleteAll')} : null} + {weAreAdmin && isPublic ? ( + {window.i18n('banUserAndDeleteAll')} + ) : null} {weAreAdmin && isOpenGroupV2 ? ( {window.i18n('unbanUser')} ) : null} diff --git a/ts/interactions/messageInteractions.ts b/ts/interactions/messageInteractions.ts index c86956852..ffbe08806 100644 --- a/ts/interactions/messageInteractions.ts +++ b/ts/interactions/messageInteractions.ts @@ -10,7 +10,11 @@ import { ToastUtils } from '../session/utils'; import { updateConfirmModal } from '../state/ducks/modalDialog'; -export function banUser(userToBan: string, conversationId: string, deleteAllMessages: boolean = false) { +export function banUser( + userToBan: string, + conversationId: string, + deleteAllMessages: boolean = false +) { let pubKeyToBan: PubKey; try { pubKeyToBan = PubKey.cast(userToBan); @@ -24,8 +28,10 @@ export function banUser(userToBan: string, conversationId: string, deleteAllMess window.inboxStore?.dispatch(updateConfirmModal(null)); }; - const title = (deleteAllMessages) ? window.i18n('banUserAndDeleteAll') : window.i18n('banUser'); - const message = (deleteAllMessages) ? window.i18n('banUserAndDeleteAllConfirm') : window.i18n('banUserConfirm'); + const title = deleteAllMessages ? window.i18n('banUserAndDeleteAll') : window.i18n('banUser'); + const message = deleteAllMessages + ? window.i18n('banUserAndDeleteAllConfirm') + : window.i18n('banUserConfirm'); const confirmationModalProps = { title: title, @@ -43,7 +49,11 @@ export function banUser(userToBan: string, conversationId: string, deleteAllMess if (!roomInfos) { window.log.warn('banUser room not found'); } else { - success = await ApiV2.banUser(pubKeyToBan, _.pick(roomInfos, 'serverUrl', 'roomId'), deleteAllMessages); + success = await ApiV2.banUser( + pubKeyToBan, + _.pick(roomInfos, 'serverUrl', 'roomId'), + deleteAllMessages + ); } } else { throw new Error('V1 opengroup are not supported'); diff --git a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts index 0584a13fb..95677c7cb 100644 --- a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts +++ b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts @@ -268,7 +268,7 @@ export const banUser = async ( deleteAllMessages: boolean ): Promise => { const queryParams = { public_key: userToBan.key }; - const endPoint = (deleteAllMessages) ? 'ban_and_delete_all' : 'block_list'; + const endPoint = deleteAllMessages ? 'ban_and_delete_all' : 'block_list'; const request: OpenGroupV2Request = { method: 'POST', room: roomInfos.roomId, From fbe9f19c8172815594b9a7d47105bb4f25640819 Mon Sep 17 00:00:00 2001 From: Brice-W Date: Mon, 2 Aug 2021 14:15:11 +1000 Subject: [PATCH 3/3] typo --- ts/interactions/messageInteractions.ts | 4 ++-- ts/opengroup/opengroupV2/OpenGroupAPIV2.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ts/interactions/messageInteractions.ts b/ts/interactions/messageInteractions.ts index ffbe08806..fbe917ae3 100644 --- a/ts/interactions/messageInteractions.ts +++ b/ts/interactions/messageInteractions.ts @@ -34,8 +34,8 @@ export function banUser( : window.i18n('banUserConfirm'); const confirmationModalProps = { - title: title, - message: message, + title, + message, onClickClose, onClickOk: async () => { const conversation = getConversationController().get(conversationId); diff --git a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts index 95677c7cb..ee18cb8b9 100644 --- a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts +++ b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts @@ -268,14 +268,14 @@ export const banUser = async ( deleteAllMessages: boolean ): Promise => { const queryParams = { public_key: userToBan.key }; - const endPoint = deleteAllMessages ? 'ban_and_delete_all' : 'block_list'; + const endpoint = deleteAllMessages ? 'ban_and_delete_all' : 'block_list'; const request: OpenGroupV2Request = { method: 'POST', room: roomInfos.roomId, server: roomInfos.serverUrl, isAuthRequired: true, queryParams, - endpoint: endPoint, + endpoint, }; const banResult = await exports.sendApiV2Request(request); const isOk = parseStatusCodeFromOnionRequest(banResult) === 200;