summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-03-24 09:33:25 +0100
committerAndrej Mihajlov <and@mullvad.net>2023-03-24 09:33:25 +0100
commit323aec99ea1fbd2dde64e2158aa0b4981d14e6f3 (patch)
treebb4209298d7e198a82ebc29d17c634ed4336efdf
parent4be8566136bcb9070adcf9a9ec688bb3bccdbe07 (diff)
parent7b6394bb9ce8b7361a19c4b8f3fbf9e7a144d921 (diff)
downloadmullvadvpn-323aec99ea1fbd2dde64e2158aa0b4981d14e6f3.tar.xz
mullvadvpn-323aec99ea1fbd2dde64e2158aa0b4981d14e6f3.zip
Merge branch 'fix-logout-transition'
-rw-r--r--ios/MullvadVPN/Coordinators/App/ApplicationCoordinator.swift56
-rw-r--r--ios/MullvadVPN/Coordinators/App/ApplicationRouter.swift2
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