mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 00:49:44 +00:00
Fixes #317 - Adopt a split layout for iPad and Mac apps
Rename navigation components: SplitScreenCoordinator -> NavigationSplitCoordinator, StackScreenCoordinator -> NavigationStackCoordinator and SingleScreenCoordinator -> NavigationRootCoordinator [0c161039] Tweak navigation logging [826c19cf] Move the navigation dismissal callbacks to the NavigationModule, add SingleScreenCoordinator tests [b8830d9c] Add tests [252ad119] Merge the StackScreenCoordinator and SplitScreenCoordinators into a single file and stop publicly exposing their internal workings. Add more documentation. [37671699] Cleanup navigation logging [51406184] Use the parent SplitScreenCoordinator to present embedded StackScreenCoordinator sheets [b94b04c9] Retract the room "syncing" indicator when dismissing a room [1467b0ac] Correctly move to the no room selected state when popping in compact layouts [10bf2ad8] Allow nilling root coordinators, replace present/dismiss sheet with setSheetCoordinator(?) [33716784] Add single screen coordinator fade transition animation [3cbe65e7] Prevent the timeline table view from being reused between different rooms [9c94c50b] Move files around [c10b6bc5] Adapt the user session state machine to the split layout [7115a319] Fix unit and UI tests [1ece59e8] Fix login flows [6884dc3b] Use modules everywhere the underlying object is a NavigationModule [ab08d44c] Rename navigation components to: SingleScreenCoordinator, SplitScreenCoordinator and StackScreenCoordinator [ada2be57] Add SplitNavigationController * Remove the navigationRootCoordinator from the UserSessionFlowCoordinator
This commit is contained in:
@@ -19,11 +19,11 @@ import UIKit
|
||||
|
||||
class UITestsAppCoordinator: AppCoordinatorProtocol {
|
||||
private var currentRootCoordinator: CoordinatorProtocol?
|
||||
private let navigationController: NavigationController
|
||||
private let navigationStackCoordinator: NavigationStackCoordinator
|
||||
let notificationManager: NotificationManagerProtocol? = nil
|
||||
|
||||
init() {
|
||||
navigationController = NavigationController()
|
||||
navigationStackCoordinator = NavigationStackCoordinator()
|
||||
|
||||
ServiceLocator.shared.register(userNotificationController: MockUserNotificationController())
|
||||
}
|
||||
@@ -39,32 +39,32 @@ class UITestsAppCoordinator: AppCoordinatorProtocol {
|
||||
// For example when replacing the root in the authentication flows
|
||||
self.currentRootCoordinator = screen.coordinator
|
||||
|
||||
self.navigationController.setRootCoordinator(screen.coordinator)
|
||||
self.navigationStackCoordinator.setRootCoordinator(screen.coordinator)
|
||||
}
|
||||
|
||||
navigationController.setRootCoordinator(rootCoordinator)
|
||||
navigationStackCoordinator.setRootCoordinator(rootCoordinator)
|
||||
|
||||
Bundle.elementFallbackLanguage = "en"
|
||||
}
|
||||
|
||||
func toPresentable() -> AnyView {
|
||||
navigationController.toPresentable()
|
||||
navigationStackCoordinator.toPresentable()
|
||||
}
|
||||
|
||||
private func mockScreens() -> [MockScreen] {
|
||||
UITestScreenIdentifier.allCases.map { MockScreen(id: $0, navigationController: navigationController) }
|
||||
UITestScreenIdentifier.allCases.map { MockScreen(id: $0, navigationStackCoordinator: navigationStackCoordinator) }
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
class MockScreen: Identifiable {
|
||||
let id: UITestScreenIdentifier
|
||||
let navigationController: NavigationController
|
||||
let navigationStackCoordinator: NavigationStackCoordinator
|
||||
lazy var coordinator: CoordinatorProtocol = {
|
||||
switch id {
|
||||
case .login:
|
||||
return LoginCoordinator(parameters: .init(authenticationService: MockAuthenticationServiceProxy(),
|
||||
navigationController: navigationController))
|
||||
navigationStackCoordinator: navigationStackCoordinator))
|
||||
case .serverSelection:
|
||||
return ServerSelectionCoordinator(parameters: .init(authenticationService: MockAuthenticationServiceProxy(),
|
||||
userNotificationController: MockUserNotificationController(),
|
||||
@@ -78,7 +78,7 @@ class MockScreen: Identifiable {
|
||||
mediaProvider: MockMediaProvider())))
|
||||
case .authenticationFlow:
|
||||
return AuthenticationCoordinator(authenticationService: MockAuthenticationServiceProxy(),
|
||||
navigationController: navigationController)
|
||||
navigationStackCoordinator: navigationStackCoordinator)
|
||||
case .softLogout:
|
||||
let credentials = SoftLogoutCredentials(userId: "@mock:matrix.org",
|
||||
homeserverName: "matrix.org",
|
||||
@@ -97,9 +97,9 @@ class MockScreen: Identifiable {
|
||||
return HomeScreenCoordinator(parameters: .init(userSession: session,
|
||||
attributedStringBuilder: AttributedStringBuilder(),
|
||||
bugReportService: MockBugReportService(),
|
||||
navigationController: navigationController))
|
||||
navigationStackCoordinator: navigationStackCoordinator))
|
||||
case .settings:
|
||||
return SettingsCoordinator(parameters: .init(navigationController: navigationController,
|
||||
return SettingsCoordinator(parameters: .init(navigationStackCoordinator: navigationStackCoordinator,
|
||||
userNotificationController: MockUserNotificationController(),
|
||||
userSession: MockUserSession(clientProxy: MockClientProxy(userIdentifier: "@mock:client.com"),
|
||||
mediaProvider: MockMediaProvider()),
|
||||
@@ -117,7 +117,7 @@ class MockScreen: Identifiable {
|
||||
case .onboarding:
|
||||
return OnboardingCoordinator()
|
||||
case .roomPlainNoAvatar:
|
||||
let parameters = RoomScreenCoordinatorParameters(navigationController: navigationController,
|
||||
let parameters = RoomScreenCoordinatorParameters(navigationStackCoordinator: navigationStackCoordinator,
|
||||
timelineController: MockRoomTimelineController(),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
roomName: "Some room name",
|
||||
@@ -125,7 +125,7 @@ class MockScreen: Identifiable {
|
||||
emojiProvider: EmojiProvider())
|
||||
return RoomScreenCoordinator(parameters: parameters)
|
||||
case .roomEncryptedWithAvatar:
|
||||
let parameters = RoomScreenCoordinatorParameters(navigationController: navigationController,
|
||||
let parameters = RoomScreenCoordinatorParameters(navigationStackCoordinator: navigationStackCoordinator,
|
||||
timelineController: MockRoomTimelineController(),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
roomName: "Some room name",
|
||||
@@ -138,8 +138,8 @@ class MockScreen: Identifiable {
|
||||
}
|
||||
}()
|
||||
|
||||
init(id: UITestScreenIdentifier, navigationController: NavigationController) {
|
||||
init(id: UITestScreenIdentifier, navigationStackCoordinator: NavigationStackCoordinator) {
|
||||
self.id = id
|
||||
self.navigationController = navigationController
|
||||
self.navigationStackCoordinator = navigationStackCoordinator
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user