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