diff --git a/lib/view_model/exchange/exchange_view_model.dart b/lib/view_model/exchange/exchange_view_model.dart index eba347ac4..9c4815d87 100644 --- a/lib/view_model/exchange/exchange_view_model.dart +++ b/lib/view_model/exchange/exchange_view_model.dart @@ -144,16 +144,21 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with final ExchangeTemplateStore _exchangeTemplateStore; final TradesStore tradesStore; final SharedPreferences sharedPreferences; + late TrocadorExchangeProvider trocadorProvider; - List get _allProviders => [ - ChangeNowExchangeProvider(settingsStore: _settingsStore), - SideShiftExchangeProvider(), - SimpleSwapExchangeProvider(), - TrocadorExchangeProvider( - useTorOnly: _useTorOnly, providerStates: _settingsStore.trocadorProviderStates), - ThorChainExchangeProvider(tradesStore: trades), - if (FeatureFlag.isExolixEnabled) ExolixExchangeProvider(), - ]; + List get _allProviders { + trocadorProvider = TrocadorExchangeProvider( + useTorOnly: _useTorOnly, providerStates: _settingsStore.trocadorProviderStates); + updateTrocadorProviderStates(trocadorProvider); + return [ + ChangeNowExchangeProvider(settingsStore: _settingsStore), + SideShiftExchangeProvider(), + SimpleSwapExchangeProvider(), + trocadorProvider, + ThorChainExchangeProvider(tradesStore: trades), + if (FeatureFlag.isExolixEnabled) ExolixExchangeProvider(), + ]; + } @observable ExchangeProvider? provider; @@ -725,6 +730,15 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with ); } + @action + Future updateTrocadorProviderStates(TrocadorExchangeProvider trocadorProvider) async { + final availableProviders = await trocadorProvider.fetchProviders(); + for (var provider in availableProviders) { + final savedState = sharedPreferences.getBool(provider.name) ?? true; + _settingsStore.trocadorProviderStates[provider.name] = savedState; + } + } + bool get isAvailableInSelected { final providersForPair = providersForCurrentPair(); return selectedProviders