mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Adopt the lastest SDK APIs and refactor how we deal with user permissions.
This patch introduces a new RoomPowerLevelsProxy and its associated mock and adopts newer Rust APIs to make working with user power levels and permissions easier.
This commit is contained in:
committed by
Stefan Ceriu
parent
96e5ed06f5
commit
f522e15dac
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -89,9 +89,8 @@ extension JoinedRoomProxyMock {
|
||||
markAsReadReceiptTypeReturnValue = .success(())
|
||||
flagAsFavouriteReturnValue = .success(())
|
||||
|
||||
powerLevelsReturnValue = .success(.mock)
|
||||
applyPowerLevelChangesReturnValue = .success(())
|
||||
resetPowerLevelsReturnValue = .success(.mock)
|
||||
resetPowerLevelsReturnValue = .success(())
|
||||
suggestedRoleForClosure = { [weak self] userID in
|
||||
guard case .success(let member) = await self?.getMember(userID: userID) else {
|
||||
return .failure(.sdkError(RoomProxyMockError.generic))
|
||||
@@ -99,22 +98,27 @@ extension JoinedRoomProxyMock {
|
||||
return .success(member.role)
|
||||
}
|
||||
updatePowerLevelsForUsersReturnValue = .success(())
|
||||
canUserUserIDSendMessageReturnValue = .success(configuration.canUserSendMessage)
|
||||
canUserUserIDSendStateEventClosure = { [weak self] userID, _ in
|
||||
|
||||
let powerLevelsProxyMock = RoomPowerLevelsProxyMock(configuration: .init())
|
||||
|
||||
powerLevelsProxyMock.canUserUserIDSendMessageReturnValue = .success(configuration.canUserSendMessage)
|
||||
powerLevelsProxyMock.canUserUserIDSendStateEventClosure = { [weak self] userID, _ in
|
||||
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
|
||||
}
|
||||
canUserInviteUserIDReturnValue = .success(configuration.canUserInvite)
|
||||
canUserRedactOtherUserIDReturnValue = .success(false)
|
||||
canUserRedactOwnUserIDReturnValue = .success(true)
|
||||
canUserKickUserIDClosure = { [weak self] userID in
|
||||
powerLevelsProxyMock.canUserInviteUserIDReturnValue = .success(configuration.canUserInvite)
|
||||
powerLevelsProxyMock.canUserRedactOtherUserIDReturnValue = .success(false)
|
||||
powerLevelsProxyMock.canUserRedactOwnUserIDReturnValue = .success(true)
|
||||
powerLevelsProxyMock.canUserKickUserIDClosure = { [weak self] userID in
|
||||
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
|
||||
}
|
||||
canUserBanUserIDClosure = { [weak self] userID in
|
||||
powerLevelsProxyMock.canUserBanUserIDClosure = { [weak self] userID in
|
||||
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
|
||||
}
|
||||
canUserTriggerRoomNotificationUserIDReturnValue = .success(configuration.canUserTriggerRoomNotification)
|
||||
canUserJoinCallUserIDReturnValue = .success(configuration.canUserJoinCall)
|
||||
canUserPinOrUnpinUserIDReturnValue = .success(configuration.canUserPin)
|
||||
powerLevelsProxyMock.canUserTriggerRoomNotificationUserIDReturnValue = .success(configuration.canUserTriggerRoomNotification)
|
||||
powerLevelsProxyMock.canUserJoinCallUserIDReturnValue = .success(configuration.canUserJoinCall)
|
||||
powerLevelsProxyMock.canUserPinOrUnpinUserIDReturnValue = .success(configuration.canUserPin)
|
||||
|
||||
powerLevelsReturnValue = .success(powerLevelsProxyMock)
|
||||
|
||||
kickUserReasonReturnValue = .success(())
|
||||
banUserReasonReturnValue = .success(())
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// Copyright 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 MatrixRustSDK
|
||||
|
||||
extension RoomPowerLevelsProxyMock {
|
||||
struct Configuration { }
|
||||
|
||||
convenience init(configuration: Configuration) {
|
||||
self.init()
|
||||
|
||||
underlyingValues = RoomPowerLevelsValues.mock
|
||||
|
||||
canUserUserIDSendMessageReturnValue = .success(true)
|
||||
canUserUserIDSendStateEventReturnValue = .success(true)
|
||||
canUserInviteUserIDReturnValue = .success(true)
|
||||
canUserRedactOtherUserIDReturnValue = .success(true)
|
||||
canUserRedactOwnUserIDReturnValue = .success(true)
|
||||
canUserKickUserIDReturnValue = .success(true)
|
||||
canUserBanUserIDReturnValue = .success(true)
|
||||
canUserTriggerRoomNotificationUserIDReturnValue = .success(true)
|
||||
canUserPinOrUnpinUserIDReturnValue = .success(true)
|
||||
canUserJoinCallUserIDReturnValue = .success(true)
|
||||
}
|
||||
}
|
||||
|
||||
extension RoomPowerLevelsValues {
|
||||
static var mock: RoomPowerLevelsValues {
|
||||
RoomPowerLevelsValues(ban: 50,
|
||||
invite: 0,
|
||||
kick: 50,
|
||||
redact: 50,
|
||||
eventsDefault: 0,
|
||||
stateDefault: 50,
|
||||
usersDefault: 0,
|
||||
roomName: 50,
|
||||
roomAvatar: 50,
|
||||
roomTopic: 50)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user