From 557755a4c9059e57ebc7275b366886beb11b267f Mon Sep 17 00:00:00 2001 From: Jakub Zerko Date: Fri, 10 May 2024 13:07:12 +0200 Subject: [PATCH 1/2] fix: show last deleted message --- .../com/wire/kalium/logic/data/message/MessageContent.kt | 1 + .../com/wire/kalium/logic/data/message/MessageMapper.kt | 1 + .../db_user/com/wire/kalium/persistence/MessagePreview.sq | 2 +- .../wire/kalium/persistence/dao/message/MessageEntity.kt | 1 + .../wire/kalium/persistence/dao/message/MessageMapper.kt | 8 ++++++++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageContent.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageContent.kt index fdc06bd0a84..bddd948fa2b 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageContent.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageContent.kt @@ -500,6 +500,7 @@ sealed interface MessagePreviewContent { data class MissedCall(override val username: String?) : WithUser + data class Deleted(override val username: String?) : WithUser } data class Ephemeral(val isGroupConversation: Boolean) : MessagePreviewContent diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageMapper.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageMapper.kt index 2b2d64013a5..2d42ef44e51 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageMapper.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageMapper.kt @@ -533,6 +533,7 @@ private fun MessagePreviewEntityContent.toMessageContent(): MessagePreviewConten is MessagePreviewEntityContent.ConversationVerificationDegradedMls -> MessagePreviewContent.VerificationChanged.DegradedMls is MessagePreviewEntityContent.ConversationVerificationDegradedProteus -> MessagePreviewContent.VerificationChanged.DegradedProteus is MessagePreviewEntityContent.Location -> MessagePreviewContent.WithUser.Location(username = senderName) + is MessagePreviewEntityContent.Deleted -> MessagePreviewContent.WithUser.Deleted(username = senderName) } fun AssetTypeEntity.toModel(): AssetType = when (this) { diff --git a/persistence/src/commonMain/db_user/com/wire/kalium/persistence/MessagePreview.sq b/persistence/src/commonMain/db_user/com/wire/kalium/persistence/MessagePreview.sq index 95972d92701..f57c6006a50 100644 --- a/persistence/src/commonMain/db_user/com/wire/kalium/persistence/MessagePreview.sq +++ b/persistence/src/commonMain/db_user/com/wire/kalium/persistence/MessagePreview.sq @@ -50,7 +50,7 @@ SELECT * FROM MessagePreview AS message WHERE id IN ( SELECT id FROM Message WHERE - Message.visibility = 'VISIBLE' AND + Message.visibility IN ('VISIBLE', 'DELETED') AND Message.content_type IN ('TEXT', 'ASSET', 'KNOCK', 'MISSED_CALL', 'CONVERSATION_RENAMED', 'MEMBER_CHANGE', 'COMPOSITE', 'CONVERSATION_DEGRADED_MLS', 'CONVERSATION_DEGRADED_PROTEUS', 'CONVERSATION_VERIFIED_MLS', 'CONVERSATION_VERIFIED_PROTEUS', 'LOCATION') GROUP BY Message.conversation_id HAVING Message.creation_date = MAX(Message.creation_date) diff --git a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageEntity.kt b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageEntity.kt index bee87d40f2f..42c4406ecfc 100644 --- a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageEntity.kt +++ b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageEntity.kt @@ -380,6 +380,7 @@ data class NotificationMessageEntity( sealed class MessagePreviewEntityContent { + data class Deleted(val senderName: String?) : MessagePreviewEntityContent() data class Text(val senderName: String?, val messageBody: String) : MessagePreviewEntityContent() data class Composite(val senderName: String?, val messageBody: String?) : MessagePreviewEntityContent() diff --git a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt index 1e2328839ac..4f6dcb71970 100644 --- a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt +++ b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt @@ -43,6 +43,7 @@ object MessageMapper { @Suppress("ComplexMethod", "LongMethod") private fun toMessagePreviewEntityContent( contentType: MessageEntity.ContentType, + visibility: MessageEntity.Visibility, senderName: String?, isSelfMessage: Boolean, memberChangeList: List?, @@ -61,6 +62,7 @@ object MessageMapper { } else { mapContentType( contentType, + visibility, senderName, isSelfMessage, memberChangeList, @@ -79,6 +81,7 @@ object MessageMapper { @Suppress("LongMethod", "ComplexMethod") private fun mapContentType( contentType: MessageEntity.ContentType, + visibility: MessageEntity.Visibility, senderName: String?, isSelfMessage: Boolean, memberChangeList: List?, @@ -90,6 +93,10 @@ object MessageMapper { selfUserId: QualifiedIDEntity?, senderUserId: QualifiedIDEntity? ): MessagePreviewEntityContent { + if(visibility == MessageEntity.Visibility.DELETED) { + return MessagePreviewEntityContent.Deleted(senderName) + } + return when (contentType) { MessageEntity.ContentType.COMPOSITE -> MessagePreviewEntityContent.Composite( senderName = senderName, @@ -253,6 +260,7 @@ object MessageMapper { ): MessagePreviewEntity { val content = toMessagePreviewEntityContent( contentType = contentType, + visibility = visibility, senderName = senderName, isSelfMessage = isSelfMessage, memberChangeList = memberChangeList, From 6b9697f5d6ad4e85f24b0d019ffeeeb34bd4b377 Mon Sep 17 00:00:00 2001 From: Jakub Zerko Date: Fri, 10 May 2024 13:36:19 +0200 Subject: [PATCH 2/2] detekt fix --- .../com/wire/kalium/persistence/dao/message/MessageMapper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt index 4f6dcb71970..53b1a4f97b1 100644 --- a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt +++ b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageMapper.kt @@ -93,7 +93,7 @@ object MessageMapper { selfUserId: QualifiedIDEntity?, senderUserId: QualifiedIDEntity? ): MessagePreviewEntityContent { - if(visibility == MessageEntity.Visibility.DELETED) { + if (visibility == MessageEntity.Visibility.DELETED) { return MessagePreviewEntityContent.Deleted(senderName) }