Adopt new canOwnUser* power level methods instead of the throwing ones.
This commit is contained in:
committed by
Stefan Ceriu
parent
71fca18a7c
commit
64f0d4cd01
@@ -99,12 +99,23 @@ extension JoinedRoomProxyMock {
|
||||
powerLevelsProxyMock.canUserUserIDSendStateEventClosure = { [weak self] userID, _ in
|
||||
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
|
||||
}
|
||||
powerLevelsProxyMock.canOwnUserSendStateEventClosure = { [weak self] _ in
|
||||
self?.membersPublisher.value.first { $0.userID == configuration.ownUserID }?.role ?? .user != .user
|
||||
}
|
||||
|
||||
powerLevelsProxyMock.canUserKickUserIDClosure = { [weak self] userID in
|
||||
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
|
||||
}
|
||||
powerLevelsProxyMock.canOwnUserKickClosure = { [weak self] in
|
||||
self?.membersPublisher.value.first { $0.userID == configuration.ownUserID }?.role ?? .user != .user
|
||||
}
|
||||
|
||||
powerLevelsProxyMock.canUserBanUserIDClosure = { [weak self] userID in
|
||||
.success(self?.membersPublisher.value.first { $0.userID == userID }?.role ?? .user != .user)
|
||||
}
|
||||
powerLevelsProxyMock.canOwnUserBanClosure = { [weak self] in
|
||||
self?.membersPublisher.value.first { $0.userID == configuration.ownUserID }?.role ?? .user != .user
|
||||
}
|
||||
|
||||
powerLevelsReturnValue = .success(powerLevelsProxyMock)
|
||||
|
||||
|
||||
@@ -218,9 +218,9 @@ class KnockRequestsListScreenViewModel: KnockRequestsListScreenViewModelType, Kn
|
||||
state.isKnockableRoom = false
|
||||
}
|
||||
|
||||
state.canAccept = (try? roomInfo.powerLevels.canUserInvite(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canDecline = (try? roomInfo.powerLevels.canUserKick(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canBan = (try? roomInfo.powerLevels.canUserBan(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canAccept = roomInfo.powerLevels.canOwnUserInvite()
|
||||
state.canDecline = roomInfo.powerLevels.canOwnUserKick()
|
||||
state.canBan = roomInfo.powerLevels.canOwnUserBan()
|
||||
}
|
||||
|
||||
private static let loadingIndicatorIdentifier = "\(KnockRequestsListScreenViewModel.self)-Loading"
|
||||
|
||||
@@ -87,9 +87,9 @@ class RoomDetailsEditScreenViewModel: RoomDetailsEditScreenViewModelType, RoomDe
|
||||
// MARK: - Private
|
||||
|
||||
private func updateRoomInfo(roomInfo: RoomInfoProxyProtocol) {
|
||||
state.canEditAvatar = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendStateEvent: .roomAvatar).get()) == .some(true)
|
||||
state.canEditName = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendStateEvent: .roomName).get()) == .some(true)
|
||||
state.canEditTopic = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendStateEvent: .roomTopic).get()) == .some(true)
|
||||
state.canEditAvatar = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomAvatar)
|
||||
state.canEditName = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomName)
|
||||
state.canEditTopic = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomTopic)
|
||||
}
|
||||
|
||||
private func saveRoomDetails() {
|
||||
|
||||
@@ -224,13 +224,13 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
||||
state.isKnockableRoom = false
|
||||
}
|
||||
|
||||
state.canEditRoomName = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendStateEvent: .roomName).get()) == true
|
||||
state.canEditRoomTopic = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendStateEvent: .roomTopic).get()) == true
|
||||
state.canEditRoomAvatar = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendStateEvent: .roomAvatar).get()) == true
|
||||
state.canInviteUsers = (try? roomInfo.powerLevels.canUserInvite(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canKickUsers = (try? roomInfo.powerLevels.canUserKick(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canBanUsers = (try? roomInfo.powerLevels.canUserBan(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canJoinCall = (try? roomInfo.powerLevels.canUserJoinCall(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canEditRoomName = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomName)
|
||||
state.canEditRoomTopic = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomTopic)
|
||||
state.canEditRoomAvatar = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomAvatar)
|
||||
state.canInviteUsers = roomInfo.powerLevels.canOwnUserInvite()
|
||||
state.canKickUsers = roomInfo.powerLevels.canOwnUserKick()
|
||||
state.canBanUsers = roomInfo.powerLevels.canOwnUserBan()
|
||||
state.canJoinCall = roomInfo.powerLevels.canOwnUserJoinCall()
|
||||
|
||||
Task {
|
||||
state.canEditRolesOrPermissions = await (try? roomProxy.suggestedRole(for: roomProxy.ownUserID).get()) == .administrator
|
||||
|
||||
@@ -100,9 +100,9 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
||||
bindings: state.bindings)
|
||||
|
||||
let powerLevels = roomProxy.infoPublisher.value.powerLevels
|
||||
self.state.canInviteUsers = (try? powerLevels.canUserInvite(userID: roomProxy.ownUserID).get()) == true
|
||||
self.state.canKickUsers = (try? powerLevels.canUserKick(userID: roomProxy.ownUserID).get()) == true
|
||||
self.state.canBanUsers = (try? powerLevels.canUserBan(userID: roomProxy.ownUserID).get()) == true
|
||||
self.state.canInviteUsers = powerLevels.canOwnUserInvite()
|
||||
self.state.canKickUsers = powerLevels.canOwnUserKick()
|
||||
self.state.canBanUsers = powerLevels.canOwnUserBan()
|
||||
|
||||
hideLoadingIndicator(Self.updateStateLoadingIndicatorIdentifier)
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ final class CompletionSuggestionService: CompletionSuggestionServiceProtocol {
|
||||
self?.suggestionTriggerSubject.value != nil ? .milliseconds(500) : .milliseconds(0)
|
||||
}
|
||||
|
||||
canMentionAllUsers = (try? roomProxy.infoPublisher.value.powerLevels.canUserTriggerRoomNotification(userID: roomProxy.ownUserID).get()) == true
|
||||
canMentionAllUsers = roomProxy.infoPublisher.value.powerLevels.canOwnUserTriggerRoomNotification()
|
||||
}
|
||||
|
||||
func processTextMessage(_ textMessage: String, selectedRange: NSRange) {
|
||||
|
||||
@@ -348,11 +348,11 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
state.isKnockableRoom = false
|
||||
}
|
||||
|
||||
state.canSendMessage = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendMessage: .roomMessage).get()) == true
|
||||
state.canJoinCall = (try? roomInfo.powerLevels.canUserJoinCall(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canAcceptKnocks = (try? roomInfo.powerLevels.canUserInvite(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canDeclineKnocks = (try? roomInfo.powerLevels.canUserKick(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canBan = (try? roomInfo.powerLevels.canUserBan(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canSendMessage = roomInfo.powerLevels.canOwnUser(sendMessage: .roomMessage)
|
||||
state.canJoinCall = roomInfo.powerLevels.canOwnUserJoinCall()
|
||||
state.canAcceptKnocks = roomInfo.powerLevels.canOwnUserInvite()
|
||||
state.canDeclineKnocks = roomInfo.powerLevels.canOwnUserKick()
|
||||
state.canBan = roomInfo.powerLevels.canOwnUserBan()
|
||||
}
|
||||
|
||||
private func setupPinnedEventsTimelineItemProviderIfNeeded() {
|
||||
|
||||
@@ -63,6 +63,6 @@ class ThreadTimelineScreenViewModel: ThreadTimelineScreenViewModelType, ThreadTi
|
||||
// MARK: - Private
|
||||
|
||||
private func handleRoomInfoUpdate(_ roomInfo: RoomInfoProxyProtocol) {
|
||||
state.canSendMessage = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendMessage: .roomMessage).get()) == true
|
||||
state.canSendMessage = roomInfo.powerLevels.canOwnUser(sendMessage: .roomMessage)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -405,12 +405,12 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
||||
private func updateRoomInfo(roomInfo: RoomInfoProxyProtocol) {
|
||||
state.pinnedEventIDs = roomInfo.pinnedEventIDs
|
||||
|
||||
state.canCurrentUserSendMessage = (try? roomInfo.powerLevels.canUser(userID: roomProxy.ownUserID, sendMessage: .roomMessage).get()) == true
|
||||
state.canCurrentUserRedactOthers = (try? roomInfo.powerLevels.canUserRedactOther(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canCurrentUserRedactSelf = (try? roomInfo.powerLevels.canUserRedactOwn(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canCurrentUserPin = (try? roomInfo.powerLevels.canUserPinOrUnpin(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canCurrentUserKick = (try? roomInfo.powerLevels.canUserKick(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canCurrentUserBan = (try? roomInfo.powerLevels.canUserBan(userID: roomProxy.ownUserID).get()) == true
|
||||
state.canCurrentUserSendMessage = roomInfo.powerLevels.canOwnUser(sendMessage: .roomMessage)
|
||||
state.canCurrentUserRedactOthers = roomInfo.powerLevels.canOwnUserRedactOther()
|
||||
state.canCurrentUserRedactSelf = roomInfo.powerLevels.canOwnUserRedactOwn()
|
||||
state.canCurrentUserPin = roomInfo.powerLevels.canOwnUserPinOrUnpin()
|
||||
state.canCurrentUserKick = roomInfo.powerLevels.canOwnUserKick()
|
||||
state.canCurrentUserBan = roomInfo.powerLevels.canOwnUserBan()
|
||||
}
|
||||
|
||||
private func setupSubscriptions() {
|
||||
|
||||
@@ -367,6 +367,9 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
powerLevelsProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomAvatar)
|
||||
}
|
||||
powerLevelsProxyMock.canOwnUserSendStateEventClosure = { event in
|
||||
event == .roomAvatar
|
||||
}
|
||||
roomProxyMock.powerLevelsReturnValue = .success(powerLevelsProxyMock)
|
||||
|
||||
let roomInfoProxyMock = RoomInfoProxyMock(configuration)
|
||||
@@ -405,6 +408,9 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
powerLevelsProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomName)
|
||||
}
|
||||
powerLevelsProxyMock.canOwnUserSendStateEventClosure = { event in
|
||||
event == .roomName
|
||||
}
|
||||
roomProxyMock.powerLevelsReturnValue = .success(powerLevelsProxyMock)
|
||||
|
||||
let roomInfoProxyMock = RoomInfoProxyMock(configuration)
|
||||
@@ -443,6 +449,9 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
||||
powerLevelsProxyMock.canUserUserIDSendStateEventClosure = { _, event in
|
||||
.success(event == .roomTopic)
|
||||
}
|
||||
powerLevelsProxyMock.canOwnUserSendStateEventClosure = { event in
|
||||
event == .roomTopic
|
||||
}
|
||||
roomProxyMock.powerLevelsReturnValue = .success(powerLevelsProxyMock)
|
||||
|
||||
let roomInfoProxyMock = RoomInfoProxyMock(configuration)
|
||||
|
||||
@@ -520,6 +520,7 @@ class TimelineViewModelTests: XCTestCase {
|
||||
|
||||
let powerLevelsProxyMock = RoomPowerLevelsProxyMock(configuration: .init())
|
||||
powerLevelsProxyMock.canUserPinOrUnpinUserIDReturnValue = .success(false)
|
||||
powerLevelsProxyMock.canOwnUserPinOrUnpinReturnValue = false
|
||||
roomProxyMock.powerLevelsReturnValue = .success(powerLevelsProxyMock)
|
||||
|
||||
let roomInfoProxyMock = RoomInfoProxyMock(configuration)
|
||||
|
||||
Reference in New Issue
Block a user