Fix monero swaps (#3195)

* Fix monero swaps not showing in history * await more sublist instances * await more sublist instances

Omar Hatem committed Apr 23, 2026 at 01:31 UTC 7c8a2b926d99dcfe10851d8527e896f68e38edf9
8 files changed +24 -25
cw_monero/lib/monero_subaddress_list.dart
+2 -2
@@ -67,14 +67,14 @@ abstract class MoneroSubaddressListBase with Store {
67
68 Future<void> addSubaddress({required int accountIndex, required String label}) async {
69 await subaddress_list.addSubaddress(accountIndex: accountIndex, label: label);
70 - update(accountIndex: accountIndex);
70 + await update(accountIndex: accountIndex);
71 }
72
73 Future<void> setLabelSubaddress(
74 {required int accountIndex, required int addressIndex, required String label}) async {
75 await subaddress_list.setLabelForSubaddress(
76 accountIndex: accountIndex, addressIndex: addressIndex, label: label);
77 - update(accountIndex: accountIndex);
77 + await update(accountIndex: accountIndex);
78 }
79
80 void refresh({required int accountIndex}) {
cw_monero/lib/monero_wallet.dart
+5 -6
@@ -3,7 +3,6 @@ import 'dart:ffi';
3 import 'dart:io';
4 import 'dart:isolate';
5
6 -import 'package:cw_core/format_fixed.dart';
6 import 'package:cw_core/monero_amount_format.dart';
7 import 'package:cw_core/pathForWallet.dart';
8 import 'package:cw_core/transaction_priority.dart';
@@ -180,7 +179,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
179 _autoSaveTimer = Timer.periodic(
180 Duration(seconds: _autoSaveInterval), (_) async => await save());
181 // update transaction details after restore
183 - walletAddresses.subaddressList.update(accountIndex: walletAddresses.account?.id??0);
182 + await walletAddresses.subaddressList.update(accountIndex: walletAddresses.account?.id??0);
183 }
184
185 @override
@@ -504,7 +503,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
503 await walletAddresses.updateUsedSubaddress();
504
505 if (isEnabledAutoGenerateSubaddress) {
507 - walletAddresses.updateUnusedSubaddress(
506 + await walletAddresses.updateUnusedSubaddress(
507 accountIndex: walletAddresses.account?.id ?? 0,
508 defaultLabel: walletAddresses.account?.label ?? '');
509 }
@@ -951,14 +950,14 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
950 }
951 }
952
954 - void _updateSubAddress(bool enableAutoGenerate, {Account? account}) {
953 + Future<void> _updateSubAddress(bool enableAutoGenerate, {Account? account}) async {
954 if (enableAutoGenerate) {
956 - walletAddresses.updateUnusedSubaddress(
955 + await walletAddresses.updateUnusedSubaddress(
956 accountIndex: account?.id ?? 0,
957 defaultLabel: account?.label ?? '',
958 );
959 } else {
961 - walletAddresses.updateSubaddressList(accountIndex: account?.id ?? 0);
960 + await walletAddresses.updateSubaddressList(accountIndex: account?.id ?? 0);
961 }
962 }
963
cw_monero/lib/monero_wallet_addresses.dart
+5 -5
@@ -72,7 +72,7 @@ abstract class MoneroWalletAddressesBase extends WalletAddresses with Store {
72 Future<void> init() async {
73 accountList.update();
74 account = accountList.accounts.isEmpty ? Account(id: 0, label: "Primary address") : accountList.accounts.first;
75 - updateSubaddressList(accountIndex: account?.id ?? 0);
75 + await updateSubaddressList(accountIndex: account?.id ?? 0);
76 await updateAddressesInBox();
77 }
78
@@ -84,8 +84,8 @@ abstract class MoneroWalletAddressesBase extends WalletAddresses with Store {
84 addressesMap.clear();
85 addressInfos.clear();
86
87 - accountList.accounts.forEach((account) {
88 - _subaddressList.update(accountIndex: account.id);
87 + accountList.accounts.forEach((account) async {
88 + await _subaddressList.update(accountIndex: account.id);
89 _subaddressList.subaddresses.forEach((subaddress) {
90 addressesMap[subaddress.address] = subaddress.label;
91 addressInfos[account.id] ??= [];
@@ -122,8 +122,8 @@ abstract class MoneroWalletAddressesBase extends WalletAddresses with Store {
122 return true;
123 }
124
125 - void updateSubaddressList({required int accountIndex}) {
126 - subaddressList.update(accountIndex: accountIndex);
125 + Future<void> updateSubaddressList({required int accountIndex}) async {
126 + await subaddressList.update(accountIndex: accountIndex);
127 address = subaddressList.subaddresses.isNotEmpty
128 ? subaddressList.subaddresses.first.address
129 : getAddress();
lib/monero/cw_monero.dart
+2 -2
@@ -77,9 +77,9 @@ class CWMoneroSubaddressList extends MoneroSubaddressList {
77 }
78
79 @override
80 - void update(Object wallet, {required int accountIndex}) {
80 + Future<void> update(Object wallet, {required int accountIndex}) async {
81 final moneroWallet = wallet as MoneroWallet;
82 - moneroWallet.walletAddresses.subaddressList.update(accountIndex: accountIndex);
82 + await moneroWallet.walletAddresses.subaddressList.update(accountIndex: accountIndex);
83 }
84
85 @override
lib/view_model/wallet_address_list/wallet_address_list_view_model.dart
+1 -1
@@ -409,7 +409,7 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
409 // update the address list:
410 await wallet.walletAddresses.saveAddressesInBox();
411 if (wallet.type == WalletType.monero) {
412 - monero!
412 + await monero!
413 .getSubaddressList(wallet)
414 .update(wallet, accountIndex: monero!.getCurrentAccount(wallet).id);
415 } else if (wallet.type == WalletType.wownero) {
scripts/android/app_env.sh
+4 -4
@@ -14,15 +14,15 @@ TYPES=($MONERO_COM $CAKEWALLET)
14 APP_ANDROID_TYPE=$1
15
16 MONERO_COM_NAME="Monero.com"
17 -MONERO_COM_VERSION="6.1.0"
18 -MONERO_COM_BUILD_NUMBER=4157
17 +MONERO_COM_VERSION="6.1.2"
18 +MONERO_COM_BUILD_NUMBER=4158
19 MONERO_COM_BUNDLE_ID="com.monero.app"
20 MONERO_COM_PACKAGE="com.monero.app"
21 MONERO_COM_SCHEME="monero.com"
22
23 CAKEWALLET_NAME="Cake Wallet"
24 -CAKEWALLET_VERSION="6.1.1"
25 -CAKEWALLET_BUILD_NUMBER=4409
24 +CAKEWALLET_VERSION="6.1.2"
25 +CAKEWALLET_BUILD_NUMBER=4410
26 CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
27 CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
28 CAKEWALLET_SCHEME="cakewallet"
scripts/ios/app_env.sh
+4 -4
@@ -12,13 +12,13 @@ TYPES=($MONERO_COM $CAKEWALLET)
12 APP_IOS_TYPE=$1
13
14 MONERO_COM_NAME="Monero.com"
15 -MONERO_COM_VERSION="6.1.0"
16 -MONERO_COM_BUILD_NUMBER=162
15 +MONERO_COM_VERSION="6.1.2"
16 +MONERO_COM_BUILD_NUMBER=163
17 MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
18
19 CAKEWALLET_NAME="Cake Wallet"
20 -CAKEWALLET_VERSION="6.1.1"
21 -CAKEWALLET_BUILD_NUMBER=417
20 +CAKEWALLET_VERSION="6.1.2"
21 +CAKEWALLET_BUILD_NUMBER=418
22 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
23
24
tool/configure.dart
+1 -1
@@ -490,7 +490,7 @@ WalletCredentials createMoneroNewWalletCredentials({required String name, requir
490
491 abstract class MoneroSubaddressList {
492 ObservableList<Subaddress> get subaddresses;
493 - void update(Object wallet, {required int accountIndex});
493 + Future<void> update(Object wallet, {required int accountIndex});
494 void refresh(Object wallet, {required int accountIndex});
495 Future<List<Subaddress>> getAll(Object wallet);
496 Future<void> addSubaddress(Object wallet, {required int accountIndex, required String label});