safeguards for monero subaddress list (#3242)

This commit is contained in:
malik1004x
2026-05-19 01:58:57 +02:00
committed by GitHub
parent 4125c5fe80
commit 0fadbac089
3 changed files with 12 additions and 4 deletions
+2 -1
View File
@@ -34,8 +34,9 @@ abstract class MoneroSubaddressListBase with Store {
try {
_isUpdating = true;
refresh(accountIndex: accountIndex);
final newAddrs = await getAll();
subaddresses.clear();
subaddresses.addAll(await getAll());
subaddresses.addAll(newAddrs);
_isUpdating = false;
} catch (e) {
_isUpdating = false;
@@ -214,7 +214,7 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
final addressList = ObservableList<ListItem>();
if (wallet.type == WalletType.monero) {
final primaryAddress = monero!.getSubaddressList(wallet).subaddresses.first;
final primaryAddress = monero!.getSubaddressList(wallet).subaddresses.firstOrNull;
final addressItems = monero!.getSubaddressList(wallet).subaddresses.map((subaddress) {
final isPrimary = subaddress == primaryAddress;
@@ -25,9 +25,16 @@ Future<void> createNewAddress(WalletBase wallet, String label) async {
await monero!
.getSubaddressList(wallet)
.addSubaddress(wallet, accountIndex: monero!.getCurrentAccount(wallet).id, label: label);
final addr = await monero!
final subaddressList = await monero!
.getSubaddressList(wallet)
.subaddresses
.subaddresses;
if(subaddressList.isEmpty) {
// this shouldn't happen, we just added an addr.
// somehow, it happened once in prod regardless.
// we just return instead of crashing, user can press the button again ig
return;
}
final addr = subaddressList
.first
.address; // first because the order is reversed
wallet.walletAddresses.manualAddresses.add(addr);