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
@@ -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);