From 191febdcdba2b149859de8d72b41f3be387e66db Mon Sep 17 00:00:00 2001 From: VelikovPetar Date: Fri, 27 Mar 2026 20:58:52 +0100 Subject: [PATCH 1/2] Remove "Edit message" option from poll messages. --- .../util/extensions/MessageOptionItemVisibilityTest.kt | 8 ++++++++ .../chat/android/ui/common/utils/CapabilitiesHelper.kt | 3 ++- .../android/ui/common/utils/CapabilitiesHelperTest.kt | 8 ++++++++ .../list/internal/MessageListViewExtensionsKtTest.kt | 8 ++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt index 2fc144aed4d..16094c991ed 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt @@ -28,6 +28,7 @@ import io.getstream.chat.android.randomAttachment import io.getstream.chat.android.randomBoolean import io.getstream.chat.android.randomChannelCapabilities import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomPoll import io.getstream.chat.android.randomString import io.getstream.chat.android.randomSyncStatus import org.amshove.kluent.`should be` @@ -272,6 +273,13 @@ internal class MessageOptionItemVisibilityTest { randomChannelCapabilities(), false, ), + Arguments.of( + MessageOptionItemVisibility(), + currentUser.takeIf { randomBoolean() }, + randomMessage(poll = randomPoll(), command = null, sharedLocation = null), + randomChannelCapabilities(), + false, + ), Arguments.of( MessageOptionItemVisibility(), currentUser.takeIf { randomBoolean() }, diff --git a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelper.kt b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelper.kt index dae4338c95e..2a83cbbadcd 100644 --- a/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelper.kt +++ b/stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelper.kt @@ -21,6 +21,7 @@ package io.getstream.chat.android.ui.common.utils import io.getstream.chat.android.client.utils.attachment.isGiphy import io.getstream.chat.android.client.utils.message.hasSharedLocation import io.getstream.chat.android.client.utils.message.isDeleted +import io.getstream.chat.android.client.utils.message.isPoll import io.getstream.chat.android.client.utils.message.isThreadReply import io.getstream.chat.android.models.AttachmentType import io.getstream.chat.android.models.Channel @@ -132,7 +133,7 @@ public fun canEditMessage( ownCapabilities: Set, ): Boolean = editMessageEnabled && with(ownCapabilities) { ((message.isOwnMessage(currentUser) && canEditOwnMessage()) || canEditAnyMessage()) } && - !message.isGiphyCommand() && !message.hasSharedLocation() + !message.isGiphyCommand() && !message.isPoll() && !message.hasSharedLocation() /** * Determines whether the given message can be deleted. diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt index 2c0e64bd863..6f1442c6437 100644 --- a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt @@ -27,6 +27,7 @@ import io.getstream.chat.android.randomAttachment import io.getstream.chat.android.randomBoolean import io.getstream.chat.android.randomChannelCapabilities import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomPoll import io.getstream.chat.android.randomString import io.getstream.chat.android.randomSyncStatus import org.amshove.kluent.`should be` @@ -267,6 +268,13 @@ internal class CapabilitiesHelperTest { randomChannelCapabilities(), false, ), + Arguments.of( + randomBoolean(), + currentUser.takeIf { randomBoolean() }, + randomMessage(poll = randomPoll(), command = null, sharedLocation = null), + randomChannelCapabilities(), + false, + ), Arguments.of( randomBoolean(), currentUser.takeIf { randomBoolean() }, diff --git a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt index e3518973c30..9369b57ea4d 100644 --- a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt +++ b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt @@ -25,6 +25,7 @@ import io.getstream.chat.android.randomAttachment import io.getstream.chat.android.randomBoolean import io.getstream.chat.android.randomChannelCapabilities import io.getstream.chat.android.randomMessage +import io.getstream.chat.android.randomPoll import io.getstream.chat.android.randomString import io.getstream.chat.android.randomSyncStatus import io.getstream.chat.android.ui.feature.messages.list.MessageListViewStyle @@ -259,6 +260,13 @@ internal class MessageListViewExtensionsKtTest { randomChannelCapabilities(), false, ), + Arguments.of( + randomMessageListViewStyle(), + currentUser.takeIf { randomBoolean() }, + randomMessage(poll = randomPoll(), command = null, sharedLocation = null), + randomChannelCapabilities(), + false, + ), Arguments.of( randomMessageListViewStyle(), currentUser.takeIf { randomBoolean() }, From fe658f588494abe284bf26ca2bf0549af894fc5b Mon Sep 17 00:00:00 2001 From: VelikovPetar Date: Mon, 30 Mar 2026 16:01:54 +0200 Subject: [PATCH 2/2] Make poll edit test cases deterministic across all modules Force edit preconditions (visibility flag, user, capabilities) so poll presence is the sole blocking condition in canEditMessage test cases. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../util/extensions/MessageOptionItemVisibilityTest.kt | 6 +++--- .../chat/android/ui/common/utils/CapabilitiesHelperTest.kt | 6 +++--- .../list/internal/MessageListViewExtensionsKtTest.kt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt index 16094c991ed..3cd1e8e168d 100644 --- a/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt +++ b/stream-chat-android-compose/src/test/kotlin/io/getstream/chat/android/compose/util/extensions/MessageOptionItemVisibilityTest.kt @@ -274,10 +274,10 @@ internal class MessageOptionItemVisibilityTest { false, ), Arguments.of( - MessageOptionItemVisibility(), - currentUser.takeIf { randomBoolean() }, + MessageOptionItemVisibility(isEditMessageVisible = true), + currentUser, randomMessage(poll = randomPoll(), command = null, sharedLocation = null), - randomChannelCapabilities(), + randomChannelCapabilities(include = setOf(ChannelCapabilities.UPDATE_ANY_MESSAGE)), false, ), Arguments.of( diff --git a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt index 6f1442c6437..4aaaf654e3d 100644 --- a/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt +++ b/stream-chat-android-ui-common/src/test/kotlin/io/getstream/chat/android/ui/common/utils/CapabilitiesHelperTest.kt @@ -269,10 +269,10 @@ internal class CapabilitiesHelperTest { false, ), Arguments.of( - randomBoolean(), - currentUser.takeIf { randomBoolean() }, + true, + currentUser, randomMessage(poll = randomPoll(), command = null, sharedLocation = null), - randomChannelCapabilities(), + randomChannelCapabilities(include = setOf(ChannelCapabilities.UPDATE_ANY_MESSAGE)), false, ), Arguments.of( diff --git a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt index 9369b57ea4d..5afc193f12d 100644 --- a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt +++ b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/messages/list/internal/MessageListViewExtensionsKtTest.kt @@ -261,10 +261,10 @@ internal class MessageListViewExtensionsKtTest { false, ), Arguments.of( - randomMessageListViewStyle(), - currentUser.takeIf { randomBoolean() }, + randomMessageListViewStyle(editMessageEnabled = true), + currentUser, randomMessage(poll = randomPoll(), command = null, sharedLocation = null), - randomChannelCapabilities(), + randomChannelCapabilities(include = setOf(ChannelCapabilities.UPDATE_ANY_MESSAGE)), false, ), Arguments.of(