mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
User verification state indicators (#3793)
* Introduce a `UserIdentityProxy` and have it combine upstream methods into an easy to digest `UserIdentityVerificationState`. Use it in a dedicated `VerificationBadge` UI component * Show a DMs counterpart verification state in the room header * Show a warning on the room details `People` entry when there are identity verification state violations on any of the members. * Show verification badges in the room member list * Show a withdraw verification section on the room member details for users that have pinning violations. * Remove the verification section from the profile screen as there's no reliable way to keep it up to date - the underlying Rust SDK Olm Machine can be rebuilt without notice which would break any existing user identity change streams. * Update preview test snapshots
This commit is contained in:
@@ -29,10 +29,15 @@ enum RoomMembersListScreenMode {
|
||||
case banned
|
||||
}
|
||||
|
||||
struct RoomMemberListScreenEntry: Equatable {
|
||||
let member: RoomMemberDetails
|
||||
let verificationState: UserIdentityVerificationState
|
||||
}
|
||||
|
||||
struct RoomMembersListScreenViewState: BindableState {
|
||||
private var joinedMembers: [RoomMemberDetails]
|
||||
private var invitedMembers: [RoomMemberDetails]
|
||||
private var bannedMembers: [RoomMemberDetails]
|
||||
private var joinedMembers: [RoomMemberListScreenEntry]
|
||||
private var invitedMembers: [RoomMemberListScreenEntry]
|
||||
private var bannedMembers: [RoomMemberListScreenEntry]
|
||||
|
||||
let joinedMembersCount: Int
|
||||
var bannedMembersCount: Int { bannedMembers.count }
|
||||
@@ -44,9 +49,9 @@ struct RoomMembersListScreenViewState: BindableState {
|
||||
var bindings: RoomMembersListScreenViewStateBindings
|
||||
|
||||
init(joinedMembersCount: Int,
|
||||
joinedMembers: [RoomMemberDetails] = [],
|
||||
invitedMembers: [RoomMemberDetails] = [],
|
||||
bannedMembers: [RoomMemberDetails] = [],
|
||||
joinedMembers: [RoomMemberListScreenEntry] = [],
|
||||
invitedMembers: [RoomMemberListScreenEntry] = [],
|
||||
bannedMembers: [RoomMemberListScreenEntry] = [],
|
||||
bindings: RoomMembersListScreenViewStateBindings) {
|
||||
self.joinedMembersCount = joinedMembersCount
|
||||
self.joinedMembers = joinedMembers
|
||||
@@ -55,19 +60,19 @@ struct RoomMembersListScreenViewState: BindableState {
|
||||
self.bindings = bindings
|
||||
}
|
||||
|
||||
var visibleJoinedMembers: [RoomMemberDetails] {
|
||||
var visibleJoinedMembers: [RoomMemberListScreenEntry] {
|
||||
joinedMembers
|
||||
.filter { $0.matches(searchQuery: bindings.searchQuery) }
|
||||
.filter { $0.member.matches(searchQuery: bindings.searchQuery) }
|
||||
}
|
||||
|
||||
var visibleInvitedMembers: [RoomMemberDetails] {
|
||||
var visibleInvitedMembers: [RoomMemberListScreenEntry] {
|
||||
invitedMembers
|
||||
.filter { $0.matches(searchQuery: bindings.searchQuery) }
|
||||
.filter { $0.member.matches(searchQuery: bindings.searchQuery) }
|
||||
}
|
||||
|
||||
var visibleBannedMembers: [RoomMemberDetails] {
|
||||
var visibleBannedMembers: [RoomMemberListScreenEntry] {
|
||||
bannedMembers
|
||||
.filter { $0.matches(searchQuery: bindings.searchQuery) }
|
||||
.filter { $0.member.matches(searchQuery: bindings.searchQuery) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user