Use native navigationItem instead of bottom-view (#690)
This commit is contained in:
parent
c22f1fc66e
commit
3a00010d89
|
@ -67,8 +67,6 @@ extension MastodonConfirmEmailViewController {
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
|
|
||||||
navigationItem.leftBarButtonItem = UIBarButtonItem()
|
|
||||||
|
|
||||||
setupOnboardingAppearance()
|
setupOnboardingAppearance()
|
||||||
configureTitleLabel()
|
configureTitleLabel()
|
||||||
configureMargin()
|
configureMargin()
|
||||||
|
|
|
@ -234,7 +234,6 @@ extension MastodonPickServerViewController {
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
navigationActionView.backButton.addTarget(self, action: #selector(MastodonPickServerViewController.backButtonDidPressed(_:)), for: .touchUpInside)
|
|
||||||
navigationActionView.nextButton.addTarget(self, action: #selector(MastodonPickServerViewController.nextButtonDidPressed(_:)), for: .touchUpInside)
|
navigationActionView.nextButton.addTarget(self, action: #selector(MastodonPickServerViewController.nextButtonDidPressed(_:)), for: .touchUpInside)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,11 +259,7 @@ extension MastodonPickServerViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MastodonPickServerViewController {
|
extension MastodonPickServerViewController {
|
||||||
|
|
||||||
@objc private func backButtonDidPressed(_ sender: UIButton) {
|
|
||||||
navigationController?.popViewController(animated: true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc private func nextButtonDidPressed(_ sender: UIButton) {
|
@objc private func nextButtonDidPressed(_ sender: UIButton) {
|
||||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
||||||
guard let server = viewModel.selectedServer.value else { return }
|
guard let server = viewModel.selectedServer.value else { return }
|
||||||
|
|
|
@ -54,26 +54,13 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O
|
||||||
documentPickerController.delegate = self
|
documentPickerController.delegate = self
|
||||||
return documentPickerController
|
return documentPickerController
|
||||||
}()
|
}()
|
||||||
|
|
||||||
let navigationActionView: NavigationActionView = {
|
|
||||||
let navigationActionView = NavigationActionView()
|
|
||||||
navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color
|
|
||||||
return navigationActionView
|
|
||||||
}()
|
|
||||||
|
|
||||||
deinit {
|
|
||||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MastodonRegisterViewController {
|
extension MastodonRegisterViewController {
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
navigationItem.leftBarButtonItem = UIBarButtonItem()
|
|
||||||
|
|
||||||
setupOnboardingAppearance()
|
setupOnboardingAppearance()
|
||||||
viewModel.backgroundColor = view.backgroundColor ?? .clear
|
viewModel.backgroundColor = view.backgroundColor ?? .clear
|
||||||
defer {
|
defer {
|
||||||
|
@ -86,34 +73,14 @@ extension MastodonRegisterViewController {
|
||||||
hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false
|
hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false
|
||||||
view.addSubview(hostingViewController.view)
|
view.addSubview(hostingViewController.view)
|
||||||
hostingViewController.view.pinToParent()
|
hostingViewController.view.pinToParent()
|
||||||
|
|
||||||
navigationActionView.translatesAutoresizingMaskIntoConstraints = false
|
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Next", style: .done, target: self, action: #selector(MastodonRegisterViewController.nextButtonPressed(_:)))
|
||||||
view.addSubview(navigationActionView)
|
|
||||||
defer {
|
|
||||||
view.bringSubviewToFront(navigationActionView)
|
|
||||||
}
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
||||||
navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
||||||
view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
navigationActionView
|
|
||||||
.observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in
|
|
||||||
guard let self = self else { return }
|
|
||||||
let inset = navigationActionView.frame.height
|
|
||||||
self.viewModel.bottomPaddingHeight = inset
|
|
||||||
}
|
|
||||||
.store(in: &observations)
|
|
||||||
|
|
||||||
navigationActionView.backButton.addTarget(self, action: #selector(MastodonRegisterViewController.backButtonPressed(_:)), for: .touchUpInside)
|
|
||||||
navigationActionView.nextButton.addTarget(self, action: #selector(MastodonRegisterViewController.nextButtonPressed(_:)), for: .touchUpInside)
|
|
||||||
|
|
||||||
viewModel.$isAllValid
|
viewModel.$isAllValid
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
.sink { [weak self] isAllValid in
|
.sink { [weak self] isAllValid in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
self.navigationActionView.nextButton.isEnabled = isAllValid
|
self.navigationItem.rightBarButtonItem?.isEnabled = isAllValid
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
|
@ -165,13 +132,15 @@ extension MastodonRegisterViewController {
|
||||||
}
|
}
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
viewModel.$isRegistering
|
// viewModel.$isRegistering
|
||||||
.receive(on: DispatchQueue.main)
|
// .receive(on: DispatchQueue.main)
|
||||||
.sink { [weak self] isRegistering in
|
// .sink { [weak self] isRegistering in
|
||||||
guard let self = self else { return }
|
// guard let self = self else { return }
|
||||||
isRegistering ? self.navigationActionView.nextButton.showLoading() : self.navigationActionView.nextButton.stopLoading()
|
// isRegistering ? self.navigationActionView.nextButton.showLoading() : self.navigationActionView.nextButton.stopLoading()
|
||||||
}
|
// }
|
||||||
.store(in: &disposeBag)
|
// .store(in: &disposeBag)
|
||||||
|
|
||||||
|
title = L10n.Scene.Register.title(viewModel.domain)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewDidAppear(_ animated: Bool) {
|
override func viewDidAppear(_ animated: Bool) {
|
||||||
|
@ -183,12 +152,7 @@ extension MastodonRegisterViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MastodonRegisterViewController {
|
extension MastodonRegisterViewController {
|
||||||
|
|
||||||
@objc private func backButtonPressed(_ sender: UIButton) {
|
|
||||||
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
|
||||||
navigationController?.popViewController(animated: true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc private func nextButtonPressed(_ sender: UIButton) {
|
@objc private func nextButtonPressed(_ sender: UIButton) {
|
||||||
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,7 @@ final class MastodonServerRulesViewController: UIViewController, NeedsDependency
|
||||||
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
|
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
|
||||||
|
|
||||||
var viewModel: MastodonServerRulesViewModel!
|
var viewModel: MastodonServerRulesViewModel!
|
||||||
|
|
||||||
let stackView = UIStackView()
|
|
||||||
|
|
||||||
let tableView: UITableView = {
|
let tableView: UITableView = {
|
||||||
let tableView = UITableView()
|
let tableView = UITableView()
|
||||||
tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self))
|
tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self))
|
||||||
|
@ -40,17 +38,6 @@ final class MastodonServerRulesViewController: UIViewController, NeedsDependency
|
||||||
tableView.sectionHeaderTopPadding = 0
|
tableView.sectionHeaderTopPadding = 0
|
||||||
return tableView
|
return tableView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
let navigationActionView: NavigationActionView = {
|
|
||||||
let navigationActionView = NavigationActionView()
|
|
||||||
navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color
|
|
||||||
return navigationActionView
|
|
||||||
}()
|
|
||||||
|
|
||||||
deinit {
|
|
||||||
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MastodonServerRulesViewController {
|
extension MastodonServerRulesViewController {
|
||||||
|
@ -58,39 +45,19 @@ extension MastodonServerRulesViewController {
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
navigationItem.leftBarButtonItem = UIBarButtonItem()
|
|
||||||
|
|
||||||
setupOnboardingAppearance()
|
setupOnboardingAppearance()
|
||||||
defer { setupNavigationBarBackgroundView() }
|
defer { setupNavigationBarBackgroundView() }
|
||||||
|
|
||||||
tableView.translatesAutoresizingMaskIntoConstraints = false
|
tableView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
view.addSubview(tableView)
|
view.addSubview(tableView)
|
||||||
tableView.pinToParent()
|
tableView.pinToParent()
|
||||||
|
|
||||||
navigationActionView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
view.addSubview(navigationActionView)
|
|
||||||
defer {
|
|
||||||
view.bringSubviewToFront(navigationActionView)
|
|
||||||
}
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
||||||
navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
||||||
view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
navigationActionView
|
|
||||||
.observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in
|
|
||||||
guard let self = self else { return }
|
|
||||||
let inset = navigationActionView.frame.height
|
|
||||||
self.tableView.contentInset.bottom = inset
|
|
||||||
}
|
|
||||||
.store(in: &observations)
|
|
||||||
|
|
||||||
tableView.delegate = self
|
tableView.delegate = self
|
||||||
viewModel.setupDiffableDataSource(tableView: tableView)
|
viewModel.setupDiffableDataSource(tableView: tableView)
|
||||||
|
|
||||||
navigationActionView.backButton.addTarget(self, action: #selector(MastodonServerRulesViewController.backButtonPressed(_:)), for: .touchUpInside)
|
|
||||||
navigationActionView.nextButton.addTarget(self, action: #selector(MastodonServerRulesViewController.nextButtonPressed(_:)), for: .touchUpInside)
|
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "I agree", style: .done, target: self, action: #selector(MastodonServerRulesViewController.nextButtonPressed(_:)))
|
||||||
|
title = L10n.Scene.ServerRules.title
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewDidAppear(_ animated: Bool) {
|
override func viewDidAppear(_ animated: Bool) {
|
||||||
|
@ -104,13 +71,10 @@ extension MastodonServerRulesViewController {
|
||||||
extension MastodonServerRulesViewController {
|
extension MastodonServerRulesViewController {
|
||||||
|
|
||||||
@objc private func backButtonPressed(_ sender: UIButton) {
|
@objc private func backButtonPressed(_ sender: UIButton) {
|
||||||
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
|
||||||
navigationController?.popViewController(animated: true)
|
navigationController?.popViewController(animated: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func nextButtonPressed(_ sender: UIButton) {
|
@objc private func nextButtonPressed(_ sender: UIButton) {
|
||||||
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
|
|
||||||
|
|
||||||
let viewModel = MastodonRegisterViewModel(
|
let viewModel = MastodonRegisterViewModel(
|
||||||
context: context,
|
context: context,
|
||||||
domain: viewModel.domain,
|
domain: viewModel.domain,
|
||||||
|
|
Loading…
Reference in New Issue