[skip ci] add transaction priority

This commit is contained in:
Serhii 2023-08-14 19:00:38 +03:00
parent afcfab9796
commit af58c45190
5 changed files with 57 additions and 8 deletions

View file

@ -1,9 +1,52 @@
import 'package:cw_core/transaction_priority.dart';
class BitcoinCashTransactionPriority extends TransactionPriority{
BitcoinCashTransactionPriority({required super.title, required super.raw});
class BitcoinCashTransactionPriority extends TransactionPriority {
const BitcoinCashTransactionPriority({required String title, required int raw})
: super(title: title, raw: raw);
static BitcoinCashTransactionPriority deserialize ({required int raw}) {
throw UnimplementedError('BitcoinCashTransactionPriority.deserialize() is not implemented');
static const List<BitcoinCashTransactionPriority> all = [fast, medium, slow];
static const BitcoinCashTransactionPriority slow =
BitcoinCashTransactionPriority(title: 'Slow', raw: 0);
static const BitcoinCashTransactionPriority medium =
BitcoinCashTransactionPriority(title: 'Medium', raw: 1);
static const BitcoinCashTransactionPriority fast =
BitcoinCashTransactionPriority(title: 'Fast', raw: 2);
static BitcoinCashTransactionPriority deserialize({required int raw}) {
switch (raw) {
case 0:
return slow;
case 1:
return medium;
case 2:
return fast;
default:
throw Exception('Unexpected token: $raw for BitcoinTransactionPriority deserialize');
}
}
}
String get units => 'sat';
@override
String toString() {
var label = '';
switch (this) {
case BitcoinCashTransactionPriority.slow:
label = 'Slow ~24hrs'; // '${S.current.transaction_priority_slow} ~24hrs';
break;
case BitcoinCashTransactionPriority.medium:
label = 'Medium'; // S.current.transaction_priority_medium;
break;
case BitcoinCashTransactionPriority.fast:
label = 'Fast'; // S.current.transaction_priority_fast;
break;
default:
break;
}
return label;
}
String labelWithRate(int rate) => '${toString()} ($rate ${units}/byte)';
}

View file

@ -31,6 +31,8 @@ class CWBitcoinCash extends BitcoinCash {
BitcoinCashTransactionPriority.deserialize(raw: raw);
@override
TransactionPriority getDefaultTransactionPriority() =>
throw UnimplementedError('getDefaultTransactionPriority');
TransactionPriority getDefaultTransactionPriority() => BitcoinCashTransactionPriority.medium;
@override
List<TransactionPriority> getTransactionPriorities() => BitcoinCashTransactionPriority.all;
}

View file

@ -1,4 +1,5 @@
import 'package:cake_wallet/bitcoin/bitcoin.dart';
import 'package:cake_wallet/bitcoin_cash/bitcoin_cash.dart';
import 'package:cake_wallet/ethereum/ethereum.dart';
import 'package:cake_wallet/haven/haven.dart';
import 'package:cake_wallet/monero/monero.dart';
@ -17,6 +18,8 @@ List<TransactionPriority> priorityForWalletType(WalletType type) {
return haven!.getTransactionPriorities();
case WalletType.ethereum:
return ethereum!.getTransactionPriorities();
case WalletType.bitcoinCash:
return bitcoinCash!.getTransactionPriorities();
default:
return [];
}

View file

@ -51,7 +51,6 @@ class WalletListBodyState extends State<WalletListBody> {
}
final path = walletTypeToCryptoCurrency(type).iconPath ?? nonWalletTypeIconPath;
print('path: $path type: $type');
return Image.asset(path, height: 24, width: 24);
}

View file

@ -594,6 +594,8 @@ abstract class BitcoinCash {
TransactionPriority deserializeBitcoinCashTransactionPriority(int raw);
TransactionPriority getDefaultTransactionPriority();
List<TransactionPriority> getTransactionPriorities();
}
""";