From 67d5bf40fe3c6059faff11b9b11241f3e18302b0 Mon Sep 17 00:00:00 2001 From: Sergei Bakhtiarov Date: Fri, 31 Jul 2026 14:42:45 +0200 Subject: [PATCH] feat: show last message for group after receiving delete reminder (WPB-25285) --- .../mapper/MessagePreviewContentMapper.kt | 7 +++++++ app/src/main/res/values/strings.xml | 1 + .../mapper/MessagePreviewContentMapperTest.kt | 19 +++++++++++++++++++ kalium | 2 +- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt b/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt index 3a16da0e10d..fef708dcb5b 100644 --- a/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt +++ b/app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt @@ -43,6 +43,10 @@ fun MessagePreview?.toUIPreview( return UILastMessageContent.None } + if (content is MessagePreviewContent.AdminlessDeleteReminder) { + return uiLastMessageContent(uiTextResolver) + } + return when { // when unread event count is empty show last message unreadEventCount.isEmpty() -> uiLastMessageContent(uiTextResolver) @@ -414,6 +418,9 @@ fun MessagePreview.uiLastMessageContent(uiTextResolver: UiTextResolver): UILastM } MessagePreviewContent.CryptoSessionReset -> UILastMessageContent.None + MessagePreviewContent.AdminlessDeleteReminder -> UILastMessageContent.TextMessage( + MessageBody(UIText.StringResource(R.string.last_message_adminless_delete_reminder)) + ) MessagePreviewContent.VerificationChanged.VerifiedMls -> UILastMessageContent.VerificationChanged(R.string.last_message_verified_conversation_mls) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8d49cf15a9..0e6ae850e79 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1904,6 +1904,7 @@ In group conversations, the group admin can overwrite this setting. Added apps have access to the content of this conversation. You were promoted to group admin This group will be automatically deleted on %1$s, as there are no eligible group admins. + Will be deleted soon More information about this backend diff --git a/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt b/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt index b4c0f2e7627..7bec9506f1b 100644 --- a/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt +++ b/app/src/test/kotlin/com/wire/android/mapper/MessagePreviewContentMapperTest.kt @@ -49,6 +49,25 @@ class MessagePreviewContentMapperTest { override fun localeTag(): String = "test-locale" } + @Test + fun givenAdminlessDeleteReminder_whenMappingPreview_thenPendingDeleteSubtitleOverridesUnreadSummaries() = runTest { + val messagePreview = TestMessage.PREVIEW.copy( + content = MessagePreviewContent.AdminlessDeleteReminder + ) + val unreadCounts = listOf( + emptyMap(), + mapOf(UnreadEventType.MENTION to 2, UnreadEventType.MISSED_CALL to 3) + ) + + unreadCounts.forEach { unreadEventCount -> + val textMessage = messagePreview.toUIPreview(unreadEventCount, uiTextResolver) + .shouldBeInstanceOf() + val result = textMessage.messageBody.message.shouldBeInstanceOf() + + result.resId shouldBeEqualTo R.string.last_message_adminless_delete_reminder + } + } + @Test fun givenMultipleUnreadEvents_whenMappingToUIPreview_thenCorrectSortedUILastMessageContentShouldBeReturned() = runTest { val messagePreview = TestMessage.PREVIEW.copy( diff --git a/kalium b/kalium index 7056798774e..2c7db2379e4 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 7056798774ebcd741dd5a605d108f9bb26bf52b4 +Subproject commit 2c7db2379e4e6322f876d311d23dcfeafa7822f6