Revert removing isTestnet from other wallets [skip ci]

This commit is contained in:
OmarHatem 2024-02-15 22:54:48 +02:00
parent 1434e5afbf
commit 8cd1693b6b
12 changed files with 84 additions and 113 deletions

View file

@ -12,8 +12,10 @@ import 'package:cw_core/wallet_info.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
class LitecoinWalletService extends WalletService<BitcoinNewWalletCredentials, class LitecoinWalletService extends WalletService<
BitcoinRestoreWalletFromSeedCredentials, BitcoinRestoreWalletFromWIFCredentials> { BitcoinNewWalletCredentials,
BitcoinRestoreWalletFromSeedCredentials,
BitcoinRestoreWalletFromWIFCredentials> {
LitecoinWalletService(this.walletInfoSource, this.unspentCoinsInfoSource); LitecoinWalletService(this.walletInfoSource, this.unspentCoinsInfoSource);
final Box<WalletInfo> walletInfoSource; final Box<WalletInfo> walletInfoSource;
@ -23,7 +25,7 @@ class LitecoinWalletService extends WalletService<BitcoinNewWalletCredentials,
WalletType getType() => WalletType.litecoin; WalletType getType() => WalletType.litecoin;
@override @override
Future<LitecoinWallet> create(BitcoinNewWalletCredentials credentials) async { Future<LitecoinWallet> create(BitcoinNewWalletCredentials credentials, {bool? isTestnet}) async {
final wallet = await LitecoinWalletBase.create( final wallet = await LitecoinWalletBase.create(
mnemonic: await generateMnemonic(), mnemonic: await generateMnemonic(),
password: credentials.password!, password: credentials.password!,
@ -41,14 +43,12 @@ class LitecoinWalletService extends WalletService<BitcoinNewWalletCredentials,
@override @override
Future<LitecoinWallet> openWallet(String name, String password) async { Future<LitecoinWallet> openWallet(String name, String password) async {
final walletInfo = walletInfoSource.values final walletInfo = walletInfoSource.values.firstWhereOrNull(
.firstWhereOrNull((info) => info.id == WalletBase.idFor(name, getType()))!; (info) => info.id == WalletBase.idFor(name, getType()))!;
try { try {
final wallet = await LitecoinWalletBase.open( final wallet = await LitecoinWalletBase.open(
password: password, password: password, name: name, walletInfo: walletInfo,
name: name,
walletInfo: walletInfo,
unspentCoinsInfo: unspentCoinsInfoSource); unspentCoinsInfo: unspentCoinsInfoSource);
await wallet.init(); await wallet.init();
saveBackup(name); saveBackup(name);
@ -56,9 +56,7 @@ class LitecoinWalletService extends WalletService<BitcoinNewWalletCredentials,
} catch (_) { } catch (_) {
await restoreWalletFilesFromBackup(name); await restoreWalletFilesFromBackup(name);
final wallet = await LitecoinWalletBase.open( final wallet = await LitecoinWalletBase.open(
password: password, password: password, name: name, walletInfo: walletInfo,
name: name,
walletInfo: walletInfo,
unspentCoinsInfo: unspentCoinsInfoSource); unspentCoinsInfo: unspentCoinsInfoSource);
await wallet.init(); await wallet.init();
return wallet; return wallet;
@ -67,16 +65,17 @@ class LitecoinWalletService extends WalletService<BitcoinNewWalletCredentials,
@override @override
Future<void> remove(String wallet) async { Future<void> remove(String wallet) async {
File(await pathForWalletDir(name: wallet, type: getType())).delete(recursive: true); File(await pathForWalletDir(name: wallet, type: getType()))
final walletInfo = walletInfoSource.values .delete(recursive: true);
.firstWhereOrNull((info) => info.id == WalletBase.idFor(wallet, getType()))!; final walletInfo = walletInfoSource.values.firstWhereOrNull(
(info) => info.id == WalletBase.idFor(wallet, getType()))!;
await walletInfoSource.delete(walletInfo.key); await walletInfoSource.delete(walletInfo.key);
} }
@override @override
Future<void> rename(String currentName, String password, String newName) async { Future<void> rename(String currentName, String password, String newName) async {
final currentWalletInfo = walletInfoSource.values final currentWalletInfo = walletInfoSource.values.firstWhereOrNull(
.firstWhereOrNull((info) => info.id == WalletBase.idFor(currentName, getType()))!; (info) => info.id == WalletBase.idFor(currentName, getType()))!;
final currentWallet = await LitecoinWalletBase.open( final currentWallet = await LitecoinWalletBase.open(
password: password, password: password,
name: currentName, name: currentName,
@ -95,12 +94,12 @@ class LitecoinWalletService extends WalletService<BitcoinNewWalletCredentials,
@override @override
Future<LitecoinWallet> restoreFromKeys( Future<LitecoinWallet> restoreFromKeys(
BitcoinRestoreWalletFromWIFCredentials credentials) async => BitcoinRestoreWalletFromWIFCredentials credentials, {bool? isTestnet}) async =>
throw UnimplementedError(); throw UnimplementedError();
@override @override
Future<LitecoinWallet> restoreFromSeed( Future<LitecoinWallet> restoreFromSeed(
BitcoinRestoreWalletFromSeedCredentials credentials) async { BitcoinRestoreWalletFromSeedCredentials credentials, {bool? isTestnet}) async {
if (!validateMnemonic(credentials.mnemonic)) { if (!validateMnemonic(credentials.mnemonic)) {
throw BitcoinMnemonicIsIncorrectException(); throw BitcoinMnemonicIsIncorrectException();
} }

View file

@ -2,10 +2,7 @@ import 'dart:io';
import 'package:bip39/bip39.dart'; import 'package:bip39/bip39.dart';
import 'package:cw_bitcoin_cash/cw_bitcoin_cash.dart'; import 'package:cw_bitcoin_cash/cw_bitcoin_cash.dart';
import 'package:cw_core/balance.dart';
import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/pathForWallet.dart';
import 'package:cw_core/transaction_history.dart';
import 'package:cw_core/transaction_info.dart';
import 'package:cw_core/unspent_coins_info.dart'; import 'package:cw_core/unspent_coins_info.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_info.dart';
@ -29,12 +26,9 @@ class BitcoinCashWalletService extends WalletService<BitcoinCashNewWalletCredent
File(await pathForWallet(name: name, type: getType())).existsSync(); File(await pathForWallet(name: name, type: getType())).existsSync();
@override @override
Future<BitcoinCashWallet> create(credentials) async { Future<BitcoinCashWallet> create(credentials, {bool? isTestnet}) async {
final strength = (credentials.seedPhraseLength == 12) final strength = credentials.seedPhraseLength == 24 ? 256 : 128;
? 128
: (credentials.seedPhraseLength == 24)
? 256
: 128;
final wallet = await BitcoinCashWalletBase.create( final wallet = await BitcoinCashWalletBase.create(
mnemonic: await Mnemonic.generate(strength: strength), mnemonic: await Mnemonic.generate(strength: strength),
password: credentials.password!, password: credentials.password!,
@ -100,14 +94,14 @@ class BitcoinCashWalletService extends WalletService<BitcoinCashNewWalletCredent
} }
@override @override
Future<BitcoinCashWallet> restoreFromKeys(credentials) { Future<BitcoinCashWallet> restoreFromKeys(credentials, {bool? isTestnet}) {
// TODO: implement restoreFromKeys // TODO: implement restoreFromKeys
throw UnimplementedError('restoreFromKeys() is not implemented'); throw UnimplementedError('restoreFromKeys() is not implemented');
} }
@override @override
Future<BitcoinCashWallet> restoreFromSeed( Future<BitcoinCashWallet> restoreFromSeed(BitcoinCashRestoreWalletFromSeedCredentials credentials,
BitcoinCashRestoreWalletFromSeedCredentials credentials) async { {bool? isTestnet}) async {
if (!validateMnemonic(credentials.mnemonic)) { if (!validateMnemonic(credentials.mnemonic)) {
throw BitcoinCashMnemonicIsIncorrectException(); throw BitcoinCashMnemonicIsIncorrectException();
} }

View file

@ -9,11 +9,11 @@ abstract class WalletService<N extends WalletCredentials, RFS extends WalletCred
RFK extends WalletCredentials> { RFK extends WalletCredentials> {
WalletType getType(); WalletType getType();
Future<WalletBase> create(N credentials); Future<WalletBase> create(N credentials, {bool? isTestnet});
Future<WalletBase> restoreFromSeed(RFS credentials); Future<WalletBase> restoreFromSeed(RFS credentials, {bool? isTestnet});
Future<WalletBase> restoreFromKeys(RFK credentials); Future<WalletBase> restoreFromKeys(RFK credentials, {bool? isTestnet});
Future<WalletBase> openWallet(String name, String password); Future<WalletBase> openWallet(String name, String password);

View file

@ -16,7 +16,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
WalletType getType() => WalletType.ethereum; WalletType getType() => WalletType.ethereum;
@override @override
Future<EthereumWallet> create(EVMChainNewWalletCredentials credentials) async { Future<EthereumWallet> create(EVMChainNewWalletCredentials credentials, {bool? isTestnet}) async {
final strength = credentials.seedPhraseLength == 24 ? 256 : 128; final strength = credentials.seedPhraseLength == 24 ? 256 : 128;
final mnemonic = bip39.generateMnemonic(strength: strength); final mnemonic = bip39.generateMnemonic(strength: strength);
@ -83,7 +83,8 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
} }
@override @override
Future<EthereumWallet> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials) async { Future<EthereumWallet> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials,
{bool? isTestnet}) async {
final wallet = EthereumWallet( final wallet = EthereumWallet(
password: credentials.password!, password: credentials.password!,
privateKey: credentials.privateKey, privateKey: credentials.privateKey,
@ -99,8 +100,8 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
} }
@override @override
Future<EthereumWallet> restoreFromSeed( Future<EthereumWallet> restoreFromSeed(EVMChainRestoreWalletFromSeedCredentials credentials,
EVMChainRestoreWalletFromSeedCredentials credentials) async { {bool? isTestnet}) async {
if (!bip39.validateMnemonic(credentials.mnemonic)) { if (!bip39.validateMnemonic(credentials.mnemonic)) {
throw EthereumMnemonicIsIncorrectException(); throw EthereumMnemonicIsIncorrectException();
} }

View file

@ -22,7 +22,7 @@ abstract class EVMChainWalletService<T extends EVMChainWallet> extends WalletSer
WalletType getType(); WalletType getType();
@override @override
Future<T> create(EVMChainNewWalletCredentials credentials); Future<T> create(EVMChainNewWalletCredentials credentials, {bool? isTestnet});
@override @override
Future<T> openWallet(String name, String password); Future<T> openWallet(String name, String password);
@ -31,10 +31,10 @@ abstract class EVMChainWalletService<T extends EVMChainWallet> extends WalletSer
Future<void> rename(String currentName, String password, String newName); Future<void> rename(String currentName, String password, String newName);
@override @override
Future<T> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials); Future<T> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials, {bool? isTestnet});
@override @override
Future<T> restoreFromSeed(EVMChainRestoreWalletFromSeedCredentials credentials); Future<T> restoreFromSeed(EVMChainRestoreWalletFromSeedCredentials credentials, {bool? isTestnet});
@override @override
Future<bool> isWalletExit(String name) async => Future<bool> isWalletExit(String name) async =>

View file

@ -22,7 +22,10 @@ class HavenNewWalletCredentials extends WalletCredentials {
class HavenRestoreWalletFromSeedCredentials extends WalletCredentials { class HavenRestoreWalletFromSeedCredentials extends WalletCredentials {
HavenRestoreWalletFromSeedCredentials( HavenRestoreWalletFromSeedCredentials(
{required String name, required String password, required int height, required this.mnemonic}) {required String name,
required String password,
required int height,
required this.mnemonic})
: super(name: name, password: password, height: height); : super(name: name, password: password, height: height);
final String mnemonic; final String mnemonic;
@ -50,12 +53,14 @@ class HavenRestoreWalletFromKeysCredentials extends WalletCredentials {
final String spendKey; final String spendKey;
} }
class HavenWalletService extends WalletService<HavenNewWalletCredentials, class HavenWalletService extends WalletService<
HavenRestoreWalletFromSeedCredentials, HavenRestoreWalletFromKeysCredentials> { HavenNewWalletCredentials,
HavenRestoreWalletFromSeedCredentials,
HavenRestoreWalletFromKeysCredentials> {
HavenWalletService(this.walletInfoSource); HavenWalletService(this.walletInfoSource);
final Box<WalletInfo> walletInfoSource; final Box<WalletInfo> walletInfoSource;
static bool walletFilesExist(String path) => static bool walletFilesExist(String path) =>
!File(path).existsSync() && !File('$path.keys').existsSync(); !File(path).existsSync() && !File('$path.keys').existsSync();
@ -63,11 +68,13 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
WalletType getType() => WalletType.haven; WalletType getType() => WalletType.haven;
@override @override
Future<HavenWallet> create(HavenNewWalletCredentials credentials) async { Future<HavenWallet> create(HavenNewWalletCredentials credentials, {bool? isTestnet}) async {
try { try {
final path = await pathForWallet(name: credentials.name, type: getType()); final path = await pathForWallet(name: credentials.name, type: getType());
await haven_wallet_manager.createWallet( await haven_wallet_manager.createWallet(
path: path, password: credentials.password!, language: credentials.language); path: path,
password: credentials.password!,
language: credentials.language);
final wallet = HavenWallet(walletInfo: credentials.walletInfo!); final wallet = HavenWallet(walletInfo: credentials.walletInfo!);
await wallet.init(); await wallet.init();
return wallet; return wallet;
@ -99,9 +106,10 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
await repairOldAndroidWallet(name); await repairOldAndroidWallet(name);
} }
await haven_wallet_manager.openWalletAsync({'path': path, 'password': password}); await haven_wallet_manager
final walletInfo = walletInfoSource.values .openWalletAsync({'path': path, 'password': password});
.firstWhereOrNull((info) => info.id == WalletBase.idFor(name, getType()))!; final walletInfo = walletInfoSource.values.firstWhereOrNull(
(info) => info.id == WalletBase.idFor(name, getType()))!;
final wallet = HavenWallet(walletInfo: walletInfo); final wallet = HavenWallet(walletInfo: walletInfo);
final isValid = wallet.walletAddresses.validate(); final isValid = wallet.walletAddresses.validate();
@ -118,10 +126,12 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
// TODO: Implement Exception for wallet list service. // TODO: Implement Exception for wallet list service.
if ((e.toString().contains('bad_alloc') || if ((e.toString().contains('bad_alloc') ||
(e is WalletOpeningException && (e is WalletOpeningException &&
(e.message == 'std::bad_alloc' || e.message.contains('bad_alloc')))) || (e.message == 'std::bad_alloc' ||
e.message.contains('bad_alloc')))) ||
(e.toString().contains('does not correspond') || (e.toString().contains('does not correspond') ||
(e is WalletOpeningException && e.message.contains('does not correspond')))) { (e is WalletOpeningException &&
e.message.contains('does not correspond')))) {
await restoreOrResetWalletFiles(name); await restoreOrResetWalletFiles(name);
return openWallet(name, password); return openWallet(name, password);
} }
@ -146,9 +156,10 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
} }
@override @override
Future<void> rename(String currentName, String password, String newName) async { Future<void> rename(
final currentWalletInfo = walletInfoSource.values String currentName, String password, String newName) async {
.firstWhere((info) => info.id == WalletBase.idFor(currentName, getType())); final currentWalletInfo = walletInfoSource.values.firstWhere(
(info) => info.id == WalletBase.idFor(currentName, getType()));
final currentWallet = HavenWallet(walletInfo: currentWalletInfo); final currentWallet = HavenWallet(walletInfo: currentWalletInfo);
await currentWallet.renameWalletFiles(newName); await currentWallet.renameWalletFiles(newName);
@ -162,7 +173,8 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
} }
@override @override
Future<HavenWallet> restoreFromKeys(HavenRestoreWalletFromKeysCredentials credentials) async { Future<HavenWallet> restoreFromKeys(
HavenRestoreWalletFromKeysCredentials credentials, {bool? isTestnet}) async {
try { try {
final path = await pathForWallet(name: credentials.name, type: getType()); final path = await pathForWallet(name: credentials.name, type: getType());
await haven_wallet_manager.restoreFromKeys( await haven_wallet_manager.restoreFromKeys(
@ -185,7 +197,8 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
} }
@override @override
Future<HavenWallet> restoreFromSeed(HavenRestoreWalletFromSeedCredentials credentials) async { Future<HavenWallet> restoreFromSeed(
HavenRestoreWalletFromSeedCredentials credentials, {bool? isTestnet}) async {
try { try {
final path = await pathForWallet(name: credentials.name, type: getType()); final path = await pathForWallet(name: credentials.name, type: getType());
await haven_wallet_manager.restoreFromSeed( await haven_wallet_manager.restoreFromSeed(
@ -210,14 +223,16 @@ class HavenWalletService extends WalletService<HavenNewWalletCredentials,
return; return;
} }
final oldAndroidWalletDirPath = await outdatedAndroidPathForWalletDir(name: name); final oldAndroidWalletDirPath =
await outdatedAndroidPathForWalletDir(name: name);
final dir = Directory(oldAndroidWalletDirPath); final dir = Directory(oldAndroidWalletDirPath);
if (!dir.existsSync()) { if (!dir.existsSync()) {
return; return;
} }
final newWalletDirPath = await pathForWalletDir(name: name, type: getType()); final newWalletDirPath =
await pathForWalletDir(name: name, type: getType());
dir.listSync().forEach((f) { dir.listSync().forEach((f) {
final file = File(f.path); final file = File(f.path);

View file

@ -68,7 +68,7 @@ class MoneroWalletService extends WalletService<MoneroNewWalletCredentials,
WalletType getType() => WalletType.monero; WalletType getType() => WalletType.monero;
@override @override
Future<MoneroWallet> create(MoneroNewWalletCredentials credentials) async { Future<MoneroWallet> create(MoneroNewWalletCredentials credentials, {bool? isTestnet}) async {
try { try {
final path = await pathForWallet(name: credentials.name, type: getType()); final path = await pathForWallet(name: credentials.name, type: getType());
@ -203,7 +203,8 @@ class MoneroWalletService extends WalletService<MoneroNewWalletCredentials,
} }
@override @override
Future<MoneroWallet> restoreFromKeys(MoneroRestoreWalletFromKeysCredentials credentials) async { Future<MoneroWallet> restoreFromKeys(MoneroRestoreWalletFromKeysCredentials credentials,
{bool? isTestnet}) async {
try { try {
final path = await pathForWallet(name: credentials.name, type: getType()); final path = await pathForWallet(name: credentials.name, type: getType());
await monero_wallet_manager.restoreFromKeys( await monero_wallet_manager.restoreFromKeys(
@ -227,7 +228,8 @@ class MoneroWalletService extends WalletService<MoneroNewWalletCredentials,
} }
@override @override
Future<MoneroWallet> restoreFromSeed(MoneroRestoreWalletFromSeedCredentials credentials) async { Future<MoneroWallet> restoreFromSeed(MoneroRestoreWalletFromSeedCredentials credentials,
{bool? isTestnet}) async {
// Restore from Polyseed // Restore from Polyseed
if (Polyseed.isValidSeed(credentials.mnemonic)) { if (Polyseed.isValidSeed(credentials.mnemonic)) {
return restoreFromPolyseed(credentials); return restoreFromPolyseed(credentials);

View file

@ -26,7 +26,7 @@ class NanoWalletService extends WalletService<NanoNewWalletCredentials,
WalletType getType() => WalletType.nano; WalletType getType() => WalletType.nano;
@override @override
Future<WalletBase> create(NanoNewWalletCredentials credentials) async { Future<WalletBase> create(NanoNewWalletCredentials credentials, {bool? isTestnet}) async {
// nano standard: // nano standard:
DerivationType derivationType = DerivationType.nano; DerivationType derivationType = DerivationType.nano;
String seedKey = NanoSeeds.generateSeed(); String seedKey = NanoSeeds.generateSeed();
@ -79,7 +79,7 @@ class NanoWalletService extends WalletService<NanoNewWalletCredentials,
} }
@override @override
Future<NanoWallet> restoreFromKeys(NanoRestoreWalletFromKeysCredentials credentials) async { Future<NanoWallet> restoreFromKeys(NanoRestoreWalletFromKeysCredentials credentials, {bool? isTestnet}) async {
if (credentials.seedKey.contains(' ')) { if (credentials.seedKey.contains(' ')) {
throw Exception("Invalid key!"); throw Exception("Invalid key!");
} else { } else {
@ -113,7 +113,7 @@ class NanoWalletService extends WalletService<NanoNewWalletCredentials,
} }
@override @override
Future<NanoWallet> restoreFromSeed(NanoRestoreWalletFromSeedCredentials credentials) async { Future<NanoWallet> restoreFromSeed(NanoRestoreWalletFromSeedCredentials credentials, {bool? isTestnet}) async {
if (credentials.mnemonic.contains(' ')) { if (credentials.mnemonic.contains(' ')) {
if (!bip39.validateMnemonic(credentials.mnemonic)) { if (!bip39.validateMnemonic(credentials.mnemonic)) {
throw nm.NanoMnemonicIsIncorrectException(); throw nm.NanoMnemonicIsIncorrectException();

View file

@ -19,7 +19,7 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
WalletType getType() => WalletType.polygon; WalletType getType() => WalletType.polygon;
@override @override
Future<PolygonWallet> create(EVMChainNewWalletCredentials credentials) async { Future<PolygonWallet> create(EVMChainNewWalletCredentials credentials, {bool? isTestnet}) async {
final strength = credentials.seedPhraseLength == 24 ? 256 : 128; final strength = credentials.seedPhraseLength == 24 ? 256 : 128;
final mnemonic = bip39.generateMnemonic(strength: strength); final mnemonic = bip39.generateMnemonic(strength: strength);
@ -70,7 +70,8 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
} }
@override @override
Future<PolygonWallet> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials) async { Future<PolygonWallet> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials,
{bool? isTestnet}) async {
final wallet = PolygonWallet( final wallet = PolygonWallet(
password: credentials.password!, password: credentials.password!,
privateKey: credentials.privateKey, privateKey: credentials.privateKey,
@ -86,8 +87,8 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
} }
@override @override
Future<PolygonWallet> restoreFromSeed( Future<PolygonWallet> restoreFromSeed(EVMChainRestoreWalletFromSeedCredentials credentials,
EVMChainRestoreWalletFromSeedCredentials credentials) async { {bool? isTestnet}) async {
if (!bip39.validateMnemonic(credentials.mnemonic)) { if (!bip39.validateMnemonic(credentials.mnemonic)) {
throw PolygonMnemonicIsIncorrectException(); throw PolygonMnemonicIsIncorrectException();
} }

View file

@ -188,24 +188,4 @@ class CWBitcoin extends Bitcoin {
@override @override
List<BitcoinReceivePageOption> getBitcoinReceivePageOptions() => BitcoinReceivePageOption.all; List<BitcoinReceivePageOption> getBitcoinReceivePageOptions() => BitcoinReceivePageOption.all;
@override
Future<BitcoinWallet> create(WalletService service, WalletCredentials credentials,
{bool? isTestnet}) =>
(service as BitcoinWalletService)
.create(credentials as BitcoinNewWalletCredentials, isTestnet: isTestnet);
@override
Future<BitcoinWallet> restoreFromKeys(WalletService service, WalletCredentials credentials,
{bool? isTestnet}) =>
(service as BitcoinWalletService).restoreFromKeys(
credentials as BitcoinRestoreWalletFromWIFCredentials,
isTestnet: isTestnet);
@override
Future<BitcoinWallet> restoreFromSeed(WalletService service, WalletCredentials credentials,
{bool? isTestnet}) =>
(service as BitcoinWalletService).restoreFromSeed(
credentials as BitcoinRestoreWalletFromSeedCredentials,
isTestnet: isTestnet);
} }

View file

@ -1,4 +1,3 @@
import 'package:cake_wallet/bitcoin/bitcoin.dart';
import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_info.dart';
@ -63,12 +62,7 @@ class WalletCreationService {
credentials.seedPhraseLength = settingsStore.seedPhraseLength.value; credentials.seedPhraseLength = settingsStore.seedPhraseLength.value;
} }
await keyService.saveWalletPassword(password: password, walletName: credentials.name); await keyService.saveWalletPassword(password: password, walletName: credentials.name);
WalletBase? wallet; final wallet = await _service!.create(credentials, isTestnet: isTestnet);
if (type == WalletType.bitcoin) {
wallet = await bitcoin!.create(_service!, credentials, isTestnet: isTestnet);
} else {
wallet = await _service!.create(credentials);
}
if (wallet.type == WalletType.monero) { if (wallet.type == WalletType.monero) {
await sharedPreferences.setBool( await sharedPreferences.setBool(
@ -83,12 +77,7 @@ class WalletCreationService {
final password = generateWalletPassword(); final password = generateWalletPassword();
credentials.password = password; credentials.password = password;
await keyService.saveWalletPassword(password: password, walletName: credentials.name); await keyService.saveWalletPassword(password: password, walletName: credentials.name);
WalletBase? wallet; final wallet = await _service!.restoreFromKeys(credentials, isTestnet: isTestnet);
if (type == WalletType.bitcoin) {
wallet = await bitcoin!.restoreFromKeys(_service!, credentials, isTestnet: isTestnet);
} else {
wallet = await _service!.restoreFromKeys(credentials);
}
if (wallet.type == WalletType.monero) { if (wallet.type == WalletType.monero) {
await sharedPreferences.setBool( await sharedPreferences.setBool(
@ -103,12 +92,7 @@ class WalletCreationService {
final password = generateWalletPassword(); final password = generateWalletPassword();
credentials.password = password; credentials.password = password;
await keyService.saveWalletPassword(password: password, walletName: credentials.name); await keyService.saveWalletPassword(password: password, walletName: credentials.name);
WalletBase? wallet; final wallet = await _service!.restoreFromSeed(credentials, isTestnet: isTestnet);
if (type == WalletType.bitcoin) {
wallet = await bitcoin!.restoreFromSeed(_service!, credentials, isTestnet: isTestnet);
} else {
wallet = await _service!.restoreFromSeed(credentials);
}
if (wallet.type == WalletType.monero) { if (wallet.type == WalletType.monero) {
await sharedPreferences.setBool( await sharedPreferences.setBool(

View file

@ -72,14 +72,12 @@ import 'package:cw_bitcoin/electrum_wallet.dart';
import 'package:cw_bitcoin/bitcoin_unspent.dart'; import 'package:cw_bitcoin/bitcoin_unspent.dart';
import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; import 'package:cw_bitcoin/bitcoin_mnemonic.dart';
import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; import 'package:cw_bitcoin/bitcoin_transaction_priority.dart';
import 'package:cw_bitcoin/bitcoin_wallet.dart';
import 'package:cw_bitcoin/bitcoin_wallet_service.dart'; import 'package:cw_bitcoin/bitcoin_wallet_service.dart';
import 'package:cw_bitcoin/bitcoin_wallet_creation_credentials.dart'; import 'package:cw_bitcoin/bitcoin_wallet_creation_credentials.dart';
import 'package:cw_bitcoin/bitcoin_amount_format.dart'; import 'package:cw_bitcoin/bitcoin_amount_format.dart';
import 'package:cw_bitcoin/bitcoin_address_record.dart'; import 'package:cw_bitcoin/bitcoin_address_record.dart';
import 'package:cw_bitcoin/bitcoin_transaction_credentials.dart'; import 'package:cw_bitcoin/bitcoin_transaction_credentials.dart';
import 'package:cw_bitcoin/litecoin_wallet_service.dart'; import 'package:cw_bitcoin/litecoin_wallet_service.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:bitcoin_base/bitcoin_base.dart'; import 'package:bitcoin_base/bitcoin_base.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
"""; """;
@ -142,9 +140,6 @@ abstract class Bitcoin {
Future<void> setAddressType(Object wallet, dynamic option); Future<void> setAddressType(Object wallet, dynamic option);
BitcoinReceivePageOption getSelectedAddressType(Object wallet); BitcoinReceivePageOption getSelectedAddressType(Object wallet);
List<BitcoinReceivePageOption> getBitcoinReceivePageOptions(); List<BitcoinReceivePageOption> getBitcoinReceivePageOptions();
Future<BitcoinWallet> create(WalletService service, WalletCredentials credentials, {bool? isTestnet});
Future<BitcoinWallet> restoreFromKeys(WalletService service, WalletCredentials credentials, {bool? isTestnet});
Future<BitcoinWallet> restoreFromSeed(WalletService service, WalletCredentials credentials, {bool? isTestnet});
} }
"""; """;