Fixes #2347, #2348, #2349 - Add support for typing notifications

This commit is contained in:
Stefan Ceriu
2024-02-13 15:27:52 +02:00
committed by GitHub
parent 2b2accaca6
commit f2e9c32e8d
26 changed files with 346 additions and 47 deletions
@@ -1871,6 +1871,11 @@ class RoomProxyMock: RoomProxyProtocol {
set(value) { underlyingMembers = value }
}
var underlyingMembers: CurrentValuePublisher<[RoomMemberProxyProtocol], Never>!
var typingMembers: CurrentValuePublisher<[String], Never> {
get { return underlyingTypingMembers }
set(value) { underlyingTypingMembers = value }
}
var underlyingTypingMembers: CurrentValuePublisher<[String], Never>!
var joinedMembersCount: Int {
get { return underlyingJoinedMembersCount }
set(value) { underlyingJoinedMembersCount = value }
@@ -2265,6 +2270,28 @@ class RoomProxyMock: RoomProxyProtocol {
return markAsReadSendReadReceiptsReceiptTypeReturnValue
}
}
//MARK: - sendTypingNotification
var sendTypingNotificationIsTypingCallsCount = 0
var sendTypingNotificationIsTypingCalled: Bool {
return sendTypingNotificationIsTypingCallsCount > 0
}
var sendTypingNotificationIsTypingReceivedIsTyping: Bool?
var sendTypingNotificationIsTypingReceivedInvocations: [Bool] = []
var sendTypingNotificationIsTypingReturnValue: Result<Void, RoomProxyError>!
var sendTypingNotificationIsTypingClosure: ((Bool) async -> Result<Void, RoomProxyError>)?
@discardableResult
func sendTypingNotification(isTyping: Bool) async -> Result<Void, RoomProxyError> {
sendTypingNotificationIsTypingCallsCount += 1
sendTypingNotificationIsTypingReceivedIsTyping = isTyping
sendTypingNotificationIsTypingReceivedInvocations.append(isTyping)
if let sendTypingNotificationIsTypingClosure = sendTypingNotificationIsTypingClosure {
return await sendTypingNotificationIsTypingClosure(isTyping)
} else {
return sendTypingNotificationIsTypingReturnValue
}
}
//MARK: - canUserJoinCall
var canUserJoinCallUserIDCallsCount = 0
@@ -66,6 +66,7 @@ extension RoomProxyMock {
ownUserID = configuration.ownUserID
members = CurrentValueSubject(configuration.members).asCurrentValuePublisher()
typingMembers = CurrentValueSubject([]).asCurrentValuePublisher()
joinedMembersCount = configuration.members.filter { $0.membership == .join }.count
activeMembersCount = configuration.members.filter { $0.membership == .join || $0.membership == .invite }.count