From d3d6bf778e4fecc189915b7fa9475adb51bff748 Mon Sep 17 00:00:00 2001 From: boris Date: Fri, 13 Oct 2023 10:18:37 +0300 Subject: [PATCH] feat: User verification status Proteus (WPB-1775) (#2299) --- .../android/mapper/UIParticipantMapper.kt | 9 +++-- .../wire/android/migration/MigrationMapper.kt | 3 +- .../ui/authentication/devices/DeviceItem.kt | 31 ++-------------- .../ui/authentication/devices/model/Device.kt | 4 +-- .../wire/android/ui/common/VerifiedIcons.kt | 35 ++++++++++++++++++ .../topappbar/WireCenterAlignedTopAppBar.kt | 36 ++++++++++++++++--- .../ConversationParticipantItem.kt | 6 ++-- .../participants/model/UIParticipant.kt | 3 +- .../settings/devices/DeviceDetailsScreen.kt | 36 ++++++++++++++----- .../ui/userprofile/common/UserProfileInfo.kt | 32 ++++++++++------- .../other/OtherUserProfileScreen.kt | 3 +- .../other/OtherUserProfileScreenViewModel.kt | 1 + .../other/OtherUserProfileState.kt | 3 +- .../com/wire/android/framework/TestUser.kt | 3 +- .../mapper/RegularMessageContentMapperTest.kt | 3 +- .../android/mapper/UIParticipantMapperTest.kt | 3 +- .../home/gallery/MediaGalleryViewModelTest.kt | 3 +- .../NewConversationViewModelArrangement.kt | 6 ++-- .../OtherUserProfileScreenViewModelTest.kt | 3 +- kalium | 2 +- 20 files changed, 153 insertions(+), 72 deletions(-) create mode 100644 app/src/main/kotlin/com/wire/android/ui/common/VerifiedIcons.kt diff --git a/app/src/main/kotlin/com/wire/android/mapper/UIParticipantMapper.kt b/app/src/main/kotlin/com/wire/android/mapper/UIParticipantMapper.kt index 52233162583..c9f8ebac107 100644 --- a/app/src/main/kotlin/com/wire/android/mapper/UIParticipantMapper.kt +++ b/app/src/main/kotlin/com/wire/android/mapper/UIParticipantMapper.kt @@ -55,7 +55,8 @@ class UIParticipantMapper @Inject constructor( unavailable = unavailable, isDeleted = (user is OtherUser && user.deleted), botService = (user as? OtherUser)?.botService, - isDefederated = (user is OtherUser && user.defederated) + isDefederated = (user is OtherUser && user.defederated), + isProteusVerified = (user is OtherUser && user.isProteusVerified), ) } @@ -69,7 +70,8 @@ class UIParticipantMapper @Inject constructor( unavailable = !userSummary.isUserDeleted && userSummary.userName.orEmpty().isEmpty(), isDeleted = userSummary.isUserDeleted, isSelf = isSelfUser, - isDefederated = false + isDefederated = false, + isProteusVerified = false ) } @@ -84,7 +86,8 @@ class UIParticipantMapper @Inject constructor( isDeleted = userSummary.isUserDeleted, isSelf = false, readReceiptDate = date, - isDefederated = false + isDefederated = false, + isProteusVerified = false ) } diff --git a/app/src/main/kotlin/com/wire/android/migration/MigrationMapper.kt b/app/src/main/kotlin/com/wire/android/migration/MigrationMapper.kt index d135493d54d..8ddc9839182 100644 --- a/app/src/main/kotlin/com/wire/android/migration/MigrationMapper.kt +++ b/app/src/main/kotlin/com/wire/android/migration/MigrationMapper.kt @@ -231,7 +231,8 @@ class MigrationMapper @Inject constructor() { availabilityStatus = mapUserAvailabilityStatus(scalaUserData.availability), botService = botService, deleted = scalaUserData.deleted, - defederated = false + defederated = false, + isProteusVerified = false ) } } diff --git a/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt b/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt index 20d962fa787..6f4a29d8361 100644 --- a/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt +++ b/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt @@ -21,9 +21,7 @@ package com.wire.android.ui.authentication.devices import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row @@ -49,7 +47,6 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp @@ -57,6 +54,7 @@ import com.wire.android.BuildConfig import com.wire.android.R import com.wire.android.ui.authentication.devices.model.Device import com.wire.android.ui.authentication.devices.model.lastActiveDescription +import com.wire.android.ui.common.ProteusVerifiedIcon import com.wire.android.ui.common.button.WireSecondaryButton import com.wire.android.ui.common.button.getMinTouchMargins import com.wire.android.ui.common.button.wireSecondaryButtonColors @@ -185,7 +183,7 @@ private fun DeviceItemTexts( ) if (shouldShowVerifyLabel) { Spacer(modifier = Modifier.width(MaterialTheme.wireDimensions.spacing8x)) - VerifyLabel(device.isVerified, Modifier.wrapContentWidth()) + if (device.isVerifiedProteus) ProteusVerifiedIcon(Modifier.wrapContentWidth()) } } @@ -249,35 +247,12 @@ private fun DeviceItemTexts( ) } -@Composable -fun VerifyLabel(isVerified: Boolean, modifier: Modifier = Modifier) { - Box( - modifier = modifier.border( - width = MaterialTheme.wireDimensions.spacing1x, - shape = RoundedCornerShape(MaterialTheme.wireDimensions.spacing4x), - color = if (isVerified) MaterialTheme.wireColorScheme.primary else MaterialTheme.wireColorScheme.secondaryText, - ) - ) { - Text( - text = stringResource(id = if (isVerified) R.string.label_client_verified else R.string.label_client_unverified), - color = if (isVerified) MaterialTheme.wireColorScheme.primary else MaterialTheme.wireColorScheme.secondaryText, - style = MaterialTheme.wireTypography.label03, - textAlign = TextAlign.Center, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - modifier = Modifier - .wrapContentWidth() - .padding(horizontal = MaterialTheme.wireDimensions.spacing4x, vertical = MaterialTheme.wireDimensions.spacing2x) - ) - } -} - @PreviewMultipleThemes @Composable fun PreviewDeviceItem() { WireTheme { DeviceItem( - device = Device(name = UIText.DynamicString("name")), + device = Device(name = UIText.DynamicString("name"), isVerifiedProteus = true), placeholder = false, shouldShowVerifyLabel = true, background = null, diff --git a/app/src/main/kotlin/com/wire/android/ui/authentication/devices/model/Device.kt b/app/src/main/kotlin/com/wire/android/ui/authentication/devices/model/Device.kt index f0b350f2d3a..ca248be821b 100644 --- a/app/src/main/kotlin/com/wire/android/ui/authentication/devices/model/Device.kt +++ b/app/src/main/kotlin/com/wire/android/ui/authentication/devices/model/Device.kt @@ -38,7 +38,7 @@ data class Device( val registrationTime: String? = null, val lastActiveInWholeWeeks: Int? = null, val isValid: Boolean = true, - val isVerified: Boolean = false, + val isVerifiedProteus: Boolean = false, val mlsPublicKeys: Map? = null ) { constructor(client: Client) : this( @@ -47,7 +47,7 @@ data class Device( registrationTime = client.registrationTime?.toIsoDateTimeString(), lastActiveInWholeWeeks = client.lastActiveInWholeWeeks(), isValid = client.isValid, - isVerified = client.isVerified, + isVerifiedProteus = client.isVerified, mlsPublicKeys = client.mlsPublicKeys ) } diff --git a/app/src/main/kotlin/com/wire/android/ui/common/VerifiedIcons.kt b/app/src/main/kotlin/com/wire/android/ui/common/VerifiedIcons.kt new file mode 100644 index 00000000000..a79f3740bee --- /dev/null +++ b/app/src/main/kotlin/com/wire/android/ui/common/VerifiedIcons.kt @@ -0,0 +1,35 @@ +/* + * Wire + * Copyright (C) 2023 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ +package com.wire.android.ui.common + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import com.wire.android.R + +@Composable +fun ProteusVerifiedIcon(modifier: Modifier = Modifier) { + Image( + modifier = modifier.padding(start = dimensions().spacing4x), + painter = painterResource(id = R.drawable.ic_certificate_valid_proteus), + contentDescription = stringResource(R.string.label_client_verified) + ) +} diff --git a/app/src/main/kotlin/com/wire/android/ui/common/topappbar/WireCenterAlignedTopAppBar.kt b/app/src/main/kotlin/com/wire/android/ui/common/topappbar/WireCenterAlignedTopAppBar.kt index 8c6d497f636..93847b255d7 100644 --- a/app/src/main/kotlin/com/wire/android/ui/common/topappbar/WireCenterAlignedTopAppBar.kt +++ b/app/src/main/kotlin/com/wire/android/ui/common/topappbar/WireCenterAlignedTopAppBar.kt @@ -52,6 +52,36 @@ fun WireCenterAlignedTopAppBar( actions: @Composable RowScope.() -> Unit = {}, modifier: Modifier = Modifier, bottomContent: @Composable ColumnScope.() -> Unit = {} +) { + WireCenterAlignedTopAppBar( + titleContent = { + WireTopAppBarTitle( + title = title, + style = titleStyle, + maxLines = maxLines + ) + }, + subtitleContent = subtitleContent, + onNavigationPressed = onNavigationPressed, + navigationIconType = navigationIconType, + elevation = elevation, + actions = actions, + modifier = modifier, + bottomContent = bottomContent + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun WireCenterAlignedTopAppBar( + titleContent: @Composable ColumnScope.() -> Unit, + subtitleContent: @Composable ColumnScope.() -> Unit = {}, + onNavigationPressed: () -> Unit = {}, + navigationIconType: NavigationIconType? = NavigationIconType.Back, + elevation: Dp = MaterialTheme.wireDimensions.topBarShadowElevation, + actions: @Composable RowScope.() -> Unit = {}, + modifier: Modifier = Modifier, + bottomContent: @Composable ColumnScope.() -> Unit = {} ) { Surface( modifier = modifier, @@ -62,11 +92,7 @@ fun WireCenterAlignedTopAppBar( CenterAlignedTopAppBar( title = { Column(horizontalAlignment = Alignment.CenterHorizontally) { - WireTopAppBarTitle( - title = title, - style = titleStyle, - maxLines = maxLines - ) + titleContent() subtitleContent() } }, diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/ConversationParticipantItem.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/ConversationParticipantItem.kt index ca58967fc15..a4f603b8cda 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/ConversationParticipantItem.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/ConversationParticipantItem.kt @@ -35,6 +35,7 @@ import com.wire.android.R import com.wire.android.model.Clickable import com.wire.android.model.UserAvatarData import com.wire.android.ui.common.ArrowRightIcon +import com.wire.android.ui.common.ProteusVerifiedIcon import com.wire.android.ui.common.RowItemTemplate import com.wire.android.ui.common.UserBadge import com.wire.android.ui.common.UserProfileAvatar @@ -92,8 +93,9 @@ fun ConversationParticipantItem( startPadding = dimensions().spacing6x, isDeleted = uiParticipant.isDeleted ) - } + if (uiParticipant.isProteusVerified) ProteusVerifiedIcon() + } }, subtitle = { HighlightSubtitle( @@ -125,7 +127,7 @@ fun ConversationParticipantItem( @Composable fun PreviewGroupConversationParticipantItem() { ConversationParticipantItem( - UIParticipant(UserId("0", ""), "name", "handle", false, false, UserAvatarData(), Membership.Guest), + UIParticipant(UserId("0", ""), "name", "handle", false, false, UserAvatarData(), Membership.Guest, isProteusVerified = true), clickable = Clickable(enabled = true) {} ) } diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/model/UIParticipant.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/model/UIParticipant.kt index 38e5351f297..eec25b9a54c 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/model/UIParticipant.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/model/UIParticipant.kt @@ -40,5 +40,6 @@ data class UIParticipant( val isDeleted: Boolean = false, val readReceiptDate: Instant? = null, val botService: BotService? = null, - val isDefederated: Boolean = false + val isDefederated: Boolean = false, + val isProteusVerified: Boolean = false ) diff --git a/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt b/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt index 2164d15a1a6..5f962dd030a 100644 --- a/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt +++ b/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt @@ -41,6 +41,7 @@ import com.wire.android.ui.authentication.devices.remove.RemoveDeviceDialog import com.wire.android.ui.authentication.devices.remove.RemoveDeviceDialogState import com.wire.android.ui.authentication.devices.remove.RemoveDeviceError import com.wire.android.ui.common.CopyButton +import com.wire.android.ui.common.ProteusVerifiedIcon import com.wire.android.ui.common.WireDialog import com.wire.android.ui.common.WireDialogButtonProperties import com.wire.android.ui.common.WireDialogButtonType @@ -52,6 +53,7 @@ import com.wire.android.ui.common.colorsScheme import com.wire.android.ui.common.dimensions import com.wire.android.ui.common.scaffold.WireScaffold import com.wire.android.ui.common.topappbar.WireCenterAlignedTopAppBar +import com.wire.android.ui.common.topappbar.WireTopAppBarTitle import com.wire.android.ui.home.conversationslist.common.FolderHeader import com.wire.android.ui.settings.devices.model.DeviceDetailsState import com.wire.android.ui.theme.wireColorScheme @@ -102,13 +104,7 @@ fun DeviceDetailsContent( ) { val screenState = rememberConversationScreenState() WireScaffold( - topBar = { - WireCenterAlignedTopAppBar( - onNavigationPressed = onNavigateBack, - elevation = 0.dp, - title = state.device.name.asString() - ) - }, + topBar = { DeviceDetailsTopBar(onNavigateBack, state.device, state.isCurrentDevice) }, bottomBar = { Column( Modifier @@ -195,7 +191,7 @@ fun DeviceDetailsContent( if (!state.isCurrentDevice) { item { DeviceVerificationItem( - state.device.isVerified, + state.device.isVerifiedProteus, state.fingerPrint != null, state.isSelfClient, state.userName, @@ -231,6 +227,30 @@ fun DeviceDetailsContent( } } +@Composable +private fun DeviceDetailsTopBar( + onNavigateBack: () -> Unit, + device: Device, + isCurrentDevice: Boolean +) { + WireCenterAlignedTopAppBar( + onNavigationPressed = onNavigateBack, + elevation = 0.dp, + titleContent = { + Row { + WireTopAppBarTitle( + title = device.name.asString(), + style = MaterialTheme.wireTypography.title01, + maxLines = 2 + ) + if (!isCurrentDevice && device.isVerifiedProteus) { + ProteusVerifiedIcon() + } + } + } + ) +} + @Composable private fun DeviceIdItem(state: DeviceDetailsState, onCopy: (String) -> Unit) { DeviceDetailSectionContent( diff --git a/app/src/main/kotlin/com/wire/android/ui/userprofile/common/UserProfileInfo.kt b/app/src/main/kotlin/com/wire/android/ui/userprofile/common/UserProfileInfo.kt index 7aca19fe209..ecfa398f3e6 100644 --- a/app/src/main/kotlin/com/wire/android/ui/userprofile/common/UserProfileInfo.kt +++ b/app/src/main/kotlin/com/wire/android/ui/userprofile/common/UserProfileInfo.kt @@ -27,9 +27,9 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.shape.CircleShape @@ -56,6 +56,7 @@ import com.wire.android.model.Clickable import com.wire.android.model.ImageAsset.UserAvatarAsset import com.wire.android.model.UserAvatarData import com.wire.android.ui.common.Icon +import com.wire.android.ui.common.ProteusVerifiedIcon import com.wire.android.ui.common.UserBadge import com.wire.android.ui.common.UserProfileAvatar import com.wire.android.ui.common.banner.SecurityClassificationBannerForUser @@ -87,6 +88,7 @@ fun UserProfileInfo( modifier: Modifier = Modifier, connection: ConnectionState = ConnectionState.ACCEPTED, delayToShowPlaceholderIfNoAsset: Duration = 200.milliseconds, + isProteusVerified: Boolean = false ) { Column( horizontalAlignment = CenterHorizontally, @@ -163,16 +165,21 @@ fun UserProfileInfo( end.linkTo(parent.end) } ) { - Text( - text = fullName.ifBlank { - if (isLoading) "" - else UIText.StringResource(R.string.username_unavailable_label).asString() - }, - overflow = TextOverflow.Ellipsis, - maxLines = 1, - style = MaterialTheme.wireTypography.title02, - color = if (fullName.isNotBlank()) MaterialTheme.colorScheme.onBackground else MaterialTheme.wireColorScheme.labelText - ) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = fullName.ifBlank { + if (isLoading) "" + else UIText.StringResource(R.string.username_unavailable_label).asString() + }, + overflow = TextOverflow.Ellipsis, + maxLines = 1, + style = MaterialTheme.wireTypography.title02, + color = if (fullName.isNotBlank()) MaterialTheme.colorScheme.onBackground + else MaterialTheme.wireColorScheme.labelText + ) + + if (isProteusVerified) ProteusVerifiedIcon() + } Text( text = if (membership == Membership.Service) userName else userName.ifNotEmpty { "@$userName" }, overflow = TextOverflow.Ellipsis, @@ -261,6 +268,7 @@ fun PreviewUserProfileInfo() { fullName = "fullName", onUserProfileClick = {}, teamName = "Wire", - connection = ConnectionState.ACCEPTED + connection = ConnectionState.ACCEPTED, + isProteusVerified = true ) } diff --git a/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreen.kt b/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreen.kt index f3b5f43b302..c7d3e2c0480 100644 --- a/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreen.kt +++ b/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreen.kt @@ -357,7 +357,8 @@ private fun TopBarCollapsing(state: OtherUserProfileState) { membership = targetState.membership, editableState = EditableState.NotEditable, modifier = Modifier.padding(bottom = dimensions().spacing16x), - connection = targetState.connectionState + connection = targetState.connectionState, + isProteusVerified = targetState.isProteusVerified ) } } diff --git a/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModel.kt index 64af56a2b3b..c6cc450170b 100644 --- a/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModel.kt @@ -366,6 +366,7 @@ class OtherUserProfileScreenViewModel @Inject constructor( groupState = groupInfo, botService = otherUser.botService, blockingState = otherUser.BlockState, + isProteusVerified = otherUser.isProteusVerified, conversationSheetContent = conversation?.let { ConversationSheetContent( title = otherUser.name.orEmpty(), diff --git a/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileState.kt b/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileState.kt index cedaf293c99..f67f21c7512 100644 --- a/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileState.kt +++ b/app/src/main/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileState.kt @@ -49,7 +49,8 @@ data class OtherUserProfileState( val botService: BotService? = null, val conversationSheetContent: ConversationSheetContent? = null, val otherUserDevices: List = listOf(), - val blockingState: BlockingState = BlockingState.CAN_NOT_BE_BLOCKED + val blockingState: BlockingState = BlockingState.CAN_NOT_BE_BLOCKED, + val isProteusVerified: Boolean = false ) { fun updateMuteStatus(status: MutedConversationStatus): OtherUserProfileState { return conversationSheetContent?.let { diff --git a/app/src/test/kotlin/com/wire/android/framework/TestUser.kt b/app/src/test/kotlin/com/wire/android/framework/TestUser.kt index 153f91920ff..f159b35cc4f 100644 --- a/app/src/test/kotlin/com/wire/android/framework/TestUser.kt +++ b/app/src/test/kotlin/com/wire/android/framework/TestUser.kt @@ -63,7 +63,8 @@ object TestUser { userType = UserType.INTERNAL, botService = null, deleted = false, - defederated = false + defederated = false, + isProteusVerified = false ) val MEMBER_SELF = MemberDetails(SELF_USER, Member.Role.Admin) val MEMBER_OTHER = MemberDetails(OTHER_USER, Member.Role.Member) diff --git a/app/src/test/kotlin/com/wire/android/mapper/RegularMessageContentMapperTest.kt b/app/src/test/kotlin/com/wire/android/mapper/RegularMessageContentMapperTest.kt index eae82d75a60..a11de60884b 100644 --- a/app/src/test/kotlin/com/wire/android/mapper/RegularMessageContentMapperTest.kt +++ b/app/src/test/kotlin/com/wire/android/mapper/RegularMessageContentMapperTest.kt @@ -284,7 +284,8 @@ class RegularMessageContentMapperTest { userType = UserType.FEDERATED, botService = null, deleted = false, - defederated = false + defederated = false, + isProteusVerified = false ) val userMembers = listOf(TestUser.MEMBER_SELF.user, TestUser.MEMBER_OTHER.user) diff --git a/app/src/test/kotlin/com/wire/android/mapper/UIParticipantMapperTest.kt b/app/src/test/kotlin/com/wire/android/mapper/UIParticipantMapperTest.kt index 6ce8ba62a8b..451504821ce 100644 --- a/app/src/test/kotlin/com/wire/android/mapper/UIParticipantMapperTest.kt +++ b/app/src/test/kotlin/com/wire/android/mapper/UIParticipantMapperTest.kt @@ -159,7 +159,8 @@ fun testOtherUser(i: Int): OtherUser = OtherUser( userType = UserType.INTERNAL, botService = null, deleted = false, - defederated = false + defederated = false, + isProteusVerified = false ) fun testUIParticipant(i: Int): UIParticipant = UIParticipant( diff --git a/app/src/test/kotlin/com/wire/android/ui/home/gallery/MediaGalleryViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/gallery/MediaGalleryViewModelTest.kt index 9b908f80c12..d9edc63d8f9 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/gallery/MediaGalleryViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/gallery/MediaGalleryViewModelTest.kt @@ -314,7 +314,8 @@ class MediaGalleryViewModelTest { UserAvailabilityStatus.AVAILABLE, null, false, - defederated = false + defederated = false, + isProteusVerified = false ), legalHoldStatus = LegalHoldStatus.DISABLED, userType = UserType.INTERNAL, diff --git a/app/src/test/kotlin/com/wire/android/ui/home/newconversation/NewConversationViewModelArrangement.kt b/app/src/test/kotlin/com/wire/android/ui/home/newconversation/NewConversationViewModelArrangement.kt index bd4769198e8..35f3130e169 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/newconversation/NewConversationViewModelArrangement.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/newconversation/NewConversationViewModelArrangement.kt @@ -176,7 +176,8 @@ internal class NewConversationViewModelArrangement { userType = UserType.FEDERATED, botService = null, deleted = false, - defederated = false + defederated = false, + isProteusVerified = false ) val FEDERATED_KNOWN_USER = OtherUser( @@ -194,7 +195,8 @@ internal class NewConversationViewModelArrangement { userType = UserType.FEDERATED, botService = null, deleted = false, - defederated = false + defederated = false, + isProteusVerified = false ) } diff --git a/app/src/test/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModelTest.kt index 551d2b5cce3..a45a035c8a2 100644 --- a/app/src/test/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/userprofile/other/OtherUserProfileScreenViewModelTest.kt @@ -222,7 +222,8 @@ class OtherUserProfileScreenViewModelTest { availabilityStatus = UserAvailabilityStatus.AVAILABLE, botService = null, deleted = false, - defederated = false + defederated = false, + isProteusVerified = false ) val TEAM = Team("some_id", "name", "icon") val CONVERSATION = Conversation( diff --git a/kalium b/kalium index c923de5011c..675404c3212 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit c923de5011c82c1d12e54740c06ea6b9d7f0a636 +Subproject commit 675404c32125485fc04817618e9f9f7a1efe3374