feat(admin): enable admins to delete messages from other users

Fixes #8869
This commit is contained in:
Jonathan Rainville 2022-12-26 11:25:16 -05:00
parent fe87cbaada
commit 29450d34a7
3 changed files with 8 additions and 9 deletions

View File

@ -57,7 +57,7 @@ Item {
return return
} }
if (chatDetails.active && chatDetails.hasUnreadMessages && !messageStore.messageSearchOngoing) { if (chatDetails && chatDetails.active && chatDetails.hasUnreadMessages && !messageStore.messageSearchOngoing) {
chatContentModule.markAllMessagesRead() chatContentModule.markAllMessagesRead()
} }
} }

View File

@ -431,7 +431,7 @@ StatusMenu {
StatusAction { StatusAction {
id: deleteMessageAction id: deleteMessageAction
enabled: root.isMyMessage && enabled: (root.isMyMessage || root.amIChatAdmin) &&
!root.isProfile && !root.isProfile &&
!root.isEmoji && !root.isEmoji &&
!root.pinnedPopup && !root.pinnedPopup &&

View File

@ -46,6 +46,7 @@ Loader {
property bool senderIsEnsVerified: false property bool senderIsEnsVerified: false
property string senderIcon: "" property string senderIcon: ""
property bool amISender: false property bool amISender: false
property bool amIChatAdmin: messageStore && messageStore.amIChatAdmin()
property bool senderIsAdded: false property bool senderIsAdded: false
property int senderTrustStatus: Constants.trustStatus.unknown property int senderTrustStatus: Constants.trustStatus.unknown
property string messageText: "" property string messageText: ""
@ -133,7 +134,7 @@ Loader {
} }
messageContextMenu.myPublicKey = userProfile.pubKey messageContextMenu.myPublicKey = userProfile.pubKey
messageContextMenu.amIChatAdmin = messageStore.amIChatAdmin() messageContextMenu.amIChatAdmin = root.amIChatAdmin
messageContextMenu.pinMessageAllowedForMembers = messageStore.pinMessageAllowedForMembers() messageContextMenu.pinMessageAllowedForMembers = messageStore.pinMessageAllowedForMembers()
messageContextMenu.chatType = messageStore.getChatType() messageContextMenu.chatType = messageStore.getChatType()
@ -333,7 +334,7 @@ Loader {
chatType: root.messageStore.getChatType() chatType: root.messageStore.getChatType()
chatColor: root.messageStore.getChatColor() chatColor: root.messageStore.getChatColor()
chatEmoji: root.channelEmoji chatEmoji: root.channelEmoji
amIChatAdmin: root.messageStore.amIChatAdmin() amIChatAdmin: root.amIChatAdmin
chatIcon: { chatIcon: {
if ((root.messageStore.getChatType() === Constants.chatType.privateGroupChat) && if ((root.messageStore.getChatType() === Constants.chatType.privateGroupChat) &&
root.messageStore.getChatIcon() !== "") { root.messageStore.getChatIcon() !== "") {
@ -838,12 +839,11 @@ Loader {
return false return false
const chatType = root.messageStore.getChatType(); const chatType = root.messageStore.getChatType();
const amIChatAdmin = root.messageStore.amIChatAdmin();
const pinMessageAllowedForMembers = root.messageStore.pinMessageAllowedForMembers() const pinMessageAllowedForMembers = root.messageStore.pinMessageAllowedForMembers()
return chatType === Constants.chatType.oneToOne || return chatType === Constants.chatType.oneToOne ||
chatType === Constants.chatType.privateGroupChat && amIChatAdmin || chatType === Constants.chatType.privateGroupChat && root.amIChatAdmin ||
chatType === Constants.chatType.communityChat && (amIChatAdmin || pinMessageAllowedForMembers); chatType === Constants.chatType.communityChat && (root.amIChatAdmin || pinMessageAllowedForMembers);
} }
sourceComponent: StatusFlatRoundButton { sourceComponent: StatusFlatRoundButton {
@ -884,9 +884,8 @@ Loader {
return false; return false;
if (!root.messageStore) if (!root.messageStore)
return false; return false;
const isMyMessage = senderId !== "" && senderId === userProfile.pubKey;
const chatType = root.messageStore.getChatType(); const chatType = root.messageStore.getChatType();
return isMyMessage && return (root.amISender || root.amIChatAdmin) &&
(messageContentType === Constants.messageContentType.messageType || (messageContentType === Constants.messageContentType.messageType ||
messageContentType === Constants.messageContentType.stickerType || messageContentType === Constants.messageContentType.stickerType ||
messageContentType === Constants.messageContentType.emojiType || messageContentType === Constants.messageContentType.emojiType ||