diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2023-03-24 09:33:25 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-03-24 09:33:25 +0100 |
| commit | 323aec99ea1fbd2dde64e2158aa0b4981d14e6f3 (patch) | |
| tree | bb4209298d7e198a82ebc29d17c634ed4336efdf | |
| parent | 4be8566136bcb9070adcf9a9ec688bb3bccdbe07 (diff) | |
| parent | 7b6394bb9ce8b7361a19c4b8f3fbf9e7a144d921 (diff) | |
| download | mullvadvpn-323aec99ea1fbd2dde64e2158aa0b4981d14e6f3.tar.xz mullvadvpn-323aec99ea1fbd2dde64e2158aa0b4981d14e6f3.zip | |
Merge branch 'fix-logout-transition'
| -rw-r--r-- | ios/MullvadVPN/Coordinators/App/ApplicationCoordinator.swift | 56 | ||||
| -rw-r--r-- | ios/MullvadVPN/Coordinators/App/ApplicationRouter.swift | 2 |
2 files changed, 31 insertions, 27 deletions
diff --git a/ios/MullvadVPN/Coordinators/App/ApplicationCoordinator.swift b/ios/MullvadVPN/Coordinators/App/ApplicationCoordinator.swift index 8cbdfe8a13..c0b18a2aaf 100644 --- a/ios/MullvadVPN/Coordinators/App/ApplicationCoordinator.swift +++ b/ios/MullvadVPN/Coordinators/App/ApplicationCoordinator.swift @@ -285,10 +285,22 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo } } - private func didLogout() { - router.dismissAll(.primary, animated: false) + private func didDismissSettings(_ reason: SettingsDismissReason) { + if isPad { + router.dismissAll(.settings, animated: true) + + if reason == .userLoggedOut { + router.dismissAll(.primary, animated: true) + continueFlow(animated: true) + } + } else { + if reason == .userLoggedOut { + router.dismissAll(.primary, animated: false) + continueFlow(animated: false) + } - continueFlow(animated: true) + router.dismissAll(.settings, animated: true) + } } /** @@ -312,21 +324,17 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo On iPhone this function simply passes the primary navigation container to the `block` and nothing else. */ - private func beginHorizontalFlow(_ completion: (() -> Void)? = nil) { - if isPad { - if secondaryNavigationContainer.presentingViewController == nil { - secondaryRootConfiguration.apply(to: secondaryNavigationContainer) + private func beginHorizontalFlow(animated: Bool, completion: @escaping () -> Void) { + if isPad, secondaryNavigationContainer.presentingViewController == nil { + secondaryRootConfiguration.apply(to: secondaryNavigationContainer) - primaryNavigationContainer.present( - secondaryNavigationContainer, - animated: true, - completion: completion - ) - } else { - completion?() - } + primaryNavigationContainer.present( + secondaryNavigationContainer, + animated: animated, + completion: completion + ) } else { - completion?() + completion() } } @@ -382,7 +390,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo addChild(coordinator) coordinator.start() - beginHorizontalFlow { + beginHorizontalFlow(animated: animated) { completion(coordinator) } } @@ -400,7 +408,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo addChild(tunnelCoordinator) tunnelCoordinator.start() - beginHorizontalFlow { + beginHorizontalFlow(animated: animated) { completion(tunnelCoordinator) } } @@ -418,7 +426,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo addChild(coordinator) coordinator.start(animated: animated) - beginHorizontalFlow { + beginHorizontalFlow(animated: animated) { completion(coordinator) } } @@ -443,7 +451,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo addChild(coordinator) coordinator.start(animated: animated) - beginHorizontalFlow { + beginHorizontalFlow(animated: animated) { completion(coordinator) } } @@ -478,7 +486,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo addChild(coordinator) coordinator.start(animated: animated) - beginHorizontalFlow { + beginHorizontalFlow(animated: animated) { completion(coordinator) } } @@ -532,11 +540,7 @@ final class ApplicationCoordinator: Coordinator, Presenting, RootContainerViewCo ) coordinator.didFinish = { [weak self] coordinator, reason in - self?.router.dismissAll(.settings, animated: true) - - if reason == .userLoggedOut { - self?.didLogout() - } + self?.didDismissSettings(reason) } coordinator.willNavigate = { [weak self] coordinator, from, to in diff --git a/ios/MullvadVPN/Coordinators/App/ApplicationRouter.swift b/ios/MullvadVPN/Coordinators/App/ApplicationRouter.swift index ac88c74926..b407e3127a 100644 --- a/ios/MullvadVPN/Coordinators/App/ApplicationRouter.swift +++ b/ios/MullvadVPN/Coordinators/App/ApplicationRouter.swift @@ -425,7 +425,7 @@ final class ApplicationRouter { Check if route can be presented above the last route in the modal stack. */ if let lastRouteGroup = modalStack.last, lastRouteGroup >= route.routeGroup, - route.routeGroup.isModal + route.routeGroup.isModal, route.isExclusive { completion(.blockedByModalContext) return |
