mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-26 19:34:25 +02:00
Prevent the Pin entry screen from being overlapped by other views
This commit is contained in:
committed by
Stefan Ceriu
parent
017abf7dc1
commit
0f3cb56725
@@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
@objc enum SetPinCoordinatorViewMode: Int {
|
||||
case setPin
|
||||
@@ -49,6 +50,8 @@ final class SetPinCoordinatorBridgePresenter: NSObject {
|
||||
|
||||
// MARK: Private
|
||||
|
||||
private var pinCoordinatorWindow: UIWindow?
|
||||
|
||||
private let session: MXSession?
|
||||
private var coordinator: SetPinCoordinator?
|
||||
var viewMode: SetPinCoordinatorViewMode {
|
||||
@@ -87,18 +90,23 @@ final class SetPinCoordinatorBridgePresenter: NSObject {
|
||||
self.coordinator = setPinCoordinator
|
||||
}
|
||||
|
||||
func present(in window: UIWindow) {
|
||||
func presentWithMainAppWindow(_ window: UIWindow) {
|
||||
let pinCoordinatorWindow = UIWindow(frame: window.bounds)
|
||||
|
||||
let setPinCoordinator = SetPinCoordinator(session: self.session, viewMode: self.viewMode, pinCodePreferences: .shared)
|
||||
setPinCoordinator.delegate = self
|
||||
guard let view = setPinCoordinator.toPresentable().view else { return }
|
||||
window.addSubview(view)
|
||||
view.leadingAnchor.constraint(equalTo: window.leadingAnchor, constant: 0).isActive = true
|
||||
view.trailingAnchor.constraint(equalTo: window.trailingAnchor, constant: 0).isActive = true
|
||||
view.topAnchor.constraint(equalTo: window.topAnchor, constant: 0).isActive = true
|
||||
view.bottomAnchor.constraint(equalTo: window.bottomAnchor, constant: 0).isActive = true
|
||||
pinCoordinatorWindow.addSubview(view)
|
||||
view.leadingAnchor.constraint(equalTo: pinCoordinatorWindow.leadingAnchor, constant: 0).isActive = true
|
||||
view.trailingAnchor.constraint(equalTo: pinCoordinatorWindow.trailingAnchor, constant: 0).isActive = true
|
||||
view.topAnchor.constraint(equalTo: pinCoordinatorWindow.topAnchor, constant: 0).isActive = true
|
||||
view.bottomAnchor.constraint(equalTo: pinCoordinatorWindow.bottomAnchor, constant: 0).isActive = true
|
||||
|
||||
pinCoordinatorWindow.makeKeyAndVisible()
|
||||
|
||||
setPinCoordinator.start()
|
||||
|
||||
self.pinCoordinatorWindow = pinCoordinatorWindow
|
||||
self.coordinator = setPinCoordinator
|
||||
}
|
||||
|
||||
@@ -106,6 +114,7 @@ final class SetPinCoordinatorBridgePresenter: NSObject {
|
||||
guard let coordinator = self.coordinator else {
|
||||
return
|
||||
}
|
||||
|
||||
coordinator.toPresentable().dismiss(animated: animated) {
|
||||
self.coordinator = nil
|
||||
|
||||
@@ -115,11 +124,10 @@ final class SetPinCoordinatorBridgePresenter: NSObject {
|
||||
}
|
||||
}
|
||||
|
||||
func dismiss() {
|
||||
guard let coordinator = self.coordinator else {
|
||||
return
|
||||
}
|
||||
coordinator.toPresentable().view.removeFromSuperview()
|
||||
func dismissWithMainAppWindow(_ window: UIWindow) {
|
||||
window.makeKeyAndVisible()
|
||||
pinCoordinatorWindow = nil
|
||||
coordinator = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user