cake_wallet/lib/nano/cw_nano.dart

189 lines
5.2 KiB
Dart
Raw Normal View History

2023-07-24 18:09:28 +00:00
part of 'nano.dart';
2023-08-10 22:34:20 +00:00
class CWNanoAccountList extends NanoAccountList {
CWNanoAccountList(this._wallet);
final Object _wallet;
@override
@computed
ObservableList<NanoAccount> get accounts {
final nanoWallet = _wallet as NanoWallet;
final accounts = nanoWallet.walletAddresses.accountList.accounts
.map((acc) => NanoAccount(id: acc.id, label: acc.label, balance: acc.balance))
.toList();
return ObservableList<NanoAccount>.of(accounts);
}
@override
void update(Object wallet) {
final nanoWallet = wallet as NanoWallet;
2023-08-10 23:29:51 +00:00
nanoWallet.walletAddresses.accountList.update(null);
2023-08-10 22:34:20 +00:00
}
@override
void refresh(Object wallet) {
final nanoWallet = wallet as NanoWallet;
nanoWallet.walletAddresses.accountList.refresh();
}
@override
Future<List<NanoAccount>> getAll(Object wallet) async {
final nanoWallet = wallet as NanoWallet;
return (await nanoWallet.walletAddresses.accountList.getAll())
.map((acc) => NanoAccount(id: acc.id, label: acc.label, balance: acc.balance))
.toList();
}
@override
Future<void> addAccount(Object wallet, {required String label}) async {
final nanoWallet = wallet as NanoWallet;
await nanoWallet.walletAddresses.accountList.addAccount(label: label);
}
@override
Future<void> setLabelAccount(Object wallet,
{required int accountIndex, required String label}) async {
final nanoWallet = wallet as NanoWallet;
await nanoWallet.walletAddresses.accountList
.setLabelAccount(accountIndex: accountIndex, label: label);
}
}
2023-07-24 20:23:09 +00:00
class CWNano extends Nano {
2023-08-10 22:34:20 +00:00
@override
NanoAccountList getAccountList(Object wallet) {
return CWNanoAccountList(wallet);
}
@override
Account getCurrentAccount(Object wallet) {
final nanoWallet = wallet as NanoWallet;
final acc = nanoWallet.walletAddresses.account;
return Account(id: acc!.id, label: acc.label, balance: acc.balance);
}
@override
void setCurrentAccount(Object wallet, int id, String label, String? balance) {
final nanoWallet = wallet as NanoWallet;
nanoWallet.walletAddresses.account = NanoAccount(id: id, label: label, balance: balance);
nanoWallet.regenerateAddress();
}
2023-07-24 18:09:28 +00:00
@override
2023-07-24 20:23:09 +00:00
List<String> getNanoWordList(String language) {
2023-07-25 20:31:52 +00:00
return NanoMnemomics.WORDLIST;
2023-07-24 20:23:09 +00:00
}
2023-07-24 18:09:28 +00:00
@override
2023-07-24 20:23:09 +00:00
WalletService createNanoWalletService(Box<WalletInfo> walletInfoSource) {
2023-07-25 15:21:49 +00:00
return NanoWalletService(walletInfoSource);
2023-07-24 21:01:07 +00:00
}
String getTransactionAddress(Object wallet, int accountIndex, int addressIndex) {
throw UnimplementedError();
2023-07-24 18:09:28 +00:00
}
2023-07-31 15:39:22 +00:00
@override
Map<String, String> getKeys(Object wallet) {
final nanoWallet = wallet as NanoWallet;
final keys = nanoWallet.keys;
return <String, String>{
"seedKey": keys.seedKey,
};
}
2023-07-24 18:09:28 +00:00
@override
2023-07-24 20:23:09 +00:00
WalletCredentials createNanoNewWalletCredentials({
required String name,
String? password,
2023-07-25 20:31:52 +00:00
}) =>
NanoNewWalletCredentials(
name: name,
password: password,
);
@override
WalletCredentials createNanoRestoreWalletFromSeedCredentials({
required String name,
required String password,
2023-07-31 13:10:33 +00:00
required String mnemonic,
DerivationType? derivationType,
2023-08-14 22:02:12 +00:00
}) {
if (derivationType == null) {
// figure out the derivation type as best we can, otherwise set it to "unknown"
if (mnemonic.split(" ").length == 12) {
derivationType = DerivationType.bip39;
} else {
derivationType = DerivationType.unknown;
}
}
return NanoRestoreWalletFromSeedCredentials(
name: name,
password: password,
mnemonic: mnemonic,
derivationType: derivationType,
);
}
2023-07-24 18:09:28 +00:00
@override
WalletCredentials createNanoRestoreWalletFromKeysCredentials({
required String name,
required String password,
required String seedKey,
DerivationType? derivationType,
}) {
if (derivationType == null) {
// figure out the derivation type as best we can, otherwise set it to "unknown"
if (seedKey.length == 64) {
derivationType = DerivationType.nano;
} else {
derivationType = DerivationType.unknown;
}
}
return NanoRestoreWalletFromKeysCredentials(
name: name,
password: password,
seedKey: seedKey,
derivationType: derivationType,
);
}
@override
2023-07-24 20:23:09 +00:00
TransactionHistoryBase getTransactionHistory(Object wallet) {
throw UnimplementedError();
2023-07-24 18:09:28 +00:00
}
@override
void onStartup() {}
2023-07-31 13:10:33 +00:00
@override
Object createNanoTransactionCredentials(List<Output> outputs) {
return NanoTransactionCredentials(
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(),
);
}
2023-08-10 22:34:20 +00:00
@override
Future<void> setLabelAccount(Object wallet,
{required int accountIndex, required String label}) async {
final nanoWallet = wallet as NanoWallet;
await nanoWallet.walletAddresses.accountList
.setLabelAccount(accountIndex: accountIndex, label: label);
}
2023-07-24 18:09:28 +00:00
}