From 348d1080c9c8523ea83887dee641819007eeb764 Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Thu, 6 Feb 2020 20:30:32 +0200 Subject: [PATCH] CWA-169 | added call of loadLimits() to changeProvider() and reset() in exchange store. Added btc-xmr pair, added conversion units to crypto amounts to fetchLimits() in MorphTokenExchangeProvider --- .../morphtoken_exchange_provider.dart | 25 +++++++++++++++++-- lib/src/stores/exchange/exchange_store.dart | 2 ++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart b/lib/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart index 0637607df..b18782ade 100644 --- a/lib/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart +++ b/lib/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart @@ -13,6 +13,7 @@ import 'package:cake_wallet/src/domain/exchange/trade_state.dart'; import 'package:cake_wallet/src/domain/exchange/morphtoken/morphtoken_request.dart'; import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart'; import 'package:cake_wallet/src/domain/exchange/trade_not_created_exeption.dart'; +import 'package:cake_wallet/src/domain/monero/monero_amount_format.dart'; class MorphTokenExchangeProvider extends ExchangeProvider { MorphTokenExchangeProvider() @@ -50,7 +51,8 @@ class MorphTokenExchangeProvider extends ExchangeProvider { ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.eth), ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.bch), ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.ltc), - ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.dash) + ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.dash), + ExchangePair(from: CryptoCurrency.btc, to: CryptoCurrency.xmr) ]); final trades = Hive.box(Trade.boxName); @@ -70,6 +72,8 @@ class MorphTokenExchangeProvider extends ExchangeProvider { @override Future fetchLimits({CryptoCurrency from, CryptoCurrency to}) async { + const ethereumAmountDivider = 1000000000000000000; + const defaultAmountDivider = 100000000; final url = apiUri + _limitsURISuffix; final headers = {'Content-type': 'application/json'}; final body = @@ -87,8 +91,25 @@ class MorphTokenExchangeProvider extends ExchangeProvider { final min = responseJSON['input']['limits']['min'] as int; final max = responseJSON['input']['limits']['max'] as int; + double minDouble; + double maxDouble; - return Limits(min: min.toDouble(), max: max.toDouble()); + switch (from) { + case CryptoCurrency.xmr: + minDouble = moneroAmountToDouble(amount: min); + maxDouble = moneroAmountToDouble(amount: max); + break; + case CryptoCurrency.eth: + minDouble = min/ethereumAmountDivider; + maxDouble = max/ethereumAmountDivider; + break; + default: + minDouble = min/defaultAmountDivider; + maxDouble = max/defaultAmountDivider; + break; + } + + return Limits(min: minDouble, max: maxDouble); } @override diff --git a/lib/src/stores/exchange/exchange_store.dart b/lib/src/stores/exchange/exchange_store.dart index 832187757..4e65048b0 100644 --- a/lib/src/stores/exchange/exchange_store.dart +++ b/lib/src/stores/exchange/exchange_store.dart @@ -79,6 +79,7 @@ abstract class ExchangeStoreBase with Store { this.provider = provider; depositAmount = ''; receiveAmount = ''; + loadLimits(); } @action @@ -192,6 +193,7 @@ abstract class ExchangeStoreBase with Store { provider = XMRTOExchangeProvider(); depositCurrency = CryptoCurrency.xmr; receiveCurrency = CryptoCurrency.btc; + loadLimits(); } List providersForCurrentPair() {