mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Implemented message forwarding for media previews and media timelines (#4579)
* implemented message forwarding for media previews and media timelines * updated tests * pr suggestion * fix tests * fix tests
This commit is contained in:
@@ -181,6 +181,8 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
||||
actionsSubject.send(.presentKnockRequestsList)
|
||||
case .displayRoom(let roomID, let via):
|
||||
actionsSubject.send(.presentRoom(roomID: roomID, via: via))
|
||||
case .displayMessageForwarding(let forwardingItem):
|
||||
actionsSubject.send(.presentMessageForwarding(forwardingItem: forwardingItem))
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
@@ -16,6 +16,7 @@ enum RoomScreenViewModelAction: Equatable {
|
||||
case removeComposerFocus
|
||||
case displayKnockRequests
|
||||
case displayRoom(roomID: String, via: [String])
|
||||
case displayMessageForwarding(MessageForwardingItem)
|
||||
}
|
||||
|
||||
enum RoomScreenViewAction {
|
||||
|
||||
@@ -136,11 +136,18 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
||||
|
||||
func displayMediaPreview(_ mediaPreviewViewModel: TimelineMediaPreviewViewModel) {
|
||||
mediaPreviewViewModel.actions.sink { [weak self] action in
|
||||
guard let self else { return }
|
||||
switch action {
|
||||
case .viewInRoomTimeline:
|
||||
fatalError("viewInRoomTimeline should not be visible on a room preview.")
|
||||
case .dismiss:
|
||||
self?.state.bindings.mediaPreviewViewModel = nil
|
||||
state.bindings.mediaPreviewViewModel = nil
|
||||
case .displayMessageForwarding(let forwardingItem):
|
||||
state.bindings.mediaPreviewViewModel = nil
|
||||
// We need a small delay because we need to wait for the media preview to be fully dismissed.
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + TimelineMediaPreviewViewModel.displayMessageForwardingDelay) {
|
||||
self.actionsSubject.send(.displayMessageForwarding(forwardingItem))
|
||||
}
|
||||
case .viewInRoomTimeline:
|
||||
fatalError("\(action) should not be visible on a room preview.")
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
Reference in New Issue
Block a user