Add Event Routes to the flows (#2743)

This commit is contained in:
Doug
2024-04-25 12:50:06 +01:00
committed by GitHub
parent 8581355372
commit 6661c16154
8 changed files with 138 additions and 52 deletions
@@ -21,6 +21,7 @@ import WysiwygComposer
struct RoomScreenCoordinatorParameters {
let roomProxy: RoomProxyProtocol
var focussedEventID: String?
let timelineController: RoomTimelineControllerProtocol
let mediaProvider: MediaProviderProtocol
let mediaPlayerProvider: MediaPlayerProviderProtocol
@@ -59,6 +60,7 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
init(parameters: RoomScreenCoordinatorParameters) {
viewModel = RoomScreenViewModel(roomProxy: parameters.roomProxy,
focussedEventID: parameters.focussedEventID,
timelineController: parameters.timelineController,
mediaProvider: parameters.mediaProvider,
mediaPlayerProvider: parameters.mediaPlayerProvider,
@@ -129,6 +131,10 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
.store(in: &cancellables)
}
func focusOnEvent(eventID: String) {
Task { await viewModel.focusOnEvent(eventID: eventID) }
}
func stop() {
viewModel.stop()
}
@@ -49,6 +49,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
private var paginateBackwardsTask: Task<Void, Never>?
init(roomProxy: RoomProxyProtocol,
focussedEventID: String? = nil,
timelineController: RoomTimelineControllerProtocol,
mediaProvider: MediaProviderProtocol,
mediaPlayerProvider: MediaPlayerProviderProtocol,
@@ -90,6 +91,11 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
bindings: .init(reactionsCollapsed: [:])),
imageProvider: mediaProvider)
// This may change to load the detached timeline directly.
if let focussedEventID {
Task { await focusOnEvent(eventID: focussedEventID) }
}
setupSubscriptions()
setupDirectRoomSubscriptionsIfNeeded()
@@ -208,6 +214,8 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
}
}
func focusOnEvent(eventID: String) async { }
// MARK: - Private
private func attach(_ attachment: ComposerAttachmentType) {
@@ -23,5 +23,7 @@ protocol RoomScreenViewModelProtocol {
var actions: AnyPublisher<RoomScreenViewModelAction, Never> { get }
var context: RoomScreenViewModelType.Context { get }
func process(composerAction: ComposerToolbarViewModelAction)
/// Updates the timeline to show and highlight the item with the corresponding event ID.
func focusOnEvent(eventID: String) async
func stop()
}