CAKE-279 | saved orderId in the orders store; added saveOrder() method to the dashboard_view_model.dart
OleksandrSobol committed
Mar 17, 2021 at 20:21 UTC
d752692c3f039846c7b4dcca714d39a4d30d508e
5 files changed
+33
-18
lib/di.dart
+1
-1
@@ -530,7 +530,7 @@ Future setup(
530
OrderDetailsPage(getIt.get<OrderDetailsViewModel>(param1: order)));
531
532
getIt.registerFactoryParam<WebViewPage, String, void>((String url, _) =>
533
- WebViewPage(url: url));
533
+ WebViewPage(ordersStore: getIt.get<OrdersStore>(), url: url));
534
535
getIt.registerFactory(() => SupportViewModel());
536
lib/src/screens/dashboard/dashboard_page.dart
+7
@@ -1,3 +1,4 @@
1
+import 'package:cake_wallet/entities/find_order_by_id.dart';
2
import 'package:cake_wallet/entities/wallet_type.dart';
3
import 'package:cake_wallet/generated/i18n.dart';
4
import 'package:cake_wallet/routes.dart';
@@ -132,6 +133,12 @@ class DashboardPage extends BasePage {
133
if (url.isNotEmpty) {
134
await Navigator.of(context)
135
.pushNamed(Routes.webView, arguments: url);
136
+
137
+ final orderId = walletViewModel.ordersStore.orderId;
138
+
139
+ if (orderId.isNotEmpty) {
140
+ await walletViewModel.saveOrder(orderId);
141
+ }
142
}
143
}),
144
],
lib/src/screens/web_view/web_view_page.dart
+9
-4
@@ -1,24 +1,28 @@
1
import 'dart:io';
2
import 'package:cake_wallet/generated/i18n.dart';
3
import 'package:cake_wallet/src/screens/base_page.dart';
4
+import 'package:cake_wallet/store/dashboard/orders_store.dart';
5
import 'package:flutter/material.dart';
6
import 'package:webview_flutter/webview_flutter.dart';
7
8
class WebViewPage extends BasePage {
8
- WebViewPage({@required this.url});
9
+ WebViewPage({@required this.ordersStore, @required this.url});
10
11
+ final OrdersStore ordersStore;
12
final String url;
13
14
@override
15
String get title => S.current.buy;
16
17
@override
16
- Widget body(BuildContext context) => WebViewPageBody(url: url);
18
+ Widget body(BuildContext context) =>
19
+ WebViewPageBody(ordersStore: ordersStore,url: url);
20
}
21
22
class WebViewPageBody extends StatefulWidget {
20
- WebViewPageBody({this.url});
23
+ WebViewPageBody({this.ordersStore, this.url});
24
25
+ final OrdersStore ordersStore;
26
final String url;
27
28
@override
@@ -34,6 +38,7 @@ class WebViewPageBodyState extends State<WebViewPageBody> {
38
void initState() {
39
super.initState();
40
_webViewkey = GlobalKey();
41
+ widget.ordersStore.orderId = '';
42
43
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
44
}
@@ -53,7 +58,7 @@ class WebViewPageBodyState extends State<WebViewPageBody> {
58
currentUrl.contains('completed')) {
59
final urlParts = currentUrl.split('/');
60
orderId = urlParts.last;
56
- print(orderId);
61
+ widget.ordersStore.orderId = orderId;
62
}
63
64
return NavigationDecision.navigate;
lib/store/dashboard/orders_store.dart
+5
@@ -13,6 +13,8 @@ abstract class OrdersStoreBase with Store {
13
OrdersStoreBase({this.ordersSource, this.settingsStore}) {
14
orders = <OrderListItem>[];
15
16
+ orderId = '';
17
+
18
_onOrdersChanged =
19
ordersSource.watch().listen((_) async => await updateOrderList());
20
@@ -29,6 +31,9 @@ abstract class OrdersStoreBase with Store {
31
@observable
32
Order order;
33
34
+ @observable
35
+ String orderId;
36
+
37
@action
38
void setOrder(Order order) => this.order = order;
39
lib/view_model/dashboard/dashboard_view_model.dart
+11
-13
@@ -330,15 +330,13 @@ abstract class DashboardViewModelBase with Store {
330
final timestamp = DateTime.now().millisecondsSinceEpoch.toString();
331
final url = 'https://api.testwyre.com/v3/orders/reserve' + '?timestamp=' +
332
timestamp;
333
- final apiKey = secrets.wyre_api_key;
334
- final secretKey = secrets.wyre_secret_key;
335
- final accountId = secrets.wyre_account_id;
333
+ final apiKey = secrets.wyreApiKey;
334
+ final secretKey = secrets.wyreSecretKey;
335
+ final accountId = secrets.wyreAccountId;
336
final body = {
337
//'destCurrency' : walletTypeToCryptoCurrency(type).title,
338
//'dest' : walletTypeToString(type).toLowerCase() + ':' + address,
339
'referrerAccountId' : accountId,
340
- //'redirectUrl' : 'http://google.com'
341
- //'redirectUrl' : 'cakewallet://wyre-trade-success'
340
//'lockFields' : ['destCurrency', 'dest']
341
};
342
@@ -355,16 +353,16 @@ abstract class DashboardViewModelBase with Store {
353
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
354
final urlFromResponse = responseJSON['url'] as String;
355
return urlFromResponse;
358
- //if (await canLaunch(urlFromResponse)) await launch(urlFromResponse);
359
-
360
- /*final orderId = '';
361
- final order = await findOrderById(orderId);
362
- order.receiveAddress = address;
363
- order.walletId = wallet.id;
364
- await ordersSource.add(order);
365
- ordersStore.setOrder(order);*/
356
} else {
357
return '';
358
}
359
}
360
+
361
+ Future<void> saveOrder(String orderId) async {
362
+ final order = await findOrderById(orderId);
363
+ order.receiveAddress = address;
364
+ order.walletId = wallet.id;
365
+ await ordersSource.add(order);
366
+ ordersStore.setOrder(order);
367
+ }
368
}