diff --git a/cw_bitcoin/lib/bitcoin_wallet_keys.dart b/cw_bitcoin/lib/bitcoin_wallet_keys.dart index 9a9bdcba4..abc2d8fa2 100644 --- a/cw_bitcoin/lib/bitcoin_wallet_keys.dart +++ b/cw_bitcoin/lib/bitcoin_wallet_keys.dart @@ -1,12 +1,23 @@ class BitcoinWalletKeys { - const BitcoinWalletKeys( - {required this.wif, required this.privateKey, required this.publicKey, required this.xpub}); + const BitcoinWalletKeys({ + required this.wif, + required this.privateKey, + required this.publicKey, + required this.xpub, + this.masterFingerprint = '', + }); final String wif; final String privateKey; final String publicKey; final String xpub; + final String masterFingerprint; - Map toJson() => - {'wif': wif, 'privateKey': privateKey, 'publicKey': publicKey, 'xpub': xpub}; + Map toJson() => { + 'wif': wif, + 'privateKey': privateKey, + 'publicKey': publicKey, + 'xpub': xpub, + 'masterFingerprint': masterFingerprint, + }; } diff --git a/cw_bitcoin/lib/electrum_wallet.dart b/cw_bitcoin/lib/electrum_wallet.dart index ceba0eccd..5d3af65f5 100644 --- a/cw_bitcoin/lib/electrum_wallet.dart +++ b/cw_bitcoin/lib/electrum_wallet.dart @@ -471,6 +471,7 @@ abstract class ElectrumWalletBase privateKey: privateKey ?? '', publicKey: publicKey ?? '', xpub: xpub, + masterFingerprint: _masterHD?.fingerPrint.toHex() ?? '', ); } diff --git a/lib/src/screens/wallet_keys/wallet_keys_page.dart b/lib/src/screens/wallet_keys/wallet_keys_page.dart index e5cb40c16..2fb769019 100644 --- a/lib/src/screens/wallet_keys/wallet_keys_page.dart +++ b/lib/src/screens/wallet_keys/wallet_keys_page.dart @@ -78,7 +78,7 @@ class _WalletKeysPageBodyState extends State showKeyTab = widget.walletKeysViewModel.items.isNotEmpty; showSilentPaymentsTab = - widget.walletKeysViewModel.isBitcoin && widget.walletKeysViewModel.items.length > 4; + widget.walletKeysViewModel.isBitcoin && widget.walletKeysViewModel.silentPaymentItems.isNotEmpty; showLegacySeedTab = widget.walletKeysViewModel.legacySeedSplit.isNotEmpty; isLegacySeedOnly = widget.walletKeysViewModel.isLegacySeedOnly; @@ -157,16 +157,12 @@ class _WalletKeysPageBodyState extends State if (showKeyTab) Padding( padding: const EdgeInsets.only(left: 22, right: 22), - child: _buildKeysTab( - context, - showSilentPaymentsTab - ? widget.walletKeysViewModel.items.sublist(0, 4) - : widget.walletKeysViewModel.items), + child: _buildKeysTab(context, widget.walletKeysViewModel.items), ), if (showSilentPaymentsTab) Padding( padding: const EdgeInsets.only(left: 22, right: 22), - child: _buildKeysTab(context, widget.walletKeysViewModel.items.sublist(4)), + child: _buildKeysTab(context, widget.walletKeysViewModel.silentPaymentItems), ), if (showLegacySeedTab) Padding( diff --git a/lib/view_model/wallet_keys_view_model.dart b/lib/view_model/wallet_keys_view_model.dart index 9b2fa4dc9..73e6a6315 100644 --- a/lib/view_model/wallet_keys_view_model.dart +++ b/lib/view_model/wallet_keys_view_model.dart @@ -30,6 +30,7 @@ abstract class WalletKeysViewModelBase with Store { _restoreHeight = _appStore.wallet!.walletInfo.restoreHeight, _restoreHeightByTransactions = 0, items = ObservableList(), + silentPaymentItems = ObservableList(), _title = _getInitialTitle(_appStore.wallet!) { _populateKeysItems(); @@ -87,6 +88,7 @@ abstract class WalletKeysViewModelBase with Store { // this is incomplete, needs legacy seed toggle for XMR bool get shouldShowHeightBox => [WalletType.bitcoin, WalletType.zcash].contains(_wallet.type); final ObservableList items; + final ObservableList silentPaymentItems; @observable String _title; @@ -150,6 +152,7 @@ abstract class WalletKeysViewModelBase with Store { void _populateKeysItems() { items.clear(); + silentPaymentItems.clear(); Map? keys; @@ -217,6 +220,11 @@ abstract class WalletKeysViewModelBase with Store { final electrumKeys = bitcoin!.getWalletKeys(_appStore.wallet!); items.addAll([ + if ((electrumKeys['masterFingerprint'] ?? '').isNotEmpty) + StandartListItem( + title: "Master fingerprint", + value: electrumKeys['masterFingerprint']!, + ), if ((electrumKeys['wif'] ?? '').isNotEmpty) StandartListItem(title: "WIF", value: electrumKeys['wif']!), if ((electrumKeys['privateKey'] ?? '').isNotEmpty) @@ -233,7 +241,8 @@ abstract class WalletKeysViewModelBase with Store { } if (keys != null) { - items.addAll([ + final keysList = _wallet.type == WalletType.bitcoin ? silentPaymentItems : items; + keysList.addAll([ if ((keys['primaryAddress'] ?? '').isNotEmpty) StandartListItem( key: ValueKey('${_walletName}_wallet_primary_address_item_key'),