Skip to content

Commit 1e967de

Browse files
committed
Add verified and violation badge to the Profile list item in room details screen
1 parent 1901add commit 1e967de

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import io.element.android.features.roomcall.api.RoomCallState
1414
import io.element.android.features.roomcall.api.aStandByCallState
1515
import io.element.android.features.roomdetails.impl.members.aRoomMember
1616
import io.element.android.features.userprofile.api.UserProfileState
17+
import io.element.android.features.userprofile.api.UserProfileVerificationState
1718
import io.element.android.features.userprofile.shared.aUserProfileState
1819
import io.element.android.libraries.architecture.AsyncData
1920
import io.element.android.libraries.matrix.api.core.RoomAlias
@@ -51,6 +52,8 @@ open class RoomDetailsStateProvider : PreviewParameterProvider<RoomDetailsState>
5152
aRoomDetailsState(knockRequestsCount = null, canShowKnockRequests = true),
5253
aRoomDetailsState(knockRequestsCount = 4, canShowKnockRequests = true),
5354
aRoomDetailsState(hasMemberVerificationViolations = true),
55+
aDmRoomDetailsState(dmRoomMemberVerificationState = UserProfileVerificationState.VERIFIED),
56+
aDmRoomDetailsState(dmRoomMemberVerificationState = UserProfileVerificationState.VERIFICATION_VIOLATION),
5457
// Add other state here
5558
)
5659
}
@@ -155,6 +158,7 @@ fun aDmRoomDetailsState(
155158
isDmMemberIgnored: Boolean = false,
156159
roomName: String = "Daniel",
157160
isEncrypted: Boolean = true,
161+
dmRoomMemberVerificationState: UserProfileVerificationState = UserProfileVerificationState.UNKNOWN,
158162
) = aRoomDetailsState(
159163
roomName = roomName,
160164
isPublic = false,
@@ -165,5 +169,6 @@ fun aDmRoomDetailsState(
165169
),
166170
roomMemberDetailsState = aUserProfileState(
167171
isBlocked = AsyncData.Success(isDmMemberIgnored),
172+
verificationState = dmRoomMemberVerificationState,
168173
)
169174
)

features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import io.element.android.compound.theme.ElementTheme
3939
import io.element.android.compound.tokens.generated.CompoundIcons
4040
import io.element.android.features.leaveroom.api.LeaveRoomView
4141
import io.element.android.features.roomcall.api.hasPermissionToJoin
42+
import io.element.android.features.userprofile.api.UserProfileVerificationState
4243
import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs
4344
import io.element.android.features.userprofile.shared.blockuser.BlockUserSection
4445
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
@@ -189,7 +190,10 @@ fun RoomDetailsView(
189190
}
190191

191192
state.roomMemberDetailsState?.let { dmMemberDetails ->
192-
ProfileItem(onClick = { onProfileClick(dmMemberDetails.userId) })
193+
ProfileItem(
194+
verificationState = dmMemberDetails.verificationState,
195+
onClick = { onProfileClick(dmMemberDetails.userId) }
196+
)
193197
}
194198
}
195199

@@ -556,11 +560,23 @@ private fun FavoriteItem(
556560

557561
@Composable
558562
private fun ProfileItem(
563+
verificationState: UserProfileVerificationState,
559564
onClick: () -> Unit,
560565
) {
561566
ListItem(
562567
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.UserProfile())),
563568
headlineContent = { Text(stringResource(id = R.string.screen_room_details_profile_row_title)) },
569+
trailingContent = when (verificationState) {
570+
UserProfileVerificationState.VERIFIED -> ListItemContent.Icon(
571+
iconSource = IconSource.Vector(CompoundIcons.Verified()),
572+
tintColor = ElementTheme.colors.iconSuccessPrimary,
573+
)
574+
UserProfileVerificationState.VERIFICATION_VIOLATION -> ListItemContent.Icon(
575+
iconSource = IconSource.Vector(CompoundIcons.ErrorSolid()),
576+
tintColor = ElementTheme.colors.iconCriticalPrimary,
577+
)
578+
else -> null
579+
},
564580
onClick = onClick,
565581
)
566582
}

0 commit comments

Comments
 (0)