mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Fixes #978 - Message forwarding support
* Add support for message forwarding * Move the TimelineProvider within the RoomProxy to avoid it going out of sync and have it automatically register for timeline updates on init * Implement single selection form button style for message forwarding * Add searching and filter out the source room from the list * Fixed emoji screen initial search bar height * Add view models tests * Add changelog * Update strings * Tweaks following code review
This commit is contained in:
@@ -457,6 +457,11 @@ class RoomProxyMock: RoomProxyProtocol {
|
||||
set(value) { underlyingUpdatesPublisher = value }
|
||||
}
|
||||
var underlyingUpdatesPublisher: AnyPublisher<TimelineDiff, Never>!
|
||||
var timelineProvider: RoomTimelineProviderProtocol {
|
||||
get { return underlyingTimelineProvider }
|
||||
set(value) { underlyingTimelineProvider = value }
|
||||
}
|
||||
var underlyingTimelineProvider: RoomTimelineProviderProtocol!
|
||||
|
||||
//MARK: - loadAvatarURLForUserId
|
||||
|
||||
@@ -500,23 +505,6 @@ class RoomProxyMock: RoomProxyProtocol {
|
||||
return loadDisplayNameForUserIdReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - registerTimelineListenerIfNeeded
|
||||
|
||||
var registerTimelineListenerIfNeededCallsCount = 0
|
||||
var registerTimelineListenerIfNeededCalled: Bool {
|
||||
return registerTimelineListenerIfNeededCallsCount > 0
|
||||
}
|
||||
var registerTimelineListenerIfNeededReturnValue: Result<[TimelineItem], RoomProxyError>!
|
||||
var registerTimelineListenerIfNeededClosure: (() -> Result<[TimelineItem], RoomProxyError>)?
|
||||
|
||||
func registerTimelineListenerIfNeeded() -> Result<[TimelineItem], RoomProxyError> {
|
||||
registerTimelineListenerIfNeededCallsCount += 1
|
||||
if let registerTimelineListenerIfNeededClosure = registerTimelineListenerIfNeededClosure {
|
||||
return registerTimelineListenerIfNeededClosure()
|
||||
} else {
|
||||
return registerTimelineListenerIfNeededReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - paginateBackwards
|
||||
|
||||
var paginateBackwardsRequestSizeUntilNumberOfItemsCallsCount = 0
|
||||
@@ -559,6 +547,48 @@ class RoomProxyMock: RoomProxyProtocol {
|
||||
return sendReadReceiptForReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - messageEventContent
|
||||
|
||||
var messageEventContentForCallsCount = 0
|
||||
var messageEventContentForCalled: Bool {
|
||||
return messageEventContentForCallsCount > 0
|
||||
}
|
||||
var messageEventContentForReceivedEventID: String?
|
||||
var messageEventContentForReceivedInvocations: [String] = []
|
||||
var messageEventContentForReturnValue: RoomMessageEventContent?
|
||||
var messageEventContentForClosure: ((String) -> RoomMessageEventContent?)?
|
||||
|
||||
func messageEventContent(for eventID: String) -> RoomMessageEventContent? {
|
||||
messageEventContentForCallsCount += 1
|
||||
messageEventContentForReceivedEventID = eventID
|
||||
messageEventContentForReceivedInvocations.append(eventID)
|
||||
if let messageEventContentForClosure = messageEventContentForClosure {
|
||||
return messageEventContentForClosure(eventID)
|
||||
} else {
|
||||
return messageEventContentForReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - sendMessageEventContent
|
||||
|
||||
var sendMessageEventContentCallsCount = 0
|
||||
var sendMessageEventContentCalled: Bool {
|
||||
return sendMessageEventContentCallsCount > 0
|
||||
}
|
||||
var sendMessageEventContentReceivedMessageContent: RoomMessageEventContent?
|
||||
var sendMessageEventContentReceivedInvocations: [RoomMessageEventContent] = []
|
||||
var sendMessageEventContentReturnValue: Result<Void, RoomProxyError>!
|
||||
var sendMessageEventContentClosure: ((RoomMessageEventContent) async -> Result<Void, RoomProxyError>)?
|
||||
|
||||
func sendMessageEventContent(_ messageContent: RoomMessageEventContent) async -> Result<Void, RoomProxyError> {
|
||||
sendMessageEventContentCallsCount += 1
|
||||
sendMessageEventContentReceivedMessageContent = messageContent
|
||||
sendMessageEventContentReceivedInvocations.append(messageContent)
|
||||
if let sendMessageEventContentClosure = sendMessageEventContentClosure {
|
||||
return await sendMessageEventContentClosure(messageContent)
|
||||
} else {
|
||||
return sendMessageEventContentReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - sendMessage
|
||||
|
||||
var sendMessageInReplyToCallsCount = 0
|
||||
|
||||
@@ -74,7 +74,6 @@ extension RoomProxyMock {
|
||||
|
||||
updateMembersClosure = { }
|
||||
acceptInvitationClosure = { .success(()) }
|
||||
registerTimelineListenerIfNeededClosure = { .success([]) }
|
||||
underlyingUpdatesPublisher = Empty(completeImmediately: false).eraseToAnyPublisher()
|
||||
setNameClosure = { _ in .success(()) }
|
||||
setTopicClosure = { _ in .success(()) }
|
||||
|
||||
Reference in New Issue
Block a user