Files
raspberry/iOS/Wallet/Sources/SetPrivateKeyViewController/SetPrivateKeyViewController.swift
T

146 lines
5.2 KiB
Swift

//
// SetPrivateKeyViewController.swift
// Malinka
//
// Created by Nut.Tech on 29.07.2022.
//
import UIKit
class SetPrivateKeyViewController: UIViewController {
@IBOutlet weak var warningView: CommonViewWarning!
@IBOutlet var headerTitleLabel: UILabel!
@IBOutlet private weak var submitBtn: CommonButtonAction!
private let accountService = AccountOnboarding.Service.CreateAccount()
private let iapService = AccountOnboarding.Service.IAP.shared
var selectedUsername: String = ""
private var privateKey = try! EOSPrivateKey() // swiftlint:disable:this force_try
@IBOutlet var signalView: UIView!
@IBOutlet var checkboxButton: UIButton!
@IBOutlet private weak var usernameView: CommonViewCopy!
@IBOutlet private weak var privateKeyView: CommonViewCopy!
var showCreateManual: Bool = true
override func viewDidLoad() {
super.viewDidLoad()
title = L10n.Account.Onboarding.freeTitle
checkboxButton.setImage(Asset.checkboxOff.image, for: .normal)
usernameView.text = selectedUsername
privateKeyView.text = privateKey.base58
warningView.makeCritical()
// submitBtn.lzTitle = L10n.Common.Button.pay(iapService.products.first?.localizedPrice() ?? "")
submitBtn.lzTitle = L10n.Account.Onboarding.Username.create
submitBtn.isEnabled = false
if navigationController != nil {
navigationItem.leftBarButtonItem = .pop(self)
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if Accounts().current != nil, navigationController == nil {
self.dismiss(animated: false)
}
}
@IBAction private func onSubmit(_ : AnyObject?) {
if checkboxButton.image(for: .normal) == Asset.checkboxOff.image {
UIView.animate(withDuration: 0.3, animations: {
self.signalView.alpha = 1
})
DispatchQueue.main.async {
UIView.animate(withDuration: 0.3, animations: {
self.signalView.alpha = 0
})
}
return
}
let privateKey = self.privateKey
let publicKey = privateKey.publicKey
Loader.show(in: self)
// TODO: send wallet registration request
Loader.hide(in: self)
self.showErrorPopup()
}
func repeatPurchase(publicKey: EOSPublicKey, privateKey: EOSPrivateKey) {
// TODO: repeat wallet registration request (if needed)
Loader.hide(in: self)
self.showErrorPopup()
}
@IBAction func onGenerateKeyClicked(_ sender: Any) {
// swiftlint:disable force_try
privateKey = try! EOSPrivateKey()
privateKeyView.text = privateKey.base58
}
@IBAction func onUseOwnKeyClicked(_ sender: Any) {
let view = AccountOnboardingAddPrivateKey()
view.onSubmit = { privateKey in
self.privateKey = privateKey
self.privateKeyView.text = privateKey.base58
Popup.hide()
Popup.show(title: L10n.Account.Onboarding.Keys.Use.Own.added, views: [
.field(title: L10n.Account.Onboarding.Username.accountNameTitle, text: self.selectedUsername),
.field(title: L10n.Account.Onboarding.Keys.Use.Own.privateKeyAdded, text: privateKey.base58)
], submit: L10n.Common.Button.continue, in: self)
}
Popup.show(content: CommonViewControllerViewPopUp(
title: L10n.Account.Onboarding.Enter.Private.key,
description: L10n.Account.Onboarding.Keys.Use.Own.description,
view: view
))
}
@IBAction func onCheckbox(_ sender: Any) {
signalView.alpha = 0
if checkboxButton.image(for: .normal) == Asset.checkboxOff.image {
checkboxButton.setImage(Asset.checkboxOn.image, for: .normal)
self.submitBtn.isEnabled = true
} else {
checkboxButton.setImage(Asset.checkboxOff.image, for: .normal)
self.submitBtn.isEnabled = false
}
}
@IBAction func haveWalletPrssed(_: AnyObject?) {
let ctrl = UINavigationController(rootViewController: StoryboardScene.Account.manual.instantiate())
self.navigationController?.pushViewController(ctrl, animated: true)
}
func showErrorPopup() {
let views: [UIView] = [
.field(text: L10n.Account.Onboarding.ErrorAlert.title, textStyle: "regular_16"),
.field(text: L10n.Account.Onboarding.ErrorAlert.subtitle)
]
Popup.show(title: L10n.Account.Onboarding.ErrorAlert.header,
views: views,
submit: L10n.Common.Button.continue,
submitStyle: .primary, in: self) { ctrl in
ctrl.dismiss(animated: true, completion: nil)
}
}
}