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:
@@ -10,6 +10,7 @@ import SwiftUI
|
||||
|
||||
enum TimelineMediaPreviewViewModelAction: Equatable {
|
||||
case viewInRoomTimeline(TimelineItemIdentifier)
|
||||
case displayMessageForwarding(MessageForwardingItem)
|
||||
case dismiss
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ import Foundation
|
||||
typealias TimelineMediaPreviewViewModelType = StateStoreViewModel<TimelineMediaPreviewViewState, TimelineMediaPreviewViewAction>
|
||||
|
||||
class TimelineMediaPreviewViewModel: TimelineMediaPreviewViewModelType {
|
||||
static let displayMessageForwardingDelay: TimeInterval = 1.0
|
||||
|
||||
let instanceID = UUID()
|
||||
|
||||
private let timelineViewModel: TimelineViewModelProtocol
|
||||
@@ -86,6 +88,8 @@ class TimelineMediaPreviewViewModel: TimelineMediaPreviewViewModelType {
|
||||
Task { await saveCurrentItem() }
|
||||
case .redact:
|
||||
state.bindings.redactConfirmationItem = item
|
||||
case .forward(let itemID):
|
||||
Task { await forwardItem(itemID: itemID) }
|
||||
default:
|
||||
MXLog.error("Received unexpected action: \(action)")
|
||||
}
|
||||
@@ -96,6 +100,12 @@ class TimelineMediaPreviewViewModel: TimelineMediaPreviewViewModelType {
|
||||
}
|
||||
}
|
||||
|
||||
private func forwardItem(itemID: TimelineItemIdentifier) async {
|
||||
guard let forwardingItem = await timelineViewModel.makeForwardingItem(for: itemID) else { return }
|
||||
state.previewControllerDriver.send(.dismissDetailsSheet)
|
||||
actionsSubject.send(.displayMessageForwarding(forwardingItem))
|
||||
}
|
||||
|
||||
private func updateCurrentItem(_ previewItem: TimelineMediaPreviewItem) async {
|
||||
if case let .media(item) = previewItem {
|
||||
item.downloadError = nil // Clear any existing error.
|
||||
|
||||
Reference in New Issue
Block a user