// // WalletDetailsInterfaceController.swift // BlueWalletWatch Extension // // Created by Marcos Rodriguez on 3/11/19. // Copyright © 2019 Facebook. All rights reserved. // import WatchKit import Foundation import WatchConnectivity class WalletDetailsInterfaceController: WKInterfaceController { var wallet: Wallet? static let identifier = "WalletDetailsInterfaceController" @IBOutlet weak var walletBasicsGroup: WKInterfaceGroup! @IBOutlet weak var walletBalanceLabel: WKInterfaceLabel! @IBOutlet weak var createInvoiceButton: WKInterfaceButton! @IBOutlet weak var walletNameLabel: WKInterfaceLabel! @IBOutlet weak var receiveButton: WKInterfaceButton! @IBOutlet weak var viewXPubButton: WKInterfaceButton! @IBOutlet weak var noTransactionsLabel: WKInterfaceLabel! @IBOutlet weak var transactionsTable: WKInterfaceTable! override func awake(withContext context: Any?) { super.awake(withContext: context) guard let identifier = context as? Int else { pop() return } processInterface(identifier: identifier) } func processInterface(identifier: Int) { let wallet = WatchDataSource.shared.wallets[identifier] self.wallet = wallet walletBalanceLabel.setHidden(wallet.hideBalance) walletBalanceLabel.setText(wallet.hideBalance ? "" : wallet.balance) walletNameLabel.setText(wallet.label) walletBasicsGroup.setBackgroundImageNamed(WalletGradient(rawValue: wallet.type)?.imageString) createInvoiceButton.setHidden(!(wallet.type == WalletGradient.LightningCustodial.rawValue || wallet.type == WalletGradient.LightningLDK.rawValue)) receiveButton.setHidden(wallet.receiveAddress.isEmpty) viewXPubButton.setHidden(!((wallet.type != WalletGradient.LightningCustodial.rawValue || wallet.type != WalletGradient.LightningLDK.rawValue) && !(wallet.xpub ?? "").isEmpty)) processWalletsTable() } @IBAction func toggleBalanceVisibility(_ sender: Any) { guard let wallet = wallet else { return } if wallet.hideBalance { showBalanceMenuItemTapped() } else{ hideBalanceMenuItemTapped() } } @objc func showBalanceMenuItemTapped() { guard let identifier = wallet?.identifier else { return } WatchDataSource.toggleWalletHideBalance(walletIdentifier: identifier, hideBalance: false) { [weak self] _ in DispatchQueue.main.async { WatchDataSource.postDataUpdatedNotification() self?.processInterface(identifier: identifier) } } } @objc func hideBalanceMenuItemTapped() { guard let identifier = wallet?.identifier else { return } WatchDataSource.toggleWalletHideBalance(walletIdentifier: identifier, hideBalance: true) { [weak self] _ in DispatchQueue.main.async { WatchDataSource.postDataUpdatedNotification() self?.processInterface(identifier: identifier) } } } @IBAction func viewXPubMenuItemTapped() { guard let xpub = wallet?.xpub else { return } presentController(withName: ViewQRCodefaceController.identifier, context: xpub) } override func willActivate() { super.willActivate() transactionsTable.setHidden(wallet?.transactions.isEmpty ?? true) noTransactionsLabel.setHidden(!(wallet?.transactions.isEmpty ?? false)) } @IBAction func receiveMenuItemTapped() { presentController(withName: ReceiveInterfaceController.identifier, context: (wallet, "receive")) } @objc private func processWalletsTable() { transactionsTable.setNumberOfRows(wallet?.transactions.count ?? 0, withRowType: TransactionTableRow.identifier) for index in 0.. Any? { return (wallet?.identifier, "receive") } }