Move timeline drag and drop handling to the recently introduced TimelineView.

This commit is contained in:
Stefan Ceriu
2025-06-06 13:18:04 +03:00
committed by Stefan Ceriu
parent f047e51ab8
commit eeff596932
3 changed files with 10 additions and 20 deletions

View File

@@ -13,7 +13,6 @@ struct RoomScreen: View {
@ObservedObject private var context: RoomScreenViewModelType.Context
@ObservedObject private var timelineContext: TimelineViewModelType.Context
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
@State private var dragOver = false
let composerToolbar: ComposerToolbar
init(context: RoomScreenViewModelType.Context,
@@ -73,15 +72,6 @@ struct RoomScreen: View {
.overlay { loadingIndicator }
.timelineMediaPreview(viewModel: $context.mediaPreviewViewModel)
.track(screen: .Room)
.onDrop(of: ["public.item", "public.file-url"], isTargeted: $dragOver) { providers -> Bool in
guard let provider = providers.first,
provider.isSupportedForPasteOrDrop else {
return false
}
timelineContext.send(viewAction: .handlePasteOrDrop(provider: provider))
return true
}
.sentryTrace("\(Self.self)")
}

View File

@@ -12,7 +12,6 @@ struct ThreadTimelineScreen: View {
@ObservedObject private var context: ThreadTimelineScreenViewModelType.Context
@ObservedObject private var timelineContext: TimelineViewModelType.Context
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
@State private var dragOver = false
private let composerToolbar: ComposerToolbar
init(context: ThreadTimelineScreenViewModelType.Context,
@@ -53,15 +52,6 @@ struct ThreadTimelineScreen: View {
// Make sure the reply header honours the hideTimelineMedia setting too.
.environment(\.shouldAutomaticallyLoadImages, !timelineContext.viewState.hideTimelineMedia)
}
.onDrop(of: ["public.item", "public.file-url"], isTargeted: $dragOver) { providers -> Bool in
guard let provider = providers.first,
provider.isSupportedForPasteOrDrop else {
return false
}
timelineContext.send(viewAction: .handlePasteOrDrop(provider: provider))
return true
}
}
@ViewBuilder

View File

@@ -10,6 +10,7 @@ import WysiwygComposer
struct TimelineView: View {
@ObservedObject var timelineContext: TimelineViewModel.Context
@State private var dragOver = false
var body: some View {
TimelineViewRepresentable()
@@ -51,6 +52,15 @@ struct TimelineView: View {
ReadReceiptsSummaryView(orderedReadReceipts: $0.orderedReceipts)
.environmentObject(timelineContext)
}
.onDrop(of: ["public.item", "public.file-url"], isTargeted: $dragOver) { providers -> Bool in
guard let provider = providers.first,
provider.isSupportedForPasteOrDrop else {
return false
}
timelineContext.send(viewAction: .handlePasteOrDrop(provider: provider))
return true
}
}
}