Add alerts with reason for kick and ban (#3967)

* feat: added alerts with reason for kick and ban

in the room members list screen

* fix tests
This commit is contained in:
Mauro
2025-04-01 18:06:40 +02:00
committed by GitHub
parent 6a8f35db9c
commit bbfc6c1e17
11 changed files with 125 additions and 81 deletions
@@ -9077,15 +9077,15 @@ class JoinedRoomProxyMock: JoinedRoomProxyProtocol, @unchecked Sendable {
}
//MARK: - kickUser
var kickUserUnderlyingCallsCount = 0
var kickUserCallsCount: Int {
var kickUserReasonUnderlyingCallsCount = 0
var kickUserReasonCallsCount: Int {
get {
if Thread.isMainThread {
return kickUserUnderlyingCallsCount
return kickUserReasonUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = kickUserUnderlyingCallsCount
returnValue = kickUserReasonUnderlyingCallsCount
}
return returnValue!
@@ -9093,29 +9093,29 @@ class JoinedRoomProxyMock: JoinedRoomProxyProtocol, @unchecked Sendable {
}
set {
if Thread.isMainThread {
kickUserUnderlyingCallsCount = newValue
kickUserReasonUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
kickUserUnderlyingCallsCount = newValue
kickUserReasonUnderlyingCallsCount = newValue
}
}
}
}
var kickUserCalled: Bool {
return kickUserCallsCount > 0
var kickUserReasonCalled: Bool {
return kickUserReasonCallsCount > 0
}
var kickUserReceivedUserID: String?
var kickUserReceivedInvocations: [String] = []
var kickUserReasonReceivedArguments: (userID: String, reason: String?)?
var kickUserReasonReceivedInvocations: [(userID: String, reason: String?)] = []
var kickUserUnderlyingReturnValue: Result<Void, RoomProxyError>!
var kickUserReturnValue: Result<Void, RoomProxyError>! {
var kickUserReasonUnderlyingReturnValue: Result<Void, RoomProxyError>!
var kickUserReasonReturnValue: Result<Void, RoomProxyError>! {
get {
if Thread.isMainThread {
return kickUserUnderlyingReturnValue
return kickUserReasonUnderlyingReturnValue
} else {
var returnValue: Result<Void, RoomProxyError>? = nil
DispatchQueue.main.sync {
returnValue = kickUserUnderlyingReturnValue
returnValue = kickUserReasonUnderlyingReturnValue
}
return returnValue!
@@ -9123,39 +9123,39 @@ class JoinedRoomProxyMock: JoinedRoomProxyProtocol, @unchecked Sendable {
}
set {
if Thread.isMainThread {
kickUserUnderlyingReturnValue = newValue
kickUserReasonUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
kickUserUnderlyingReturnValue = newValue
kickUserReasonUnderlyingReturnValue = newValue
}
}
}
}
var kickUserClosure: ((String) async -> Result<Void, RoomProxyError>)?
var kickUserReasonClosure: ((String, String?) async -> Result<Void, RoomProxyError>)?
func kickUser(_ userID: String) async -> Result<Void, RoomProxyError> {
kickUserCallsCount += 1
kickUserReceivedUserID = userID
func kickUser(_ userID: String, reason: String?) async -> Result<Void, RoomProxyError> {
kickUserReasonCallsCount += 1
kickUserReasonReceivedArguments = (userID: userID, reason: reason)
DispatchQueue.main.async {
self.kickUserReceivedInvocations.append(userID)
self.kickUserReasonReceivedInvocations.append((userID: userID, reason: reason))
}
if let kickUserClosure = kickUserClosure {
return await kickUserClosure(userID)
if let kickUserReasonClosure = kickUserReasonClosure {
return await kickUserReasonClosure(userID, reason)
} else {
return kickUserReturnValue
return kickUserReasonReturnValue
}
}
//MARK: - banUser
var banUserUnderlyingCallsCount = 0
var banUserCallsCount: Int {
var banUserReasonUnderlyingCallsCount = 0
var banUserReasonCallsCount: Int {
get {
if Thread.isMainThread {
return banUserUnderlyingCallsCount
return banUserReasonUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = banUserUnderlyingCallsCount
returnValue = banUserReasonUnderlyingCallsCount
}
return returnValue!
@@ -9163,29 +9163,29 @@ class JoinedRoomProxyMock: JoinedRoomProxyProtocol, @unchecked Sendable {
}
set {
if Thread.isMainThread {
banUserUnderlyingCallsCount = newValue
banUserReasonUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
banUserUnderlyingCallsCount = newValue
banUserReasonUnderlyingCallsCount = newValue
}
}
}
}
var banUserCalled: Bool {
return banUserCallsCount > 0
var banUserReasonCalled: Bool {
return banUserReasonCallsCount > 0
}
var banUserReceivedUserID: String?
var banUserReceivedInvocations: [String] = []
var banUserReasonReceivedArguments: (userID: String, reason: String?)?
var banUserReasonReceivedInvocations: [(userID: String, reason: String?)] = []
var banUserUnderlyingReturnValue: Result<Void, RoomProxyError>!
var banUserReturnValue: Result<Void, RoomProxyError>! {
var banUserReasonUnderlyingReturnValue: Result<Void, RoomProxyError>!
var banUserReasonReturnValue: Result<Void, RoomProxyError>! {
get {
if Thread.isMainThread {
return banUserUnderlyingReturnValue
return banUserReasonUnderlyingReturnValue
} else {
var returnValue: Result<Void, RoomProxyError>? = nil
DispatchQueue.main.sync {
returnValue = banUserUnderlyingReturnValue
returnValue = banUserReasonUnderlyingReturnValue
}
return returnValue!
@@ -9193,26 +9193,26 @@ class JoinedRoomProxyMock: JoinedRoomProxyProtocol, @unchecked Sendable {
}
set {
if Thread.isMainThread {
banUserUnderlyingReturnValue = newValue
banUserReasonUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
banUserUnderlyingReturnValue = newValue
banUserReasonUnderlyingReturnValue = newValue
}
}
}
}
var banUserClosure: ((String) async -> Result<Void, RoomProxyError>)?
var banUserReasonClosure: ((String, String?) async -> Result<Void, RoomProxyError>)?
func banUser(_ userID: String) async -> Result<Void, RoomProxyError> {
banUserCallsCount += 1
banUserReceivedUserID = userID
func banUser(_ userID: String, reason: String?) async -> Result<Void, RoomProxyError> {
banUserReasonCallsCount += 1
banUserReasonReceivedArguments = (userID: userID, reason: reason)
DispatchQueue.main.async {
self.banUserReceivedInvocations.append(userID)
self.banUserReasonReceivedInvocations.append((userID: userID, reason: reason))
}
if let banUserClosure = banUserClosure {
return await banUserClosure(userID)
if let banUserReasonClosure = banUserReasonClosure {
return await banUserReasonClosure(userID, reason)
} else {
return banUserReturnValue
return banUserReasonReturnValue
}
}
//MARK: - unbanUser
@@ -107,8 +107,8 @@ extension JoinedRoomProxyMock {
canUserJoinCallUserIDReturnValue = .success(configuration.canUserJoinCall)
canUserPinOrUnpinUserIDReturnValue = .success(configuration.canUserPin)
kickUserReturnValue = .success(())
banUserReturnValue = .success(())
kickUserReasonReturnValue = .success(())
banUserReasonReturnValue = .success(())
unbanUserReturnValue = .success(())
let widgetDriver = ElementCallWidgetDriverMock()