Disable the composer when you don't have the power to post. (#4076)

This commit is contained in:
Doug
2025-04-29 10:12:20 +01:00
committed by GitHub
parent 41b18cfd52
commit 58b982a8f8
15 changed files with 150 additions and 19 deletions
@@ -8593,6 +8593,76 @@ class JoinedRoomProxyMock: JoinedRoomProxyProtocol, @unchecked Sendable {
}
//MARK: - canUser
var canUserUserIDSendMessageUnderlyingCallsCount = 0
var canUserUserIDSendMessageCallsCount: Int {
get {
if Thread.isMainThread {
return canUserUserIDSendMessageUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = canUserUserIDSendMessageUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
canUserUserIDSendMessageUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
canUserUserIDSendMessageUnderlyingCallsCount = newValue
}
}
}
}
var canUserUserIDSendMessageCalled: Bool {
return canUserUserIDSendMessageCallsCount > 0
}
var canUserUserIDSendMessageReceivedArguments: (userID: String, messageType: MessageLikeEventType)?
var canUserUserIDSendMessageReceivedInvocations: [(userID: String, messageType: MessageLikeEventType)] = []
var canUserUserIDSendMessageUnderlyingReturnValue: Result<Bool, RoomProxyError>!
var canUserUserIDSendMessageReturnValue: Result<Bool, RoomProxyError>! {
get {
if Thread.isMainThread {
return canUserUserIDSendMessageUnderlyingReturnValue
} else {
var returnValue: Result<Bool, RoomProxyError>? = nil
DispatchQueue.main.sync {
returnValue = canUserUserIDSendMessageUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
canUserUserIDSendMessageUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
canUserUserIDSendMessageUnderlyingReturnValue = newValue
}
}
}
}
var canUserUserIDSendMessageClosure: ((String, MessageLikeEventType) async -> Result<Bool, RoomProxyError>)?
func canUser(userID: String, sendMessage messageType: MessageLikeEventType) async -> Result<Bool, RoomProxyError> {
canUserUserIDSendMessageCallsCount += 1
canUserUserIDSendMessageReceivedArguments = (userID: userID, messageType: messageType)
DispatchQueue.main.async {
self.canUserUserIDSendMessageReceivedInvocations.append((userID: userID, messageType: messageType))
}
if let canUserUserIDSendMessageClosure = canUserUserIDSendMessageClosure {
return await canUserUserIDSendMessageClosure(userID, messageType)
} else {
return canUserUserIDSendMessageReturnValue
}
}
//MARK: - canUser
var canUserUserIDSendStateEventUnderlyingCallsCount = 0
var canUserUserIDSendStateEventCallsCount: Int {
get {