cake_wallet/lib/ethereum/cw_ethereum.dart
OmarHatem 7751a46c4d Merge branch 'main' of https://github.com/cake-tech/cake_wallet into linux/password-direct-input
 Conflicts:
	.gitignore
	cw_bitcoin/pubspec.lock
	cw_core/lib/hive_type_ids.dart
	cw_core/lib/wallet_info.dart
	cw_core/pubspec.lock
	cw_ethereum/lib/ethereum_wallet_service.dart
	cw_monero/example/pubspec.lock
	cw_monero/lib/monero_wallet.dart
	cw_monero/lib/monero_wallet_service.dart
	cw_monero/pubspec.lock
	lib/di.dart
	lib/entities/default_settings_migration.dart
	lib/main.dart
	lib/src/screens/contact/contact_list_page.dart
	lib/src/screens/dashboard/desktop_widgets/desktop_action_button.dart
	lib/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart
	lib/src/screens/dashboard/widgets/address_page.dart
	lib/src/screens/dashboard/widgets/balance_page.dart
	lib/src/screens/exchange/exchange_page.dart
	lib/src/screens/receive/anonpay_invoice_page.dart
	lib/src/screens/restore/restore_wallet_from_seed_details.dart
	lib/src/screens/restore/wallet_restore_from_keys_form.dart
	lib/src/screens/restore/wallet_restore_page.dart
	lib/src/screens/restore/widgets/restore_button.dart
	lib/src/screens/settings/display_settings_page.dart
	lib/src/screens/settings/manage_nodes_page.dart
	lib/src/screens/settings/widgets/settings_cell_with_arrow.dart
	lib/src/screens/wallet_list/wallet_list_page.dart
	lib/src/widgets/search_bar_widget.dart
	lib/src/widgets/seed_widget.dart
	lib/store/settings_store.dart
	lib/themes/extensions/picker_theme.dart
	lib/themes/high_contrast_theme.dart
	lib/themes/theme_base.dart
	pubspec_base.yaml
	res/values/strings_ar.arb
	res/values/strings_bg.arb
	res/values/strings_cs.arb
	res/values/strings_de.arb
	res/values/strings_en.arb
	res/values/strings_es.arb
	res/values/strings_fr.arb
	res/values/strings_ha.arb
	res/values/strings_hi.arb
	res/values/strings_hr.arb
	res/values/strings_id.arb
	res/values/strings_it.arb
	res/values/strings_ja.arb
	res/values/strings_ko.arb
	res/values/strings_my.arb
	res/values/strings_nl.arb
	res/values/strings_pl.arb
	res/values/strings_pt.arb
	res/values/strings_ru.arb
	res/values/strings_th.arb
	res/values/strings_tr.arb
	res/values/strings_uk.arb
	res/values/strings_ur.arb
	res/values/strings_yo.arb
	res/values/strings_zh.arb
	tool/append_translation.dart
	tool/configure.dart
2023-09-07 06:24:40 +03:00

135 lines
4.4 KiB
Dart

part of 'ethereum.dart';
class CWEthereum extends Ethereum {
@override
List<String> getEthereumWordList(String language) => EthereumMnemonics.englishWordlist;
WalletService createEthereumWalletService(Box<WalletInfo> walletInfoSource, bool isDirect) =>
EthereumWalletService(walletInfoSource, isDirect);
@override
WalletCredentials createEthereumNewWalletCredentials({
required String name,
WalletInfo? walletInfo,
String? password,
}) =>
EthereumNewWalletCredentials(name: name, walletInfo: walletInfo, password: password);
@override
WalletCredentials createEthereumRestoreWalletFromSeedCredentials({
required String name,
required String mnemonic,
required String password,
}) =>
EthereumRestoreWalletFromSeedCredentials(name: name, password: password, mnemonic: mnemonic);
@override
WalletCredentials createEthereumRestoreWalletFromPrivateKey({
required String name,
required String privateKey,
required String password,
}) =>
EthereumRestoreWalletFromPrivateKey(name: name, password: password, privateKey: privateKey);
@override
String getAddress(WalletBase wallet) => (wallet as EthereumWallet).walletAddresses.address;
@override
TransactionPriority getDefaultTransactionPriority() => EthereumTransactionPriority.medium;
@override
List<TransactionPriority> getTransactionPriorities() => EthereumTransactionPriority.all;
@override
TransactionPriority deserializeEthereumTransactionPriority(int raw) =>
EthereumTransactionPriority.deserialize(raw: raw);
Object createEthereumTransactionCredentials(
List<Output> outputs, {
required TransactionPriority priority,
required CryptoCurrency currency,
int? feeRate,
}) =>
EthereumTransactionCredentials(
outputs
.map((out) => OutputInfo(
fiatAmount: out.fiatAmount,
cryptoAmount: out.cryptoAmount,
address: out.address,
note: out.note,
sendAll: out.sendAll,
extractedAddress: out.extractedAddress,
isParsedAddress: out.isParsedAddress,
formattedCryptoAmount: out.formattedCryptoAmount))
.toList(),
priority: priority as EthereumTransactionPriority,
currency: currency,
feeRate: feeRate,
);
Object createEthereumTransactionCredentialsRaw(
List<OutputInfo> outputs, {
TransactionPriority? priority,
required CryptoCurrency currency,
required int feeRate,
}) =>
EthereumTransactionCredentials(
outputs,
priority: priority as EthereumTransactionPriority?,
currency: currency,
feeRate: feeRate,
);
@override
int formatterEthereumParseAmount(String amount) => EthereumFormatter.parseEthereumAmount(amount);
@override
double formatterEthereumAmountToDouble(
{TransactionInfo? transaction, BigInt? amount, int exponent = 18}) {
assert(transaction != null || amount != null);
if (transaction != null) {
transaction as EthereumTransactionInfo;
return transaction.ethAmount / BigInt.from(10).pow(transaction.exponent);
} else {
return (amount!) / BigInt.from(10).pow(exponent);
}
}
@override
List<Erc20Token> getERC20Currencies(WalletBase wallet) {
final ethereumWallet = wallet as EthereumWallet;
return ethereumWallet.erc20Currencies;
}
@override
Future<void> addErc20Token(WalletBase wallet, Erc20Token token) async =>
await (wallet as EthereumWallet).addErc20Token(token);
@override
Future<void> deleteErc20Token(WalletBase wallet, Erc20Token token) async =>
await (wallet as EthereumWallet).deleteErc20Token(token);
@override
Future<Erc20Token?> getErc20Token(WalletBase wallet, String contractAddress) async {
final ethereumWallet = wallet as EthereumWallet;
return await ethereumWallet.getErc20Token(contractAddress);
}
@override
CryptoCurrency assetOfTransaction(WalletBase wallet, TransactionInfo transaction) {
transaction as EthereumTransactionInfo;
if (transaction.tokenSymbol == CryptoCurrency.eth.title) {
return CryptoCurrency.eth;
}
wallet as EthereumWallet;
return wallet.erc20Currencies
.firstWhere((element) => transaction.tokenSymbol == element.symbol);
}
@override
void updateEtherscanUsageState(WalletBase wallet, bool isEnabled) {
(wallet as EthereumWallet).updateEtherscanUsageState(isEnabled);
}
}