// // AccountUIViewController.swift // List // // Created by Igor Danich on 25.06.2020. // Copyright © 2020 Igor Danich. All rights reserved. // import UIKit import WalletKit class AccountController: UIViewController { typealias Completion = (WalletType) -> Void enum WalletType { case new case key case failed } override func viewDidLoad() { super.viewDidLoad() navigationItem.title = "Account" } } extension AccountController { static func showPopup(in viewController: UIViewController, completion: Completion? = nil) { let ctrl = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) // Add Private key ctrl.addAction(.init(title: L10n.Account.Alert.manual, style: .default) { _ in let manualController = StoryboardScene.Account.manual.instantiate() let ctrl = UINavigationController(rootViewController: manualController) manualController.privateKeyHasBeenProcessed = { ctrl.dismiss(animated: true) } ctrl.modalPresentationStyle = .fullScreen viewController.present(ctrl, animated: true) completion?(.key) }) // Create new one ctrl.addAction(.init(title: L10n.Account.Alert.create, style: .default) { _ in Task { do { let vc = try await AttestateWalletService.createController() let navVc = UINavigationController(rootViewController: vc) navVc.view.backgroundColor = .white navVc.modalPresentationStyle = .fullScreen DispatchQueue.main.async { viewController.present(navVc, animated: true) completion?(.new) } } catch { Popup.show(title: "account.create.error.title".localized, description: "account.create.error.description".localized, submit: "account.create.error.button.title".localized, submitStyle: .primary) { ctrl in ctrl.dismiss(animated: true, completion: nil) completion?(.failed) } } } }) ctrl.addAction(.init(title: L10n.Common.Button.cancel, style: .cancel, handler: nil)) viewController.present(ctrl, animated: true) } static func showPrivateKeyPopup(in viewController: UIViewController, wallet: WalletKit.Wallet) { Alert.system( actions: [ .init(title: L10n.Main.Account.export, style: .default) { _ in Account.Service.Authorize.shared.update(password: nil) AccountViewAuthorize.showGetPrivateKey(in: viewController, description: L10n.Main.Account.exportDescription) { let ctrl = AccountViewControllerPrivateKey() ctrl.subView.keyLbl.lzText = $0 ctrl.subView.qrImgView.image = $0.generateQRCode() viewController.mainController.content.push(ctrl, animated: true) } }, .init(title: L10n.Main.Account.change, style: .default) { _ in Account.Service.Authorize.shared.update(password: nil) AccountViewAuthorize.showGetPrivateKey(in: viewController, description: L10n.Main.Account.exportDescription) { let changeKeyController = StoryboardScene.Account.changeKey.instantiate() changeKeyController.wallet = wallet changeKeyController.privateKey = $0 let ctrl = UINavigationController(rootViewController: changeKeyController) ctrl.modalPresentationStyle = .fullScreen viewController.present(ctrl, animated: true) } }, .init(title: L10n.Common.Button.cancel, style: .cancel) ], style: .actionSheet, in: viewController ) } }