mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-29 04:49:51 +00:00
minor fix
This commit is contained in:
parent
8d5419d80c
commit
e59d9dfdaf
6 changed files with 36 additions and 102 deletions
|
@ -93,7 +93,6 @@ import 'package:cake_wallet/view_model/settings/other_settings_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart';
|
import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart';
|
import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
|
import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/settings/trocador_providers_view_model.dart';
|
|
||||||
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
|
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
|
||||||
import 'package:cake_wallet/view_model/wallet_list/wallet_edit_view_model.dart';
|
import 'package:cake_wallet/view_model/wallet_list/wallet_edit_view_model.dart';
|
||||||
import 'package:cake_wallet/view_model/wallet_list/wallet_list_item.dart';
|
import 'package:cake_wallet/view_model/wallet_list/wallet_list_item.dart';
|
||||||
|
@ -701,8 +700,6 @@ Future<void> setup({
|
||||||
return PrivacySettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!);
|
return PrivacySettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!);
|
||||||
});
|
});
|
||||||
|
|
||||||
getIt.registerFactory(() => TrocadorProvidersViewModel(getIt.get<SettingsStore>()));
|
|
||||||
|
|
||||||
getIt.registerFactory(() {
|
getIt.registerFactory(() {
|
||||||
return OtherSettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!);
|
return OtherSettingsViewModel(getIt.get<SettingsStore>(), getIt.get<AppStore>().wallet!);
|
||||||
});
|
});
|
||||||
|
@ -756,7 +753,7 @@ Future<void> setup({
|
||||||
|
|
||||||
getIt.registerFactory(() => PrivacyPage(getIt.get<PrivacySettingsViewModel>()));
|
getIt.registerFactory(() => PrivacyPage(getIt.get<PrivacySettingsViewModel>()));
|
||||||
|
|
||||||
getIt.registerFactory(() => TrocadorProvidersPage(getIt.get<TrocadorProvidersViewModel>()));
|
getIt.registerFactory(() => TrocadorProvidersPage(getIt.get<PrivacySettingsViewModel>()));
|
||||||
|
|
||||||
getIt.registerFactory(() => DomainLookupsPage(getIt.get<PrivacySettingsViewModel>()));
|
getIt.registerFactory(() => DomainLookupsPage(getIt.get<PrivacySettingsViewModel>()));
|
||||||
|
|
||||||
|
|
|
@ -12,25 +12,11 @@ import 'package:cw_core/crypto_currency.dart';
|
||||||
import 'package:http/http.dart';
|
import 'package:http/http.dart';
|
||||||
|
|
||||||
class TrocadorExchangeProvider extends ExchangeProvider {
|
class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
TrocadorExchangeProvider({this.useTorOnly = false, this.providerStates = const {}})
|
TrocadorExchangeProvider({this.useTorOnly = false})
|
||||||
: _lastUsedRateId = '', _provider = [],
|
: _lastUsedRateId = '',
|
||||||
super(pairList: supportedPairs(_notSupported));
|
super(pairList: supportedPairs(_notSupported));
|
||||||
|
|
||||||
bool useTorOnly;
|
bool useTorOnly;
|
||||||
final Map<String, bool> providerStates;
|
|
||||||
|
|
||||||
static const List<String> availableProviders = [
|
|
||||||
'Swapter',
|
|
||||||
'StealthEx',
|
|
||||||
'Simpleswap',
|
|
||||||
'ChangeNow',
|
|
||||||
'FixedFloat',
|
|
||||||
'LetsExchange',
|
|
||||||
'Exolix',
|
|
||||||
'Godex',
|
|
||||||
'Exch',
|
|
||||||
'CoinCraddle'
|
|
||||||
];
|
|
||||||
|
|
||||||
static const List<CryptoCurrency> _notSupported = [
|
static const List<CryptoCurrency> _notSupported = [
|
||||||
CryptoCurrency.stx,
|
CryptoCurrency.stx,
|
||||||
|
@ -47,7 +33,6 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
static const coinPath = 'api/coin';
|
static const coinPath = 'api/coin';
|
||||||
|
|
||||||
String _lastUsedRateId;
|
String _lastUsedRateId;
|
||||||
List<dynamic> _provider;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get title => 'Trocador';
|
String get title => 'Trocador';
|
||||||
|
@ -120,6 +105,7 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
'payment': isFixedRateMode ? 'True' : 'False',
|
'payment': isFixedRateMode ? 'True' : 'False',
|
||||||
'min_kycrating': 'C',
|
'min_kycrating': 'C',
|
||||||
'markup': markup,
|
'markup': markup,
|
||||||
|
'best_only': 'True',
|
||||||
};
|
};
|
||||||
|
|
||||||
final uri = await _getUri(newRatePath, params);
|
final uri = await _getUri(newRatePath, params);
|
||||||
|
@ -129,9 +115,6 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
final toAmount = double.parse(responseJSON['amount_to'].toString());
|
final toAmount = double.parse(responseJSON['amount_to'].toString());
|
||||||
final rateId = responseJSON['trade_id'] as String? ?? '';
|
final rateId = responseJSON['trade_id'] as String? ?? '';
|
||||||
|
|
||||||
var quotes = responseJSON['quotes']['quotes'] as List;
|
|
||||||
_provider = quotes.map((quote) => quote['provider']).toList();
|
|
||||||
|
|
||||||
if (rateId.isNotEmpty) _lastUsedRateId = rateId;
|
if (rateId.isNotEmpty) _lastUsedRateId = rateId;
|
||||||
|
|
||||||
return isReceiveAmount ? (amount / fromAmount) : (toAmount / amount);
|
return isReceiveAmount ? (amount / fromAmount) : (toAmount / amount);
|
||||||
|
@ -143,7 +126,6 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Trade> createTrade({required TradeRequest request, required bool isFixedRateMode}) async {
|
Future<Trade> createTrade({required TradeRequest request, required bool isFixedRateMode}) async {
|
||||||
|
|
||||||
final params = {
|
final params = {
|
||||||
'api_key': apiKey,
|
'api_key': apiKey,
|
||||||
'ticker_from': _normalizeCurrency(request.fromCurrency),
|
'ticker_from': _normalizeCurrency(request.fromCurrency),
|
||||||
|
@ -153,6 +135,7 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
'payment': isFixedRateMode ? 'True' : 'False',
|
'payment': isFixedRateMode ? 'True' : 'False',
|
||||||
'min_kycrating': 'C',
|
'min_kycrating': 'C',
|
||||||
'markup': markup,
|
'markup': markup,
|
||||||
|
'best_only': 'True',
|
||||||
if (!isFixedRateMode) 'amount_from': request.fromAmount,
|
if (!isFixedRateMode) 'amount_from': request.fromAmount,
|
||||||
if (isFixedRateMode) 'amount_to': request.toAmount,
|
if (isFixedRateMode) 'amount_to': request.toAmount,
|
||||||
'address': request.toAddress,
|
'address': request.toAddress,
|
||||||
|
@ -170,22 +153,6 @@ class TrocadorExchangeProvider extends ExchangeProvider {
|
||||||
params['id'] = _lastUsedRateId;
|
params['id'] = _lastUsedRateId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
String firstAvailableProvider = '';
|
|
||||||
|
|
||||||
for (var provider in _provider) {
|
|
||||||
if (providerStates.containsKey(provider) && providerStates[provider] == true) {
|
|
||||||
firstAvailableProvider = provider as String;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (firstAvailableProvider.isEmpty) {
|
|
||||||
throw Exception('No available provider is enabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
params['provider'] = firstAvailableProvider;
|
|
||||||
|
|
||||||
final uri = await _getUri(createTradePath, params);
|
final uri = await _getUri(createTradePath, params);
|
||||||
final response = await get(uri);
|
final response = await get(uri);
|
||||||
|
|
||||||
|
|
|
@ -1,37 +1,49 @@
|
||||||
import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
|
import 'package:cake_wallet/generated/i18n.dart';
|
||||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||||
import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
|
import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
|
||||||
import 'package:cake_wallet/view_model/settings/trocador_providers_view_model.dart';
|
import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||||
|
|
||||||
class TrocadorProvidersPage extends BasePage {
|
class TrocadorProvidersPage extends BasePage {
|
||||||
TrocadorProvidersPage(this.trocadorProvidersViewModel);
|
TrocadorProvidersPage(this._privacySettingsViewModel);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get title => 'Trocador Providers';
|
String get title => 'Trocador Providers';
|
||||||
|
|
||||||
final TrocadorProvidersViewModel trocadorProvidersViewModel;
|
final PrivacySettingsViewModel _privacySettingsViewModel;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget body(BuildContext context) {
|
Widget body(BuildContext context) {
|
||||||
final availableProviders = TrocadorExchangeProvider.availableProviders;
|
|
||||||
final providerStates = trocadorProvidersViewModel.providerStates;
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: EdgeInsets.only(top: 10),
|
padding: EdgeInsets.only(top: 10),
|
||||||
child: ListView.builder(
|
child: Observer(builder: (_) {
|
||||||
itemCount: availableProviders.length,
|
return Column(
|
||||||
itemBuilder: (_, index) {
|
mainAxisSize: MainAxisSize.min,
|
||||||
String provider = availableProviders[index];
|
children: [
|
||||||
return Observer(
|
SettingsSwitcherCell(
|
||||||
builder: (_) => SettingsSwitcherCell(
|
title: 'Provider 1',
|
||||||
title: provider,
|
value: false,
|
||||||
value: providerStates[provider] ?? false,
|
onValueChange: (BuildContext _, bool value) {
|
||||||
|
}),
|
||||||
|
SettingsSwitcherCell(
|
||||||
|
title: 'Provider 2',
|
||||||
|
value: false,
|
||||||
|
onValueChange: (BuildContext _, bool value) {
|
||||||
|
}),
|
||||||
|
SettingsSwitcherCell(
|
||||||
|
title: 'Provider 3',
|
||||||
|
value: false,
|
||||||
|
onValueChange: (BuildContext _, bool value) {
|
||||||
|
}),
|
||||||
|
SettingsSwitcherCell(
|
||||||
|
title: 'Provider 4',
|
||||||
|
value: false,
|
||||||
onValueChange: (BuildContext _, bool value) {
|
onValueChange: (BuildContext _, bool value) {
|
||||||
trocadorProvidersViewModel.toggleProviderState(provider);
|
}),
|
||||||
}));
|
],
|
||||||
},
|
);
|
||||||
),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ import 'package:cake_wallet/entities/exchange_api_mode.dart';
|
||||||
import 'package:cake_wallet/entities/pin_code_required_duration.dart';
|
import 'package:cake_wallet/entities/pin_code_required_duration.dart';
|
||||||
import 'package:cake_wallet/entities/preferences_key.dart';
|
import 'package:cake_wallet/entities/preferences_key.dart';
|
||||||
import 'package:cake_wallet/entities/sort_balance_types.dart';
|
import 'package:cake_wallet/entities/sort_balance_types.dart';
|
||||||
import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
|
|
||||||
import 'package:cake_wallet/view_model/settings/sync_mode.dart';
|
import 'package:cake_wallet/view_model/settings/sync_mode.dart';
|
||||||
import 'package:cake_wallet/utils/device_info.dart';
|
import 'package:cake_wallet/utils/device_info.dart';
|
||||||
import 'package:cake_wallet/ethereum/ethereum.dart';
|
import 'package:cake_wallet/ethereum/ethereum.dart';
|
||||||
|
@ -162,8 +161,6 @@ abstract class SettingsStoreBase with Store {
|
||||||
priority[WalletType.bitcoinCash] = initialBitcoinCashTransactionPriority;
|
priority[WalletType.bitcoinCash] = initialBitcoinCashTransactionPriority;
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeTrocadorProviderStates();
|
|
||||||
|
|
||||||
reaction(
|
reaction(
|
||||||
(_) => fiatCurrency,
|
(_) => fiatCurrency,
|
||||||
(FiatCurrency fiatCurrency) => sharedPreferences.setString(
|
(FiatCurrency fiatCurrency) => sharedPreferences.setString(
|
||||||
|
@ -518,9 +515,6 @@ abstract class SettingsStoreBase with Store {
|
||||||
@observable
|
@observable
|
||||||
ObservableMap<WalletType, TransactionPriority> priority;
|
ObservableMap<WalletType, TransactionPriority> priority;
|
||||||
|
|
||||||
@observable
|
|
||||||
ObservableMap<String, bool> trocadorProviderStates = ObservableMap<String, bool>();
|
|
||||||
|
|
||||||
@observable
|
@observable
|
||||||
SortBalanceBy sortBalanceBy;
|
SortBalanceBy sortBalanceBy;
|
||||||
|
|
||||||
|
@ -1065,19 +1059,6 @@ abstract class SettingsStoreBase with Store {
|
||||||
powNodes[walletType] = node;
|
powNodes[walletType] = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initializeTrocadorProviderStates() {
|
|
||||||
for (var provider in TrocadorExchangeProvider.availableProviders) {
|
|
||||||
final savedState = _sharedPreferences.getBool(provider) ?? true;
|
|
||||||
trocadorProviderStates[provider] = savedState;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void saveTrocadorProviderState(String providerName, bool state) {
|
|
||||||
_sharedPreferences.setBool(providerName, state);
|
|
||||||
trocadorProviderStates[providerName] = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static Future<String?> _getDeviceName() async {
|
static Future<String?> _getDeviceName() async {
|
||||||
String? deviceName = '';
|
String? deviceName = '';
|
||||||
final deviceInfoPlugin = DeviceInfoPlugin();
|
final deviceInfoPlugin = DeviceInfoPlugin();
|
||||||
|
|
|
@ -146,8 +146,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
||||||
ChangeNowExchangeProvider(settingsStore: _settingsStore),
|
ChangeNowExchangeProvider(settingsStore: _settingsStore),
|
||||||
SideShiftExchangeProvider(),
|
SideShiftExchangeProvider(),
|
||||||
SimpleSwapExchangeProvider(),
|
SimpleSwapExchangeProvider(),
|
||||||
TrocadorExchangeProvider(useTorOnly: _useTorOnly,
|
TrocadorExchangeProvider(useTorOnly: _useTorOnly),
|
||||||
providerStates: _settingsStore.trocadorProviderStates),
|
|
||||||
if (FeatureFlag.isExolixEnabled) ExolixExchangeProvider(),
|
if (FeatureFlag.isExolixEnabled) ExolixExchangeProvider(),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
import 'package:cake_wallet/store/settings_store.dart';
|
|
||||||
import 'package:mobx/mobx.dart';
|
|
||||||
|
|
||||||
part 'trocador_providers_view_model.g.dart';
|
|
||||||
|
|
||||||
class TrocadorProvidersViewModel = TrocadorProvidersViewModelBase with _$TrocadorProvidersViewModel;
|
|
||||||
|
|
||||||
abstract class TrocadorProvidersViewModelBase with Store {
|
|
||||||
TrocadorProvidersViewModelBase(this._settingsStore);
|
|
||||||
|
|
||||||
final SettingsStore _settingsStore;
|
|
||||||
|
|
||||||
@computed
|
|
||||||
Map<String, bool> get providerStates => _settingsStore.trocadorProviderStates;
|
|
||||||
|
|
||||||
@action
|
|
||||||
void toggleProviderState(String providerName) {
|
|
||||||
final currentState = providerStates[providerName] ?? false;
|
|
||||||
_settingsStore.trocadorProviderStates[providerName] = !currentState;
|
|
||||||
_settingsStore.saveTrocadorProviderState(providerName, !currentState);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue