mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Move timeline drag and drop handling to the recently introduced TimelineView.
This commit is contained in:
committed by
Stefan Ceriu
parent
fcf50d469e
commit
a4398b45fa
@@ -13,7 +13,6 @@ struct RoomScreen: View {
|
|||||||
@ObservedObject private var context: RoomScreenViewModelType.Context
|
@ObservedObject private var context: RoomScreenViewModelType.Context
|
||||||
@ObservedObject private var timelineContext: TimelineViewModelType.Context
|
@ObservedObject private var timelineContext: TimelineViewModelType.Context
|
||||||
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
|
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
|
||||||
@State private var dragOver = false
|
|
||||||
let composerToolbar: ComposerToolbar
|
let composerToolbar: ComposerToolbar
|
||||||
|
|
||||||
init(context: RoomScreenViewModelType.Context,
|
init(context: RoomScreenViewModelType.Context,
|
||||||
@@ -73,15 +72,6 @@ struct RoomScreen: View {
|
|||||||
.overlay { loadingIndicator }
|
.overlay { loadingIndicator }
|
||||||
.timelineMediaPreview(viewModel: $context.mediaPreviewViewModel)
|
.timelineMediaPreview(viewModel: $context.mediaPreviewViewModel)
|
||||||
.track(screen: .Room)
|
.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)")
|
.sentryTrace("\(Self.self)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ struct ThreadTimelineScreen: View {
|
|||||||
@ObservedObject private var context: ThreadTimelineScreenViewModelType.Context
|
@ObservedObject private var context: ThreadTimelineScreenViewModelType.Context
|
||||||
@ObservedObject private var timelineContext: TimelineViewModelType.Context
|
@ObservedObject private var timelineContext: TimelineViewModelType.Context
|
||||||
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
|
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
|
||||||
@State private var dragOver = false
|
|
||||||
private let composerToolbar: ComposerToolbar
|
private let composerToolbar: ComposerToolbar
|
||||||
|
|
||||||
init(context: ThreadTimelineScreenViewModelType.Context,
|
init(context: ThreadTimelineScreenViewModelType.Context,
|
||||||
@@ -53,15 +52,6 @@ struct ThreadTimelineScreen: View {
|
|||||||
// Make sure the reply header honours the hideTimelineMedia setting too.
|
// Make sure the reply header honours the hideTimelineMedia setting too.
|
||||||
.environment(\.shouldAutomaticallyLoadImages, !timelineContext.viewState.hideTimelineMedia)
|
.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
|
@ViewBuilder
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import WysiwygComposer
|
|||||||
|
|
||||||
struct TimelineView: View {
|
struct TimelineView: View {
|
||||||
@ObservedObject var timelineContext: TimelineViewModel.Context
|
@ObservedObject var timelineContext: TimelineViewModel.Context
|
||||||
|
@State private var dragOver = false
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
TimelineViewRepresentable()
|
TimelineViewRepresentable()
|
||||||
@@ -51,6 +52,15 @@ struct TimelineView: View {
|
|||||||
ReadReceiptsSummaryView(orderedReadReceipts: $0.orderedReceipts)
|
ReadReceiptsSummaryView(orderedReadReceipts: $0.orderedReceipts)
|
||||||
.environmentObject(timelineContext)
|
.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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user