CAKE-343 | added wallet_addresses.dart, monero_wallet_addresses.dart, electrum_wallet_addresses.dart, wallet_addresses_credentials.dart, monero_wallet_addresses_credentials.dart and electrum_wallet_addresses_credentials.dart to the app; applied ElectrumWalletAddresses to electrum_wallet.dart and MoneroWalletAddresses to monero_wallet.dart; fixed contact_list_view_model.dart, other view models and services

This commit is contained in:
OleksandrSobol
2021-07-08 17:52:48 +03:00
parent c72245d904
commit e03f0ce4d3
16 changed files with 159 additions and 51 deletions
-1
View File
@@ -44,7 +44,6 @@ class BitcoinWalletService extends WalletService<
final wallet = await BitcoinWalletBase.open(
password: password, name: name, walletInfo: walletInfo);
await wallet.init();
await wallet.updateAddressesInfo();
return wallet;
}
+14 -2
View File
@@ -1,5 +1,7 @@
import 'dart:async';
import 'dart:convert';
import 'package:cake_wallet/bitcoin/electrum_wallet_addresses.dart';
import 'package:cake_wallet/bitcoin/electrum_wallet_addresses_credentials.dart';
import 'package:mobx/mobx.dart';
import 'package:rxdart/subjects.dart';
import 'package:flutter/foundation.dart';
@@ -63,6 +65,8 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
ElectrumTransactionHistory(walletInfo: walletInfo, password: password);
_unspent = [];
_scripthashesUpdateSubject = {};
_walletAddressInBox = ElectrumWalletAddresses(walletInfo);
_walletAddressInBoxCredentials = ElectrumWalletAddressesCredentials();
}
static int estimatedTransactionSize(int inputsCount, int outputsCounts) =>
@@ -93,6 +97,9 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
String get xpub => hd.base58;
ElectrumWalletAddresses _walletAddressInBox;
ElectrumWalletAddressesCredentials _walletAddressInBoxCredentials;
@override
String get seed => mnemonic;
@@ -113,6 +120,7 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
await generateAddresses();
address = addresses[_accountIndex].address;
await transactionHistory.init();
await _updateWalletAddressInBox();
}
@action
@@ -125,8 +133,6 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
address = addresses[_accountIndex].address;
await updateAddressesInfo();
await save();
}
@@ -364,6 +370,7 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
final path = await makePath();
await write(path: path, password: _password, data: toJSON());
await transactionHistory.save();
await _updateWalletAddressInBox();
}
bitcoin.ECPair keyPairFor({@required int index}) =>
@@ -466,4 +473,9 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
balance = await _fetchBalances();
await save();
}
Future<void> _updateWalletAddressInBox() async {
_walletAddressInBoxCredentials.address = address;
await _walletAddressInBox.update(_walletAddressInBoxCredentials);
}
}
@@ -0,0 +1,32 @@
import 'package:cake_wallet/bitcoin/electrum_wallet_addresses_credentials.dart';
import 'package:cake_wallet/entities/wallet_addresses.dart';
import 'package:cake_wallet/entities/wallet_addresses_credentials.dart';
import 'package:cake_wallet/entities/wallet_info.dart';
class ElectrumWalletAddresses extends WalletAddresses {
ElectrumWalletAddresses(WalletInfo walletInfo) : super(walletInfo);
@override
Future<void> update(WalletAddressesCredentials credentials) async {
try {
if (credentials == null) {
return;
}
final _credentials = credentials as ElectrumWalletAddressesCredentials;
final _address = _credentials.address;
final _label = '';
if (_address == null || _address.isEmpty) {
return;
}
addresses.clear();
addresses[_address] = _label;
await save();
} catch (e) {
print(e.toString());
}
}
}
@@ -0,0 +1,7 @@
import 'package:cake_wallet/entities/wallet_addresses_credentials.dart';
class ElectrumWalletAddressesCredentials extends WalletAddressesCredentials {
ElectrumWalletAddressesCredentials();
String address;
}
-1
View File
@@ -45,7 +45,6 @@ class LitecoinWalletService extends WalletService<
final wallet = await LitecoinWalletBase.open(
password: password, name: name, walletInfo: walletInfo);
await wallet.init();
await wallet.updateAddressesInfo();
return wallet;
}