ZcashLightClientKit/Example/ZcashLightClientSample/ZcashLightClientSample/Get Address/GetAddressViewController.swift

104 lines
4.0 KiB
Swift

//
// GetAddressViewController.swift
// ZcashLightClientSample
//
// Created by Francisco Gindre on 11/1/19.
// Copyright © 2019 Electric Coin Company. All rights reserved.
//
import UIKit
import ZcashLightClientKit
class GetAddressViewController: UIViewController {
@IBOutlet weak var unifiedAddressLabel: UILabel! // This is your Unified Address
@IBOutlet weak var tAddressLabel: UILabel! // this is the transparent receiver of your UA above
@IBOutlet weak var saplingAddress: UILabel! // this is the sapling receiver of your UA above
override func viewDidLoad() {
super.viewDidLoad()
let synchronizer = SDKSynchronizer.shared
Task { @MainActor in
guard let uAddress = await synchronizer.getUnifiedAddress(accountIndex: 0) else {
unifiedAddressLabel.text = "could not derive UA"
tAddressLabel.text = "could not derive tAddress"
saplingAddress.text = "could not derive zAddress"
return
}
// you can either try to extract receivers from the UA itself or request the Synchronizer to do it for you. Certain UAs might not contain all the receivers you expect.
unifiedAddressLabel.text = uAddress.stringEncoded
tAddressLabel.text = uAddress.transparentReceiver()?.stringEncoded ?? "could not extract transparent receiver from UA"
saplingAddress.text = uAddress.saplingReceiver()?.stringEncoded ?? "could not extract sapling receiver from UA"
unifiedAddressLabel.addGestureRecognizer(
UITapGestureRecognizer(
target: self,
action: #selector(addressTapped(_:))
)
)
unifiedAddressLabel.isUserInteractionEnabled = true
tAddressLabel.isUserInteractionEnabled = true
tAddressLabel.addGestureRecognizer(
UITapGestureRecognizer(
target: self,
action: #selector(tAddressTapped(_:))
)
)
saplingAddress.addGestureRecognizer(
UITapGestureRecognizer(
target: self,
action: #selector(spendingKeyTapped(_:))
)
)
saplingAddress.isUserInteractionEnabled = true
loggerProxy.info("Address: \(String(describing: uAddress))")
}
}
@IBAction func spendingKeyTapped(_ gesture: UIGestureRecognizer) {
loggerProxy.event("copied to clipboard")
UIPasteboard.general.string = self.saplingAddress.text
let alert = UIAlertController(
title: "",
message: "Sapling Address Copied to clipboard",
preferredStyle: UIAlertController.Style.alert
)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
@IBAction func addressTapped(_ gesture: UIGestureRecognizer) {
loggerProxy.event("copied to clipboard")
UIPasteboard.general.string = unifiedAddressLabel.text
let alert = UIAlertController(
title: "",
message: "Address Copied to clipboard",
preferredStyle: UIAlertController.Style.alert
)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
@IBAction func tAddressTapped(_ gesture: UIGestureRecognizer) {
loggerProxy.event("copied to clipboard")
UIPasteboard.general.string = tAddressLabel.text
let alert = UIAlertController(
title: "",
message: "Address Copied to clipboard",
preferredStyle: UIAlertController.Style.alert
)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}