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 }