mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-01-11 05:04:35 +00:00
clean up api, remove unused function, and unneeded code
This commit is contained in:
parent
d2dc0201c8
commit
18dcdbddf1
1 changed files with 40 additions and 56 deletions
|
@ -86,7 +86,7 @@ mixin FusionWalletInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// callback to update the ui state object
|
// callback to update the ui state object
|
||||||
void updateStatus(fusion.FusionStatus fusionStatus) {
|
void _updateStatus(fusion.FusionStatus fusionStatus) {
|
||||||
switch (fusionStatus) {
|
switch (fusionStatus) {
|
||||||
case fusion.FusionStatus.setup:
|
case fusion.FusionStatus.setup:
|
||||||
_uiState?.connecting = CashFusionStatus.waiting;
|
_uiState?.connecting = CashFusionStatus.waiting;
|
||||||
|
@ -112,24 +112,8 @@ mixin FusionWalletInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a list of all owned p2pkh addresses in the wallet.
|
|
||||||
Future<List<fusion.Address>> getFusionAddresses() async {
|
|
||||||
List<Address> _addresses = await _db
|
|
||||||
.getAddresses(_walletId)
|
|
||||||
.filter()
|
|
||||||
.typeEqualTo(AddressType.p2pkh)
|
|
||||||
.and()
|
|
||||||
.group((q) => q
|
|
||||||
.subTypeEqualTo(AddressSubType.receiving)
|
|
||||||
.or()
|
|
||||||
.subTypeEqualTo(AddressSubType.change))
|
|
||||||
.findAll();
|
|
||||||
|
|
||||||
return _addresses.map((address) => address.toFusionAddress()).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns a list of all transactions in the wallet for the given address.
|
/// Returns a list of all transactions in the wallet for the given address.
|
||||||
Future<List<Map<String, dynamic>>> getTransactionsByAddress(
|
Future<List<Map<String, dynamic>>> _getTransactionsByAddress(
|
||||||
String address,
|
String address,
|
||||||
) async {
|
) async {
|
||||||
final txidList =
|
final txidList =
|
||||||
|
@ -145,11 +129,22 @@ mixin FusionWalletInterface {
|
||||||
return await Future.wait(futures);
|
return await Future.wait(futures);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Uint8List> getPrivateKeyForPubKey(List<int> pubKey) async {
|
Future<Uint8List> _getPrivateKeyForPubKey(List<int> pubKey) async {
|
||||||
// can't directly query for equal lists in isar so we need to fetch
|
// can't directly query for equal lists in isar so we need to fetch
|
||||||
// all addresses then search in dart
|
// all addresses then search in dart
|
||||||
try {
|
try {
|
||||||
final derivationPath = (await getFusionAddresses())
|
final derivationPath = (await _db
|
||||||
|
.getAddresses(_walletId)
|
||||||
|
.filter()
|
||||||
|
.typeEqualTo(AddressType.p2pkh)
|
||||||
|
.and()
|
||||||
|
.derivationPathIsNotNull()
|
||||||
|
.and()
|
||||||
|
.group((q) => q
|
||||||
|
.subTypeEqualTo(AddressSubType.receiving)
|
||||||
|
.or()
|
||||||
|
.subTypeEqualTo(AddressSubType.change))
|
||||||
|
.findAll())
|
||||||
.firstWhere((e) => e.publicKey.toString() == pubKey.toString())
|
.firstWhere((e) => e.publicKey.toString() == pubKey.toString())
|
||||||
.derivationPath!
|
.derivationPath!
|
||||||
.value;
|
.value;
|
||||||
|
@ -168,7 +163,7 @@ mixin FusionWalletInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new reserved change address.
|
/// Creates a new reserved change address.
|
||||||
Future<fusion.Address> createNewReservedChangeAddress() async {
|
Future<Address> _createNewReservedChangeAddress() async {
|
||||||
// _getNextUnusedChangeAddress() grabs the latest unused change address
|
// _getNextUnusedChangeAddress() grabs the latest unused change address
|
||||||
// from the wallet.
|
// from the wallet.
|
||||||
// CopyWith to mark it as a fusion reserved change address
|
// CopyWith to mark it as a fusion reserved change address
|
||||||
|
@ -183,13 +178,13 @@ mixin FusionWalletInterface {
|
||||||
await _db.putAddress(address);
|
await _db.putAddress(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
return address.toFusionAddress();
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a list of unused reserved change addresses.
|
/// Returns a list of unused reserved change addresses.
|
||||||
///
|
///
|
||||||
/// If there are not enough unused reserved change addresses, new ones are created.
|
/// If there are not enough unused reserved change addresses, new ones are created.
|
||||||
Future<List<fusion.Address>> getUnusedReservedChangeAddresses(
|
Future<List<fusion.Address>> _getUnusedReservedChangeAddresses(
|
||||||
int numberOfAddresses,
|
int numberOfAddresses,
|
||||||
) async {
|
) async {
|
||||||
// Fetch all reserved change addresses.
|
// Fetch all reserved change addresses.
|
||||||
|
@ -202,7 +197,7 @@ mixin FusionWalletInterface {
|
||||||
.findAll();
|
.findAll();
|
||||||
|
|
||||||
// Initialize a list of unused reserved change addresses.
|
// Initialize a list of unused reserved change addresses.
|
||||||
final List<fusion.Address> unusedAddresses = [];
|
final List<Address> unusedAddresses = [];
|
||||||
|
|
||||||
// check addresses for tx history
|
// check addresses for tx history
|
||||||
for (final address in reservedChangeAddresses) {
|
for (final address in reservedChangeAddresses) {
|
||||||
|
@ -217,24 +212,35 @@ mixin FusionWalletInterface {
|
||||||
// _getTxCountForAddress can throw!
|
// _getTxCountForAddress can throw!
|
||||||
final count = await _getTxCountForAddress(address: address.value);
|
final count = await _getTxCountForAddress(address: address.value);
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
unusedAddresses.add(address.toFusionAddress());
|
unusedAddresses.add(address);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are not enough unused reserved change addresses, create new ones.
|
// If there are not enough unused reserved change addresses, create new ones.
|
||||||
while (unusedAddresses.length < numberOfAddresses) {
|
while (unusedAddresses.length < numberOfAddresses) {
|
||||||
unusedAddresses.add(await createNewReservedChangeAddress());
|
unusedAddresses.add(await _createNewReservedChangeAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the list of unused reserved change addresses.
|
// Return the list of unused reserved change addresses.
|
||||||
return unusedAddresses.sublist(0, numberOfAddresses);
|
return unusedAddresses.sublist(0, numberOfAddresses).map((e) {
|
||||||
|
final bool fusionReserved = e.otherData == kReservedFusionAddress;
|
||||||
|
|
||||||
|
return fusion.Address(
|
||||||
|
address: e.value,
|
||||||
|
publicKey: e.publicKey,
|
||||||
|
fusionReserved: fusionReserved,
|
||||||
|
derivationPath: fusion.DerivationPath(
|
||||||
|
e.derivationPath!.value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
int _torStartCount = 0;
|
int _torStartCount = 0;
|
||||||
|
|
||||||
/// Returns the current Tor proxy address.
|
/// Returns the current Tor proxy address.
|
||||||
Future<({InternetAddress host, int port})> getSocksProxyAddress() async {
|
Future<({InternetAddress host, int port})> _getSocksProxyAddress() async {
|
||||||
if (_torStartCount > 5) {
|
if (_torStartCount > 5) {
|
||||||
// something is quite broken so stop trying to recursively fetch
|
// something is quite broken so stop trying to recursively fetch
|
||||||
// start up tor and fetch proxy info
|
// start up tor and fetch proxy info
|
||||||
|
@ -261,7 +267,7 @@ mixin FusionWalletInterface {
|
||||||
await _torService.start();
|
await _torService.start();
|
||||||
|
|
||||||
// try again to fetch proxy info
|
// try again to fetch proxy info
|
||||||
return await getSocksProxyAddress();
|
return await _getSocksProxyAddress();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,18 +282,17 @@ mixin FusionWalletInterface {
|
||||||
|
|
||||||
// Pass wallet functions to the Fusion object
|
// Pass wallet functions to the Fusion object
|
||||||
await mainFusionObject.initFusion(
|
await mainFusionObject.initFusion(
|
||||||
getAddresses: getFusionAddresses,
|
getTransactionsByAddress: _getTransactionsByAddress,
|
||||||
getTransactionsByAddress: getTransactionsByAddress,
|
getUnusedReservedChangeAddresses: _getUnusedReservedChangeAddresses,
|
||||||
getUnusedReservedChangeAddresses: getUnusedReservedChangeAddresses,
|
getSocksProxyAddress: _getSocksProxyAddress,
|
||||||
getSocksProxyAddress: getSocksProxyAddress,
|
|
||||||
getChainHeight: _getChainHeight,
|
getChainHeight: _getChainHeight,
|
||||||
updateStatusCallback: updateStatus,
|
updateStatusCallback: _updateStatus,
|
||||||
getTransactionJson: (String txid) async =>
|
getTransactionJson: (String txid) async =>
|
||||||
await _getWalletCachedElectrumX().getTransaction(
|
await _getWalletCachedElectrumX().getTransaction(
|
||||||
coin: _coin,
|
coin: _coin,
|
||||||
txHash: txid,
|
txHash: txid,
|
||||||
),
|
),
|
||||||
getPrivateKeyForPubKey: getPrivateKeyForPubKey,
|
getPrivateKeyForPubKey: _getPrivateKeyForPubKey,
|
||||||
broadcastTransaction: (String txHex) => _getWalletCachedElectrumX()
|
broadcastTransaction: (String txHex) => _getWalletCachedElectrumX()
|
||||||
.electrumXClient
|
.electrumXClient
|
||||||
.broadcastTransaction(rawTx: txHex),
|
.broadcastTransaction(rawTx: txHex),
|
||||||
|
@ -367,24 +372,3 @@ mixin FusionWalletInterface {
|
||||||
"TODO refreshFusion eg look up number of fusion participants connected/coordinating");
|
"TODO refreshFusion eg look up number of fusion participants connected/coordinating");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An extension of Stack Wallet's Address class that adds CashFusion functionality.
|
|
||||||
extension FusionAddress on Address {
|
|
||||||
fusion.Address toFusionAddress() {
|
|
||||||
if (derivationPath == null) {
|
|
||||||
// throw Exception("Fusion Addresses require a derivation path");
|
|
||||||
// TODO calculate a derivation path if it is null.
|
|
||||||
}
|
|
||||||
|
|
||||||
final bool fusionReserved = otherData == kReservedFusionAddress;
|
|
||||||
|
|
||||||
return fusion.Address(
|
|
||||||
address: value,
|
|
||||||
publicKey: publicKey,
|
|
||||||
fusionReserved: fusionReserved,
|
|
||||||
derivationPath: fusion.DerivationPath(
|
|
||||||
derivationPath?.value ?? "", // TODO fix null derivation path.
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue