Files
Doug 33f8ce2759 Fix a couple of missing UserStatus values. (#5944)
* Fix the missing UserStatus in RoomMemberProxy.

* Use the hero's status for a room's AvatarHeaderView.
2026-07-30 10:33:11 +01:00

64 lines
1.4 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2023-2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Foundation
import MatrixRustSDK
final nonisolated class RoomMemberProxy: RoomMemberProxyProtocol {
private let member: RoomMember
init(member: RoomMember) {
self.member = member
}
var userID: String {
member.userId
}
var displayName: String? {
member.displayName
}
var disambiguatedDisplayName: String? {
guard let displayName else {
return nil
}
return member.isNameAmbiguous ? "\(displayName) (\(userID))" : displayName
}
var avatarURL: URL? {
member.avatarUrl.flatMap(URL.init(string:))
}
var status: UserStatus {
UserStatus(rustStatus: member.status, rustCall: member.call)
}
var membership: MembershipState {
member.membership
}
var membershipChangeReason: String? {
member.membershipChangeReason
}
var isIgnored: Bool {
member.isIgnored
}
var powerLevel: RoomPowerLevel {
.init(rustPowerLevel: member.powerLevel)
}
// periphery:ignore - might be useful to have
var isServiceMember: Bool {
member.isServiceMember
}
}