Changed way to get order id.
M committed
Mar 23, 2021 at 20:09 UTC
de2074e6ebeac18b2a6208190e11ce60a82472ad
1 file changed
+21
-17
lib/src/screens/wyre/wyre_page.dart
+21
-17
@@ -1,3 +1,4 @@
1
+import 'dart:async';
2
import 'dart:io';
3
import 'package:cake_wallet/generated/i18n.dart';
4
import 'package:cake_wallet/palette.dart';
@@ -43,6 +44,7 @@ class WyrePageBodyState extends State<WyrePageBody> {
44
String orderId;
45
WebViewController _webViewController;
46
GlobalKey _webViewkey;
47
+ Timer _timer;
48
49
@override
50
void initState() {
@@ -51,6 +53,24 @@ class WyrePageBodyState extends State<WyrePageBody> {
53
widget.ordersStore.orderId = '';
54
55
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
56
+
57
+ _timer = Timer.periodic(Duration(milliseconds: 200), (_) async {
58
+ if (_webViewController == null) {
59
+ return;
60
+ }
61
+
62
+ final url = await _webViewController.currentUrl();
63
+
64
+ if (url.contains('completed')) {
65
+ final urlParts = url.split('/');
66
+ orderId = urlParts.last;
67
+ widget.ordersStore.orderId = orderId;
68
+
69
+ if (orderId.isNotEmpty) {
70
+ await widget.wyreViewModel.saveOrder(orderId);
71
+ }
72
+ }
73
+ });
74
}
75
76
@override
@@ -60,22 +80,6 @@ class WyrePageBodyState extends State<WyrePageBody> {
80
initialUrl: widget.url,
81
javascriptMode: JavascriptMode.unrestricted,
82
onWebViewCreated: (WebViewController controller) =>
63
- setState(() => _webViewController = controller),
64
- navigationDelegate: (req) async {
65
- final currentUrl = await _webViewController?.currentUrl() ?? '';
66
-
67
- if (currentUrl.contains('processing') ||
68
- currentUrl.contains('completed')) {
69
- final urlParts = currentUrl.split('/');
70
- orderId = urlParts.last;
71
- widget.ordersStore.orderId = orderId;
72
-
73
- if (orderId.isNotEmpty) {
74
- await widget.wyreViewModel.saveOrder(orderId);
75
- }
76
- }
77
-
78
- return NavigationDecision.navigate;
79
- });
83
+ setState(() => _webViewController = controller));
84
}
85
}