Setup the threaded timeline media preview action

This commit is contained in:
Stefan Ceriu
2025-05-29 08:57:15 +03:00
committed by Stefan Ceriu
parent 1353445ab0
commit a18e5bba61
3 changed files with 18 additions and 6 deletions

View File

@@ -81,7 +81,7 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
case .displayDocumentPicker:
actionsSubject.send(.presentMediaUploadPicker(.documents))
case .displayMediaPreview(let mediaPreviewViewModel):
break
viewModel.displayMediaPreview(mediaPreviewViewModel)
case .displayLocationPicker:
actionsSubject.send(.presentLocationPicker)
case .displayPollForm(let mode):
@@ -96,11 +96,7 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
actionsSubject.send(.presentLocationViewer(body: body, geoURI: geoURI, description: description))
case .displayResolveSendFailure(let failure, let sendHandle):
actionsSubject.send(.presentResolveSendFailure(failure: failure, sendHandle: sendHandle))
case .displayThread(let itemID):
break
case .composer(let action):
break
case .hasScrolled(direction: let direction):
case .displayThread, .composer, .hasScrolled:
break
case .viewInRoomTimeline:
fatalError("The action: \(action) should not be sent to this coordinator")

View File

@@ -28,4 +28,18 @@ class ThreadTimelineScreenViewModel: ThreadTimelineScreenViewModelType, ThreadTi
// Work around QLPreviewController dismissal issues, see the InteractiveQuickLookModifier.
state.bindings.mediaPreviewViewModel = nil
}
func displayMediaPreview(_ mediaPreviewViewModel: TimelineMediaPreviewViewModel) {
mediaPreviewViewModel.actions.sink { [weak self] action in
switch action {
case .viewInRoomTimeline:
fatalError("viewInRoomTimeline should not be visible on a thread preview.")
case .dismiss:
self?.state.bindings.mediaPreviewViewModel = nil
}
}
.store(in: &cancellables)
state.bindings.mediaPreviewViewModel = mediaPreviewViewModel
}
}

View File

@@ -13,4 +13,6 @@ protocol ThreadTimelineScreenViewModelProtocol {
var context: ThreadTimelineScreenViewModelType.Context { get }
func stop()
func displayMediaPreview(_ mediaPreviewViewModel: TimelineMediaPreviewViewModel)
}