Add Sorting and Pin Native Token features

This commit is contained in:
OmarHatem 2023-06-30 14:58:21 +03:00
parent 38bb1327e3
commit 46c64c782e
3 changed files with 50 additions and 4 deletions

View file

@ -2,8 +2,6 @@
uri: ethereum.publicnode.com
-
uri: eth.llamarpc.com
-
uri: rpc.ankr.com/eth
-
uri: rpc.flashbots.net
-

View file

@ -161,7 +161,7 @@ class Node extends HiveObject with Keyable {
} catch (_) {
return false;
}
}
}
Future<bool> requestElectrumServer() async {
try {
@ -172,4 +172,17 @@ class Node extends HiveObject with Keyable {
return false;
}
}
Future<bool> requestEthereumServer() async {
try {
final response = await http.get(
uri,
headers: {'Content-Type': 'application/json'},
);
return response.statusCode >= 200 && response.statusCode < 300;
} catch (_) {
return false;
}
}
}

View file

@ -1,4 +1,5 @@
import 'package:cake_wallet/entities/fiat_api_mode.dart';
import 'package:cake_wallet/entities/sort_balance_types.dart';
import 'package:cw_core/transaction_history.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/balance.dart';
@ -81,6 +82,12 @@ abstract class BalanceViewModelBase with Store {
@computed
bool get isHomeScreenSettingsEnabled => wallet.type == WalletType.ethereum;
@computed
SortBalanceBy get sortBalanceBy => settingsStore.sortBalanceBy;
@computed
bool get pinNativeToken => settingsStore.pinNativeTokenAtTop;
@computed
String get asset {
final typeFormatted = walletTypeToString(appStore.wallet!.type);
@ -213,7 +220,7 @@ abstract class BalanceViewModelBase with Store {
@computed
Map<CryptoCurrency, BalanceRecord> get balances {
return wallet.balance.map((key, value) {
return _sortedBalance.map((key, value) {
if (displayMode == BalanceDisplayMode.hiddenBalance) {
return MapEntry(key, BalanceRecord(
availableBalance: '---',
@ -362,5 +369,33 @@ abstract class BalanceViewModelBase with Store {
}
String getFormattedFrozenBalance(Balance walletBalance) => walletBalance.formattedFrozenBalance;
@computed
Map<CryptoCurrency, Balance> get _sortedBalance {
final Map<CryptoCurrency, Balance> sortedMap = {};
if (pinNativeToken) {
sortedMap[wallet.currency] = wallet.balance[wallet.currency]!;
}
switch (sortBalanceBy) {
case SortBalanceBy.FiatBalance:
sortedMap.addAll(Map.fromEntries(wallet.balance.entries.toList()
..sort((e1, e2) => double.parse(
_getFiatBalance(price: price, cryptoAmount: e2.value.formattedAvailableBalance))
.compareTo(double.parse(_getFiatBalance(
price: price, cryptoAmount: e1.value.formattedAvailableBalance))))));
break;
case SortBalanceBy.GrossBalance:
sortedMap.addAll(Map.fromEntries(wallet.balance.entries.toList()
..sort((e1, e2) => double.parse(e2.value.formattedAvailableBalance)
.compareTo(double.parse(e1.value.formattedAvailableBalance)))));
break;
case SortBalanceBy.Alphabetical:
sortedMap.addAll(Map.fromEntries(wallet.balance.entries.toList()
..sort((e1, e2) => e1.key.title.compareTo(e2.key.title))));
break;
}
return sortedMap;
}
}