// BlueWalletWatch Extension // // Created by Marcos Rodriguez on 3/11/19. 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 } loadWalletDetails(identifier: identifier) } private func loadWalletDetails(identifier: Int) { let wallet = WatchDataSource.shared.wallets[identifier] self.wallet = wallet updateWalletUI(wallet: wallet) updateTransactionsTable(forWallet: wallet) } private func updateWalletUI(wallet: Wallet) { walletBalanceLabel.setHidden(wallet.hideBalance) walletBalanceLabel.setText(wallet.hideBalance ? "" : wallet.balance) walletNameLabel.setText(wallet.label) walletBasicsGroup.setBackgroundImageNamed(WalletGradient(rawValue: wallet.type)?.imageString) let isLightningWallet = wallet.type == WalletGradient.LightningCustodial.rawValue || wallet.type == WalletGradient.LightningLDK.rawValue createInvoiceButton.setHidden(!isLightningWallet) receiveButton.setHidden(wallet.receiveAddress.isEmpty) viewXPubButton.setHidden(!isXPubAvailable(wallet: wallet)) } private func isXPubAvailable(wallet: Wallet) -> Bool { return (wallet.type != WalletGradient.LightningCustodial.rawValue && wallet.type != WalletGradient.LightningLDK.rawValue) && !(wallet.xpub ?? "").isEmpty } private func updateTransactionsTable(forWallet wallet: Wallet) { let transactions = wallet.transactions transactionsTable.setNumberOfRows(transactions.count, withRowType: TransactionTableRow.identifier) for index in 0.. Any? { guard let wallet = wallet else { return nil } return (wallet.identifier, "receive") } }