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
@@ -379,9 +379,11 @@ private struct NavigationSplitCoordinatorView: View {
// through the NavigationSplitCoordinator as well.
.sheet(item: $navigationSplitCoordinator.sheetModule) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
.fullScreenCover(item: $navigationSplitCoordinator.fullScreenCoverModule) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
// Handle `horizontalSizeClass` changes breaking the navigation bar
// https://github.com/element-hq/element-x-ios/issues/617
@@ -408,8 +410,10 @@ private struct NavigationSplitCoordinatorView: View {
var navigationStack: some View {
NavigationStack(path: navigationSplitCoordinator.compactLayoutStackModulesBinding) {
navigationSplitCoordinator.compactLayoutRootModule?.coordinator?.toPresentable()
.id(navigationSplitCoordinator.compactLayoutRootModule?.id) // Is a nil ID ok?
.navigationDestination(for: NavigationModule.self) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
}
}
@@ -419,19 +423,24 @@ private struct NavigationSplitCoordinatorView: View {
NavigationSplitView(columnVisibility: $columnVisibility) {
if let sidebarModule = navigationSplitCoordinator.sidebarModule {
sidebarModule.coordinator?.toPresentable()
.id(sidebarModule.id)
} else {
navigationSplitCoordinator.placeholderModule.coordinator?.toPresentable()
.id(navigationSplitCoordinator.placeholderModule.id)
}
} detail: {
if let detailModule = navigationSplitCoordinator.detailModule {
detailModule.coordinator?.toPresentable()
.id(detailModule.id)
} else {
navigationSplitCoordinator.placeholderModule.coordinator?.toPresentable()
.id(navigationSplitCoordinator.placeholderModule.id)
}
}
.navigationSplitViewStyle(.balanced)
.navigationDestination(for: NavigationModule.self) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
.animation(.elementDefault, value: navigationSplitCoordinator.sidebarModule)
.animation(.elementDefault, value: navigationSplitCoordinator.detailModule)
@@ -713,15 +722,19 @@ private struct NavigationStackCoordinatorView: View {
var body: some View {
NavigationStack(path: $navigationStackCoordinator.stackModules) {
navigationStackCoordinator.rootModule?.coordinator?.toPresentable()
.id(navigationStackCoordinator.rootModule?.id) // Is a nil ID ok?
.navigationDestination(for: NavigationModule.self) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
}
.sheet(item: $navigationStackCoordinator.sheetModule) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
.fullScreenCover(item: $navigationStackCoordinator.fullScreenCoverModule) { module in
module.coordinator?.toPresentable()
.id(module.id)
}
.animation(.elementDefault, value: navigationStackCoordinator.rootModule)
}