Fixes for wyre.
M committed
Mar 24, 2021 at 11:50 UTC
c1b52ebede1069048f6b98def22d993306d1ccd2
2 files changed
+26
-14
lib/entities/wyre_service.dart
+1
-1
@@ -68,7 +68,7 @@ class WyreService {
68
}
69
70
Future<Order> findOrderById(String id) async {
71
- final orderUrl = baseApiUrl + _ordersSuffix + id;
71
+ final orderUrl = baseApiUrl + _ordersSuffix + '/$id';
72
final orderResponse = await get(orderUrl);
73
74
if (orderResponse.statusCode != 200) {
lib/src/screens/wyre/wyre_page.dart
+25
-13
@@ -9,7 +9,8 @@ import 'package:flutter/material.dart';
9
import 'package:webview_flutter/webview_flutter.dart';
10
11
class WyrePage extends BasePage {
12
- WyrePage(this.wyreViewModel, {@required this.ordersStore, @required this.url});
12
+ WyrePage(this.wyreViewModel,
13
+ {@required this.ordersStore, @required this.url});
14
15
final OrdersStore ordersStore;
16
final String url;
@@ -26,7 +27,7 @@ class WyrePage extends BasePage {
27
28
@override
29
Widget body(BuildContext context) =>
29
- WyrePageBody(wyreViewModel, ordersStore: ordersStore,url: url);
30
+ WyrePageBody(wyreViewModel, ordersStore: ordersStore, url: url);
31
}
32
33
class WyrePageBody extends StatefulWidget {
@@ -45,30 +46,41 @@ class WyrePageBodyState extends State<WyrePageBody> {
46
WebViewController _webViewController;
47
GlobalKey _webViewkey;
48
Timer _timer;
49
+ bool _isSaving;
50
51
@override
52
void initState() {
53
super.initState();
54
_webViewkey = GlobalKey();
55
+ _isSaving = false;
56
widget.ordersStore.orderId = '';
57
58
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
59
57
- _timer = Timer.periodic(Duration(milliseconds: 200), (_) async {
58
- if (_webViewController == null) {
59
- return;
60
- }
60
+ _timer?.cancel();
61
+ _timer = Timer.periodic(Duration(seconds: 1), (timer) async {
62
+
63
+ try {
64
+ if (_webViewController == null || _isSaving) {
65
+ return;
66
+ }
67
62
- final url = await _webViewController.currentUrl();
68
+ final url = await _webViewController.currentUrl();
69
64
- if (url.contains('completed')) {
65
- final urlParts = url.split('/');
66
- orderId = urlParts.last;
67
- widget.ordersStore.orderId = orderId;
70
+ if (url.contains('completed')) {
71
+ final urlParts = url.split('/');
72
+ orderId = urlParts.last;
73
+ widget.ordersStore.orderId = orderId;
74
69
- if (orderId.isNotEmpty) {
70
- await widget.wyreViewModel.saveOrder(orderId);
75
+ if (orderId.isNotEmpty) {
76
+ _isSaving = true;
77
+ await widget.wyreViewModel.saveOrder(orderId);
78
+ timer.cancel();
79
+ }
80
}
81
+ } catch (e) {
82
+ _isSaving = false;
83
+ print(e);
84
}
85
});
86
}