Files
raspberry/iOS/Wallet/Sources/Account/Controller/Select/AccountsSelectionViewController.swift

103 lines
3.5 KiB
Swift

//
// MainControllerAccountsPopup.swift
// List
//
// Created by Saveliy Stavitsky on 7/16/20.
// Copyright © 2020 Igor Danich. All rights reserved.
//
import UIKit
import WalletFoundation
final class AccountsSelectionViewController: UIViewController {
@IBOutlet weak var mainStackView: UIStackView!
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var stackView: UIStackView!
@IBOutlet var addAccountButton: UIButton!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
Accounts().isLocked = true
self.navigationController >>- {
$0.setNavigationBarHidden(false, animated: true)
$0.navigationBar.isTranslucent = true
$0.navigationBar.backgroundColor = Asset.snow.color
}
self.configureView()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
Accounts().isLocked = false
}
override func viewDidLoad() {
super.viewDidLoad()
self.title = L10n.Main.Account.title
self.navigationItem.leftBarButtonItem = .pop(self, { vc in vc.dismiss(animated: true) })
}
func configureView() {
self.stackView.arrangedSubviews.forEach { $0.removeFromSuperview() }
for account in Accounts().collection {
let accountButton = AccountViewSelect()
accountButton.title = account.name
accountButton.keyType = "@\(account.keyType)"
accountButton.didTapRemove = { [weak self]_ in
guard let self else { return }
Alert.system(
text: L10n.Main.Account.remove,
actions: [
.yes {
Accounts().remove(wallet: account)
self.configureView()
// PAYCASH-NEW
if !Accounts().current.isExist {
self.mainController.showWalletBoarding()
}
}, .no
], in: self
)
}
accountButton.didTapReveal = { [weak self]_ in
guard let self else { return }
AccountController.showPrivateKeyPopup(in: self, wallet: account)
}
accountButton.completion = { [weak self] accountButton in
guard let self else { return }
UIView.animate(withDuration: .slowest) {
self.stackView.arrangedSubviews
.compactMap({ $0 as? AccountViewSelect })
.forEach({ $0.isActive = false })
accountButton.isActive = true
self.view.layoutIfNeeded()
}
Accounts().current = account
self.mainController.content.pop(animated: true)
}
accountButton.isActive = account.name == Accounts().current?.name
self.stackView.addArrangedSubview(accountButton)
let currentAccount = Accounts().current
let isActiveAccount = account.name == currentAccount?.name && account.keyType == currentAccount?.keyType
accountButton.isActive = isActiveAccount
}
self.scrollView.layoutIfNeeded()
}
@IBAction func addAccountPressed(_ sender: Any) {
AccountController.showPopup(in: self)
}
}