From 063d0e4f52a270c4941c81403ac7838d2581d1fb Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Wed, 24 Sep 2025 12:16:47 +0300 Subject: [PATCH] Properly use the new `hideBrandChrome` in the `AuthenticationStartLogo` --- .../Sources/Application/AppCoordinator.swift | 5 +++-- .../AppLockFlowCoordinator.swift | 7 +++++-- .../UserSessionFlowCoordinator.swift | 4 ++-- .../View/AuthenticationStartLogo.swift | 18 +++++++++++++----- .../View/AuthenticationStartScreen.swift | 2 +- .../Other/PlaceholderScreenCoordinator.swift | 14 +++++++------- .../UITests/UITestsAppCoordinator.swift | 5 +++-- ...laceholderScreen.Screen-iPhone-16-en-GB.png | 3 --- ...aceholderScreen.Screen-iPhone-16-pseudo.png | 3 --- ...holderScreen.With-background-iPad-en-GB.png | 3 --- ...olderScreen.With-background-iPad-pseudo.png | 3 --- ...aceholderScreen.With-chrome-iPad-en-GB.png} | 0 ...ceholderScreen.With-chrome-iPad-pseudo.png} | 0 ...lderScreen.With-chrome-iPhone-16-en-GB.png} | 0 ...derScreen.With-chrome-iPhone-16-pseudo.png} | 0 ...eholderScreen.Without-chrome-iPad-en-GB.png | 3 +++ ...holderScreen.Without-chrome-iPad-pseudo.png | 3 +++ ...erScreen.Without-chrome-iPhone-16-en-GB.png | 3 +++ ...rScreen.Without-chrome-iPhone-16-pseudo.png | 3 +++ .../Sources/ChatsFlowCoordinatorTests.swift | 2 +- .../Sources/RoomFlowCoordinatorTests.swift | 2 +- 21 files changed, 48 insertions(+), 35 deletions(-) delete mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-en-GB.png delete mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-pseudo.png delete mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-en-GB.png delete mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-pseudo.png rename PreviewTests/Sources/__Snapshots__/PreviewTests/{placeholderScreen.Screen-iPad-en-GB.png => placeholderScreen.With-chrome-iPad-en-GB.png} (100%) rename PreviewTests/Sources/__Snapshots__/PreviewTests/{placeholderScreen.Screen-iPad-pseudo.png => placeholderScreen.With-chrome-iPad-pseudo.png} (100%) rename PreviewTests/Sources/__Snapshots__/PreviewTests/{placeholderScreen.With-background-iPhone-16-en-GB.png => placeholderScreen.With-chrome-iPhone-16-en-GB.png} (100%) rename PreviewTests/Sources/__Snapshots__/PreviewTests/{placeholderScreen.With-background-iPhone-16-pseudo.png => placeholderScreen.With-chrome-iPhone-16-pseudo.png} (100%) create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-pseudo.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-en-GB.png create mode 100644 PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-pseudo.png diff --git a/ElementX/Sources/Application/AppCoordinator.swift b/ElementX/Sources/Application/AppCoordinator.swift index 8e02fab43..69bc3161b 100644 --- a/ElementX/Sources/Application/AppCoordinator.swift +++ b/ElementX/Sources/Application/AppCoordinator.swift @@ -111,7 +111,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg let appLockService = AppLockService(keychainController: keychainController, appSettings: appSettings) let appLockNavigationCoordinator = NavigationRootCoordinator() appLockFlowCoordinator = AppLockFlowCoordinator(appLockService: appLockService, - navigationCoordinator: appLockNavigationCoordinator) + navigationCoordinator: appLockNavigationCoordinator, + appSettings: appSettings) notificationManager = NotificationManager(notificationCenter: UNUserNotificationCenter.current(), appSettings: appSettings) @@ -911,7 +912,7 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg showLoadingIndicator() - navigationRootCoordinator.setRootCoordinator(PlaceholderScreenCoordinator()) + navigationRootCoordinator.setRootCoordinator(PlaceholderScreenCoordinator(hideBrandChrome: appSettings.hideBrandChrome)) stopSync(isBackgroundTask: false) userSessionFlowCoordinator?.stop() diff --git a/ElementX/Sources/FlowCoordinators/AppLockFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/AppLockFlowCoordinator.swift index 10d32ffe4..a13eb2dbb 100644 --- a/ElementX/Sources/FlowCoordinators/AppLockFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/AppLockFlowCoordinator.swift @@ -22,6 +22,7 @@ enum AppLockFlowCoordinatorAction: Equatable { class AppLockFlowCoordinator: CoordinatorProtocol { let appLockService: AppLockServiceProtocol let navigationCoordinator: NavigationRootCoordinator + let appSettings: AppSettings /// States the flow can find itself in enum State: StateType { @@ -89,9 +90,11 @@ class AppLockFlowCoordinator: CoordinatorProtocol { init(initialState: State = .initial, appLockService: AppLockServiceProtocol, navigationCoordinator: NavigationRootCoordinator, - notificationCenter: NotificationCenter = .default) { + notificationCenter: NotificationCenter = .default, + appSettings: AppSettings) { self.appLockService = appLockService self.navigationCoordinator = navigationCoordinator + self.appSettings = appSettings // Set the initial state and start with the placeholder screen as the root view. stateMachine = .init(state: initialState) @@ -218,7 +221,7 @@ class AppLockFlowCoordinator: CoordinatorProtocol { /// Displays the unlock flow with the app's placeholder view to hide obscure the view hierarchy in the app switcher. private func showPlaceholder() { - navigationCoordinator.setRootCoordinator(PlaceholderScreenCoordinator(hideBrandChrome: false), animated: false) + navigationCoordinator.setRootCoordinator(PlaceholderScreenCoordinator(hideBrandChrome: appSettings.hideBrandChrome), animated: false) actionsSubject.send(.lockApp) } diff --git a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift index 2b5f5bbf1..ee3c691a8 100644 --- a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift @@ -77,7 +77,7 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { navigationTabCoordinator = NavigationTabCoordinator() navigationRootCoordinator.setRootCoordinator(navigationTabCoordinator) - let chatsSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator()) + let chatsSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: flowParameters.appSettings.hideBrandChrome)) chatsFlowCoordinator = ChatsFlowCoordinator(isNewLogin: isNewLogin, navigationSplitCoordinator: chatsSplitCoordinator, flowParameters: flowParameters) @@ -88,7 +88,7 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { chatsTabDetails.barVisibilityOverride = .hidden } - let spacesSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator()) + let spacesSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: flowParameters.appSettings.hideBrandChrome)) spaceExplorerFlowCoordinator = SpaceExplorerFlowCoordinator(navigationSplitCoordinator: spacesSplitCoordinator, flowParameters: flowParameters) spacesTabDetails = .init(tag: HomeTab.spaces, title: L10n.screenHomeTabSpaces, icon: \.space, selectedIcon: \.spaceSolid) diff --git a/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartLogo.swift b/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartLogo.swift index 6acd85438..2c075cc29 100644 --- a/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartLogo.swift +++ b/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartLogo.swift @@ -12,7 +12,7 @@ struct AuthenticationStartLogo: View { @Environment(\.colorScheme) private var colorScheme /// Set to `true` when using on top of `Asset.Images.launchBackground` - let isOnGradient: Bool + let hideBrandChrome: Bool /// Extra padding needed to avoid cropping the shadows. private let extra: CGFloat = 64 @@ -22,11 +22,19 @@ struct AuthenticationStartLogo: View { private var isLight: Bool { colorScheme == .light } var body: some View { + if hideBrandChrome { + Image(asset: Asset.Images.appLogo) + } else { + brandLogo + } + } + + private var brandLogo: some View { Image(asset: Asset.Images.appLogo) .background { Circle() .inset(by: 1) - .shadow(color: .black.opacity(!isLight && isOnGradient ? 0.3 : 0.4), + .shadow(color: .black.opacity(!isLight ? 0.3 : 0.4), radius: 12.57143, y: 6.28571) @@ -40,19 +48,19 @@ struct AuthenticationStartLogo: View { .padding(24) .background { Color.white - .opacity(isLight ? 0.23 : isOnGradient ? 0.05 : 0.13) + .opacity(isLight ? 0.23 : 0.05) } .clipShape(outerShape) .overlay { outerShape .inset(by: 0.25) - .stroke(.white.opacity(isLight ? 1 : isOnGradient ? 0.9 : 0.25), lineWidth: 0.5) + .stroke(.white.opacity(isLight ? 1 : 0.9), lineWidth: 0.5) .blendMode(isLight ? .normal : .overlay) } .padding(extra) .background { ZStack { - if !isLight, isOnGradient { + if !isLight { outerShape .inset(by: 1) .padding(extra) diff --git a/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartScreen.swift b/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartScreen.swift index 00a6ccdbb..14542b277 100644 --- a/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartScreen.swift +++ b/ElementX/Sources/Screens/Authentication/StartScreen/View/AuthenticationStartScreen.swift @@ -62,7 +62,7 @@ struct AuthenticationStartScreen: View { if verticalSizeClass == .regular { Spacer() - AuthenticationStartLogo(isOnGradient: !context.viewState.hideBrandChrome) + AuthenticationStartLogo(hideBrandChrome: context.viewState.hideBrandChrome) } Spacer() diff --git a/ElementX/Sources/Screens/Other/PlaceholderScreenCoordinator.swift b/ElementX/Sources/Screens/Other/PlaceholderScreenCoordinator.swift index b9c2eee28..094db241b 100644 --- a/ElementX/Sources/Screens/Other/PlaceholderScreenCoordinator.swift +++ b/ElementX/Sources/Screens/Other/PlaceholderScreenCoordinator.swift @@ -10,7 +10,7 @@ import SwiftUI class PlaceholderScreenCoordinator: CoordinatorProtocol { private let hideBrandChrome: Bool - init(hideBrandChrome: Bool = true) { + init(hideBrandChrome: Bool) { self.hideBrandChrome = hideBrandChrome } @@ -24,7 +24,7 @@ struct PlaceholderScreen: View { let hideBrandChrome: Bool var body: some View { - AuthenticationStartLogo(isOnGradient: !hideBrandChrome) + AuthenticationStartLogo(hideBrandChrome: hideBrandChrome) .frame(maxWidth: .infinity, maxHeight: .infinity) .background { if !hideBrandChrome { @@ -40,11 +40,11 @@ struct PlaceholderScreen: View { struct PlaceholderScreen_Previews: PreviewProvider, TestablePreview { static var previews: some View { - PlaceholderScreen(hideBrandChrome: true) - .previewDisplayName("Screen") - PlaceholderScreen(hideBrandChrome: false) - .previewDisplayName("With background") + .previewDisplayName("With chrome") + + PlaceholderScreen(hideBrandChrome: true) + .previewDisplayName("Without chrome") NavigationSplitView { List { @@ -53,7 +53,7 @@ struct PlaceholderScreen_Previews: PreviewProvider, TestablePreview { } } } detail: { - PlaceholderScreen(hideBrandChrome: true) + PlaceholderScreen(hideBrandChrome: false) } .previewDisplayName("Split View") .previewInterfaceOrientation(.landscapeLeft) diff --git a/ElementX/Sources/UITests/UITestsAppCoordinator.swift b/ElementX/Sources/UITests/UITestsAppCoordinator.swift index f2d6ebc78..1fe5d9338 100644 --- a/ElementX/Sources/UITests/UITestsAppCoordinator.swift +++ b/ElementX/Sources/UITests/UITestsAppCoordinator.swift @@ -198,7 +198,8 @@ class MockScreen: Identifiable { let flowCoordinator = AppLockFlowCoordinator(initialState: .unlocked, appLockService: appLockService, navigationCoordinator: navigationCoordinator, - notificationCenter: notificationCenter) + notificationCenter: notificationCenter, + appSettings: ServiceLocator.shared.settings) flowCoordinator.actions .sink { [weak self] action in @@ -751,7 +752,7 @@ class MockScreen: Identifiable { appSettings.hasRunIdentityConfirmationOnboarding = true appSettings.hasRunNotificationPermissionsOnboarding = true appSettings.analyticsConsentState = .optedOut - let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator()) + let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: false)) navigationRootCoordinator.setRootCoordinator(navigationSplitCoordinator) let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))) diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-en-GB.png deleted file mode 100644 index 14a79011f..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-en-GB.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6466a4dabc841afdb8e8fa1075d2a522df2001afd3b0ea38920757693d1a257 -size 131689 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-pseudo.png deleted file mode 100644 index 14a79011f..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPhone-16-pseudo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6466a4dabc841afdb8e8fa1075d2a522df2001afd3b0ea38920757693d1a257 -size 131689 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-en-GB.png deleted file mode 100644 index d7d93829c..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-en-GB.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61f6e4e2777ed816cee39e9a833ecd4e8591f04056bf06da055f402db5048bd2 -size 192719 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-pseudo.png deleted file mode 100644 index d7d93829c..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPad-pseudo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61f6e4e2777ed816cee39e9a833ecd4e8591f04056bf06da055f402db5048bd2 -size 192719 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPad-en-GB.png similarity index 100% rename from PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPad-en-GB.png rename to PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPad-en-GB.png diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPad-pseudo.png similarity index 100% rename from PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Screen-iPad-pseudo.png rename to PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPad-pseudo.png diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPhone-16-en-GB.png similarity index 100% rename from PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPhone-16-en-GB.png rename to PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPhone-16-en-GB.png diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPhone-16-pseudo.png similarity index 100% rename from PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-background-iPhone-16-pseudo.png rename to PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.With-chrome-iPhone-16-pseudo.png diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-en-GB.png new file mode 100644 index 000000000..e3b75100c --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4380953ce3d71548e00c2a13e887c072e9be87683649b01e1229650450fb43ef +size 111030 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-pseudo.png new file mode 100644 index 000000000..e3b75100c --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPad-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4380953ce3d71548e00c2a13e887c072e9be87683649b01e1229650450fb43ef +size 111030 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-en-GB.png new file mode 100644 index 000000000..54adbdae7 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-en-GB.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8917e9fd0ba16e0986b2ce7fdb5b1d6c14606161da7cd8f2f1a632d596553d3b +size 69542 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-pseudo.png new file mode 100644 index 000000000..54adbdae7 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/placeholderScreen.Without-chrome-iPhone-16-pseudo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8917e9fd0ba16e0986b2ce7fdb5b1d6c14606161da7cd8f2f1a632d596553d3b +size 69542 diff --git a/UnitTests/Sources/ChatsFlowCoordinatorTests.swift b/UnitTests/Sources/ChatsFlowCoordinatorTests.swift index 559813e5e..4a0e6b40a 100644 --- a/UnitTests/Sources/ChatsFlowCoordinatorTests.swift +++ b/UnitTests/Sources/ChatsFlowCoordinatorTests.swift @@ -29,7 +29,7 @@ class ChatsFlowCoordinatorTests: XCTestCase { clientProxy = ClientProxyMock(.init(userID: "hi@bob", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))))) timelineControllerFactory = TimelineControllerFactoryMock(.init()) - splitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator()) + splitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: false)) notificationManager = NotificationManagerMock() diff --git a/UnitTests/Sources/RoomFlowCoordinatorTests.swift b/UnitTests/Sources/RoomFlowCoordinatorTests.swift index 36b70ad70..ab5f8cde0 100644 --- a/UnitTests/Sources/RoomFlowCoordinatorTests.swift +++ b/UnitTests/Sources/RoomFlowCoordinatorTests.swift @@ -347,7 +347,7 @@ class RoomFlowCoordinatorTests: XCTestCase { } } - let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator()) + let navigationSplitCoordinator = NavigationSplitCoordinator(placeholderCoordinator: PlaceholderScreenCoordinator(hideBrandChrome: false)) navigationStackCoordinator = NavigationStackCoordinator() navigationSplitCoordinator.setDetailCoordinator(navigationStackCoordinator)