Files
raspberry/iOS/Wallet/Sources/CCCP/View/CCCPViewTokenSelector/CCCPViewTokenSelector.swift
T
2022-05-27 20:21:01 +03:00

121 lines
4.1 KiB
Swift

//
// CCCPViewTokenSelector.swift
// List
//
// Created by Saveliy Stavitsky on 7/20/20.
// Copyright © 2020 Igor Danich. All rights reserved.
//
import UIKit
protocol CCCPViewTokenSelectorDelegate: UIViewController {
func stateChanged()
}
class CCCPViewTokenSelector: CommonViewCustom {
@IBOutlet private var backgroundView: UIView!
@IBOutlet var countSectionStackView: UIStackView!
@IBOutlet var titleLabel: UILabel!
@IBOutlet private var removeButton: UIButton!
@IBOutlet private var countTextField: CommonTextField1!
@IBOutlet private var addButton: UIButton!
@IBOutlet var currencyPickerSectionStackView: UIStackView!
@IBOutlet var currencySectionImageView: UIImageView!
@IBOutlet var secondTitleLabel: UILabel!
@IBOutlet var currencyButton: UIButton!
@IBOutlet var balanceStackView: UIStackView!
@IBOutlet private var currencyBalance: UILabel!
@IBOutlet var notesSectionStackView: UIStackView!
@IBOutlet var notesTitleLabel: UILabel!
@IBOutlet var notesSectionSubStackView: UIStackView!
weak var parentViewController: CCCPViewTokenSelectorDelegate?
var coef: Decimal?
var tokens: [Network.Model.Token] = [] { didSet { index = -1 } }
var index = -1 {
didSet {
parentViewController?.stateChanged()
countTextField.text = "\(count)"
setupButtonsApearance()
}
}
var selectedToken: Network.Model.Token? { index >= 0 && index < tokens.count ? tokens[index] : nil }
var maxTokens: Int {
guard let coef = coef else {
return selectedToken?.isCashContract ?? false
? NSDecimalNumber(decimal: selectedToken?.amount ?? 0.0).intValue
: 0
}
return selectedToken?.isListContract ?? false
? NSDecimalNumber(decimal: (selectedToken?.amount ?? 0) / coef).intValue
: NSDecimalNumber(decimal: selectedToken?.amount ?? 0).intValue
}
// private(set)
var count = 0 {
didSet {
parentViewController?.stateChanged()
countTextField.text = "\(count)"
setupButtonsApearance()
}
}
override func setup() {
super.setup()
tokens = []
backgroundView.layer.shadowColor = Asset.lightGray.color.cgColor
}
override func layoutSubviews() {
super.layoutIfNeeded()
backgroundView.layer.shadowPath = UIBezierPath(roundedRect: backgroundView.bounds,
cornerRadius: 20.0).cgPath
}
@IBAction private func removeCount(_ sender: Any) {
if count > 0 { count -= 1 }
}
@IBAction private func addCount(_ sender: Any) {
if count < maxTokens { count += 1 }
}
@IBAction private func currencyPressed(_ sender: Any) {
let currencyPicker = CommonViewPopUpSelection(
list: tokens.map({ $0.amount > 0 ? "\($0)" : $0.symbol }),
selectedIndex: index,
selection: { [weak self] in
self?.index = $0
self?.parentViewController?.dismiss(animated: true, completion: nil)
}
)
// let viewController = CommonViewControllerPopUp(title: L10n.Cccp.chooseCurrency,
// view: currencyPicker,
// completion: nil)
// parentViewController?.present(viewController, animated: true, completion: nil)
}
private func setupButtonsApearance() {
addButton.tintColor = count == maxTokens ? Asset.lightGray.color : Asset.dark.color
addButton.isEnabled = count != maxTokens
removeButton.tintColor = count == 0 ? Asset.lightGray.color : Asset.dark.color
removeButton.isEnabled = count != 0
if let token = selectedToken {
balanceStackView.isHidden = !(token.amount > 0)
currencyButton.setTitle(token.symbol, for: .normal)
currencyBalance.text = L10n.Wallet.Send.balance(token.description)
} else {
currencyButton.setTitle("--", for: .normal)
currencyBalance.text = L10n.Wallet.Send.balance("")
}
}
}