From 67a3af3b6418e4e2c1543fd353d4833355b066ee Mon Sep 17 00:00:00 2001 From: Boris Safonov Date: Wed, 19 Jul 2023 14:09:13 +0300 Subject: [PATCH] feat: Inform user about degraded conversation verification status: review fixes --- .../kotlin/com/wire/kalium/logic/data/message/Message.kt | 4 ++-- .../com/wire/kalium/logic/data/message/MessageContent.kt | 4 ++-- .../com/wire/kalium/logic/data/message/MessageMapper.kt | 6 +++--- .../wire/kalium/logic/data/message/PersistMessageUseCase.kt | 2 +- .../conversation/ConversationVerificationStatusHandler.kt | 6 +++--- .../db_user/com/wire/kalium/persistence/Conversations.sq | 2 +- persistence/src/commonMain/db_user/migrations/50.sqm | 2 +- .../wire/kalium/persistence/dao/message/MessageEntity.kt | 4 ++-- .../persistence/dao/message/MessageInsertExtension.kt | 4 ++-- .../wire/kalium/persistence/dao/message/MessageMapper.kt | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/Message.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/Message.kt index 3318e299a38..0fe022024cb 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/Message.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/Message.kt @@ -291,8 +291,8 @@ sealed interface Message { typeKey to "mlsWrongEpochWarning" ) - is MessageContent.VerificationDegraded -> mutableMapOf( - typeKey to "verificationDegraded" + is MessageContent.ConversationDegraded -> mutableMapOf( + typeKey to "conversationDegraded" ) } 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 f57288bfb9c..0a5b3386703 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 @@ -241,7 +241,7 @@ sealed class MessageContent { object HistoryLost : System() object ConversationCreated : System() - data class VerificationDegraded(val protocol: Conversation.Protocol?) : System() + data class ConversationDegraded(val protocol: Conversation.Protocol?) : System() } /** @@ -281,7 +281,7 @@ fun MessageContent?.getType() = when (this) { is MessageContent.MemberChange.CreationAdded -> "MemberChange.CreationAdded" is MessageContent.MemberChange.FailedToAdd -> "MemberChange.FailedToAdd" is MessageContent.MLSWrongEpochWarning -> "MLSWrongEpochWarning" - is MessageContent.VerificationDegraded -> "Verification status degraded" + is MessageContent.ConversationDegraded -> "Verification status degraded" null -> "Unknown" } 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 62f8c9c902d..aba96600d16 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 @@ -261,7 +261,7 @@ class MessageMapperImpl( MessageEntity.ContentType.CONVERSATION_MESSAGE_TIMER_CHANGED -> null MessageEntity.ContentType.CONVERSATION_CREATED -> null MessageEntity.ContentType.MLS_WRONG_EPOCH_WARNING -> null - MessageEntity.ContentType.VERIFICATION_DEGRADED -> null + MessageEntity.ContentType.CONVERSATION_DEGRADED -> null } } @@ -360,7 +360,7 @@ class MessageMapperImpl( is MessageContent.ConversationMessageTimerChanged -> MessageEntityContent.ConversationMessageTimerChanged(messageTimer) is MessageContent.ConversationCreated -> MessageEntityContent.ConversationCreated is MessageContent.MLSWrongEpochWarning -> MessageEntityContent.MLSWrongEpochWarning - is MessageContent.VerificationDegraded -> MessageEntityContent.VerificationDegraded(conversationMapper.toDaoModel(protocol)) + is MessageContent.ConversationDegraded -> MessageEntityContent.ConversationDegraded(conversationMapper.toDaoModel(protocol)) } private fun MessageEntityContent.Regular.toMessageContent(hidden: Boolean): MessageContent.Regular = when (this) { @@ -448,7 +448,7 @@ class MessageMapperImpl( is MessageEntityContent.ConversationMessageTimerChanged -> MessageContent.ConversationMessageTimerChanged(messageTimer) is MessageEntityContent.ConversationCreated -> MessageContent.ConversationCreated is MessageEntityContent.MLSWrongEpochWarning -> MessageContent.MLSWrongEpochWarning - is MessageEntityContent.VerificationDegraded -> MessageContent.VerificationDegraded(conversationMapper.fromDaoModel(protocol)) + is MessageEntityContent.ConversationDegraded -> MessageContent.ConversationDegraded(conversationMapper.fromDaoModel(protocol)) } } diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/PersistMessageUseCase.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/PersistMessageUseCase.kt index 6a1103e9644..745c55086b5 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/PersistMessageUseCase.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/PersistMessageUseCase.kt @@ -97,6 +97,6 @@ internal class PersistMessageUseCaseImpl( is MessageContent.MemberChange.FailedToAdd -> false is MessageContent.ConversationCreated -> false is MessageContent.MLSWrongEpochWarning -> false - is MessageContent.VerificationDegraded -> false + is MessageContent.ConversationDegraded -> false } } diff --git a/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/conversation/ConversationVerificationStatusHandler.kt b/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/conversation/ConversationVerificationStatusHandler.kt index c30d08bd4bc..651b3cf2986 100644 --- a/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/conversation/ConversationVerificationStatusHandler.kt +++ b/logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/conversation/ConversationVerificationStatusHandler.kt @@ -52,9 +52,9 @@ internal class ConversationVerificationStatusHandlerImpl( override suspend fun invoke(conversation: Conversation, status: ConversationVerificationStatus): Unit = withContext(dispatcher) { if (shouldNotifyUser(conversation, status)) { - val verificationDegradedMessage = Message.System( + val conversationDegradedMessage = Message.System( id = uuid4().toString(), - content = MessageContent.VerificationDegraded(protocolInfoMapper.fromInfoToProtocol(conversation.protocol)), + content = MessageContent.ConversationDegraded(protocolInfoMapper.fromInfoToProtocol(conversation.protocol)), conversationId = conversation.id, date = DateTimeUtil.currentIsoDateTimeString(), senderUserId = selfUserId, @@ -63,7 +63,7 @@ internal class ConversationVerificationStatusHandlerImpl( expirationData = null ) - persistMessage(verificationDegradedMessage) + persistMessage(conversationDegradedMessage) .flatMap { conversationRepository.setInformedAboutDegradedMLSVerificationFlag(conversation.id, true) } } else { conversationRepository.setInformedAboutDegradedMLSVerificationFlag(conversation.id, false) diff --git a/persistence/src/commonMain/db_user/com/wire/kalium/persistence/Conversations.sq b/persistence/src/commonMain/db_user/com/wire/kalium/persistence/Conversations.sq index 774bc20428f..0df5d125d69 100644 --- a/persistence/src/commonMain/db_user/com/wire/kalium/persistence/Conversations.sq +++ b/persistence/src/commonMain/db_user/com/wire/kalium/persistence/Conversations.sq @@ -36,7 +36,7 @@ CREATE TABLE Conversation ( message_timer INTEGER DEFAULT(NULL), user_message_timer INTEGER DEFAULT(NULL), incomplete_metadata INTEGER AS Boolean NOT NULL DEFAULT 0, - informed_about_degraded_mls_verification INTEGER AS Boolean NOT NULL DEFAULT 0 + is_mls_degraded_notified INTEGER AS Boolean NOT NULL DEFAULT 0 ); -- Optimise comparisons and sorting by dates: diff --git a/persistence/src/commonMain/db_user/migrations/50.sqm b/persistence/src/commonMain/db_user/migrations/50.sqm index 114203df8f0..af73d0297f6 100644 --- a/persistence/src/commonMain/db_user/migrations/50.sqm +++ b/persistence/src/commonMain/db_user/migrations/50.sqm @@ -2,7 +2,7 @@ import com.wire.kalium.persistence.dao.QualifiedIDEntity; import com.wire.kalium.persistence.dao.message.RecipientFailureTypeEntity; import kotlin.collections.List; -ALTER TABLE Conversation ADD COLUMN informed_about_degraded_mls_verification INTEGER AS Boolean NOT NULL DEFAULT 0; +ALTER TABLE Conversation ADD COLUMN is_mls_degraded_notified INTEGER AS Boolean NOT NULL DEFAULT 0; DROP VIEW IF EXISTS MessageDetailsView; 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 2e846c8ea9d..10b81d5ff16 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 @@ -176,7 +176,7 @@ sealed interface MessageEntity { TEXT, ASSET, KNOCK, MEMBER_CHANGE, MISSED_CALL, RESTRICTED_ASSET, CONVERSATION_RENAMED, UNKNOWN, FAILED_DECRYPTION, REMOVED_FROM_TEAM, CRYPTO_SESSION_RESET, NEW_CONVERSATION_RECEIPT_MODE, CONVERSATION_RECEIPT_MODE_CHANGED, HISTORY_LOST, CONVERSATION_MESSAGE_TIMER_CHANGED, - CONVERSATION_CREATED, MLS_WRONG_EPOCH_WARNING, VERIFICATION_DEGRADED + CONVERSATION_CREATED, MLS_WRONG_EPOCH_WARNING, CONVERSATION_DEGRADED } enum class MemberChangeType { @@ -302,7 +302,7 @@ sealed class MessageEntityContent { data class ConversationMessageTimerChanged(val messageTimer: Long?) : System() object HistoryLost : System() object ConversationCreated : System() - data class VerificationDegraded(val protocol: ConversationEntity.Protocol?) : System() + data class ConversationDegraded(val protocol: ConversationEntity.Protocol?) : System() } /** diff --git a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageInsertExtension.kt b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageInsertExtension.kt index 8bee259601c..9958aeadfbb 100644 --- a/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageInsertExtension.kt +++ b/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageInsertExtension.kt @@ -227,7 +227,7 @@ internal class MessageInsertExtensionImpl( /* no-op */ } - is MessageEntityContent.VerificationDegraded -> { + is MessageEntityContent.ConversationDegraded -> { /* no-op */ } } @@ -326,6 +326,6 @@ internal class MessageInsertExtensionImpl( is MessageEntityContent.ConversationMessageTimerChanged -> MessageEntity.ContentType.CONVERSATION_MESSAGE_TIMER_CHANGED is MessageEntityContent.ConversationCreated -> MessageEntity.ContentType.CONVERSATION_CREATED is MessageEntityContent.MLSWrongEpochWarning -> MessageEntity.ContentType.MLS_WRONG_EPOCH_WARNING - is MessageEntityContent.VerificationDegraded -> MessageEntity.ContentType.VERIFICATION_DEGRADED + is MessageEntityContent.ConversationDegraded -> MessageEntity.ContentType.CONVERSATION_DEGRADED } } 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 c52b552d6b5..7bf8947a33c 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 @@ -186,7 +186,7 @@ object MessageMapper { MessageEntity.ContentType.CONVERSATION_MESSAGE_TIMER_CHANGED -> MessagePreviewEntityContent.Unknown MessageEntity.ContentType.CONVERSATION_CREATED -> MessagePreviewEntityContent.Unknown MessageEntity.ContentType.MLS_WRONG_EPOCH_WARNING -> MessagePreviewEntityContent.Unknown - MessageEntity.ContentType.VERIFICATION_DEGRADED -> MessagePreviewEntityContent.Unknown + MessageEntity.ContentType.CONVERSATION_DEGRADED -> MessagePreviewEntityContent.Unknown } } @@ -507,7 +507,7 @@ object MessageMapper { MessageEntity.ContentType.CONVERSATION_CREATED -> MessageEntityContent.ConversationCreated MessageEntity.ContentType.MLS_WRONG_EPOCH_WARNING -> MessageEntityContent.MLSWrongEpochWarning - MessageEntity.ContentType.VERIFICATION_DEGRADED -> MessageEntityContent.VerificationDegraded(conversationProtocol) + MessageEntity.ContentType.CONVERSATION_DEGRADED -> MessageEntityContent.ConversationDegraded(conversationProtocol) } return createMessageEntity(