mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 12:07:55 +00:00
63 lines
1.3 KiB
Swift
63 lines
1.3 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()
|
|
}
|
|
|
|
var membership: MembershipState {
|
|
member.membership
|
|
}
|
|
|
|
var membershipChangeReason: String? {
|
|
member.membershipChangeReason
|
|
}
|
|
|
|
var isIgnored: Bool {
|
|
member.isIgnored
|
|
}
|
|
|
|
var powerLevel: RoomPowerLevel {
|
|
.init(rustPowerLevel: member.powerLevel)
|
|
}
|
|
|
|
var isServiceMember: Bool {
|
|
member.isServiceMember
|
|
}
|
|
}
|