mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Update the SDK and handle breaking changes. (#2527)
This commit is contained in:
@@ -22,7 +22,7 @@ struct RoomMemberDetails: Identifiable, Hashable {
|
||||
let name: String?
|
||||
let avatarURL: URL?
|
||||
let permalink: URL?
|
||||
let isAccountOwner: Bool
|
||||
|
||||
var isIgnored: Bool
|
||||
var isBanned: Bool
|
||||
|
||||
@@ -36,7 +36,7 @@ extension RoomMemberDetails {
|
||||
name = proxy.displayName
|
||||
avatarURL = proxy.avatarURL
|
||||
permalink = proxy.permalink
|
||||
isAccountOwner = proxy.isAccountOwner
|
||||
|
||||
isIgnored = proxy.isIgnored
|
||||
isBanned = proxy.membership == .ban
|
||||
role = .init(proxy.role)
|
||||
@@ -47,7 +47,7 @@ extension RoomMemberDetails {
|
||||
name = nil
|
||||
avatarURL = nil
|
||||
permalink = nil
|
||||
isAccountOwner = false
|
||||
|
||||
isIgnored = false
|
||||
isBanned = false
|
||||
role = .user
|
||||
|
||||
@@ -19,69 +19,25 @@ import MatrixRustSDK
|
||||
|
||||
final class RoomMemberProxy: RoomMemberProxyProtocol {
|
||||
private let backgroundTaskService: BackgroundTaskServiceProtocol
|
||||
private let member: RoomMemberProtocol
|
||||
|
||||
private let member: RoomMember
|
||||
|
||||
private let backgroundAccountDataTaskName = "SendAccountDataEvent"
|
||||
private var sendAccountDataEventBackgroundTask: BackgroundTaskProtocol?
|
||||
|
||||
|
||||
private let userInitiatedDispatchQueue = DispatchQueue(label: "io.element.elementx.roommemberproxy.userinitiated", qos: .userInitiated)
|
||||
|
||||
init(member: RoomMemberProtocol, backgroundTaskService: BackgroundTaskServiceProtocol) {
|
||||
|
||||
init(member: RoomMember, backgroundTaskService: BackgroundTaskServiceProtocol) {
|
||||
self.backgroundTaskService = backgroundTaskService
|
||||
self.member = member
|
||||
}
|
||||
|
||||
lazy var userID = member.userId()
|
||||
|
||||
lazy var displayName = member.displayName()
|
||||
|
||||
lazy var avatarURL = member.avatarUrl().flatMap(URL.init(string:))
|
||||
|
||||
lazy var membership = member.membership()
|
||||
|
||||
lazy var isAccountOwner = member.isAccountUser()
|
||||
|
||||
lazy var isIgnored = member.isIgnored()
|
||||
|
||||
lazy var powerLevel = Int(member.powerLevel())
|
||||
lazy var role = member.suggestedRoleForPowerLevel()
|
||||
lazy var canInviteUsers = member.canInvite()
|
||||
lazy var canKickUsers = member.canKick()
|
||||
lazy var canBanUsers = member.canBan()
|
||||
var userID: String { member.userId }
|
||||
var displayName: String? { member.displayName }
|
||||
var avatarURL: URL? { member.avatarUrl.flatMap(URL.init(string:)) }
|
||||
|
||||
func canSendStateEvent(type: StateEventType) -> Bool {
|
||||
member.canSendState(stateEvent: type)
|
||||
}
|
||||
|
||||
func ignoreUser() async -> Result<Void, RoomMemberProxyError> {
|
||||
sendAccountDataEventBackgroundTask = await backgroundTaskService.startBackgroundTask(withName: backgroundAccountDataTaskName, isReusable: true)
|
||||
defer {
|
||||
sendAccountDataEventBackgroundTask?.stop()
|
||||
}
|
||||
|
||||
return await Task.dispatch(on: userInitiatedDispatchQueue) {
|
||||
do {
|
||||
try self.member.ignore()
|
||||
return .success(())
|
||||
} catch {
|
||||
return .failure(.ignoreUserFailed)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func unignoreUser() async -> Result<Void, RoomMemberProxyError> {
|
||||
sendAccountDataEventBackgroundTask = await backgroundTaskService.startBackgroundTask(withName: backgroundAccountDataTaskName, isReusable: true)
|
||||
defer {
|
||||
sendAccountDataEventBackgroundTask?.stop()
|
||||
}
|
||||
|
||||
return await Task.dispatch(on: userInitiatedDispatchQueue) {
|
||||
do {
|
||||
try self.member.unignore()
|
||||
return .success(())
|
||||
} catch {
|
||||
return .failure(.unignoreUserFailed)
|
||||
}
|
||||
}
|
||||
}
|
||||
var membership: MembershipState { member.membership }
|
||||
var isIgnored: Bool { member.isIgnored }
|
||||
|
||||
var powerLevel: Int { Int(member.powerLevel) }
|
||||
var role: RoomMemberRole { member.suggestedRoleForPowerLevel }
|
||||
}
|
||||
|
||||
@@ -27,19 +27,12 @@ protocol RoomMemberProxyProtocol: AnyObject {
|
||||
var userID: String { get }
|
||||
var displayName: String? { get }
|
||||
var avatarURL: URL? { get }
|
||||
|
||||
var membership: MembershipState { get }
|
||||
var isAccountOwner: Bool { get }
|
||||
var isIgnored: Bool { get }
|
||||
|
||||
var powerLevel: Int { get }
|
||||
var role: RoomMemberRole { get }
|
||||
var canInviteUsers: Bool { get }
|
||||
var canKickUsers: Bool { get }
|
||||
var canBanUsers: Bool { get }
|
||||
|
||||
func ignoreUser() async -> Result<Void, RoomMemberProxyError>
|
||||
func unignoreUser() async -> Result<Void, RoomMemberProxyError>
|
||||
func canSendStateEvent(type: StateEventType) -> Bool
|
||||
}
|
||||
|
||||
extension RoomMemberProxyProtocol {
|
||||
|
||||
Reference in New Issue
Block a user