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 let bridgeParameters: RoomCoordinatorBridgePresenterParameters
|
||||||
private var coordinator: RoomCoordinator?
|
private var coordinator: RoomCoordinator?
|
||||||
|
private var navigationType: NavigationType = .present
|
||||||
|
|
||||||
|
private enum NavigationType {
|
||||||
|
case present
|
||||||
|
case push
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: Public
|
// MARK: Public
|
||||||
|
|
||||||
|
@ -95,6 +101,7 @@ final class RoomCoordinatorBridgePresenter: NSObject {
|
||||||
coordinator.start()
|
coordinator.start()
|
||||||
|
|
||||||
self.coordinator = coordinator
|
self.coordinator = coordinator
|
||||||
|
self.navigationType = .present
|
||||||
}
|
}
|
||||||
|
|
||||||
func push(from navigationController: UINavigationController, animated: Bool) {
|
func push(from navigationController: UINavigationController, animated: Bool) {
|
||||||
|
@ -106,13 +113,25 @@ final class RoomCoordinatorBridgePresenter: NSObject {
|
||||||
coordinator.start() // Will trigger view controller push
|
coordinator.start() // Will trigger view controller push
|
||||||
|
|
||||||
self.coordinator = coordinator
|
self.coordinator = coordinator
|
||||||
|
self.navigationType = .push
|
||||||
}
|
}
|
||||||
|
|
||||||
func dismiss(animated: Bool, completion: (() -> Void)?) {
|
func dismiss(animated: Bool, completion: (() -> Void)?) {
|
||||||
guard let coordinator = self.coordinator else {
|
guard let coordinator = self.coordinator else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
coordinator.toPresentable().dismiss(animated: animated) {
|
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
|
self.coordinator = nil
|
||||||
|
|
||||||
completion?()
|
completion?()
|
||||||
|
|
Loading…
Reference in a new issue