mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-29 15:52:40 +00:00
Allow dismissal of pushed coordinator
This commit is contained in:
parent
5238165e63
commit
ec666f25a7
1 changed files with 20 additions and 1 deletions
|
@ -72,6 +72,12 @@ final class RoomCoordinatorBridgePresenter: NSObject {
|
|||
|
||||
private let bridgeParameters: RoomCoordinatorBridgePresenterParameters
|
||||
private var coordinator: RoomCoordinator?
|
||||
private var navigationType: NavigationType = .present
|
||||
|
||||
private enum NavigationType {
|
||||
case present
|
||||
case push
|
||||
}
|
||||
|
||||
// MARK: Public
|
||||
|
||||
|
@ -95,6 +101,7 @@ final class RoomCoordinatorBridgePresenter: NSObject {
|
|||
coordinator.start()
|
||||
|
||||
self.coordinator = coordinator
|
||||
self.navigationType = .present
|
||||
}
|
||||
|
||||
func push(from navigationController: UINavigationController, animated: Bool) {
|
||||
|
@ -106,15 +113,27 @@ final class RoomCoordinatorBridgePresenter: NSObject {
|
|||
coordinator.start() // Will trigger view controller push
|
||||
|
||||
self.coordinator = coordinator
|
||||
self.navigationType = .push
|
||||
}
|
||||
|
||||
func dismiss(animated: Bool, completion: (() -> Void)?) {
|
||||
guard let coordinator = self.coordinator else {
|
||||
return
|
||||
}
|
||||
switch navigationType {
|
||||
case .present:
|
||||
coordinator.toPresentable().dismiss(animated: animated) {
|
||||
self.coordinator = nil
|
||||
|
||||
completion?()
|
||||
}
|
||||
case .push:
|
||||
guard let navigationController = coordinator.toPresentable() as? UINavigationController else {
|
||||
return
|
||||
}
|
||||
navigationController.popViewController(animated: animated)
|
||||
self.coordinator = nil
|
||||
|
||||
completion?()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue