Add trocador exchange provider

This commit is contained in:
Godwin Asuquo
2023-02-06 21:20:43 +02:00
parent 61050ac715
commit 032a8c8c33
19 changed files with 453 additions and 108 deletions
@@ -1,5 +1,7 @@
import 'package:cake_wallet/entities/fiat_api_mode.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
import 'package:cake_wallet/view_model/settings/settings_list_item.dart';
import 'package:cake_wallet/view_model/settings/switcher_list_item.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:mobx/mobx.dart';
@@ -14,18 +16,19 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
AdvancedPrivacySettingsViewModelBase(this.type, this._settingsStore)
: _addCustomNode = false {
settings = [
SwitcherListItem(
title: S.current.disable_fiat,
value: () => _settingsStore.fiatApiMode == FiatApiMode.disabled,
onValueChange: (_, bool value) => setFiatMode(value),
),
SwitcherListItem(
title: S.current.disable_exchange,
value: () => _settingsStore.disableExchange,
onValueChange: (_, bool value) {
_settingsStore.disableExchange = value;
},
),
ChoicesListItem<FiatApiMode>(
title: S.current.fiat_api,
items: FiatApiMode.all,
selectedItem: _settingsStore.fiatApiMode,
onItemSelected: (FiatApiMode mode) => setFiatMode(mode),
),
ChoicesListItem<FiatApiMode>(
title: S.current.exchange,
items: FiatApiMode.all,
selectedItem: _settingsStore.exchangeStatus,
onItemSelected: (FiatApiMode mode) => _settingsStore.exchangeStatus = mode,
),
SwitcherListItem(
title: S.current.add_custom_node,
value: () => _addCustomNode,
@@ -34,7 +37,7 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
];
}
late List<SwitcherListItem> settings;
late List<SettingsListItem> settings;
@observable
bool _addCustomNode = false;
@@ -46,11 +49,7 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
bool get addCustomNode => _addCustomNode;
@action
void setFiatMode(bool value) {
if (value) {
_settingsStore.fiatApiMode = FiatApiMode.disabled;
return;
}
_settingsStore.fiatApiMode = FiatApiMode.enabled;
void setFiatMode(FiatApiMode value) {
_settingsStore.fiatApiMode = value;
}
}
@@ -1,3 +1,4 @@
import 'package:cake_wallet/entities/fiat_api_mode.dart';
import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:cw_core/transaction_history.dart';
import 'package:cw_core/balance.dart';
@@ -96,6 +97,11 @@ abstract class DashboardViewModelBase with Store {
caption: ExchangeProviderDescription.simpleSwap.title,
onChanged: () => tradeFilterStore
.toggleDisplayExchange(ExchangeProviderDescription.simpleSwap)),
FilterItem(
value: () => tradeFilterStore.displayTrocador,
caption: ExchangeProviderDescription.trocador.title,
onChanged: () => tradeFilterStore
.toggleDisplayExchange(ExchangeProviderDescription.trocador)),
]
},
subname = '',
@@ -268,7 +274,7 @@ abstract class DashboardViewModelBase with Store {
settingsStore.shouldShowYatPopup = shouldShow;
@computed
bool get isEnabledExchangeAction => !settingsStore.disableExchange;
bool get isEnabledExchangeAction => settingsStore.exchangeStatus != FiatApiMode.disabled;
@observable
bool hasExchangeAction;
@@ -1,6 +1,7 @@
import 'dart:async';
import 'package:cake_wallet/exchange/sideshift/sideshift_exchange_provider.dart';
import 'package:cake_wallet/exchange/simpleswap/simpleswap_exchange_provider.dart';
import 'package:cake_wallet/exchange/trocador/trocador_exchange_provider.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:cake_wallet/exchange/changenow/changenow_exchange_provider.dart';
@@ -46,6 +47,9 @@ abstract class ExchangeTradeViewModelBase with Store {
case ExchangeProviderDescription.simpleSwap:
_provider = SimpleSwapExchangeProvider();
break;
case ExchangeProviderDescription.trocador:
_provider = TrocadorExchangeProvider();
break;
}
_updateItems();
@@ -7,6 +7,8 @@ import 'package:cake_wallet/exchange/sideshift/sideshift_exchange_provider.dart'
import 'package:cake_wallet/exchange/sideshift/sideshift_request.dart';
import 'package:cake_wallet/exchange/simpleswap/simpleswap_exchange_provider.dart';
import 'package:cake_wallet/exchange/simpleswap/simpleswap_request.dart';
import 'package:cake_wallet/exchange/trocador/trocador_exchange_provider.dart';
import 'package:cake_wallet/exchange/trocador/trocador_request.dart';
import 'package:cw_core/transaction_priority.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/crypto_currency.dart';
@@ -60,7 +62,7 @@ abstract class ExchangeViewModelBase with Store {
limitsState = LimitsInitialState(),
receiveCurrency = wallet.currency,
depositCurrency = wallet.currency,
providerList = [ChangeNowExchangeProvider(), SideShiftExchangeProvider(), SimpleSwapExchangeProvider()],
providerList = [ChangeNowExchangeProvider(), SideShiftExchangeProvider(), SimpleSwapExchangeProvider(), TrocadorExchangeProvider()],
selectedProviders = ObservableList<ExchangeProvider>() {
const excludeDepositCurrencies = [CryptoCurrency.btt, CryptoCurrency.nano];
const excludeReceiveCurrencies = [CryptoCurrency.xlm, CryptoCurrency.xrp,
@@ -449,6 +451,18 @@ abstract class ExchangeViewModelBase with Store {
amount = isFixedRateMode ? receiveAmount : depositAmount;
}
if (provider is TrocadorExchangeProvider) {
request = TrocadorRequest(
from: depositCurrency,
to: receiveCurrency,
fromAmount: depositAmount.replaceAll(',', '.'),
toAmount: receiveAmount.replaceAll(',', '.'),
refundAddress: depositAddress,
address: receiveAddress,
isReverse: isFixedRateMode);
amount = isFixedRateMode ? receiveAmount : depositAmount;
}
amount = amount.replaceAll(',', '.');
if (limitsState is LimitsLoadedSuccessfully) {
@@ -12,27 +12,23 @@ abstract class PrivacySettingsViewModelBase with Store {
final SettingsStore _settingsStore;
@computed
bool get disableExchange => _settingsStore.disableExchange;
FiatApiMode get exchangeStatus => _settingsStore.exchangeStatus;
@computed
bool get shouldSaveRecipientAddress => _settingsStore.shouldSaveRecipientAddress;
@computed
bool get isFiatDisabled => _settingsStore.fiatApiMode == FiatApiMode.disabled;
FiatApiMode get fiatApi => _settingsStore.fiatApiMode;
@action
void setShouldSaveRecipientAddress(bool value) => _settingsStore.shouldSaveRecipientAddress = value;
@action
void setEnableExchange(bool value) => _settingsStore.disableExchange = value;
void setEnableExchange(FiatApiMode value) => _settingsStore.exchangeStatus = value;
@action
void setFiatMode(bool value) {
if (value) {
_settingsStore.fiatApiMode = FiatApiMode.disabled;
return;
}
_settingsStore.fiatApiMode = FiatApiMode.enabled;
void setFiatMode(FiatApiMode value) {
_settingsStore.fiatApiMode = value;
}
}
@@ -6,6 +6,7 @@ import 'package:cake_wallet/exchange/morphtoken/morphtoken_exchange_provider.dar
import 'package:cake_wallet/exchange/sideshift/sideshift_exchange_provider.dart';
import 'package:cake_wallet/exchange/simpleswap/simpleswap_exchange_provider.dart';
import 'package:cake_wallet/exchange/trade.dart';
import 'package:cake_wallet/exchange/trocador/trocador_exchange_provider.dart';
import 'package:cake_wallet/exchange/xmrto/xmrto_exchange_provider.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/utils/date_formatter.dart';
@@ -48,6 +49,9 @@ abstract class TradeDetailsViewModelBase with Store {
case ExchangeProviderDescription.simpleSwap:
_provider = SimpleSwapExchangeProvider();
break;
case ExchangeProviderDescription.trocador:
_provider = TrocadorExchangeProvider();
break;
}
items = ObservableList<StandartListItem>();