Skip to content
Snippets Groups Projects

Fix backup password drawer resizing

Merged Bruno Muniz requested to merge fix/backup-drawer into development
6 files
+ 121
81
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -2,7 +2,6 @@ import UIKit
import Shared
import Combine
import InputField
import ScrollViewController
public final class BackupPassphraseController: UIViewController {
lazy private var screenView = BackupPassphraseView()
@@ -21,7 +20,6 @@ public final class BackupPassphraseController: UIViewController {
private let cancelClosure: EmptyClosure
private let stringClosure: StringClosure
private var cancellables = Set<AnyCancellable>()
private let keyboardListener = KeyboardFrameChangeListener(notificationCenter: .default)
public init(
_ cancelClosure: @escaping EmptyClosure,
@@ -35,66 +33,41 @@ public final class BackupPassphraseController: UIViewController {
required init?(coder: NSCoder) { nil }
public override func loadView() {
let view = UIView()
view.addSubview(screenView)
screenView.snp.makeConstraints { make in
make.top.equalToSuperview()
make.left.equalToSuperview()
make.right.equalToSuperview()
make.bottom.equalToSuperview().offset(0)
}
self.view = view
view = screenView
}
public override func viewDidLoad() {
super.viewDidLoad()
setupKeyboard()
setupBindings()
screenView.continueButton.isEnabled = false
}
private func setupKeyboard() {
keyboardListener.keyboardFrameWillChange = { [weak self] keyboard in
guard let self = self else { return }
let inset = self.view.frame.height - self.view.convert(keyboard.frame, from: nil).minY
self.screenView.snp.updateConstraints {
$0.bottom.equalToSuperview().offset(-inset)
}
self.view.setNeedsLayout()
UIView.animate(withDuration: keyboard.animationDuration) {
self.view.layoutIfNeeded()
}
}
}
private func setupBindings() {
screenView.inputField.returnPublisher
.sink { [unowned self] in screenView.inputField.endEditing(true) }
.store(in: &cancellables)
screenView.cancelButton
.publisher(for: .touchUpInside)
.sink { [unowned self] in dismiss(animated: true) { self.cancelClosure() }}
.store(in: &cancellables)
screenView
.inputField
.returnPublisher
.sink { [unowned self] in
screenView.inputField.endEditing(true)
}.store(in: &cancellables)
screenView.inputField
screenView
.inputField
.textPublisher
.sink { [unowned self] in passphrase = $0.trimmingCharacters(in: .whitespacesAndNewlines) }
.store(in: &cancellables)
.sink { [unowned self] in
passphrase = $0.trimmingCharacters(in: .whitespacesAndNewlines)
}.store(in: &cancellables)
screenView
.continueButton
.publisher(for: .touchUpInside)
.sink { [unowned self] in
dismiss(animated: true) { self.stringClosure(self.passphrase) }
}.store(in: &cancellables)
screenView.continueButton
screenView
.cancelButton
.publisher(for: .touchUpInside)
.sink { [unowned self] in
dismiss(animated: true) {
self.stringClosure(self.passphrase)
}
dismiss(animated: true) { self.cancelClosure() }
}.store(in: &cancellables)
}
}
Loading