From e5ee064678a278b0d621ec736877ed2271f0ba6d Mon Sep 17 00:00:00 2001 From: Vitor Hugo Schwaab Date: Fri, 12 Jan 2024 14:22:54 +0100 Subject: [PATCH] feat(mls): handle unsupported protocol case [WPB-5047] (#2579) --- .../home/messagecomposer/MessageComposer.kt | 40 +++++++++++++++++-- app/src/main/res/values/strings.xml | 3 ++ kalium | 2 +- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/MessageComposer.kt b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/MessageComposer.kt index 9489ea71c3..40bb12cbfa 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/MessageComposer.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/MessageComposer.kt @@ -42,7 +42,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.tooling.preview.Preview import com.wire.android.R import com.wire.android.ui.common.banner.SecurityClassificationBannerForConversation import com.wire.android.ui.common.bottomsheet.WireModalSheetState @@ -58,8 +57,10 @@ import com.wire.android.ui.home.messagecomposer.state.MessageComposition import com.wire.android.ui.home.messagecomposer.state.MessageCompositionHolder import com.wire.android.ui.home.messagecomposer.state.MessageCompositionInputStateHolder import com.wire.android.ui.home.messagecomposer.state.Ping +import com.wire.android.ui.theme.WireTheme import com.wire.android.ui.theme.wireColorScheme import com.wire.android.ui.theme.wireTypography +import com.wire.android.util.ui.PreviewMultipleThemes import com.wire.android.util.ui.stringWithStyledArgs import com.wire.kalium.logic.data.conversation.Conversation.TypingIndicatorMode import com.wire.kalium.logic.data.id.ConversationId @@ -109,6 +110,18 @@ fun MessageComposer( messageListContent = messageListContent ) + InteractionAvailability.UNSUPPORTED_PROTOCOL -> DisabledInteractionMessageComposer( + conversationId = conversationId, + warningText = LocalContext.current.resources.stringWithStyledArgs( + R.string.label_system_message_unsupported_protocol, + MaterialTheme.wireTypography.body01, + MaterialTheme.wireTypography.body02, + colorsScheme().secondaryText, + colorsScheme().onBackground, + ), + messageListContent = messageListContent + ) + InteractionAvailability.NOT_MEMBER, InteractionAvailability.DISABLED -> DisabledInteractionMessageComposer( conversationId = conversationId, warningText = null, @@ -195,10 +208,17 @@ private fun DisabledInteractionMessageComposer( } } -@Preview @Composable -fun MessageComposerPreview() { - val messageComposerViewState = remember { mutableStateOf(MessageComposerViewState()) } +private fun BaseComposerPreview( + interactionAvailability: InteractionAvailability = InteractionAvailability.ENABLED, +) = WireTheme { + val messageComposerViewState = remember { + mutableStateOf( + MessageComposerViewState( + interactionAvailability = interactionAvailability + ) + ) + } val messageComposition = remember { mutableStateOf(MessageComposition.DEFAULT) } val selfDeletionTimer = remember { mutableStateOf(SelfDeletionTimer.Enabled(Duration.ZERO)) } @@ -226,3 +246,15 @@ fun MessageComposerPreview() { onTypingEvent = { } ) } + +@PreviewMultipleThemes +@Composable +private fun UnsupportedProtocolComposerPreview() = WireTheme { + BaseComposerPreview(interactionAvailability = InteractionAvailability.UNSUPPORTED_PROTOCOL) +} + +@PreviewMultipleThemes +@Composable +private fun EnabledComposerPreview() = WireTheme { + BaseComposerPreview(interactionAvailability = InteractionAvailability.ENABLED) +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e351c0cf4..6a4749bd45 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -596,6 +596,9 @@ %1$s were removed from the team This user is no longer available + The conversation is using an encryption protocol that is + not supported by this device. Some devices from the involve users might need updating. + Read receipts are %1$s %1$s turned read receipts %2$s for everyone %1$s turned read receipts %2$s for everyone diff --git a/kalium b/kalium index 46924bb8e0..e9ab9c67d2 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 46924bb8e049740a71429c5adbcfbcffed9be22b +Subproject commit e9ab9c67d2cb3eb6dd9e115f966788aa0fb416ae