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
@@ -11,6 +11,7 @@ import SwiftUI
struct MediaUploadPreviewScreenCoordinatorParameters {
let mediaURLs: [URL]
let caption: NSAttributedString?
let title: String?
let isRoomEncrypted: Bool
let shouldShowCaptionWarning: Bool
@@ -35,6 +36,7 @@ final class MediaUploadPreviewScreenCoordinator: CoordinatorProtocol {
init(parameters: MediaUploadPreviewScreenCoordinatorParameters) {
viewModel = MediaUploadPreviewScreenViewModel(mediaURLs: parameters.mediaURLs,
caption: parameters.caption,
title: parameters.title,
isRoomEncrypted: parameters.isRoomEncrypted,
shouldShowCaptionWarning: parameters.shouldShowCaptionWarning,
@@ -22,11 +22,11 @@ struct MediaUploadPreviewScreenViewState: BindableState {
var mediaEditVersion = 0
var bindings = MediaUploadPreviewScreenBindings()
var bindings: MediaUploadPreviewScreenBindings
}
struct MediaUploadPreviewScreenBindings: BindableState {
var caption = NSAttributedString()
var caption: NSAttributedString
var presendCallback: (() -> Void)?
var selectedRange = NSRange(location: 0, length: 0)
@@ -30,6 +30,7 @@ class MediaUploadPreviewScreenViewModel: MediaUploadPreviewScreenViewModelType,
}
init(mediaURLs: [URL],
caption: NSAttributedString?,
title: String?,
isRoomEncrypted: Bool,
shouldShowCaptionWarning: Bool,
@@ -49,7 +50,8 @@ class MediaUploadPreviewScreenViewModel: MediaUploadPreviewScreenViewModelType,
super.init(initialViewState: MediaUploadPreviewScreenViewState(mediaURLs: mediaURLs,
title: title,
shouldShowCaptionWarning: shouldShowCaptionWarning,
isRoomEncrypted: isRoomEncrypted))
isRoomEncrypted: isRoomEncrypted,
bindings: .init(caption: caption ?? NSAttributedString())))
}
override func process(viewAction: MediaUploadPreviewScreenViewAction) {
@@ -367,6 +367,7 @@ struct MediaUploadPreviewScreen_Previews: PreviewProvider, TestablePreview {
static let testURL = Bundle.main.url(forResource: "AppIcon60x60@2x", withExtension: "png")
static let viewModel = MediaUploadPreviewScreenViewModel(mediaURLs: [snapshotURL],
caption: nil,
title: "App Icon.png",
isRoomEncrypted: true,
shouldShowCaptionWarning: true,