Fix EVM wallets with Password flow

Fix Conflicts with main
This commit is contained in:
OmarHatem 2024-02-03 04:00:35 +02:00
parent 704bf84246
commit e276181f88
15 changed files with 140 additions and 28 deletions

View file

@ -7,6 +7,7 @@ class EthereumTransactionHistory extends EVMChainTransactionHistory {
EthereumTransactionHistory({ EthereumTransactionHistory({
required super.walletInfo, required super.walletInfo,
required super.password, required super.password,
required super.encryptionFileUtils,
}); });
@override @override

View file

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:cw_core/cake_hive.dart'; import 'package:cw_core/cake_hive.dart';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/encryption_file_utils.dart';
import 'package:cw_core/erc20_token.dart'; import 'package:cw_core/erc20_token.dart';
import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/pathForWallet.dart';
import 'package:cw_core/transaction_direction.dart'; import 'package:cw_core/transaction_direction.dart';
@ -15,7 +16,6 @@ import 'package:cw_evm/evm_chain_transaction_info.dart';
import 'package:cw_evm/evm_chain_transaction_model.dart'; import 'package:cw_evm/evm_chain_transaction_model.dart';
import 'package:cw_evm/evm_chain_wallet.dart'; import 'package:cw_evm/evm_chain_wallet.dart';
import 'package:cw_evm/evm_erc20_balance.dart'; import 'package:cw_evm/evm_erc20_balance.dart';
import 'package:cw_evm/file.dart';
class EthereumWallet extends EVMChainWallet { class EthereumWallet extends EVMChainWallet {
EthereumWallet({ EthereumWallet({
@ -25,6 +25,7 @@ class EthereumWallet extends EVMChainWallet {
super.mnemonic, super.mnemonic,
super.initialBalance, super.initialBalance,
super.privateKey, super.privateKey,
required super.encryptionFileUtils,
}) : super(nativeCurrency: CryptoCurrency.eth); }) : super(nativeCurrency: CryptoCurrency.eth);
@override @override
@ -115,14 +116,19 @@ class EthereumWallet extends EVMChainWallet {
} }
@override @override
EVMChainTransactionHistory setUpTransactionHistory(WalletInfo walletInfo, String password) { EVMChainTransactionHistory setUpTransactionHistory(
return EthereumTransactionHistory(walletInfo: walletInfo, password: password); WalletInfo walletInfo, String password, EncryptionFileUtils encryptionFileUtils) {
return EthereumTransactionHistory(
walletInfo: walletInfo, password: password, encryptionFileUtils: encryptionFileUtils);
} }
static Future<EthereumWallet> open( static Future<EthereumWallet> open(
{required String name, required String password, required WalletInfo walletInfo}) async { {required String name,
required String password,
required WalletInfo walletInfo,
required EncryptionFileUtils encryptionFileUtils}) async {
final path = await pathForWallet(name: name, type: walletInfo.type); final path = await pathForWallet(name: name, type: walletInfo.type);
final jsonSource = await read(path: path, password: password); final jsonSource = await encryptionFileUtils.read(path: path, password: password);
final data = json.decode(jsonSource) as Map; final data = json.decode(jsonSource) as Map;
final mnemonic = data['mnemonic'] as String?; final mnemonic = data['mnemonic'] as String?;
final privateKey = data['private_key'] as String?; final privateKey = data['private_key'] as String?;
@ -136,6 +142,7 @@ class EthereumWallet extends EVMChainWallet {
privateKey: privateKey, privateKey: privateKey,
initialBalance: balance, initialBalance: balance,
client: EthereumClient(), client: EthereumClient(),
encryptionFileUtils: encryptionFileUtils,
); );
} }
} }

View file

@ -1,3 +1,4 @@
import 'package:cw_core/encryption_file_utils.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_type.dart'; import 'package:cw_core/wallet_type.dart';
import 'package:cw_ethereum/ethereum_client.dart'; import 'package:cw_ethereum/ethereum_client.dart';
@ -8,7 +9,7 @@ import 'package:cw_evm/evm_chain_wallet_service.dart';
import 'package:bip39/bip39.dart' as bip39; import 'package:bip39/bip39.dart' as bip39;
class EthereumWalletService extends EVMChainWalletService<EthereumWallet> { class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
EthereumWalletService(super.walletInfoSource, {required this.client}); EthereumWalletService(super.walletInfoSource, super.isDirect, {required this.client});
late EthereumClient client; late EthereumClient client;
@ -26,6 +27,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
mnemonic: mnemonic, mnemonic: mnemonic,
password: credentials.password!, password: credentials.password!,
client: client, client: client,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -43,6 +45,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
name: name, name: name,
password: password, password: password,
walletInfo: walletInfo, walletInfo: walletInfo,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -56,7 +59,11 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
final currentWalletInfo = walletInfoSource.values final currentWalletInfo = walletInfoSource.values
.firstWhere((info) => info.id == WalletBase.idFor(currentName, getType())); .firstWhere((info) => info.id == WalletBase.idFor(currentName, getType()));
final currentWallet = await EthereumWallet.open( final currentWallet = await EthereumWallet.open(
password: password, name: currentName, walletInfo: currentWalletInfo); password: password,
name: currentName,
walletInfo: currentWalletInfo,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
await currentWallet.renameWalletFiles(newName); await currentWallet.renameWalletFiles(newName);
@ -74,6 +81,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
privateKey: credentials.privateKey, privateKey: credentials.privateKey,
walletInfo: credentials.walletInfo!, walletInfo: credentials.walletInfo!,
client: client, client: client,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -95,6 +103,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
mnemonic: credentials.mnemonic, mnemonic: credentials.mnemonic,
walletInfo: credentials.walletInfo!, walletInfo: credentials.walletInfo!,
client: client, client: client,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();

View file

@ -1,10 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:core'; import 'dart:core';
import 'dart:developer'; import 'dart:developer';
import 'package:cw_core/encryption_file_utils.dart';
import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/pathForWallet.dart';
import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_info.dart';
import 'package:cw_evm/evm_chain_transaction_info.dart'; import 'package:cw_evm/evm_chain_transaction_info.dart';
import 'package:cw_evm/file.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:cw_core/transaction_history.dart'; import 'package:cw_core/transaction_history.dart';
@ -15,7 +15,8 @@ abstract class EVMChainTransactionHistory = EVMChainTransactionHistoryBase
abstract class EVMChainTransactionHistoryBase abstract class EVMChainTransactionHistoryBase
extends TransactionHistoryBase<EVMChainTransactionInfo> with Store { extends TransactionHistoryBase<EVMChainTransactionInfo> with Store {
EVMChainTransactionHistoryBase({required this.walletInfo, required String password}) EVMChainTransactionHistoryBase(
{required this.walletInfo, required String password, required this.encryptionFileUtils})
: _password = password { : _password = password {
transactions = ObservableMap<String, EVMChainTransactionInfo>(); transactions = ObservableMap<String, EVMChainTransactionInfo>();
} }
@ -23,6 +24,7 @@ abstract class EVMChainTransactionHistoryBase
String _password; String _password;
final WalletInfo walletInfo; final WalletInfo walletInfo;
final EncryptionFileUtils encryptionFileUtils;
//! Method to be overridden by all child classes //! Method to be overridden by all child classes
@ -41,7 +43,7 @@ abstract class EVMChainTransactionHistoryBase
final dirPath = await pathForWalletDir(name: walletInfo.name, type: walletInfo.type); final dirPath = await pathForWalletDir(name: walletInfo.name, type: walletInfo.type);
String path = '$dirPath/$transactionsHistoryFileNameForWallet'; String path = '$dirPath/$transactionsHistoryFileNameForWallet';
final data = json.encode({'transactions': transactions}); final data = json.encode({'transactions': transactions});
await writeData(path: path, password: _password, data: data); await encryptionFileUtils.write(path: path, password: _password, data: data);
} catch (e, s) { } catch (e, s) {
log('Error while saving ${walletInfo.type.name} transaction history: ${e.toString()}'); log('Error while saving ${walletInfo.type.name} transaction history: ${e.toString()}');
log(s.toString()); log(s.toString());
@ -59,7 +61,7 @@ abstract class EVMChainTransactionHistoryBase
final transactionsHistoryFileNameForWallet = getTransactionHistoryFileName(); final transactionsHistoryFileNameForWallet = getTransactionHistoryFileName();
final dirPath = await pathForWalletDir(name: walletInfo.name, type: walletInfo.type); final dirPath = await pathForWalletDir(name: walletInfo.name, type: walletInfo.type);
String path = '$dirPath/$transactionsHistoryFileNameForWallet'; String path = '$dirPath/$transactionsHistoryFileNameForWallet';
final content = await read(path: path, password: _password); final content = await encryptionFileUtils.read(path: path, password: _password);
if (content.isEmpty) { if (content.isEmpty) {
return {}; return {};
} }

View file

@ -7,6 +7,7 @@ import 'package:bip32/bip32.dart' as bip32;
import 'package:bip39/bip39.dart' as bip39; import 'package:bip39/bip39.dart' as bip39;
import 'package:cw_core/cake_hive.dart'; import 'package:cw_core/cake_hive.dart';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/encryption_file_utils.dart';
import 'package:cw_core/erc20_token.dart'; import 'package:cw_core/erc20_token.dart';
import 'package:cw_core/node.dart'; import 'package:cw_core/node.dart';
import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/pathForWallet.dart';
@ -25,7 +26,6 @@ import 'package:cw_evm/evm_chain_transaction_history.dart';
import 'package:cw_evm/evm_chain_transaction_model.dart'; import 'package:cw_evm/evm_chain_transaction_model.dart';
import 'package:cw_evm/evm_chain_transaction_priority.dart'; import 'package:cw_evm/evm_chain_transaction_priority.dart';
import 'package:cw_evm/evm_chain_wallet_addresses.dart'; import 'package:cw_evm/evm_chain_wallet_addresses.dart';
import 'package:cw_evm/file.dart';
import 'package:hex/hex.dart'; import 'package:hex/hex.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
@ -51,6 +51,7 @@ abstract class EVMChainWalletBase
String? privateKey, String? privateKey,
required String password, required String password,
EVMChainERC20Balance? initialBalance, EVMChainERC20Balance? initialBalance,
required this.encryptionFileUtils,
}) : syncStatus = const NotConnectedSyncStatus(), }) : syncStatus = const NotConnectedSyncStatus(),
_password = password, _password = password,
_mnemonic = mnemonic, _mnemonic = mnemonic,
@ -66,7 +67,7 @@ abstract class EVMChainWalletBase
), ),
super(walletInfo) { super(walletInfo) {
this.walletInfo = walletInfo; this.walletInfo = walletInfo;
transactionHistory = setUpTransactionHistory(walletInfo, password); transactionHistory = setUpTransactionHistory(walletInfo, password, encryptionFileUtils);
if (!CakeHive.isAdapterRegistered(Erc20Token.typeId)) { if (!CakeHive.isAdapterRegistered(Erc20Token.typeId)) {
CakeHive.registerAdapter(Erc20TokenAdapter()); CakeHive.registerAdapter(Erc20TokenAdapter());
@ -78,6 +79,7 @@ abstract class EVMChainWalletBase
final String? _mnemonic; final String? _mnemonic;
final String? _hexPrivateKey; final String? _hexPrivateKey;
final String _password; final String _password;
final EncryptionFileUtils encryptionFileUtils;
late final Box<Erc20Token> erc20TokensBox; late final Box<Erc20Token> erc20TokensBox;
@ -130,7 +132,11 @@ abstract class EVMChainWalletBase
Erc20Token createNewErc20TokenObject(Erc20Token token, String? iconPath); Erc20Token createNewErc20TokenObject(Erc20Token token, String? iconPath);
EVMChainTransactionHistory setUpTransactionHistory(WalletInfo walletInfo, String password); EVMChainTransactionHistory setUpTransactionHistory(
WalletInfo walletInfo,
String password,
EncryptionFileUtils encryptionFileUtils,
);
//! Common Methods across child classes //! Common Methods across child classes
@ -350,7 +356,7 @@ abstract class EVMChainWalletBase
Future<void> save() async { Future<void> save() async {
await walletAddresses.updateAddressesInBox(); await walletAddresses.updateAddressesInBox();
final path = await makePath(); final path = await makePath();
await write(path: path, password: _password, data: toJSON()); await encryptionFileUtils.write(path: path, password: _password, data: toJSON());
await transactionHistory.save(); await transactionHistory.save();
} }
@ -509,4 +515,7 @@ abstract class EVMChainWalletBase
bytesToHex(_evmChainPrivateKey.signPersonalMessageToUint8List(ascii.encode(message))); bytesToHex(_evmChainPrivateKey.signPersonalMessageToUint8List(ascii.encode(message)));
Web3Client? getWeb3Client() => _client.getWeb3Client(); Web3Client? getWeb3Client() => _client.getWeb3Client();
@override
String get password => _password;
} }

View file

@ -2,7 +2,7 @@ import 'package:cw_core/wallet_credentials.dart';
import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_info.dart';
class EVMChainNewWalletCredentials extends WalletCredentials { class EVMChainNewWalletCredentials extends WalletCredentials {
EVMChainNewWalletCredentials({required String name, WalletInfo? walletInfo}) EVMChainNewWalletCredentials({required String name, WalletInfo? walletInfo, String? password})
: super(name: name, walletInfo: walletInfo); : super(name: name, walletInfo: walletInfo);
} }

View file

@ -14,9 +14,10 @@ abstract class EVMChainWalletService<T extends EVMChainWallet> extends WalletSer
EVMChainNewWalletCredentials, EVMChainNewWalletCredentials,
EVMChainRestoreWalletFromSeedCredentials, EVMChainRestoreWalletFromSeedCredentials,
EVMChainRestoreWalletFromPrivateKey> { EVMChainRestoreWalletFromPrivateKey> {
EVMChainWalletService(this.walletInfoSource); EVMChainWalletService(this.walletInfoSource, this.isDirect);
final Box<WalletInfo> walletInfoSource; final Box<WalletInfo> walletInfoSource;
final bool isDirect;
@override @override
WalletType getType(); WalletType getType();

View file

@ -21,6 +21,7 @@ dependencies:
hive: ^2.2.3 hive: ^2.2.3
collection: ^1.17.1 collection: ^1.17.1
shared_preferences: ^2.0.15 shared_preferences: ^2.0.15
mobx: ^2.0.7+4
cw_core: cw_core:
path: ../cw_core path: ../cw_core

View file

@ -113,6 +113,15 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.4.3" version: "8.4.3"
cake_backup:
dependency: transitive
description:
path: "."
ref: main
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
url: "https://github.com/cake-tech/cake_backup.git"
source: git
version: "1.0.0+1"
characters: characters:
dependency: transitive dependency: transitive
description: description:
@ -169,6 +178,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.2" version: "3.0.2"
cryptography:
dependency: transitive
description:
name: cryptography
sha256: df156c5109286340817d21fa7b62f9140f17915077127dd70f8bd7a2a0997a35
url: "https://pub.dev"
source: hosted
version: "2.5.0"
cupertino_icons:
dependency: transitive
description:
name: cupertino_icons
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
url: "https://pub.dev"
source: hosted
version: "1.0.6"
cw_core: cw_core:
dependency: "direct main" dependency: "direct main"
description: description:
@ -623,6 +648,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
tuple:
dependency: transitive
description:
name: tuple
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
url: "https://pub.dev"
source: hosted
version: "2.0.2"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:

View file

@ -137,6 +137,15 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.6.1" version: "8.6.1"
cake_backup:
dependency: transitive
description:
path: "."
ref: main
resolved-ref: "3aba867dcab6737f6707782f5db15d71f303db38"
url: "https://github.com/cake-tech/cake_backup.git"
source: git
version: "1.0.0+1"
characters: characters:
dependency: transitive dependency: transitive
description: description:
@ -193,6 +202,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.3"
cryptography:
dependency: transitive
description:
name: cryptography
sha256: df156c5109286340817d21fa7b62f9140f17915077127dd70f8bd7a2a0997a35
url: "https://pub.dev"
source: hosted
version: "2.5.0"
cupertino_icons:
dependency: transitive
description:
name: cupertino_icons
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
url: "https://pub.dev"
source: hosted
version: "1.0.6"
cw_core: cw_core:
dependency: "direct main" dependency: "direct main"
description: description:
@ -773,6 +798,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
tuple:
dependency: transitive
description:
name: tuple
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
url: "https://pub.dev"
source: hosted
version: "2.0.2"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:

View file

@ -8,6 +8,7 @@ class PolygonTransactionHistory extends EVMChainTransactionHistory {
PolygonTransactionHistory({ PolygonTransactionHistory({
required super.walletInfo, required super.walletInfo,
required super.password, required super.password,
required super.encryptionFileUtils,
}); });
@override @override

View file

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/cake_hive.dart'; import 'package:cw_core/cake_hive.dart';
import 'package:cw_core/encryption_file_utils.dart';
import 'package:cw_core/erc20_token.dart'; import 'package:cw_core/erc20_token.dart';
import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/pathForWallet.dart';
import 'package:cw_core/transaction_direction.dart'; import 'package:cw_core/transaction_direction.dart';
@ -11,7 +12,6 @@ import 'package:cw_evm/evm_chain_transaction_info.dart';
import 'package:cw_evm/evm_chain_transaction_model.dart'; import 'package:cw_evm/evm_chain_transaction_model.dart';
import 'package:cw_evm/evm_chain_wallet.dart'; import 'package:cw_evm/evm_chain_wallet.dart';
import 'package:cw_evm/evm_erc20_balance.dart'; import 'package:cw_evm/evm_erc20_balance.dart';
import 'package:cw_evm/file.dart';
import 'package:cw_polygon/default_polygon_erc20_tokens.dart'; import 'package:cw_polygon/default_polygon_erc20_tokens.dart';
import 'package:cw_polygon/polygon_transaction_info.dart'; import 'package:cw_polygon/polygon_transaction_info.dart';
import 'package:cw_polygon/polygon_client.dart'; import 'package:cw_polygon/polygon_client.dart';
@ -25,6 +25,7 @@ class PolygonWallet extends EVMChainWallet {
super.initialBalance, super.initialBalance,
super.privateKey, super.privateKey,
required super.client, required super.client,
required super.encryptionFileUtils,
}) : super(nativeCurrency: CryptoCurrency.maticpoly); }) : super(nativeCurrency: CryptoCurrency.maticpoly);
@override @override
@ -91,14 +92,19 @@ class PolygonWallet extends EVMChainWallet {
} }
@override @override
EVMChainTransactionHistory setUpTransactionHistory(WalletInfo walletInfo, String password) { EVMChainTransactionHistory setUpTransactionHistory(
return PolygonTransactionHistory(walletInfo: walletInfo, password: password); WalletInfo walletInfo, String password, EncryptionFileUtils encryptionFileUtils) {
return PolygonTransactionHistory(
walletInfo: walletInfo, password: password, encryptionFileUtils: encryptionFileUtils);
} }
static Future<PolygonWallet> open( static Future<PolygonWallet> open(
{required String name, required String password, required WalletInfo walletInfo}) async { {required String name,
required String password,
required WalletInfo walletInfo,
required EncryptionFileUtils encryptionFileUtils}) async {
final path = await pathForWallet(name: name, type: walletInfo.type); final path = await pathForWallet(name: name, type: walletInfo.type);
final jsonSource = await read(path: path, password: password); final jsonSource = await encryptionFileUtils.read(path: path, password: password);
final data = json.decode(jsonSource) as Map; final data = json.decode(jsonSource) as Map;
final mnemonic = data['mnemonic'] as String?; final mnemonic = data['mnemonic'] as String?;
final privateKey = data['private_key'] as String?; final privateKey = data['private_key'] as String?;
@ -112,6 +118,7 @@ class PolygonWallet extends EVMChainWallet {
privateKey: privateKey, privateKey: privateKey,
initialBalance: balance, initialBalance: balance,
client: PolygonClient(), client: PolygonClient(),
encryptionFileUtils: encryptionFileUtils,
); );
} }
} }

View file

@ -1,4 +1,5 @@
import 'package:bip39/bip39.dart' as bip39; import 'package:bip39/bip39.dart' as bip39;
import 'package:cw_core/encryption_file_utils.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_type.dart'; import 'package:cw_core/wallet_type.dart';
import 'package:cw_evm/evm_chain_wallet_creation_credentials.dart'; import 'package:cw_evm/evm_chain_wallet_creation_credentials.dart';
@ -9,7 +10,7 @@ import 'package:cw_polygon/polygon_wallet.dart';
class PolygonWalletService extends EVMChainWalletService<PolygonWallet> { class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
PolygonWalletService( PolygonWalletService(
super.walletInfoSource, { super.walletInfoSource, super.isDirect, {
required this.client, required this.client,
}); });
@ -29,6 +30,7 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
mnemonic: mnemonic, mnemonic: mnemonic,
password: credentials.password!, password: credentials.password!,
client: client, client: client,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -46,6 +48,7 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
name: name, name: name,
password: password, password: password,
walletInfo: walletInfo, walletInfo: walletInfo,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -56,12 +59,12 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
@override @override
Future<PolygonWallet> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials) async { Future<PolygonWallet> restoreFromKeys(EVMChainRestoreWalletFromPrivateKey credentials) async {
final wallet = PolygonWallet( final wallet = PolygonWallet(
password: credentials.password!, password: credentials.password!,
privateKey: credentials.privateKey, privateKey: credentials.privateKey,
walletInfo: credentials.walletInfo!, walletInfo: credentials.walletInfo!,
client: client, client: client,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -83,6 +86,7 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
mnemonic: credentials.mnemonic, mnemonic: credentials.mnemonic,
walletInfo: credentials.walletInfo!, walletInfo: credentials.walletInfo!,
client: client, client: client,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
@ -97,7 +101,11 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
final currentWalletInfo = walletInfoSource.values final currentWalletInfo = walletInfoSource.values
.firstWhere((info) => info.id == WalletBase.idFor(currentName, getType())); .firstWhere((info) => info.id == WalletBase.idFor(currentName, getType()));
final currentWallet = await PolygonWallet.open( final currentWallet = await PolygonWallet.open(
password: password, name: currentName, walletInfo: currentWalletInfo); password: password,
name: currentName,
walletInfo: currentWalletInfo,
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
await currentWallet.renameWalletFiles(newName); await currentWallet.renameWalletFiles(newName);

View file

@ -5,7 +5,7 @@ class CWPolygon extends Polygon {
List<String> getPolygonWordList(String language) => EVMChainMnemonics.englishWordlist; List<String> getPolygonWordList(String language) => EVMChainMnemonics.englishWordlist;
WalletService createPolygonWalletService(Box<WalletInfo> walletInfoSource, bool isDirect) => WalletService createPolygonWalletService(Box<WalletInfo> walletInfoSource, bool isDirect) =>
PolygonWalletService(walletInfoSource, client: PolygonClient()); PolygonWalletService(walletInfoSource, isDirect, client: PolygonClient());
@override @override
WalletCredentials createPolygonNewWalletCredentials({ WalletCredentials createPolygonNewWalletCredentials({

View file

@ -14,8 +14,8 @@ if [ -n "$1" ]; then
fi fi
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.4.1" CAKEWALLET_VERSION="1.4.2"
CAKEWALLET_BUILD_NUMBER=14 CAKEWALLET_BUILD_NUMBER=15
if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
echo "Wrong app type." echo "Wrong app type."