Forward current composer text to the media upload preview screen as captions

This commit is contained in:
Stefan Ceriu
2026-05-22 10:12:08 +03:00
parent a8cff4ded2
commit ac20ff0fc3
9 changed files with 64 additions and 47 deletions
@@ -30,8 +30,8 @@ struct ThreadTimelineScreenCoordinatorParameters {
enum ThreadTimelineScreenCoordinatorAction {
case presentReportContent(itemID: TimelineItemIdentifier, senderID: String)
case presentMediaUploadPicker(mode: MediaPickerScreenMode)
case presentMediaUploadPreviewScreen(mediaURLs: [URL])
case presentMediaUploadPicker(mode: MediaPickerScreenMode, caption: NSAttributedString)
case presentMediaUploadPreviewScreen(mediaURLs: [URL], caption: NSAttributedString)
case presentLocationPicker
case presentLocationViewer(StaticLocationData)
case presentLiveLocationViewer(sender: TimelineItemSender, initialLiveLocationShare: LiveLocationShare)
@@ -103,18 +103,21 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
timelineViewModel.actions
.sink { [weak self] action in
guard let self else { return }
switch action {
case .displayEmojiPicker(let itemID, let selectedEmojis):
actionsSubject.send(.presentEmojiPicker(itemID: itemID, selectedEmojis: selectedEmojis))
case .displayReportContent(let itemID, let senderID):
actionsSubject.send(.presentReportContent(itemID: itemID, senderID: senderID))
case .displayCameraPicker:
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .camera, selectionType: .multiple)))
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .camera, selectionType: .multiple),
caption: composerViewModel.context.plainComposerText))
case .displayMediaPicker:
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .photoLibrary, selectionType: .multiple)))
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .photoLibrary, selectionType: .multiple),
caption: composerViewModel.context.plainComposerText))
case .displayDocumentPicker:
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .documents(), selectionType: .multiple)))
actionsSubject.send(.presentMediaUploadPicker(mode: .init(source: .documents(), selectionType: .multiple),
caption: composerViewModel.context.plainComposerText))
case .displayMediaPreview(let mediaPreviewViewModel):
viewModel.displayMediaPreview(mediaPreviewViewModel)
case .displayLocationPicker:
@@ -126,7 +129,8 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
case .displayPollForm(let mode):
actionsSubject.send(.presentPollForm(mode: mode))
case .displayMediaUploadPreviewScreen(let mediaURLs):
actionsSubject.send(.presentMediaUploadPreviewScreen(mediaURLs: mediaURLs))
actionsSubject.send(.presentMediaUploadPreviewScreen(mediaURLs: mediaURLs,
caption: composerViewModel.context.plainComposerText))
case .displaySenderDetails(userID: let userID):
actionsSubject.send(.presentRoomMemberDetails(userID: userID))
case .displayMessageForwarding(let forwardingItem):