From bef1597fa1efd9b0bb31b7f365b00befb5ccae0a Mon Sep 17 00:00:00 2001 From: Evgeny Date: Fri, 9 Aug 2024 16:56:19 +0100 Subject: [PATCH] ui: fix when moderation for multiple items is enabled (#4642) * ios: fix when moderation for multiple items is enabled * same on Android * same --------- Co-authored-by: Avently <7953703+avently@users.noreply.github.com> --- .../ios/Shared/Views/Chat/SelectableChatItemToolbars.swift | 7 +++++-- .../common/views/chat/SelectableChatItemToolbars.kt | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/SelectableChatItemToolbars.swift b/apps/ios/Shared/Views/Chat/SelectableChatItemToolbars.swift index 497a1bf5b5..87bc73a60e 100644 --- a/apps/ios/Shared/Views/Chat/SelectableChatItemToolbars.swift +++ b/apps/ios/Shared/Views/Chat/SelectableChatItemToolbars.swift @@ -104,19 +104,22 @@ struct SelectedItemsBottomToolbar: View { allButtonsDisabled = count == 0 || count > 20 canModerate = possibleToModerate(chatInfo) if let selected = selectedItems { - (deleteEnabled, deleteForEveryoneEnabled, moderateEnabled, _, selectedChatItems) = chatItems.reduce((true, true, true, true, [])) { (r, ci) in + let me: Bool + let onlyOwnGroupItems: Bool + (deleteEnabled, deleteForEveryoneEnabled, me, onlyOwnGroupItems, selectedChatItems) = chatItems.reduce((true, true, true, true, [])) { (r, ci) in if selected.contains(ci.id) { var (de, dee, me, onlyOwnGroupItems, sel) = r de = de && ci.canBeDeletedForSelf dee = dee && ci.meta.deletable && !ci.localNote onlyOwnGroupItems = onlyOwnGroupItems && ci.chatDir == .groupSnd - me = me && !onlyOwnGroupItems && ci.content.msgContent != nil && ci.memberToModerate(chatInfo) != nil + me = me && ci.content.msgContent != nil && ci.memberToModerate(chatInfo) != nil sel.insert(ci.id) // we are collecting new selected items here to account for any changes in chat items list return (de, dee, me, onlyOwnGroupItems, sel) } else { return r } } + moderateEnabled = me && !onlyOwnGroupItems } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SelectableChatItemToolbars.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SelectableChatItemToolbars.kt index f3519e9f28..9934d853f3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SelectableChatItemToolbars.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SelectableChatItemToolbars.kt @@ -118,10 +118,11 @@ private fun recheckItems(chatInfo: ChatInfo, rDeleteEnabled = rDeleteEnabled && ci.canBeDeletedForSelf rDeleteForEveryoneEnabled = rDeleteForEveryoneEnabled && ci.meta.deletable && !ci.localNote rOnlyOwnGroupItems = rOnlyOwnGroupItems && ci.chatDir is CIDirection.GroupSnd - rModerateEnabled = rModerateEnabled && !rOnlyOwnGroupItems && ci.content.msgContent != null && ci.memberToModerate(chatInfo) != null + rModerateEnabled = rModerateEnabled && ci.content.msgContent != null && ci.memberToModerate(chatInfo) != null rSelectedChatItems.add(ci.id) // we are collecting new selected items here to account for any changes in chat items list } } + rModerateEnabled = rModerateEnabled && !rOnlyOwnGroupItems deleteEnabled.value = rDeleteEnabled deleteForEveryoneEnabled.value = rDeleteForEveryoneEnabled moderateEnabled.value = rModerateEnabled