From 9512f7b0c73588e6c0f2c8777d3d6a25060f309b Mon Sep 17 00:00:00 2001 From: Sergei Bakhtiarov Date: Mon, 18 May 2026 20:45:45 +0200 Subject: [PATCH] chore: more generic event for user admin promotion (WPB-25283) --- .../mapper/SystemMessageContentMapper.kt | 11 ++++++--- .../mapper/SystemMessageContentMapperTest.kt | 24 ++++++++++++++++++- kalium | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt b/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt index bffa8351286..e942f2d0a03 100644 --- a/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt +++ b/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt @@ -52,7 +52,7 @@ class SystemMessageContentMapper @Inject constructor( fun mapMessage( message: Message.System, members: List - ): UIMessageContent = when (val content = message.content) { + ): UIMessageContent? = when (val content = message.content) { is MemberChange -> mapMemberChangeMessage(content, message.senderUserId, members) is MessageContent.MissedCall -> mapMissedCallMessage(message.senderUserId, members) is MessageContent.ConversationRenamed -> mapConversationRenamedMessage(message.senderUserId, content, members) @@ -231,7 +231,7 @@ class SystemMessageContentMapper @Inject constructor( content: MemberChange, senderUserId: UserId, userList: List - ): UIMessageContent.SystemMessage { + ): UIMessageContent.SystemMessage? { val sender = userList.findUser(userId = senderUserId) val isAuthorSelfAction = content.members.size == 1 && senderUserId == content.members.first() val isSelfTriggered = sender is SelfUser @@ -288,7 +288,12 @@ class SystemMessageContentMapper @Inject constructor( memberNames = memberNameList ) - is MemberChange.SelfUserPromotedToAdmin -> UIMessageContent.SystemMessage.SelfUserPromotedToAdmin + is MemberChange.UserPromotedToAdmin -> + if (content.members.any { userList.findUser(it) is SelfUser }) { + UIMessageContent.SystemMessage.SelfUserPromotedToAdmin + } else { + null + } } } diff --git a/app/src/test/kotlin/com/wire/android/mapper/SystemMessageContentMapperTest.kt b/app/src/test/kotlin/com/wire/android/mapper/SystemMessageContentMapperTest.kt index 5ce498d12c3..c9533eff2f9 100644 --- a/app/src/test/kotlin/com/wire/android/mapper/SystemMessageContentMapperTest.kt +++ b/app/src/test/kotlin/com/wire/android/mapper/SystemMessageContentMapperTest.kt @@ -136,7 +136,7 @@ class SystemMessageContentMapperTest { Locale.getDefault() ) - assertIs(resultConversationCreated) + assertIs(resultConversationCreated!!) assertEquals(10584735, (resultConversationCreated.author as UIText.StringResource).resId) assertEquals(expectedFormattedDate, resultConversationCreated.date) } @@ -203,6 +203,28 @@ class SystemMessageContentMapperTest { } } + @Test + fun givenSelfUserPromotedToAdminContent_whenMapping_thenReturnsSelfUserPromotedSystemMessage() { + val (_, mapper) = Arrangement().arrange() + val members = listOf(TestUser.SELF_USER, TestUser.OTHER_USER) + val content = MessageContent.MemberChange.UserPromotedToAdmin(listOf(TestUser.SELF_USER_ID)) + + val result = mapper.mapMemberChangeMessage(content, TestUser.SELF_USER_ID, members) + + assertEquals(SystemMessage.SelfUserPromotedToAdmin, result) + } + + @Test + fun givenOtherUserPromotedToAdminContent_whenMapping_thenReturnsNull() { + val (_, mapper) = Arrangement().arrange() + val members = listOf(TestUser.SELF_USER, TestUser.OTHER_USER) + val content = MessageContent.MemberChange.UserPromotedToAdmin(listOf(TestUser.OTHER_USER.id)) + + val result = mapper.mapMemberChangeMessage(content, TestUser.SELF_USER_ID, members) + + assertEquals(null, result) + } + @Test fun givenFederationStoppedRemoved_whenMappingToSystemMessage_thenCorrectValuesShouldBeReturned() = runTest { // Given diff --git a/kalium b/kalium index 9a0b40b5dc7..a35abcc5f71 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 9a0b40b5dc7cbf73dc156fc690222a18d4673759 +Subproject commit a35abcc5f7100ba0c5e4ea5ac08a599f7e698612