Skip to content

Commit

Permalink
Prevent the Pin entry screen from being overlapped.
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanceriu committed Jun 7, 2022
1 parent 17f1843 commit bc30437
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
10 changes: 5 additions & 5 deletions Riot/Modules/Application/LegacyAppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ - (void)applicationWillResignActive:(UIApplication *)application
}
self.setPinCoordinatorBridgePresenter = [[SetPinCoordinatorBridgePresenter alloc] initWithSession:mxSessionArray.firstObject viewMode:SetPinCoordinatorViewModeInactive];
self.setPinCoordinatorBridgePresenter.delegate = self;
[self.setPinCoordinatorBridgePresenter presentIn:self.window];
[self.setPinCoordinatorBridgePresenter presentWithMainAppWindow:self.window];
}
}

Expand Down Expand Up @@ -663,12 +663,12 @@ - (void)configurePinCodeScreenFor:(UIApplication *)application
{
self.setPinCoordinatorBridgePresenter = [[SetPinCoordinatorBridgePresenter alloc] initWithSession:mxSessionArray.firstObject viewMode:SetPinCoordinatorViewModeUnlock];
self.setPinCoordinatorBridgePresenter.delegate = self;
[self.setPinCoordinatorBridgePresenter presentIn:self.window];
[self.setPinCoordinatorBridgePresenter presentWithMainAppWindow:self.window];
}
}
else
{
[self.setPinCoordinatorBridgePresenter dismiss];
[self.setPinCoordinatorBridgePresenter dismissWithMainAppWindow:self.window];
self.setPinCoordinatorBridgePresenter = nil;
[self afterAppUnlockedByPin:application];
}
Expand Down Expand Up @@ -4611,7 +4611,7 @@ - (void)showMajorUpdate

- (void)setPinCoordinatorBridgePresenterDelegateDidComplete:(SetPinCoordinatorBridgePresenter *)coordinatorBridgePresenter
{
[coordinatorBridgePresenter dismiss];
[coordinatorBridgePresenter dismissWithMainAppWindow:self.window];
self.setPinCoordinatorBridgePresenter = nil;
[self afterAppUnlockedByPin:[UIApplication sharedApplication]];
}
Expand All @@ -4625,7 +4625,7 @@ - (void)setPinCoordinatorBridgePresenterDelegateDidCompleteWithReset:(SetPinCoor
}
else
{
[coordinatorBridgePresenter dismiss];
[coordinatorBridgePresenter dismissWithMainAppWindow:self.window];
self.setPinCoordinatorBridgePresenter = nil;
[self logoutWithConfirmation:NO completion:nil];
}
Expand Down
25 changes: 18 additions & 7 deletions Riot/Modules/SetPinCode/SetPinCoordinatorBridgePresenter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
*/

import Foundation
import UIKit

@objc enum SetPinCoordinatorViewMode: Int {
case setPin
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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
}

Expand All @@ -115,11 +123,14 @@ final class SetPinCoordinatorBridgePresenter: NSObject {
}
}

func dismiss() {
func dismissWithMainAppWindow(_ window: UIWindow) {
guard let coordinator = self.coordinator else {
return
}
coordinator.toPresentable().view.removeFromSuperview()

window.makeKeyAndVisible()
pinCoordinatorWindow = nil
}
}

Expand Down

0 comments on commit bc30437

Please sign in to comment.