monero fixes (#1581)

* correct comparision while syncing * fix issue from report 25916.txt * return proper address even if numSubaddresses returned 0

cyan committed Aug 7, 2024 at 18:12 UTC 96e4a4eb6c41a0a3c541a617073096ef96c1492f
5 files changed +13 -5
cw_monero/lib/api/subaddress_list.dart
+5 -1
@@ -42,12 +42,16 @@ class Subaddress {
42
43 List<Subaddress> getAllSubaddresses() {
44 final size = monero.Wallet_numSubaddresses(wptr!, accountIndex: subaddress!.accountIndex);
45 - return List.generate(size, (index) {
45 + final list = List.generate(size, (index) {
46 return Subaddress(
47 accountIndex: subaddress!.accountIndex,
48 addressIndex: index,
49 );
50 }).reversed.toList();
51 + if (list.length == 0) {
52 + list.add(Subaddress(addressIndex: subaddress!.accountIndex, accountIndex: 0));
53 + }
54 + return list;
55 }
56
57 void addSubaddressSync({required int accountIndex, required String label}) {
cw_monero/lib/api/wallet.dart
+1 -1
@@ -131,7 +131,7 @@ void storeSync() async {
131 return monero.Wallet_synchronized(Pointer.fromAddress(addr));
132 });
133 if (lastStorePointer == wptr!.address &&
134 - lastStoreHeight + 5000 < monero.Wallet_blockChainHeight(wptr!) &&
134 + lastStoreHeight + 5000 > monero.Wallet_blockChainHeight(wptr!) &&
135 !synchronized) {
136 return;
137 }
cw_monero/lib/monero_wallet_addresses.dart
+1 -1
@@ -109,7 +109,7 @@ abstract class MoneroWalletAddressesBase extends WalletAddresses with Store {
109 accountIndex: accountIndex,
110 defaultLabel: defaultLabel,
111 usedAddresses: usedAddresses.toList());
112 - subaddress = subaddressList.subaddresses.last;
112 + subaddress = (subaddressList.subaddresses.isEmpty) ? Subaddress(id: 0, address: address, label: defaultLabel) : subaddressList.subaddresses.last;
113 address = subaddress!.address;
114 }
115
cw_wownero/lib/api/subaddress_list.dart
+5 -1
@@ -41,12 +41,16 @@ class Subaddress {
41
42 List<Subaddress> getAllSubaddresses() {
43 final size = wownero.Wallet_numSubaddresses(wptr!, accountIndex: subaddress!.accountIndex);
44 - return List.generate(size, (index) {
44 + final list = List.generate(size, (index) {
45 return Subaddress(
46 accountIndex: subaddress!.accountIndex,
47 addressIndex: index,
48 );
49 }).reversed.toList();
50 + if (list.isEmpty) {
51 + list.add(Subaddress(addressIndex: 0, accountIndex: subaddress!.accountIndex));
52 + }
53 + return list;
54 }
55
56 void addSubaddressSync({required int accountIndex, required String label}) {
cw_wownero/lib/wownero_wallet_addresses.dart
+1 -1
@@ -109,7 +109,7 @@ abstract class WowneroWalletAddressesBase extends WalletAddresses with Store {
109 accountIndex: accountIndex,
110 defaultLabel: defaultLabel,
111 usedAddresses: usedAddresses.toList());
112 - subaddress = subaddressList.subaddresses.last;
112 + subaddress = (subaddressList.subaddresses.isEmpty) ? Subaddress(id: 0, address: address, label: defaultLabel) : subaddressList.subaddresses.last;
113 address = subaddress!.address;
114 }
115