mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 12:29:51 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
69c2e458d5
3 changed files with 29 additions and 23 deletions
|
@ -1,4 +1,5 @@
|
|||
import 'dart:convert';
|
||||
import 'package:mobx/mobx.dart';
|
||||
|
||||
import 'package:bitcoin_base/bitcoin_base.dart';
|
||||
|
||||
|
@ -16,7 +17,7 @@ abstract class BaseBitcoinAddressRecord {
|
|||
}) : _txCount = txCount,
|
||||
_balance = balance,
|
||||
_name = name,
|
||||
_isUsed = isUsed;
|
||||
_isUsed = Observable(isUsed);
|
||||
|
||||
@override
|
||||
bool operator ==(Object o) => o is BaseBitcoinAddressRecord && address == o.address;
|
||||
|
@ -27,7 +28,7 @@ abstract class BaseBitcoinAddressRecord {
|
|||
int _txCount;
|
||||
int _balance;
|
||||
String _name;
|
||||
bool _isUsed;
|
||||
final Observable<bool> _isUsed;
|
||||
BasedUtxoNetwork? network;
|
||||
|
||||
int get txCount => _txCount;
|
||||
|
@ -40,9 +41,9 @@ abstract class BaseBitcoinAddressRecord {
|
|||
|
||||
set balance(int value) => _balance = value;
|
||||
|
||||
bool get isUsed => _isUsed;
|
||||
bool get isUsed => _isUsed.value;
|
||||
|
||||
void setAsUsed() => _isUsed = true;
|
||||
void setAsUsed() => _isUsed.value = true;
|
||||
void setNewName(String label) => _name = label;
|
||||
|
||||
int get hashCode => address.hashCode;
|
||||
|
|
|
@ -144,27 +144,32 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
|
|||
return silentAddress.toString();
|
||||
}
|
||||
|
||||
String receiveAddress;
|
||||
final typeMatchingAddresses = _addresses.where((addr) => !addr.isHidden && _isAddressPageTypeMatch(addr)).toList();
|
||||
final typeMatchingReceiveAddresses = typeMatchingAddresses.where((addr) => !addr.isUsed).toList();
|
||||
|
||||
final typeMatchingReceiveAddresses =
|
||||
receiveAddresses.where(_isAddressPageTypeMatch).where((addr) => !addr.isUsed);
|
||||
|
||||
if ((isEnabledAutoGenerateSubaddress && receiveAddresses.isEmpty) ||
|
||||
typeMatchingReceiveAddresses.isEmpty) {
|
||||
receiveAddress = generateNewAddress().address;
|
||||
} else {
|
||||
final previousAddressMatchesType =
|
||||
previousAddressRecord != null && previousAddressRecord!.type == addressPageType;
|
||||
|
||||
if (previousAddressMatchesType &&
|
||||
typeMatchingReceiveAddresses.first.address != addressesByReceiveType.first.address) {
|
||||
receiveAddress = previousAddressRecord!.address;
|
||||
} else {
|
||||
receiveAddress = typeMatchingReceiveAddresses.first.address;
|
||||
if (!isEnabledAutoGenerateSubaddress) {
|
||||
if (previousAddressRecord != null &&
|
||||
previousAddressRecord!.type == addressPageType) {
|
||||
return previousAddressRecord!.address;
|
||||
}
|
||||
|
||||
if (typeMatchingAddresses.isNotEmpty) {
|
||||
return typeMatchingAddresses.first.address;
|
||||
}
|
||||
|
||||
return generateNewAddress().address;
|
||||
}
|
||||
|
||||
return receiveAddress;
|
||||
if (typeMatchingAddresses.isEmpty || typeMatchingReceiveAddresses.isEmpty) {
|
||||
return generateNewAddress().address;
|
||||
}
|
||||
|
||||
final prev = previousAddressRecord;
|
||||
if (prev != null && prev.type == addressPageType && !prev.isUsed) {
|
||||
return prev.address;
|
||||
}
|
||||
|
||||
return typeMatchingReceiveAddresses.first.address;
|
||||
}
|
||||
|
||||
@observable
|
||||
|
|
|
@ -130,8 +130,8 @@ abstract class MoneroWalletAddressesBase extends WalletAddresses with Store {
|
|||
final transactions = _moneroTransactionHistory.transactions.values.toList();
|
||||
|
||||
transactions.forEach((element) {
|
||||
final accountIndex = element.accountIndex;
|
||||
final addressIndex = element.addressIndex;
|
||||
final accountIndex = element.additionalInfo['accountIndex'] as int? ?? 0;
|
||||
final addressIndex = element.additionalInfo['addressIndex'] as int? ?? 0;
|
||||
usedAddresses.add(getAddress(accountIndex: accountIndex, addressIndex: addressIndex));
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue