CAKE-306 | fixed findOrderById() in the moonpay_buy_provider.dart; fixed saveOrder() in the buy_view_model.dart

OleksandrSobol committed Apr 30, 2021 at 11:08 UTC 9627590ba571dd9979117015ab815a66847dbdad
6 files changed +33 -16
lib/buy/moonpay/moonpay_buy_provider.dart
+20 -7
@@ -1,5 +1,6 @@
1 import 'dart:convert';
2 import 'package:cake_wallet/buy/buy_exception.dart';
3 +import 'package:hive/hive.dart';
4 import 'package:http/http.dart';
5 import 'package:cake_wallet/buy/buy_amount.dart';
6 import 'package:cake_wallet/buy/buy_provider.dart';
@@ -11,9 +12,10 @@ import 'package:cake_wallet/exchange/trade_state.dart';
12 import 'package:cake_wallet/.secrets.g.dart' as secrets;
13
14 class MoonPayBuyProvider extends BuyProvider {
14 - MoonPayBuyProvider({WalletBase wallet, bool isTestEnvironment = false})
15 + MoonPayBuyProvider({WalletBase wallet, this.ordersSource,
16 + bool isTestEnvironment = false})
17 : super(wallet: wallet, isTestEnvironment: isTestEnvironment) {
16 - baseApiUrl = isTestEnvironment
18 + baseApiUrl = isTestEnvironment
19 ? _baseTestApiUrl
20 : _baseProductApiUrl;
21 }
@@ -23,7 +25,6 @@ class MoonPayBuyProvider extends BuyProvider {
25 static const _currenciesSuffix = '/v3/currencies';
26 static const _quoteSuffix = '/buy_quote';
27 static const _transactionsSuffix = '/v1/transactions';
26 - static const _fiatCurrency = 'USD';
28 static const _apiKey = secrets.moonPayApiKey;
29
30 @override
@@ -38,6 +39,7 @@ class MoonPayBuyProvider extends BuyProvider {
39 @override
40 String get trackUrl => baseApiUrl + '/transaction_receipt?transactionId=';
41
42 + final Box<Order> ordersSource;
43 String baseApiUrl;
44
45 @override
@@ -58,7 +60,7 @@ class MoonPayBuyProvider extends BuyProvider {
60
61 @override
62 Future<BuyAmount> calculateAmount(String amount, String sourceCurrency) async {
61 - final url = baseApiUrl + _currenciesSuffix + '/$currencyCode' +
63 + final url = _baseProductApiUrl + _currenciesSuffix + '/$currencyCode' +
64 _quoteSuffix + '/?apiKey=' + _apiKey +
65 '&baseCurrencyAmount=' + amount +
66 '&baseCurrencyCode' + sourceCurrency.toLowerCase();
@@ -80,7 +82,7 @@ class MoonPayBuyProvider extends BuyProvider {
82
83 @override
84 Future<Order> findOrderById(String id) async {
83 - final url = baseApiUrl + _transactionsSuffix + '/$id' +
85 + final url = _baseProductApiUrl + _transactionsSuffix + '/$id' +
86 '?apiKey=' + _apiKey;
87
88 final response = await get(url);
@@ -98,12 +100,23 @@ class MoonPayBuyProvider extends BuyProvider {
100 final createdAt = DateTime.parse(createdAtRaw).toLocal();
101 final amount = responseJSON['quoteCurrencyAmount'] as double;
102
103 + var from = '';
104 + var to = '';
105 +
106 + for (final order in ordersSource.values) {
107 + if (order.id == id) {
108 + from = order.from;
109 + to = order.to;
110 + break;
111 + }
112 + }
113 +
114 return Order(
115 id: id,
116 provider: description,
117 transferId: id,
105 - from: _fiatCurrency,
106 - to: currencyCode.toUpperCase(),
118 + from: from,
119 + to: to,
120 state: state,
121 createdAt: createdAt,
122 amount: amount.toString(),
lib/buy/wyre/wyre_buy_provider.dart
+1 -1
@@ -80,7 +80,7 @@ class WyreBuyProvider extends BuyProvider {
80
81 @override
82 Future<BuyAmount> calculateAmount(String amount, String sourceCurrency) async {
83 - final quoteUrl = baseApiUrl + _ordersSuffix + _quoteSuffix;
83 + final quoteUrl = _baseProductApiUrl + _ordersSuffix + _quoteSuffix;
84 final body = {
85 'amount': amount,
86 'sourceCurrency': sourceCurrency,
lib/di.dart
+2 -2
@@ -238,7 +238,6 @@ Future setup(
238 tradeFilterStore: getIt.get<TradeFilterStore>(),
239 transactionFilterStore: getIt.get<TransactionFilterStore>(),
240 settingsStore: settingsStore,
241 - ordersSource: _ordersSource,
241 ordersStore: getIt.get<OrdersStore>()));
242
243 getIt.registerFactory<AuthService>(() => AuthService(
@@ -536,7 +535,7 @@ Future setup(
535 getIt.registerFactory(() {
536 final wallet = getIt.get<AppStore>().wallet;
537
539 - return BuyViewModel(ordersSource, getIt.get<OrdersStore>(),
538 + return BuyViewModel(_ordersSource, getIt.get<OrdersStore>(),
539 getIt.get<BuyAmountViewModel>(), wallet: wallet);
540 });
541
@@ -559,6 +558,7 @@ Future setup(
558
559 return OrderDetailsViewModel(
560 wallet: wallet,
561 + ordersSource: _ordersSource,
562 orderForDetails: order);
563 });
564
lib/view_model/buy/buy_view_model.dart
+3 -1
@@ -22,7 +22,7 @@ abstract class BuyViewModelBase with Store {
22 {@required this.wallet}) {
23 providerList = [
24 WyreBuyProvider(wallet: wallet),
25 - MoonPayBuyProvider(wallet: wallet)
25 + MoonPayBuyProvider(wallet: wallet, ordersSource: ordersSource)
26 ];
27 items = providerList.map((provider) =>
28 BuyItem(provider: provider, buyAmountViewModel: buyAmountViewModel))
@@ -79,6 +79,8 @@ abstract class BuyViewModelBase with Store {
79 Future<void> saveOrder(String orderId) async {
80 try {
81 final order = await selectedProvider?.findOrderById(orderId);
82 + order.from = fiatCurrency.title;
83 + order.to = cryptoCurrency.title;
84 await ordersSource.add(order);
85 ordersStore.setOrder(order);
86 } catch (e) {
lib/view_model/dashboard/dashboard_view_model.dart
-3
@@ -57,7 +57,6 @@ abstract class DashboardViewModelBase with Store {
57 this.tradeFilterStore,
58 this.transactionFilterStore,
59 this.settingsStore,
60 - this.ordersSource,
60 this.ordersStore}) {
61 filterItems = {
62 S.current.transactions: [
@@ -212,8 +211,6 @@ abstract class DashboardViewModelBase with Store {
211
212 bool get hasRescan => wallet.type == WalletType.monero;
213
215 - Box<Order> ordersSource;
216 -
214 BalanceViewModel balanceViewModel;
215
216 AppStore appStore;
lib/view_model/order_details_view_model.dart
+7 -2
@@ -3,6 +3,7 @@ import 'package:cake_wallet/buy/buy_provider.dart';
3 import 'package:cake_wallet/buy/buy_provider_description.dart';
4 import 'package:cake_wallet/buy/order.dart';
5 import 'package:cake_wallet/utils/date_formatter.dart';
6 +import 'package:hive/hive.dart';
7 import 'package:mobx/mobx.dart';
8 import 'package:cake_wallet/generated/i18n.dart';
9 import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart';
@@ -18,7 +19,8 @@ class OrderDetailsViewModel = OrderDetailsViewModelBase
19 with _$OrderDetailsViewModel;
20
21 abstract class OrderDetailsViewModelBase with Store {
21 - OrderDetailsViewModelBase({WalletBase wallet, Order orderForDetails}) {
22 + OrderDetailsViewModelBase({WalletBase wallet, this.ordersSource,
23 + Order orderForDetails}) {
24 order = orderForDetails;
25
26 if (order.provider != null) {
@@ -27,7 +29,8 @@ abstract class OrderDetailsViewModelBase with Store {
29 _provider = WyreBuyProvider(wallet: wallet);
30 break;
31 case BuyProviderDescription.moonPay:
30 - _provider = MoonPayBuyProvider(wallet: wallet);
32 + _provider =
33 + MoonPayBuyProvider(wallet: wallet, ordersSource: ordersSource);
34 break;
35 }
36 }
@@ -41,6 +44,8 @@ abstract class OrderDetailsViewModelBase with Store {
44 timer = Timer.periodic(Duration(seconds: 20), (_) async => _updateOrder());
45 }
46
47 + final Box<Order> ordersSource;
48 +
49 @observable
50 Order order;
51