CAKE-185 | removed isValidAmount() from exchange_view_model.dart and exchange_page.dart; throw exception in the createTrade() (xmrto_exchange_provider.dart) if number of fractional digits of amount more than 8

This commit is contained in:
OleksandrSobol 2020-12-03 23:22:56 +02:00
parent 27cfad5d95
commit df01fa0314
3 changed files with 20 additions and 31 deletions

View file

@ -12,6 +12,7 @@ import 'package:cake_wallet/exchange/xmrto/xmrto_trade_request.dart';
import 'package:cake_wallet/exchange/trade_not_created_exeption.dart';
import 'package:cake_wallet/exchange/exchange_provider_description.dart';
import 'package:cake_wallet/exchange/trade_not_found_exeption.dart';
import 'package:cake_wallet/generated/i18n.dart';
class XMRTOExchangeProvider extends ExchangeProvider {
XMRTOExchangeProvider()
@ -90,12 +91,25 @@ class XMRTOExchangeProvider extends ExchangeProvider {
Future<Trade> createTrade({TradeRequest request}) async {
final _request = request as XMRTOTradeRequest;
final url = originalApiUri + _orderCreateUriSuffix;
final body = {
'amount':
_request.isBTCRequest ? _request.receiveAmount : _request.amount,
'amount_currency': _request.isBTCRequest
final _amount = _request.isBTCRequest
? _request.receiveAmount
: _request.amount;
final _amountCurrency = _request.isBTCRequest
? _request.to.toString()
: _request.from.toString(),
: _request.from.toString();
final pattern = '^([0-9]+([.\,][0-9]{0,8})?|[.\,][0-9]{1,8})\$';
final isValid = RegExp(pattern).hasMatch(_amount);
if (!isValid) {
throw TradeNotCreatedException(description,
description: S.current.xmr_to_error_description);
}
final body = {
'amount': _amount,
'amount_currency': _amountCurrency,
'btc_dest_address': _request.address
};
final response = await post(url,

View file

@ -411,18 +411,7 @@ class ExchangePage extends BasePage {
buttonAction: () => Navigator.of(context).pop());
});
} else {
exchangeViewModel.isValidAmount()
? exchangeViewModel.createTrade()
: showPopUp<void>(
context: context,
builder: (BuildContext context) {
return AlertWithOneAction(
alertTitle: S.of(context).xmr_to_error,
alertContent: S.of(context).xmr_to_error_description,
buttonText: S.of(context).ok,
buttonAction: () =>
Navigator.of(context).pop());
});
exchangeViewModel.createTrade();
}
}
},

View file

@ -311,20 +311,6 @@ abstract class ExchangeViewModelBase with Store {
void removeTemplate({ExchangeTemplate template}) =>
_exchangeTemplateStore.remove(template: template);
bool isValidAmount() {
bool isValid = true;
if (provider is XMRTOExchangeProvider) {
final amount = isReceiveAmountEntered
? receiveAmount
: depositAmount;
final pattern = '^([0-9]+([.\,][0-9]{0,8})?|[.\,][0-9]{1,8})\$';
isValid = RegExp(pattern).hasMatch(amount);
}
return isValid;
}
List<ExchangeProvider> providersForCurrentPair() {
return _providersForPair(from: depositCurrency, to: receiveCurrency);
}