fix generate new electrum address (#1294)
* add side address validation * Remove auto size text [skip ci] --------- Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Serhii committed
Feb 8, 2024 at 00:10 UTC
0832e62719bbf413985c8df0e6e644548730a10a
4 files changed
+17
-7
cw_bitcoin/lib/bitcoin_address_record.dart
+1
-1
@@ -28,7 +28,7 @@ class BitcoinAddressRecord {
28
}
29
30
final String address;
31
- final bool isHidden;
31
+ bool isHidden;
32
final int index;
33
int _txCount;
34
int _balance;
cw_bitcoin/lib/electrum_wallet_addresses.dart
+14
-1
@@ -53,7 +53,7 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
53
String get address {
54
if (isEnabledAutoGenerateSubaddress) {
55
if (receiveAddresses.isEmpty) {
56
- final newAddress = generateNewAddress().address;
56
+ final newAddress = generateNewAddress(hd: mainHd).address;
57
return walletInfo.type == WalletType.bitcoinCash ? toCashAddr(newAddress) : newAddress;
58
}
59
final receiveAddress = receiveAddresses.first.address;
@@ -215,6 +215,13 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
215
List<BitcoinAddressRecord> addrs;
216
217
if (addresses.isNotEmpty) {
218
+
219
+
220
+ if(!isHidden) {
221
+ final receiveAddressesList = addresses.where((addr) => !addr.isHidden).toList();
222
+ validateSideHdAddresses(receiveAddressesList);
223
+ }
224
+
225
addrs = addresses.where((addr) => addr.isHidden == isHidden).toList();
226
} else {
227
addrs = await _createNewAddresses(
@@ -296,4 +303,10 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
303
final transactionHistory = await electrumClient.getHistory(sh);
304
return transactionHistory.isNotEmpty;
305
}
306
+
307
+ void validateSideHdAddresses(List<BitcoinAddressRecord> addrWithTransactions) {
308
+ addrWithTransactions.forEach((element) {
309
+ if (element.address != getAddress(index: element.index, hd: mainHd)) element.isHidden = true;
310
+ });
311
+ }
312
}
lib/bitcoin/cw_bitcoin.dart
+1
-1
@@ -65,7 +65,7 @@ class CWBitcoin extends Bitcoin {
65
@override
66
Future<void> generateNewAddress(Object wallet, String label) async {
67
final bitcoinWallet = wallet as ElectrumWallet;
68
- await bitcoinWallet.walletAddresses.generateNewAddress(label: label);
68
+ await bitcoinWallet.walletAddresses.generateNewAddress(label: label, hd: bitcoinWallet.hd);
69
await wallet.save();
70
}
71
lib/src/screens/receive/widgets/qr_widget.dart
+1
-4
@@ -1,4 +1,3 @@
1
-import 'package:auto_size_text/auto_size_text.dart';
1
import 'package:cake_wallet/entities/qr_view_data.dart';
2
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
3
import 'package:cake_wallet/routes.dart';
@@ -7,7 +6,6 @@ import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dar
6
import 'package:cake_wallet/utils/brightness_util.dart';
7
import 'package:cake_wallet/utils/show_bar.dart';
8
import 'package:cake_wallet/utils/show_pop_up.dart';
10
-import 'package:cw_core/wallet_type.dart';
9
import 'package:flutter/material.dart';
10
import 'package:flutter/services.dart';
11
import 'package:flutter_mobx/flutter_mobx.dart';
@@ -146,10 +144,9 @@ class QRWidget extends StatelessWidget {
144
crossAxisAlignment: CrossAxisAlignment.start,
145
children: <Widget>[
146
Expanded(
149
- child: AutoSizeText(
147
+ child: Text(
148
addressListViewModel.address.address,
149
textAlign: TextAlign.center,
152
- maxLines: addressListViewModel.wallet.type == WalletType.monero ? 2 : 1,
150
style: TextStyle(
151
fontSize: 15,
152
fontWeight: FontWeight.w500,