Permalink Tweaks (#2768)

* Revert back to creating a new flow when re-selecting the same room.

Fix the composer bug by adding IDs to the all of the module AnyViews.

* Don't show the live timeline when starting with a focussed event.
This commit is contained in:
Doug
2024-04-30 17:25:32 +01:00
committed by GitHub
parent 7c94ed98a5
commit f688d2eda4
15 changed files with 203 additions and 35 deletions
@@ -62,6 +62,7 @@ struct RoomDetailsScreen: View {
}
}
.navigationTitle(L10n.screenRoomDetailsTitle)
.navigationBarTitleDisplayMode(.inline)
.track(screen: .RoomDetails)
.interactiveQuickLook(item: $context.mediaPreviewItem, shouldHideControls: true)
}
@@ -95,28 +95,28 @@ 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) }
if focussedEventID != nil {
// The timeline controller will start loading a detached timeline.
showFocusLoadingIndicator()
}
setupSubscriptions()
setupDirectRoomSubscriptionsIfNeeded()
state.timelineItemMenuActionProvider = { [weak self] itemId -> TimelineItemMenuActions? in
state.timelineItemMenuActionProvider = { [weak self] itemID -> TimelineItemMenuActions? in
guard let self else {
return nil
}
return self.roomScreenInteractionHandler.timelineItemMenuActionsForItemId(itemId)
return self.roomScreenInteractionHandler.timelineItemMenuActionsForItemId(itemID)
}
state.audioPlayerStateProvider = { [weak self] itemId -> AudioPlayerState? in
state.audioPlayerStateProvider = { [weak self] itemID -> AudioPlayerState? in
guard let self else {
return nil
}
return self.roomScreenInteractionHandler.audioPlayerState(for: itemId)
return self.roomScreenInteractionHandler.audioPlayerState(for: itemID)
}
buildTimelineViews()
@@ -191,8 +191,10 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
case .focusLive:
focusLive()
case .scrolledToFocussedItem:
// Use a Task to mutate view state after the current view update.
Task { state.timelineViewState.focussedEventNeedsDisplay = false }
Task { // Use a Task to mutate view state after the current view update.
state.timelineViewState.focussedEventNeedsDisplay = false
hideFocusLoadingIndicator()
}
}
}