From b76332835482e887a6d4bc925606af46ef756f22 Mon Sep 17 00:00:00 2001 From: Matthew Fosse <matt@fosse.co> Date: Tue, 5 Mar 2024 09:21:08 -0800 Subject: [PATCH] review fixes --- assets/images/lightning_menu.png | Bin 3152 -> 0 bytes cw_bitcoin/lib/bitcoin_wallet.dart | 8 -- cw_bitcoin/lib/electrum_wallet.dart | 72 ++++++++---------- cw_bitcoin/lib/litecoin_wallet.dart | 8 -- .../lib/src/bitcoin_cash_wallet.dart | 8 -- cw_lightning/lib/lightning_wallet.dart | 22 +++--- .../dashboard/widgets/menu_widget.dart | 5 +- .../wallet_address_list_view_model.dart | 2 +- 8 files changed, 47 insertions(+), 78 deletions(-) delete mode 100644 assets/images/lightning_menu.png diff --git a/assets/images/lightning_menu.png b/assets/images/lightning_menu.png deleted file mode 100644 index 949f8d879abf8b093456baf8a48ecdda2fbc9ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3152 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 diff --git a/cw_bitcoin/lib/bitcoin_wallet.dart b/cw_bitcoin/lib/bitcoin_wallet.dart index 3921d162b..84e565201 100644 --- a/cw_bitcoin/lib/bitcoin_wallet.dart +++ b/cw_bitcoin/lib/bitcoin_wallet.dart @@ -44,14 +44,6 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store { initialBalance: initialBalance, seedBytes: seedBytes, currency: CryptoCurrency.btc, - balanceFactory: ( - {required int confirmed, required int unconfirmed, required int frozen}) { - return ElectrumBalance( - confirmed: confirmed, - unconfirmed: unconfirmed, - frozen: frozen, - ); - }, ) { walletAddresses = BitcoinWalletAddresses( walletInfo, diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart index 4054de11e..873fe2977 100644 --- a/cw_bitcoin/lib/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -23,7 +23,6 @@ import 'package:cw_bitcoin/litecoin_network.dart'; import 'package:cw_bitcoin/pending_bitcoin_transaction.dart'; import 'package:cw_bitcoin/script_hash.dart'; import 'package:cw_bitcoin/utils.dart'; -import 'package:cw_core/balance.dart'; import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/node.dart'; import 'package:cw_core/pathForWallet.dart'; @@ -36,6 +35,7 @@ import 'package:cw_core/utils/file.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_info.dart'; import 'package:flutter/foundation.dart'; +import 'package:hex/hex.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:rxdart/subjects.dart'; @@ -45,8 +45,9 @@ part 'electrum_wallet.g.dart'; class ElectrumWallet = ElectrumWalletBase with _$ElectrumWallet; -abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT extends ElectrumTransactionInfo> - extends WalletBase<BalanceT, ElectrumTransactionHistory, TxInfoT> with Store { +abstract class ElectrumWalletBase + extends WalletBase<ElectrumBalance, ElectrumTransactionHistory, ElectrumTransactionInfo> + with Store { ElectrumWalletBase( {required String password, required WalletInfo walletInfo, @@ -54,15 +55,9 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte required this.networkType, required this.mnemonic, required Uint8List seedBytes, - required BalanceT Function({ - required int confirmed, - required int unconfirmed, - required int frozen, - }) this.balanceFactory, - // required TxInfoT Function(Map<String, dynamic> json) TxInfoFactory, List<BitcoinAddressRecord>? initialAddresses, ElectrumClient? electrumClient, - BalanceT? initialBalance, + ElectrumBalance? initialBalance, CryptoCurrency? currency}) : hd = currency == CryptoCurrency.bch ? bitcoinCashHDWallet(seedBytes) @@ -74,8 +69,12 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte isEnabledAutoGenerateSubaddress = true, unspentCoins = [], _scripthashesUpdateSubject = {}, - balance = ObservableMap<CryptoCurrency, BalanceT>.of( - currency != null ? {currency: initialBalance ?? balanceFactory(confirmed: 0, unconfirmed: 0, frozen: 0)} : {}), + balance = ObservableMap<CryptoCurrency, ElectrumBalance>.of(currency != null + ? { + currency: + initialBalance ?? const ElectrumBalance(confirmed: 0, unconfirmed: 0, frozen: 0) + } + : {}), this.unspentCoinsInfo = unspentCoinsInfo, this.network = networkType == bitcoin.bitcoin ? BitcoinNetwork.mainnet @@ -97,11 +96,6 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte final bitcoin.HDWallet hd; final String mnemonic; - final BalanceT Function({ - required int confirmed, - required int unconfirmed, - required int frozen, - }) balanceFactory; @override @observable @@ -115,7 +109,7 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte @override @observable - late ObservableMap<CryptoCurrency, BalanceT> balance; + late ObservableMap<CryptoCurrency, ElectrumBalance> balance; @override @observable @@ -291,7 +285,7 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte final totalAmount = amount + fee; - if (totalAmount > (balance[currency]!.confirmed as int)) { + if (totalAmount > balance[currency]!.confirmed) { throw BitcoinTransactionWrongBalanceException(currency); } @@ -629,16 +623,23 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte final ins = <bitcoin_base.BtcTransaction>[]; for (final vin in original.inputs) { - final txHex = await electrumClient.getTransactionHex(hash: vin.txId); - final tx = bitcoin_base.BtcTransaction.fromRaw(txHex); - ins.add(tx); + try { + final id = HEX.encode(HEX.decode(vin.txId).reversed.toList()); + final txHex = await electrumClient.getTransactionHex(hash: id); + final tx = bitcoin_base.BtcTransaction.fromRaw(txHex); + ins.add(tx); + } catch (_) { + ins.add(bitcoin_base.BtcTransaction.fromRaw( + await electrumClient.getTransactionHex(hash: vin.txId), + )); + } } return ElectrumTransactionBundle(original, ins: ins, time: time, confirmations: confirmations, height: height); } - Future<TxInfoT?> fetchTransactionInfo( + Future<ElectrumTransactionInfo?> fetchTransactionInfo( {required String hash, required int height, required Set<String> myAddresses, @@ -646,7 +647,7 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte try { return ElectrumTransactionInfo.fromElectrumBundle( await getTransactionExpanded(hash: hash, height: height), walletInfo.type, network, - addresses: myAddresses, height: height) as TxInfoT; + addresses: myAddresses, height: height); } catch (e) { if (e is FormatException && retryOnFailure == true) { await Future.delayed(const Duration(seconds: 2)); @@ -657,9 +658,9 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte } @override - Future<Map<String, TxInfoT>> fetchTransactions() async { + Future<Map<String, ElectrumTransactionInfo>> fetchTransactions() async { try { - final Map<String, TxInfoT> historiesWithDetails = {}; + final Map<String, ElectrumTransactionInfo> historiesWithDetails = {}; final addressesSet = walletAddresses.allAddresses.map((addr) => addr.address).toSet(); final currentHeight = await electrumClient.getCurrentBlockChainTip() ?? 0; @@ -699,10 +700,10 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte } } - Future<Map<String, TxInfoT>> _fetchAddressHistory( + Future<Map<String, ElectrumTransactionInfo>> _fetchAddressHistory( BitcoinAddressRecord addressRecord, Set<String> addressesSet, int currentHeight) async { try { - final Map<String, TxInfoT> historiesWithDetails = {}; + final Map<String, ElectrumTransactionInfo> historiesWithDetails = {}; final history = await electrumClient .getHistory(addressRecord.scriptHash ?? addressRecord.updateScriptHash(network)); @@ -723,7 +724,7 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte storedTx.isPending = storedTx.confirmations == 0; } - historiesWithDetails[txid] = storedTx as TxInfoT; + historiesWithDetails[txid] = storedTx; } else { final tx = await fetchTransactionInfo( hash: txid, height: height, myAddresses: addressesSet, retryOnFailure: true); @@ -787,7 +788,7 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte }); } - Future<BalanceT> _fetchBalances() async { + Future<ElectrumBalance> _fetchBalances() async { final addresses = walletAddresses.allAddresses.toList(); final balanceFutures = <Future<Map<String, dynamic>>>[]; for (var i = 0; i < addresses.length; i++) { @@ -827,15 +828,8 @@ abstract class ElectrumWalletBase<BalanceT extends ElectrumBalance, TxInfoT exte } } - // return balanceFactory() - // ..confirmed = totalConfirmed - // ..unconfirmed = totalUnconfirmed - // ..frozen = totalFrozen; - return balanceFactory( - confirmed: totalConfirmed, - unconfirmed: totalUnconfirmed, - frozen: totalFrozen, - ); + return ElectrumBalance( + confirmed: totalConfirmed, unconfirmed: totalUnconfirmed, frozen: totalFrozen); } Future<void> updateBalance() async { diff --git a/cw_bitcoin/lib/litecoin_wallet.dart b/cw_bitcoin/lib/litecoin_wallet.dart index 925a2778b..80f6fc6a0 100644 --- a/cw_bitcoin/lib/litecoin_wallet.dart +++ b/cw_bitcoin/lib/litecoin_wallet.dart @@ -42,14 +42,6 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store { initialBalance: initialBalance, seedBytes: seedBytes, currency: CryptoCurrency.ltc, - balanceFactory: ( - {required int confirmed, required int unconfirmed, required int frozen}) { - return ElectrumBalance( - confirmed: confirmed, - unconfirmed: unconfirmed, - frozen: frozen, - ); - }, ) { walletAddresses = LitecoinWalletAddresses( walletInfo, diff --git a/cw_bitcoin_cash/lib/src/bitcoin_cash_wallet.dart b/cw_bitcoin_cash/lib/src/bitcoin_cash_wallet.dart index 9fe280640..604a9756b 100644 --- a/cw_bitcoin_cash/lib/src/bitcoin_cash_wallet.dart +++ b/cw_bitcoin_cash/lib/src/bitcoin_cash_wallet.dart @@ -49,14 +49,6 @@ abstract class BitcoinCashWalletBase extends ElectrumWallet with Store { initialBalance: initialBalance, seedBytes: seedBytes, currency: CryptoCurrency.bch, - balanceFactory: ( - {required int confirmed, required int unconfirmed, required int frozen}) { - return ElectrumBalance( - confirmed: confirmed, - unconfirmed: unconfirmed, - frozen: frozen, - ); - }, ) { walletAddresses = BitcoinCashWalletAddresses( walletInfo, diff --git a/cw_lightning/lib/lightning_wallet.dart b/cw_lightning/lib/lightning_wallet.dart index 2ba558de4..ca60d00f4 100644 --- a/cw_lightning/lib/lightning_wallet.dart +++ b/cw_lightning/lib/lightning_wallet.dart @@ -32,8 +32,7 @@ part 'lightning_wallet.g.dart'; class LightningWallet = LightningWalletBase with _$LightningWallet; -abstract class LightningWalletBase - extends ElectrumWalletBase<LightningBalance, LightningTransactionInfo> with Store { +abstract class LightningWalletBase extends ElectrumWallet with Store { bool _isTransactionUpdating; @override @@ -53,6 +52,7 @@ abstract class LightningWalletBase Map<String, int>? initialChangeAddressIndex, }) : _isTransactionUpdating = false, syncStatus = NotConnectedSyncStatus(), + _balance = ObservableMap<CryptoCurrency, LightningBalance>(), super( mnemonic: mnemonic, password: password, @@ -63,15 +63,9 @@ abstract class LightningWalletBase initialBalance: initialBalance, seedBytes: seedBytes, currency: CryptoCurrency.btcln, - balanceFactory: ( - {required int confirmed, required int unconfirmed, required int frozen}) { - return LightningBalance( - confirmed: confirmed, - unconfirmed: unconfirmed, - frozen: frozen, - ); - }, ) { + _balance[CryptoCurrency.btcln] = + initialBalance ?? LightningBalance(confirmed: 0, unconfirmed: 0, frozen: 0); walletAddresses = BitcoinWalletAddresses( walletInfo, electrumClient: electrumClient, @@ -95,6 +89,12 @@ abstract class LightningWalletBase }); } + late final ObservableMap<CryptoCurrency, LightningBalance> _balance; + + @override + @computed + ObservableMap<CryptoCurrency, LightningBalance> get balance => _balance; + static Future<LightningWallet> create( {required String mnemonic, required String password, @@ -186,7 +186,7 @@ abstract class LightningWalletBase sdk.nodeStateStream.listen((event) { if (event == null) return; - balance[CryptoCurrency.btcln] = LightningBalance( + _balance[CryptoCurrency.btcln] = LightningBalance( confirmed: event.maxPayableMsat ~/ 1000, unconfirmed: event.maxReceivableMsat ~/ 1000, frozen: 0, diff --git a/lib/src/screens/dashboard/widgets/menu_widget.dart b/lib/src/screens/dashboard/widgets/menu_widget.dart index 1b85943c1..a44ee5476 100644 --- a/lib/src/screens/dashboard/widgets/menu_widget.dart +++ b/lib/src/screens/dashboard/widgets/menu_widget.dart @@ -27,7 +27,7 @@ class MenuWidgetState extends State<MenuWidget> { this.fromBottomEdge = 25, this.moneroIcon = Image.asset('assets/images/monero_menu.png'), this.bitcoinIcon = Image.asset('assets/images/bitcoin_menu.png'), - this.lightningIcon = Image.asset('assets/images/lightning_menu.png'), + this.lightningIcon = Image.asset('assets/images/lightning_logo.png'), this.litecoinIcon = Image.asset('assets/images/litecoin_menu.png'), this.havenIcon = Image.asset('assets/images/haven_menu.png'), this.ethereumIcon = Image.asset('assets/images/eth_icon.png'), @@ -100,8 +100,7 @@ class MenuWidgetState extends State<MenuWidget> { color: Theme.of(context).extension<CakeMenuTheme>()!.iconColor); bitcoinIcon = Image.asset('assets/images/bitcoin_menu.png', color: Theme.of(context).extension<CakeMenuTheme>()!.iconColor); - lightningIcon = Image.asset('assets/images/lightning_menu.png', - color: Theme.of(context).extension<CakeMenuTheme>()!.iconColor); + lightningIcon = Image.asset('assets/images/lightning_logo.png'); return Row( mainAxisSize: MainAxisSize.max, diff --git a/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart b/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart index 4ccb3ee3b..7f54cee6a 100644 --- a/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart +++ b/lib/view_model/wallet_address_list/wallet_address_list_view_model.dart @@ -87,7 +87,7 @@ class LightningURI extends PaymentURI { @override String toString() { - throw Exception('TODO: Not implemented'); + throw Exception('N/A for lightning wallets (need to make a bolt11 invoice).'); } }