Files
hash-wallet/lib/view_model/settings/trocador_providers_view_model.dart
T
b387c6182a Update list of trocador providers to be fetched from the api (#1379)
* 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>
2025-03-11 21:51:52 +02:00

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);
}
}