mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-22 06:28:39 +02:00
* fetch providers from Trocadore api * Update exchange_confirm_page.dart * Update exchange_view_model.dart * update trocador providers page * Revert "Update exchange_view_model.dart" This reverts commit 5722ed768a8a5e21deaaaec37d9436a7e3a2651f. * update exchange view model * pass the TrocadorExchangeProvider as a dependency [skip ci] * add missing localozation [skip ci] * minor fix * address review comments[skip ci] * update states when the provider is enabled * add kyc rating * sort providers by KYC * minor fix * Update exchange_view_model.dart * Update lib/exchange/provider/trocador_exchange_provider.dart Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com> * backward compatibility for Trocador provider states * minor fix --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
51 lines
1.6 KiB
Dart
51 lines
1.6 KiB
Dart
import 'package:cake_wallet/exchange/provider/trocador_exchange_provider.dart';
|
|
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, this.trocadorExchangeProvider) {
|
|
fetchTrocadorPartners();
|
|
}
|
|
|
|
final SettingsStore _settingsStore;
|
|
final TrocadorExchangeProvider trocadorExchangeProvider;
|
|
|
|
@observable
|
|
ObservableFuture<Map<String, bool>>? fetchProvidersFuture;
|
|
|
|
Map<String, String> providerRatings = {};
|
|
|
|
@computed
|
|
bool get isLoading => fetchProvidersFuture?.status == FutureStatus.pending;
|
|
|
|
@action
|
|
Future<void> fetchTrocadorPartners() async {
|
|
fetchProvidersFuture =
|
|
ObservableFuture(trocadorExchangeProvider.fetchProviders().then((providers) {
|
|
var providerNames = providers.map((e) => e.name).toList();
|
|
|
|
providerRatings = {
|
|
for (var provider in providers)
|
|
provider.name: provider.rating
|
|
};
|
|
|
|
return _settingsStore
|
|
.updateAllTrocadorProviderStates(providerNames)
|
|
.then((_) => _settingsStore.trocadorProviderStates);
|
|
}));
|
|
}
|
|
|
|
@computed
|
|
Map<String, bool> get providerStates => _settingsStore.trocadorProviderStates;
|
|
|
|
@action
|
|
void toggleProviderState(String providerName) {
|
|
final currentState = providerStates[providerName] ?? false;
|
|
_settingsStore.setTrocadorProviderState(providerName, !currentState);
|
|
}
|
|
}
|